diff --git a/asm/Kyoto/CARAMManager.s b/asm/Kyoto/CARAMManager.s index 3b276689..4ef4f3c6 100644 --- a/asm/Kyoto/CARAMManager.s +++ b/asm/Kyoto/CARAMManager.s @@ -19,6 +19,18 @@ mPreInitializeAlloc__12CARAMManager: .comm lbl_805A679C, 0x18, 4 .lcomm lbl_804BFF40, 0x10, 4 +.section .sdata2, "a" +.balign 8 +.global kInvalidAlloc__12CARAMManager +kInvalidAlloc__12CARAMManager: + # ROM: 0x3FB168 + .4byte 0xFFFFFFFF + +.global kInvalidHandle__12CARAMManager +kInvalidHandle__12CARAMManager: + # ROM: 0x3FB16C + .4byte 0xFFFFFFFF + .section .sbss, "wa" .balign 8 @@ -310,7 +322,7 @@ lbl_803448FC: /* 80344948 003418A8 80 9E 00 20 */ lwz r4, 0x20(r30) /* 8034494C 003418AC 48 02 AD 25 */ bl ARQPostRequest /* 80344950 003418B0 80 6D A9 74 */ lwz r3, lbl_805A9534@sda21(r13) -/* 80344954 003418B4 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 80344954 003418B4 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 80344958 003418B8 38 63 00 01 */ addi r3, r3, 1 /* 8034495C 003418BC 7C 03 00 40 */ cmplw r3, r0 /* 80344960 003418C0 90 6D A9 74 */ stw r3, lbl_805A9534@sda21(r13) @@ -394,7 +406,7 @@ lbl_80344A30: /* 80344A7C 003419DC 80 9E 00 20 */ lwz r4, 0x20(r30) /* 80344A80 003419E0 48 02 AB F1 */ bl ARQPostRequest /* 80344A84 003419E4 80 6D A9 74 */ lwz r3, lbl_805A9534@sda21(r13) -/* 80344A88 003419E8 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 80344A88 003419E8 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 80344A8C 003419EC 38 63 00 01 */ addi r3, r3, 1 /* 80344A90 003419F0 7C 03 00 40 */ cmplw r3, r0 /* 80344A94 003419F4 90 6D A9 74 */ stw r3, lbl_805A9534@sda21(r13) @@ -411,7 +423,7 @@ lbl_80344AA4: .global Free__12CARAMManagerFPCv Free__12CARAMManagerFPCv: -/* 80344ABC 00341A1C 80 02 CB A8 */ lwz r0, lbl_805AE8C8@sda21(r2) +/* 80344ABC 00341A1C 80 02 CB A8 */ lwz r0, kInvalidAlloc__12CARAMManager@sda21(r2) /* 80344AC0 00341A20 7C 00 18 40 */ cmplw r0, r3 /* 80344AC4 00341A24 40 82 00 0C */ bne lbl_80344AD0 /* 80344AC8 00341A28 38 60 00 00 */ li r3, 0 diff --git a/asm/Kyoto/CARAMToken.s b/asm/Kyoto/CARAMToken.s index c333308c..9c0b1766 100644 --- a/asm/Kyoto/CARAMToken.s +++ b/asm/Kyoto/CARAMToken.s @@ -1,6 +1,6 @@ .include "macros.inc" -.comm lbl_805A680C, 0x1C, 4 +.comm sLists__10CARAMToken, 0x1C, 4 .section .text, "ax" @@ -83,9 +83,9 @@ MakeInvalid__10CARAMTokenFv: /* 80358428 00355388 7C 7F 1B 78 */ mr r31, r3 /* 8035842C 0035538C 48 00 00 7D */ bl MoveToList__10CARAMTokenFQ210CARAMToken7EStatus /* 80358430 00355390 38 80 00 00 */ li r4, 0 -/* 80358434 00355394 80 62 CB A8 */ lwz r3, lbl_805AE8C8@sda21(r2) +/* 80358434 00355394 80 62 CB A8 */ lwz r3, kInvalidAlloc__12CARAMManager@sda21(r2) /* 80358438 00355398 90 9F 00 04 */ stw r4, 4(r31) -/* 8035843C 0035539C 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 8035843C 0035539C 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 80358440 003553A0 90 7F 00 08 */ stw r3, 8(r31) /* 80358444 003553A4 90 9F 00 0C */ stw r4, 0xc(r31) /* 80358448 003553A8 90 1F 00 10 */ stw r0, 0x10(r31) @@ -101,9 +101,9 @@ RemoveFromList__10CARAMTokenFv: /* 80358464 003553C4 28 04 00 00 */ cmplwi r4, 0 /* 80358468 003553C8 40 82 00 20 */ bne lbl_80358488 /* 8035846C 003553CC 80 03 00 00 */ lwz r0, 0(r3) -/* 80358470 003553D0 3C 80 80 5A */ lis r4, lbl_805A680C@ha +/* 80358470 003553D0 3C 80 80 5A */ lis r4, sLists__10CARAMToken@ha /* 80358474 003553D4 80 A3 00 18 */ lwz r5, 0x18(r3) -/* 80358478 003553D8 38 84 68 0C */ addi r4, r4, lbl_805A680C@l +/* 80358478 003553D8 38 84 68 0C */ addi r4, r4, sLists__10CARAMToken@l /* 8035847C 003553DC 54 00 10 3A */ slwi r0, r0, 2 /* 80358480 003553E0 7C A4 01 2E */ stwx r5, r4, r0 /* 80358484 003553E4 48 00 00 0C */ b lbl_80358490 @@ -145,9 +145,9 @@ lbl_803584E0: .global InitiallyMoveToList__10CARAMTokenFv InitiallyMoveToList__10CARAMTokenFv: /* 803584F8 00355458 38 00 00 00 */ li r0, 0 -/* 803584FC 0035545C 3C 80 80 5A */ lis r4, lbl_805A680C@ha +/* 803584FC 0035545C 3C 80 80 5A */ lis r4, sLists__10CARAMToken@ha /* 80358500 00355460 90 03 00 14 */ stw r0, 0x14(r3) -/* 80358504 00355464 38 84 68 0C */ addi r4, r4, lbl_805A680C@l +/* 80358504 00355464 38 84 68 0C */ addi r4, r4, sLists__10CARAMToken@l /* 80358508 00355468 80 03 00 00 */ lwz r0, 0(r3) /* 8035850C 0035546C 54 00 10 3A */ slwi r0, r0, 2 /* 80358510 00355470 7C 04 00 2E */ lwzx r0, r4, r0 @@ -165,9 +165,9 @@ InitiallyMoveToList__10CARAMTokenFv: UpdateAllDMAs__10CARAMTokenFv: /* 80358538 00355498 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8035853C 0035549C 7C 08 02 A6 */ mflr r0 -/* 80358540 003554A0 3C 60 80 5A */ lis r3, lbl_805A680C@ha +/* 80358540 003554A0 3C 60 80 5A */ lis r3, sLists__10CARAMToken@ha /* 80358544 003554A4 90 01 00 24 */ stw r0, 0x24(r1) -/* 80358548 003554A8 38 63 68 0C */ addi r3, r3, lbl_805A680C@l +/* 80358548 003554A8 38 63 68 0C */ addi r3, r3, sLists__10CARAMToken@l /* 8035854C 003554AC 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80358550 003554B0 3B E3 00 08 */ addi r31, r3, 8 /* 80358554 003554B4 93 C1 00 18 */ stw r30, 0x18(r1) @@ -218,7 +218,7 @@ lbl_803585D8: /* 803585E8 00355548 38 60 00 00 */ li r3, 0 /* 803585EC 0035554C 48 00 00 78 */ b lbl_80358664 lbl_803585F0: -/* 803585F0 00355550 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 803585F0 00355550 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 803585F4 00355554 90 1F 00 10 */ stw r0, 0x10(r31) /* 803585F8 00355558 80 1F 00 00 */ lwz r0, 0(r31) /* 803585FC 0035555C 2C 00 00 05 */ cmpwi r0, 5 @@ -234,7 +234,7 @@ lbl_80358618: /* 80358620 00355580 40 82 00 14 */ bne lbl_80358634 /* 80358624 00355584 80 7F 00 08 */ lwz r3, 8(r31) /* 80358628 00355588 4B FE C4 95 */ bl Free__12CARAMManagerFPCv -/* 8035862C 0035558C 80 02 CB A8 */ lwz r0, lbl_805AE8C8@sda21(r2) +/* 8035862C 0035558C 80 02 CB A8 */ lwz r0, kInvalidAlloc__12CARAMManager@sda21(r2) /* 80358630 00355590 90 1F 00 08 */ stw r0, 8(r31) lbl_80358634: /* 80358634 00355594 7F E3 FB 78 */ mr r3, r31 @@ -306,7 +306,7 @@ lbl_80358700: /* 8035870C 0035566C 80 7F 00 0C */ lwz r3, 0xc(r31) /* 80358710 00355670 4B FE C5 19 */ bl Alloc__12CARAMManagerFUi /* 80358714 00355674 90 7F 00 08 */ stw r3, 8(r31) -/* 80358718 00355678 80 02 CB A8 */ lwz r0, lbl_805AE8C8@sda21(r2) +/* 80358718 00355678 80 02 CB A8 */ lwz r0, kInvalidAlloc__12CARAMManager@sda21(r2) /* 8035871C 0035567C 80 9F 00 08 */ lwz r4, 8(r31) /* 80358720 00355680 7C 00 20 40 */ cmplw r0, r4 /* 80358724 00355684 40 82 00 0C */ bne lbl_80358730 @@ -439,8 +439,8 @@ lbl_803588BC: /* 803588CC 0035582C 38 21 00 10 */ addi r1, r1, 0x10 /* 803588D0 00355830 4E 80 00 20 */ blr -.global PostConstruct__10CARAMTokenFPvUi -PostConstruct__10CARAMTokenFPvUi: +.global PostConstruct__10CARAMTokenFPvUii +PostConstruct__10CARAMTokenFPvUii: /* 803588D4 00355834 94 21 FF E0 */ stwu r1, -0x20(r1) /* 803588D8 00355838 7C 08 02 A6 */ mflr r0 /* 803588DC 0035583C 90 01 00 24 */ stw r0, 0x24(r1) @@ -481,7 +481,7 @@ __dt__10CARAMTokenFv: /* 8035895C 003558BC 7C 7E 1B 79 */ or. r30, r3, r3 /* 80358960 003558C0 41 82 00 50 */ beq lbl_803589B0 /* 80358964 003558C4 80 7E 00 10 */ lwz r3, 0x10(r30) -/* 80358968 003558C8 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 80358968 003558C8 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 8035896C 003558CC 7C 03 00 40 */ cmplw r3, r0 /* 80358970 003558D0 41 82 00 18 */ beq lbl_80358988 /* 80358974 003558D4 4B FE BD 49 */ bl CancelDMA__12CARAMManagerFUi @@ -548,7 +548,7 @@ __ct__10CARAMTokenFRC10CARAMToken: __ct__10CARAMTokenFPvUi: /* 80358A4C 003559AC 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80358A50 003559B0 7C 08 02 A6 */ mflr r0 -/* 80358A54 003559B4 80 E2 CB A8 */ lwz r7, lbl_805AE8C8@sda21(r2) +/* 80358A54 003559B4 80 E2 CB A8 */ lwz r7, kInvalidAlloc__12CARAMManager@sda21(r2) /* 80358A58 003559B8 90 01 00 14 */ stw r0, 0x14(r1) /* 80358A5C 003559BC 38 00 00 01 */ li r0, 1 /* 80358A60 003559C0 93 E1 00 0C */ stw r31, 0xc(r1) @@ -558,7 +558,7 @@ __ct__10CARAMTokenFPvUi: /* 80358A70 003559D0 38 C0 00 00 */ li r6, 0 /* 80358A74 003559D4 90 83 00 04 */ stw r4, 4(r3) /* 80358A78 003559D8 54 04 D9 7E */ srwi r4, r0, 5 -/* 80358A7C 003559DC 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 80358A7C 003559DC 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 80358A80 003559E0 90 E3 00 08 */ stw r7, 8(r3) /* 80358A84 003559E4 90 A3 00 0C */ stw r5, 0xc(r3) /* 80358A88 003559E8 90 03 00 10 */ stw r0, 0x10(r3) @@ -582,7 +582,7 @@ __ct__10CARAMTokenFPvUi: /* 80358AD0 00355A30 90 7F 00 10 */ stw r3, 0x10(r31) /* 80358AD4 00355A34 80 7F 00 10 */ lwz r3, 0x10(r31) /* 80358AD8 00355A38 4B FE BC 71 */ bl WaitForDMACompletion__12CARAMManagerFUi -/* 80358ADC 00355A3C 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 80358ADC 00355A3C 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 80358AE0 00355A40 90 1F 00 10 */ stw r0, 0x10(r31) lbl_80358AE4: /* 80358AE4 00355A44 80 01 00 14 */ lwz r0, 0x14(r1) @@ -597,13 +597,13 @@ __ct__10CARAMTokenFv: /* 80358AFC 00355A5C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80358B00 00355A60 7C 08 02 A6 */ mflr r0 /* 80358B04 00355A64 38 A0 00 00 */ li r5, 0 -/* 80358B08 00355A68 80 82 CB A8 */ lwz r4, lbl_805AE8C8@sda21(r2) +/* 80358B08 00355A68 80 82 CB A8 */ lwz r4, kInvalidAlloc__12CARAMManager@sda21(r2) /* 80358B0C 00355A6C 90 01 00 14 */ stw r0, 0x14(r1) /* 80358B10 00355A70 38 00 00 06 */ li r0, 6 /* 80358B14 00355A74 93 E1 00 0C */ stw r31, 0xc(r1) /* 80358B18 00355A78 7C 7F 1B 78 */ mr r31, r3 /* 80358B1C 00355A7C 90 03 00 00 */ stw r0, 0(r3) -/* 80358B20 00355A80 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 80358B20 00355A80 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 80358B24 00355A84 90 A3 00 04 */ stw r5, 4(r3) /* 80358B28 00355A88 90 83 00 08 */ stw r4, 8(r3) /* 80358B2C 00355A8C 90 A3 00 0C */ stw r5, 0xc(r3) diff --git a/asm/Kyoto/CDvdRequest.s b/asm/Kyoto/CDvdRequest.s index 155f724a..ed2f5692 100644 --- a/asm/Kyoto/CDvdRequest.s +++ b/asm/Kyoto/CDvdRequest.s @@ -77,7 +77,7 @@ IsComplete__15CARAMDvdRequestFv: /* 802FE63C 002FB59C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802FE640 002FB5A0 7C 08 02 A6 */ mflr r0 /* 802FE644 002FB5A4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802FE648 002FB5A8 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 802FE648 002FB5A8 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 802FE64C 002FB5AC 93 E1 00 0C */ stw r31, 0xc(r1) /* 802FE650 002FB5B0 7C 7F 1B 78 */ mr r31, r3 /* 802FE654 002FB5B4 80 63 00 04 */ lwz r3, 4(r3) @@ -89,7 +89,7 @@ IsComplete__15CARAMDvdRequestFv: /* 802FE66C 002FB5CC 38 60 00 00 */ li r3, 0 /* 802FE670 002FB5D0 48 00 00 10 */ b lbl_802FE680 lbl_802FE674: -/* 802FE674 002FB5D4 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 802FE674 002FB5D4 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 802FE678 002FB5D8 90 1F 00 04 */ stw r0, 4(r31) lbl_802FE67C: /* 802FE67C 002FB5DC 38 60 00 01 */ li r3, 1 @@ -105,14 +105,14 @@ WaitUntilComplete__15CARAMDvdRequestFv: /* 802FE694 002FB5F4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802FE698 002FB5F8 7C 08 02 A6 */ mflr r0 /* 802FE69C 002FB5FC 90 01 00 14 */ stw r0, 0x14(r1) -/* 802FE6A0 002FB600 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 802FE6A0 002FB600 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 802FE6A4 002FB604 93 E1 00 0C */ stw r31, 0xc(r1) /* 802FE6A8 002FB608 7C 7F 1B 78 */ mr r31, r3 /* 802FE6AC 002FB60C 80 63 00 04 */ lwz r3, 4(r3) /* 802FE6B0 002FB610 7C 03 00 40 */ cmplw r3, r0 /* 802FE6B4 002FB614 41 82 00 10 */ beq lbl_802FE6C4 /* 802FE6B8 002FB618 48 04 60 91 */ bl WaitForDMACompletion__12CARAMManagerFUi -/* 802FE6BC 002FB61C 80 02 CB AC */ lwz r0, lbl_805AE8CC@sda21(r2) +/* 802FE6BC 002FB61C 80 02 CB AC */ lwz r0, kInvalidHandle__12CARAMManager@sda21(r2) /* 802FE6C0 002FB620 90 1F 00 04 */ stw r0, 4(r31) lbl_802FE6C4: /* 802FE6C4 002FB624 80 01 00 14 */ lwz r0, 0x14(r1) diff --git a/asm/Kyoto/CPakFile.s b/asm/Kyoto/CPakFile.s index d2426a78..eef8c4f1 100644 --- a/asm/Kyoto/CPakFile.s +++ b/asm/Kyoto/CPakFile.s @@ -1464,7 +1464,7 @@ lbl_80368574: /* 803685BC 0036551C 88 1D 00 28 */ lbz r0, 0x28(r29) /* 803685C0 00365520 53 C0 3E 30 */ rlwimi r0, r30, 7, 0x18, 0x18 /* 803685C4 00365524 38 C0 00 00 */ li r6, 0 -/* 803685C8 00365528 80 82 CB A8 */ lwz r4, lbl_805AE8C8@sda21(r2) +/* 803685C8 00365528 80 82 CB A8 */ lwz r4, kInvalidAlloc__12CARAMManager@sda21(r2) /* 803685CC 0036552C 98 1D 00 28 */ stb r0, 0x28(r29) /* 803685D0 00365530 38 00 FF FF */ li r0, -1 /* 803685D4 00365534 7F A3 EB 78 */ mr r3, r29 @@ -2128,4 +2128,3 @@ lbl_803D84E0: .asciz "??(??)" .balign 4 .4byte 0 - diff --git a/asm/Kyoto/CResLoader.s b/asm/Kyoto/CResLoader.s index c94e0e99..aeb6dfad 100644 --- a/asm/Kyoto/CResLoader.s +++ b/asm/Kyoto/CResLoader.s @@ -1891,19 +1891,6 @@ lbl_8033C5BC: /* 8033C5D8 00339538 38 21 00 20 */ addi r1, r1, 0x20 /* 8033C5DC 0033953C 4E 80 00 20 */ blr -.section .sdata2, "a" -.balign 8 -.global lbl_805AE8C8 -lbl_805AE8C8: - # ROM: 0x3FB168 - .4byte 0xFFFFFFFF - -.global lbl_805AE8CC -lbl_805AE8CC: - # ROM: 0x3FB16C - .4byte 0xFFFFFFFF - - .section .rodata .balign 8 .global lbl_803D7A38 diff --git a/asm/Kyoto/DolphinCDvdFile.s b/asm/Kyoto/DolphinCDvdFile.s index ddd1c4e9..2f56161b 100644 --- a/asm/Kyoto/DolphinCDvdFile.s +++ b/asm/Kyoto/DolphinCDvdFile.s @@ -684,7 +684,7 @@ TryARAMFile__8CDvdFileFv: /* 80350150 0034D0B0 80 63 00 14 */ lwz r3, 0x14(r3) /* 80350154 0034D0B4 4B FF 4A D5 */ bl Alloc__12CARAMManagerFUi /* 80350158 0034D0B8 90 7B 00 04 */ stw r3, 4(r27) -/* 8035015C 0034D0BC 80 62 CB A8 */ lwz r3, lbl_805AE8C8@sda21(r2) +/* 8035015C 0034D0BC 80 62 CB A8 */ lwz r3, kInvalidAlloc__12CARAMManager@sda21(r2) /* 80350160 0034D0C0 80 1B 00 04 */ lwz r0, 4(r27) /* 80350164 0034D0C4 7C 03 00 40 */ cmplw r3, r0 /* 80350168 0034D0C8 41 82 00 E0 */ beq lbl_80350248 diff --git a/asm/Kyoto/Graphics/DolphinCTexture.s b/asm/Kyoto/Graphics/DolphinCTexture.s index 6ec0c454..79421e84 100644 --- a/asm/Kyoto/Graphics/DolphinCTexture.s +++ b/asm/Kyoto/Graphics/DolphinCTexture.s @@ -37,19 +37,19 @@ lbl_803ED994: .section .bss .balign 8 -.lcomm lbl_804BFD10, 0x20, 4 +.lcomm sLoadedTextures, 0x20, 4 .section .sbss, "wa" .balign 8 -.global lbl_805A9430 -lbl_805A9430: +.global sCurrentFrameCount__8CTexture +sCurrentFrameCount__8CTexture: .skip 0x4 -.global lbl_805A9434 -lbl_805A9434: +.global sTotalAllocatedMemory__8CTexture +sTotalAllocatedMemory__8CTexture: .skip 0x4 -.global lbl_805A9438 -lbl_805A9438: +.global sMangleMips__8CTexture +sMangleMips__8CTexture: .skip 0x8 .section .text, "ax" @@ -75,9 +75,9 @@ lbl_8030E138: .global InvalidateTexmap__8CTextureF11_GXTexMapID InvalidateTexmap__8CTextureF11_GXTexMapID: -/* 8030E148 0030B0A8 3C 80 80 4C */ lis r4, lbl_804BFD10@ha +/* 8030E148 0030B0A8 3C 80 80 4C */ lis r4, sLoadedTextures@ha /* 8030E14C 0030B0AC 54 60 10 3A */ slwi r0, r3, 2 -/* 8030E150 0030B0B0 38 64 FD 10 */ addi r3, r4, lbl_804BFD10@l +/* 8030E150 0030B0B0 38 64 FD 10 */ addi r3, r4, sLoadedTextures@l /* 8030E154 0030B0B4 38 80 00 00 */ li r4, 0 /* 8030E158 0030B0B8 7C 83 01 2E */ stwx r4, r3, r0 /* 8030E15C 0030B0BC 4E 80 00 20 */ blr @@ -89,11 +89,11 @@ UncountMemory__8CTextureCFv: /* 8030E168 0030B0C8 4D 82 00 20 */ beqlr /* 8030E16C 0030B0CC 38 00 00 00 */ li r0, 0 /* 8030E170 0030B0D0 50 04 1F 38 */ rlwimi r4, r0, 3, 0x1c, 0x1c -/* 8030E174 0030B0D4 80 0D A8 74 */ lwz r0, lbl_805A9434@sda21(r13) +/* 8030E174 0030B0D4 80 0D A8 74 */ lwz r0, sTotalAllocatedMemory__8CTexture@sda21(r13) /* 8030E178 0030B0D8 98 83 00 0A */ stb r4, 0xa(r3) /* 8030E17C 0030B0DC 80 63 00 0C */ lwz r3, 0xc(r3) /* 8030E180 0030B0E0 7C 03 00 50 */ subf r0, r3, r0 -/* 8030E184 0030B0E4 90 0D A8 74 */ stw r0, lbl_805A9434@sda21(r13) +/* 8030E184 0030B0E4 90 0D A8 74 */ stw r0, sTotalAllocatedMemory__8CTexture@sda21(r13) /* 8030E188 0030B0E8 4E 80 00 20 */ blr .global CountMemory__8CTextureCFv @@ -102,12 +102,12 @@ CountMemory__8CTextureCFv: /* 8030E190 0030B0F0 54 A0 EF FF */ rlwinm. r0, r5, 0x1d, 0x1f, 0x1f /* 8030E194 0030B0F4 4C 82 00 20 */ bnelr /* 8030E198 0030B0F8 38 00 00 01 */ li r0, 1 -/* 8030E19C 0030B0FC 80 8D A8 74 */ lwz r4, lbl_805A9434@sda21(r13) +/* 8030E19C 0030B0FC 80 8D A8 74 */ lwz r4, sTotalAllocatedMemory__8CTexture@sda21(r13) /* 8030E1A0 0030B100 50 05 1F 38 */ rlwimi r5, r0, 3, 0x1c, 0x1c /* 8030E1A4 0030B104 98 A3 00 0A */ stb r5, 0xa(r3) /* 8030E1A8 0030B108 80 03 00 0C */ lwz r0, 0xc(r3) /* 8030E1AC 0030B10C 7C 04 02 14 */ add r0, r4, r0 -/* 8030E1B0 0030B110 90 0D A8 74 */ stw r0, lbl_805A9434@sda21(r13) +/* 8030E1B0 0030B110 90 0D A8 74 */ stw r0, sTotalAllocatedMemory__8CTexture@sda21(r13) /* 8030E1B4 0030B114 4E 80 00 20 */ blr .global MakeSwappable__8CTextureCFv @@ -838,7 +838,7 @@ lbl_8030EBAC: /* 8030EBB8 0030BB18 38 60 00 00 */ li r3, 0 /* 8030EBBC 0030BB1C 48 00 00 54 */ b lbl_8030EC10 lbl_8030EBC0: -/* 8030EBC0 0030BB20 80 6D A8 70 */ lwz r3, lbl_805A9430@sda21(r13) +/* 8030EBC0 0030BB20 80 6D A8 70 */ lwz r3, sCurrentFrameCount__8CTexture@sda21(r13) /* 8030EBC4 0030BB24 80 9E 00 64 */ lwz r4, 0x64(r30) /* 8030EBC8 0030BB28 38 03 FF FF */ addi r0, r3, -1 /* 8030EBCC 0030BB2C 7C 04 00 40 */ cmplw r4, r0 @@ -881,7 +881,7 @@ LoadToMRAM__8CTextureCFv: /* 8030EC48 0030BBA8 38 60 00 00 */ li r3, 0 /* 8030EC4C 0030BBAC 48 00 00 18 */ b lbl_8030EC64 lbl_8030EC50: -/* 8030EC50 0030BBB0 80 0D A8 70 */ lwz r0, lbl_805A9430@sda21(r13) +/* 8030EC50 0030BBB0 80 0D A8 70 */ lwz r0, sCurrentFrameCount__8CTexture@sda21(r13) /* 8030EC54 0030BBB4 90 1F 00 64 */ stw r0, 0x64(r31) /* 8030EC58 0030BBB8 4B FF F5 35 */ bl CountMemory__8CTextureCFv /* 8030EC5C 0030BBBC 38 7F 00 44 */ addi r3, r31, 0x44 @@ -1639,11 +1639,11 @@ lbl_8030F700: /* 8030F700 0030C660 7F E4 FB 78 */ mr r4, r31 /* 8030F704 0030C664 38 61 00 08 */ addi r3, r1, 8 /* 8030F708 0030C668 48 06 AD 8D */ bl GXLoadTexObj -/* 8030F70C 0030C66C 80 0D A8 70 */ lwz r0, lbl_805A9430@sda21(r13) -/* 8030F710 0030C670 3C 60 80 4C */ lis r3, lbl_804BFD10@ha +/* 8030F70C 0030C66C 80 0D A8 70 */ lwz r0, sCurrentFrameCount__8CTexture@sda21(r13) +/* 8030F710 0030C670 3C 60 80 4C */ lis r3, sLoadedTextures@ha /* 8030F714 0030C674 57 E4 10 3A */ slwi r4, r31, 2 /* 8030F718 0030C678 38 A0 00 00 */ li r5, 0 -/* 8030F71C 0030C67C 38 63 FD 10 */ addi r3, r3, lbl_804BFD10@l +/* 8030F71C 0030C67C 38 63 FD 10 */ addi r3, r3, sLoadedTextures@l /* 8030F720 0030C680 90 1D 00 64 */ stw r0, 0x64(r29) /* 8030F724 0030C684 7C A3 21 2E */ stwx r5, r3, r4 /* 8030F728 0030C688 BB 61 00 2C */ lmw r27, 0x2c(r1) @@ -1659,11 +1659,11 @@ Load__8CTextureCF11_GXTexMapIDQ28CTexture10EClampMode: /* 8030F744 0030C6A4 90 01 00 24 */ stw r0, 0x24(r1) /* 8030F748 0030C6A8 BF 41 00 08 */ stmw r26, 8(r1) /* 8030F74C 0030C6AC 7C 9E 23 78 */ mr r30, r4 -/* 8030F750 0030C6B0 3C 80 80 4C */ lis r4, lbl_804BFD10@ha +/* 8030F750 0030C6B0 3C 80 80 4C */ lis r4, sLoadedTextures@ha /* 8030F754 0030C6B4 7C 7D 1B 78 */ mr r29, r3 /* 8030F758 0030C6B8 57 DF 10 3A */ slwi r31, r30, 2 /* 8030F75C 0030C6BC 7C BA 2B 78 */ mr r26, r5 -/* 8030F760 0030C6C0 3B 84 FD 10 */ addi r28, r4, lbl_804BFD10@l +/* 8030F760 0030C6C0 3B 84 FD 10 */ addi r28, r4, sLoadedTextures@l /* 8030F764 0030C6C4 7C 1C F8 2E */ lwzx r0, r28, r31 /* 8030F768 0030C6C8 7C 00 E8 40 */ cmplw r0, r29 /* 8030F76C 0030C6CC 40 82 00 10 */ bne lbl_8030F77C @@ -1712,7 +1712,7 @@ lbl_8030F7F8: /* 8030F804 0030C764 7F C4 F3 78 */ mr r4, r30 /* 8030F808 0030C768 38 7D 00 20 */ addi r3, r29, 0x20 /* 8030F80C 0030C76C 48 06 AC 89 */ bl GXLoadTexObj -/* 8030F810 0030C770 80 0D A8 70 */ lwz r0, lbl_805A9430@sda21(r13) +/* 8030F810 0030C770 80 0D A8 70 */ lwz r0, sCurrentFrameCount__8CTexture@sda21(r13) /* 8030F814 0030C774 7F BC F9 2E */ stwx r29, r28, r31 /* 8030F818 0030C778 90 1D 00 64 */ stw r0, 0x64(r29) lbl_8030F81C: @@ -1951,7 +1951,7 @@ __ct__8CTextureFR12CInputStreamQ28CTexture11EAutoMipmapQ28CTexture9EBlackKey: /* 8030FB60 0030CAC0 90 1D 00 1C */ stw r0, 0x1c(r29) /* 8030FB64 0030CAC4 90 DD 00 40 */ stw r6, 0x40(r29) /* 8030FB68 0030CAC8 48 04 8F 95 */ bl __ct__10CARAMTokenFv -/* 8030FB6C 0030CACC 80 0D A8 70 */ lwz r0, lbl_805A9430@sda21(r13) +/* 8030FB6C 0030CACC 80 0D A8 70 */ lwz r0, sCurrentFrameCount__8CTexture@sda21(r13) /* 8030FB70 0030CAD0 7F C3 F3 78 */ mr r3, r30 /* 8030FB74 0030CAD4 90 1D 00 64 */ stw r0, 0x64(r29) /* 8030FB78 0030CAD8 48 02 F1 0D */ bl ReadLong__12CInputStreamFv @@ -2116,7 +2116,7 @@ lbl_8030FDA0: lbl_8030FDC8: /* 8030FDC8 0030CD28 7C 1A F8 00 */ cmpw r26, r31 /* 8030FDCC 0030CD2C 41 80 FF C4 */ blt lbl_8030FD90 -/* 8030FDD0 0030CD30 88 0D A8 78 */ lbz r0, lbl_805A9438@sda21(r13) +/* 8030FDD0 0030CD30 88 0D A8 78 */ lbz r0, sMangleMips__8CTexture@sda21(r13) /* 8030FDD4 0030CD34 28 00 00 00 */ cmplwi r0, 0 /* 8030FDD8 0030CD38 41 82 00 30 */ beq lbl_8030FE08 /* 8030FDDC 0030CD3C 7F BB EB 78 */ mr r27, r29 @@ -2191,7 +2191,7 @@ __ct__8CTextureF12ETexelFormatssi: /* 8030FED8 0030CE38 90 1B 00 1C */ stw r0, 0x1c(r27) /* 8030FEDC 0030CE3C 90 DB 00 40 */ stw r6, 0x40(r27) /* 8030FEE0 0030CE40 48 04 8C 1D */ bl __ct__10CARAMTokenFv -/* 8030FEE4 0030CE44 80 0D A8 70 */ lwz r0, lbl_805A9430@sda21(r13) +/* 8030FEE4 0030CE44 80 0D A8 70 */ lwz r0, sCurrentFrameCount__8CTexture@sda21(r13) /* 8030FEE8 0030CE48 7F 63 DB 78 */ mr r3, r27 /* 8030FEEC 0030CE4C 7F 84 E3 78 */ mr r4, r28 /* 8030FEF0 0030CE50 7F A5 EB 78 */ mr r5, r29 diff --git a/asm/MetroidPrime/CInGameGuiManager.s b/asm/MetroidPrime/CInGameGuiManager.s index 2e86ea0e..857b5fc1 100644 --- a/asm/MetroidPrime/CInGameGuiManager.s +++ b/asm/MetroidPrime/CInGameGuiManager.s @@ -495,7 +495,7 @@ lbl_80106FC8: /* 80107008 00103F68 83 81 00 AC */ lwz r28, 0xac(r1) /* 8010700C 00103F6C 38 03 FF FF */ addi r0, r3, 0x7FFFFFFF@l /* 80107010 00103F70 3B 01 00 7C */ addi r24, r1, 0x7c -/* 80107014 00103F74 90 0D A8 70 */ stw r0, lbl_805A9430@sda21(r13) +/* 80107014 00103F74 90 0D A8 70 */ stw r0, sCurrentFrameCount__8CTexture@sda21(r13) /* 80107018 00103F78 3F C0 00 10 */ lis r30, 0x10 /* 8010701C 00103F7C 48 00 01 20 */ b lbl_8010713C lbl_80107020: @@ -587,7 +587,7 @@ lbl_8010713C: lbl_80107154: /* 80107154 001040B4 88 01 00 08 */ lbz r0, 8(r1) /* 80107158 001040B8 38 60 00 00 */ li r3, 0 -/* 8010715C 001040BC 90 6D A8 70 */ stw r3, lbl_805A9430@sda21(r13) +/* 8010715C 001040BC 90 6D A8 70 */ stw r3, sCurrentFrameCount__8CTexture@sda21(r13) /* 80107160 001040C0 38 7F 01 2C */ addi r3, r31, 0x12c /* 80107164 001040C4 38 81 00 10 */ addi r4, r1, 0x10 /* 80107168 001040C8 98 01 00 0C */ stb r0, 0xc(r1) diff --git a/asm/MetroidPrime/CStateManager.s b/asm/MetroidPrime/CStateManager.s index cce29592..612f15b3 100644 --- a/asm/MetroidPrime/CStateManager.s +++ b/asm/MetroidPrime/CStateManager.s @@ -8989,7 +8989,7 @@ FrameBegin__13CStateManagerFUi: /* 8004B56C 000484CC 90 83 08 D4 */ stw r4, 0x8d4(r3) /* 8004B570 000484D0 38 80 00 02 */ li r4, 2 /* 8004B574 000484D4 80 03 08 D4 */ lwz r0, 0x8d4(r3) -/* 8004B578 000484D8 90 0D A8 70 */ stw r0, lbl_805A9430@sda21(r13) +/* 8004B578 000484D8 90 0D A8 70 */ stw r0, sCurrentFrameCount__8CTexture@sda21(r13) /* 8004B57C 000484DC 80 03 08 D4 */ lwz r0, 0x8d4(r3) /* 8004B580 000484E0 90 0D A8 68 */ stw r0, sCurrentFrameCount__16CGraphicsPalette@sda21(r13) /* 8004B584 000484E4 4B FF FF D5 */ bl SwapOutTexturesToARAM__13CStateManagerFiUi diff --git a/asm/MetroidPrime/CWorldTransManager.s b/asm/MetroidPrime/CWorldTransManager.s index 5bb15a87..66bf9b8f 100644 --- a/asm/MetroidPrime/CWorldTransManager.s +++ b/asm/MetroidPrime/CWorldTransManager.s @@ -146,7 +146,7 @@ lbl_80208F08: /* 80208F0C 00205E6C 38 81 00 AC */ addi r4, r1, 0xac /* 80208F10 00205E70 38 63 FF FF */ addi r3, r3, 0x7FFFFFFF@l /* 80208F14 00205E74 38 00 00 00 */ li r0, 0 -/* 80208F18 00205E78 90 6D A8 70 */ stw r3, lbl_805A9430@sda21(r13) +/* 80208F18 00205E78 90 6D A8 70 */ stw r3, sCurrentFrameCount__8CTexture@sda21(r13) /* 80208F1C 00205E7C 90 81 00 A4 */ stw r4, 0xa4(r1) /* 80208F20 00205E80 90 81 00 A8 */ stw r4, 0xa8(r1) /* 80208F24 00205E84 90 81 00 AC */ stw r4, 0xac(r1) @@ -344,7 +344,7 @@ lbl_802091D8: /* 802091E8 00206148 41 80 FD 60 */ blt lbl_80208F48 /* 802091EC 0020614C 38 00 00 00 */ li r0, 0 /* 802091F0 00206150 38 61 00 A0 */ addi r3, r1, 0xa0 -/* 802091F4 00206154 90 0D A8 70 */ stw r0, lbl_805A9430@sda21(r13) +/* 802091F4 00206154 90 0D A8 70 */ stw r0, sCurrentFrameCount__8CTexture@sda21(r13) /* 802091F8 00206158 38 80 FF FF */ li r4, -1 /* 802091FC 0020615C 48 00 26 AD */ bl sub_8020b8a8 /* 80209200 00206160 80 01 00 74 */ lwz r0, 0x74(r1) diff --git a/configure.py b/configure.py index 80fa3765..a51a0e15 100755 --- a/configure.py +++ b/configure.py @@ -560,7 +560,7 @@ LIBS = [ ["Kyoto/Graphics/CTevCombiners", True], ["Kyoto/Graphics/DolphinCGraphics", False], ["Kyoto/Graphics/DolphinCPalette", False], - "Kyoto/Graphics/DolphinCTexture", + ["Kyoto/Graphics/DolphinCTexture", False], ["Kyoto/Math/CloseEnough", True], "Kyoto/Math/CMatrix3f", "Kyoto/Math/CMatrix4f", @@ -666,7 +666,7 @@ LIBS = [ "Kyoto/Animation/CVertexMorphEffect", "Kyoto/Animation/CSkinnedModelWithAvgNormals", ["Kyoto/CTimeProvider", True], - "Kyoto/CARAMToken", + ["Kyoto/CARAMToken", False], "Kyoto/Audio/CMidiManager", ["Kyoto/Text/CFontImageDef", True], "Kyoto/Text/CImageInstruction", diff --git a/include/Kyoto/CARAMManager.hpp b/include/Kyoto/CARAMManager.hpp index a659ee54..ea63f58d 100644 --- a/include/Kyoto/CARAMManager.hpp +++ b/include/Kyoto/CARAMManager.hpp @@ -10,9 +10,16 @@ public: static void PreInitializeAlloc(uint size) { mPreInitializeAlloc += size; } static void Initialize(uint); static void WaitForAllDMAsToComplete(); + static void* GetInvalidAlloc() { return kInvalidAlloc; } + static uint GetInvalidDMAHandle() { return kInvalidHandle; } + static bool CancelDMA(uint); + static void WaitForDMACompletion(uint); + static void Free(const void* ptr); private: static uint mPreInitializeAlloc; + static void* kInvalidAlloc; + static int kInvalidHandle; }; #endif // _CARAMMANAGER diff --git a/include/Kyoto/CARAMToken.hpp b/include/Kyoto/CARAMToken.hpp index 9c6b42e9..7dabbd37 100644 --- a/include/Kyoto/CARAMToken.hpp +++ b/include/Kyoto/CARAMToken.hpp @@ -5,7 +5,39 @@ class CARAMToken { public: + enum EStatus { + kS_Zero, + kS_One, + }; + + CARAMToken(); + CARAMToken(void* ptr, uint len); + CARAMToken(const CARAMToken& other); + ~CARAMToken(); + void PostConstruct(void* ptr, uint len, int unk); + CARAMToken& operator=(const CARAMToken& other); + void LoadToMRAM(); + void LoadToARAM(); + void RefreshStatus(); static void UpdateAllDMAs(); + void InitiallyMoveToList(); + void MoveToList(EStatus status); + void RemoveFromList(); + void MakeInvalid(); + + void sub_803583d4(); + void sub_80358388(); + + void* GetMRAMSafe(); +private: + int x0_; + void* x4_; + void* x8_; + int xc_; + uint x10_; + int x14_; + int x18_; + bool x1c_24_ : 1; }; #endif // _CARAMTOKEN diff --git a/include/Kyoto/CDvdFile.hpp b/include/Kyoto/CDvdFile.hpp index c68b52ea..d49e8dae 100644 --- a/include/Kyoto/CDvdFile.hpp +++ b/include/Kyoto/CDvdFile.hpp @@ -3,12 +3,7 @@ #include "types.h" -class IDvdRequest { -public: - virtual ~IDvdRequest() = 0; // 8 - virtual void Unknown1(bool) = 0; // c - virtual bool IsComplete() = 0; // 10 -}; +#include "Kyoto/IDvdRequest.hpp" class CDvdFile { public: diff --git a/include/Kyoto/CDvdRequest.hpp b/include/Kyoto/CDvdRequest.hpp new file mode 100644 index 00000000..c9e7f51a --- /dev/null +++ b/include/Kyoto/CDvdRequest.hpp @@ -0,0 +1,10 @@ +#ifndef _CDVDREQUEST +#define _CDVDREQUEST + +#include "Kyoto/IDvdRequest.hpp" + +class CDvdRequest : public IDvdRequest { + +}; + +#endif // _CDVDREQUEST diff --git a/include/Kyoto/Graphics/CTexture.hpp b/include/Kyoto/Graphics/CTexture.hpp index ff7e040b..dc0a03af 100644 --- a/include/Kyoto/Graphics/CTexture.hpp +++ b/include/Kyoto/Graphics/CTexture.hpp @@ -3,9 +3,14 @@ #include "types.h" -#include +#include "Kyoto/CARAMToken.hpp" +#include "rstl/single_ptr.hpp" +#include + +class CDvdRequest; class CInputStream; +class CGraphicsPalette; enum ETexelFormat { kTF_Invalid = -1, @@ -24,6 +29,16 @@ enum ETexelFormat { class CTexture { public: + class CDumpedBitmapDataReloader { + int x0_; + uint x4_; + int x8_; + uint xc_; + bool x10_; + rstl::single_ptr< CDvdRequest > x14_; + rstl::single_ptr< uchar > x18_; + }; + enum EClampMode { kCM_Clamp, kCM_Repeat, @@ -39,7 +54,7 @@ public: CTexture(ETexelFormat fmt, short w, short h, int mips); CTexture(CInputStream& stream, EAutoMipmap mip, EBlackKey bk); ~CTexture(); - + // Used in certain destructors void sub_8030e10c(); @@ -48,22 +63,50 @@ public: void* GetBitMapData(int); - static void InvalidateTexmap(GXTexMapID id); - - uint GetTexelFormat() const { return mTexelFormat; } + void InitBitmapBuffers(ETexelFormat fmt, short w, short h, int mips); + void InitTextureObjects(); + ETexelFormat GetTexelFormat() const { return mTexelFormat; } short GetWidth() const { return mWidth; } short GetHeight() const { return mHeight; } - - void SetFlag1(bool b) { mFlag1 = b; } + + void* Lock() { + mLocked = true; + return GetBitMapData(0); + } + + void MakeSwappable() const; + void CountMemory() const; + void UncountMemory() const; + void SetFlag1(bool b) { mLocked = b; } + + static uint TexelFormatBitsPerPixel(ETexelFormat fmt); + static void InvalidateTexmap(GXTexMapID id); + + static int sCurrentFrameCount; + static int sTotalAllocatedMemory; + static bool sMangleMips; private: - uint mTexelFormat; // TODO: Enum + ETexelFormat mTexelFormat; // TODO: Enum short mWidth; short mHeight; uchar mNumMips; uchar mBitsPerPixel; - uchar mFlag1 : 1; - uchar pad[0x5A]; + bool mLocked : 1; + bool mCanLoadPalette : 1; + bool mIsPowerOfTwo : 1; + mutable bool mNoSwap : 1; + mutable bool mCounted : 1; + uchar mCanLoadObj : 1; + uint mMemoryAllocated; + rstl::single_ptr< CGraphicsPalette > mGraphicsPalette; + rstl::single_ptr< CDumpedBitmapDataReloader > mBitmapReloader; + uint mNativeFormat; + uint mNativeCIFormat; + GXTexObj mTexObj; + EClampMode mClampMode; + CARAMToken mARAMToken; + uint mFrameAllocated; }; CHECK_SIZEOF(CTexture, 0x68) diff --git a/include/Kyoto/IDvdRequest.hpp b/include/Kyoto/IDvdRequest.hpp new file mode 100644 index 00000000..802480b2 --- /dev/null +++ b/include/Kyoto/IDvdRequest.hpp @@ -0,0 +1,12 @@ +#ifndef _IDVDREQUEST +#define _IDVDREQUEST + + +class IDvdRequest { +public: + virtual ~IDvdRequest() = 0; // 8 + virtual void Unknown1(bool) = 0; // c + virtual bool IsComplete() = 0; // 10 +}; + +#endif // _IDVDREQUEST diff --git a/src/Kyoto/CARAMToken.cpp b/src/Kyoto/CARAMToken.cpp new file mode 100644 index 00000000..affc4325 --- /dev/null +++ b/src/Kyoto/CARAMToken.cpp @@ -0,0 +1,65 @@ +#include "Kyoto/CARAMToken.hpp" + +#include "Kyoto/Alloc/CMemorySys.hpp" +#include "Kyoto/CARAMManager.hpp" + +#include "rstl/construct.hpp" + +CARAMToken::CARAMToken() { + x0_ = 6; + x4_ = NULL; + x8_ = CARAMManager::GetInvalidAlloc(); + xc_ = 0; + x10_ = CARAMManager::GetInvalidDMAHandle(); + x14_ = 0; + x18_ = 0; + x1c_24_ = false; + InitiallyMoveToList(); +} + +CARAMToken::CARAMToken(void* ptr, uint len) {} + +CARAMToken::CARAMToken(const CARAMToken& other) +: x0_(other.x0_) +, x4_(other.x4_) +, x8_(other.x8_) +, xc_(other.xc_) +, x10_(other.x10_) +, x14_(0) +, x18_(0) +, x1c_24_(other.x1c_24_) { + const_cast< CARAMToken& >(other).MakeInvalid(); + InitiallyMoveToList(); +} + +CARAMToken::~CARAMToken() { + if (x10_ != CARAMManager::GetInvalidDMAHandle() && !CARAMManager::CancelDMA(x10_)) { + CARAMManager::WaitForDMACompletion(x10_); + } + + RemoveFromList(); + CMemory::Free(x4_); + CARAMManager::Free(x8_); +} + +void CARAMToken::PostConstruct(void* ptr, uint len, int unk) { + MoveToList(kS_One); + x4_ = ptr; + xc_ = len; + x1c_24_ = unk == 0; +} + +CARAMToken& CARAMToken::operator=(const CARAMToken& other) { + if (&other == this) { + return *this; + } + + rstl::destroy(this); + rstl::construct(this, other); + return *this; +} + + +void CARAMToken::LoadToMRAM() { + +} diff --git a/src/Kyoto/Graphics/DolphinCTexture.cpp b/src/Kyoto/Graphics/DolphinCTexture.cpp new file mode 100644 index 00000000..ba613dfd --- /dev/null +++ b/src/Kyoto/Graphics/DolphinCTexture.cpp @@ -0,0 +1,75 @@ +#include "Kyoto/Graphics/CTexture.hpp" + +#include "Kyoto/CDvdRequest.hpp" +#include "Kyoto/Graphics/CGraphicsPalette.hpp" +#include "Kyoto/Alloc/CMemorySys.hpp" + +int CTexture::sCurrentFrameCount = 0; +int CTexture::sTotalAllocatedMemory = 0; +bool CTexture::sMangleMips = false; + +static CTexture* sLoadedTextures[GX_MAX_TEXMAP]; + +CTexture::CTexture(ETexelFormat fmt, short w, short h, int mips) +: mTexelFormat(fmt) +, mWidth(w) +, mHeight(h) +, mNumMips(mips) +, mBitsPerPixel(TexelFormatBitsPerPixel(fmt)) +, mLocked(false) +, mCanLoadPalette(false) +, mIsPowerOfTwo(false) +, mNoSwap(true) +, mCounted(false) +, mCanLoadObj(false) +, mMemoryAllocated(0) +, mFrameAllocated(sCurrentFrameCount) +, mNativeFormat(GX_TF_RGB565) +, mNativeCIFormat(GX_TF_C8) +, mClampMode(kCM_Repeat) { + InitBitmapBuffers(fmt, w, h, mips); + InitTextureObjects(); +} + +CTexture::CTexture(CInputStream& in, EAutoMipmap automip, EBlackKey blackKey) { + +} + +CTexture::~CTexture() { + UncountMemory(); +} + + +void CTexture::MakeSwappable() const { + if (!mNoSwap) { + return; + } + + mNoSwap = false; +} +void CTexture::CountMemory() const { + if (mCounted) { + return; + } + + mCounted = true; + sTotalAllocatedMemory += mMemoryAllocated; +} + + +void CTexture::UncountMemory() const { + if (!mCounted) { + return; + } + + mCounted = false; + sTotalAllocatedMemory -= mMemoryAllocated; +} + +void CTexture::InvalidateTexmap(GXTexMapID texmap) { + sLoadedTextures[texmap] = nullptr; +} + +void CTexture::sub_8030e10c() { + +}