diff --git a/asm/JSystem/JKernel/JKRExpHeap/__ct__10JKRExpHeapFPvUlP7JKRHeapb.s b/asm/JSystem/JKernel/JKRExpHeap/__ct__10JKRExpHeapFPvUlP7JKRHeapb.s deleted file mode 100644 index 27f62203f2a..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/__ct__10JKRExpHeapFPvUlP7JKRHeapb.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_802CF030: -/* 802CF030 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802CF034 7C 08 02 A6 */ mflr r0 -/* 802CF038 90 01 00 24 */ stw r0, 0x24(r1) -/* 802CF03C 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CF040 48 09 31 9D */ bl _savegpr_29 -/* 802CF044 7C 7D 1B 78 */ mr r29, r3 -/* 802CF048 7C 9E 23 78 */ mr r30, r4 -/* 802CF04C 7C BF 2B 78 */ mr r31, r5 -/* 802CF050 4B FF F0 E9 */ bl __ct__7JKRHeapFPvUlP7JKRHeapb -/* 802CF054 3C 60 80 3D */ lis r3, __vt__10JKRExpHeap@ha /* 0x803CBFD0@ha */ -/* 802CF058 38 03 BF D0 */ addi r0, r3, __vt__10JKRExpHeap@l /* 0x803CBFD0@l */ -/* 802CF05C 90 1D 00 00 */ stw r0, 0(r29) -/* 802CF060 38 00 00 00 */ li r0, 0 -/* 802CF064 98 1D 00 6C */ stb r0, 0x6c(r29) -/* 802CF068 38 00 00 FF */ li r0, 0xff -/* 802CF06C 98 1D 00 6D */ stb r0, 0x6d(r29) -/* 802CF070 93 DD 00 78 */ stw r30, 0x78(r29) -/* 802CF074 80 1D 00 78 */ lwz r0, 0x78(r29) -/* 802CF078 90 1D 00 7C */ stw r0, 0x7c(r29) -/* 802CF07C 80 7D 00 78 */ lwz r3, 0x78(r29) -/* 802CF080 38 80 00 00 */ li r4, 0 -/* 802CF084 38 A0 00 00 */ li r5, 0 -/* 802CF088 38 DF FF F0 */ addi r6, r31, -16 -/* 802CF08C 38 E0 00 00 */ li r7, 0 -/* 802CF090 39 00 00 00 */ li r8, 0 -/* 802CF094 48 00 17 7D */ bl initiate__Q210JKRExpHeap9CMemBlockFPQ210JKRExpHeap9CMemBlockPQ210JKRExpHeap9CMemBlockUlUcUc -/* 802CF098 38 00 00 00 */ li r0, 0 -/* 802CF09C 90 1D 00 80 */ stw r0, 0x80(r29) -/* 802CF0A0 90 1D 00 84 */ stw r0, 0x84(r29) -/* 802CF0A4 7F A3 EB 78 */ mr r3, r29 -/* 802CF0A8 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CF0AC 48 09 31 7D */ bl _restgpr_29 -/* 802CF0B0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802CF0B4 7C 08 03 A6 */ mtlr r0 -/* 802CF0B8 38 21 00 20 */ addi r1, r1, 0x20 -/* 802CF0BC 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/__dt__10JKRExpHeapFv.s b/asm/JSystem/JKernel/JKRExpHeap/__dt__10JKRExpHeapFv.s deleted file mode 100644 index 7b977b4f3dd..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/__dt__10JKRExpHeapFv.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_802CF0C0: -/* 802CF0C0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802CF0C4 7C 08 02 A6 */ mflr r0 -/* 802CF0C8 90 01 00 14 */ stw r0, 0x14(r1) -/* 802CF0CC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802CF0D0 93 C1 00 08 */ stw r30, 8(r1) -/* 802CF0D4 7C 7E 1B 79 */ or. r30, r3, r3 -/* 802CF0D8 7C 9F 23 78 */ mr r31, r4 -/* 802CF0DC 41 82 00 30 */ beq lbl_802CF10C -/* 802CF0E0 3C 80 80 3D */ lis r4, __vt__10JKRExpHeap@ha /* 0x803CBFD0@ha */ -/* 802CF0E4 38 04 BF D0 */ addi r0, r4, __vt__10JKRExpHeap@l /* 0x803CBFD0@l */ -/* 802CF0E8 90 1E 00 00 */ stw r0, 0(r30) -/* 802CF0EC 4B FF F9 D5 */ bl dispose__7JKRHeapFv -/* 802CF0F0 7F C3 F3 78 */ mr r3, r30 -/* 802CF0F4 38 80 00 00 */ li r4, 0 -/* 802CF0F8 4B FF F1 6D */ bl __dt__7JKRHeapFv -/* 802CF0FC 7F E0 07 35 */ extsh. r0, r31 -/* 802CF100 40 81 00 0C */ ble lbl_802CF10C -/* 802CF104 7F C3 F3 78 */ mr r3, r30 -/* 802CF108 4B FF FC 35 */ bl __dl__FPv -lbl_802CF10C: -/* 802CF10C 7F C3 F3 78 */ mr r3, r30 -/* 802CF110 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802CF114 83 C1 00 08 */ lwz r30, 8(r1) -/* 802CF118 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802CF11C 7C 08 03 A6 */ mtlr r0 -/* 802CF120 38 21 00 10 */ addi r1, r1, 0x10 -/* 802CF124 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/allocBack__Q210JKRExpHeap9CMemBlockFUlUcUcUcUc.s b/asm/JSystem/JKernel/JKRExpHeap/allocBack__Q210JKRExpHeap9CMemBlockFUlUcUcUcUc.s deleted file mode 100644 index 00db82582c5..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/allocBack__Q210JKRExpHeap9CMemBlockFUlUcUcUcUc.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_802D0874: -/* 802D0874 39 40 00 00 */ li r10, 0 -/* 802D0878 80 03 00 04 */ lwz r0, 4(r3) -/* 802D087C 39 24 00 10 */ addi r9, r4, 0x10 -/* 802D0880 7C 00 48 40 */ cmplw r0, r9 -/* 802D0884 41 80 00 34 */ blt lbl_802D08B8 -/* 802D0888 7C 03 02 14 */ add r0, r3, r0 -/* 802D088C 7D 44 00 50 */ subf r10, r4, r0 -/* 802D0890 98 EA 00 03 */ stb r7, 3(r10) -/* 802D0894 61 00 00 80 */ ori r0, r8, 0x80 -/* 802D0898 98 0A 00 02 */ stb r0, 2(r10) -/* 802D089C 90 8A 00 04 */ stw r4, 4(r10) -/* 802D08A0 98 A3 00 03 */ stb r5, 3(r3) -/* 802D08A4 98 C3 00 02 */ stb r6, 2(r3) -/* 802D08A8 80 03 00 04 */ lwz r0, 4(r3) -/* 802D08AC 7C 09 00 50 */ subf r0, r9, r0 -/* 802D08B0 90 03 00 04 */ stw r0, 4(r3) -/* 802D08B4 48 00 00 10 */ b lbl_802D08C4 -lbl_802D08B8: -/* 802D08B8 98 E3 00 03 */ stb r7, 3(r3) -/* 802D08BC 38 00 00 80 */ li r0, 0x80 -/* 802D08C0 98 03 00 02 */ stb r0, 2(r3) -lbl_802D08C4: -/* 802D08C4 7D 43 53 78 */ mr r3, r10 -/* 802D08C8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/allocFromHead__10JKRExpHeapFUl.s b/asm/JSystem/JKernel/JKRExpHeap/allocFromHead__10JKRExpHeapFUl.s deleted file mode 100644 index b999521ca06..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/allocFromHead__10JKRExpHeapFUl.s +++ /dev/null @@ -1,66 +0,0 @@ -lbl_802CF490: -/* 802CF490 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802CF494 7C 08 02 A6 */ mflr r0 -/* 802CF498 90 01 00 14 */ stw r0, 0x14(r1) -/* 802CF49C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802CF4A0 93 C1 00 08 */ stw r30, 8(r1) -/* 802CF4A4 7C 7E 1B 78 */ mr r30, r3 -/* 802CF4A8 38 04 00 03 */ addi r0, r4, 3 -/* 802CF4AC 54 04 00 3A */ rlwinm r4, r0, 0, 0, 0x1d -/* 802CF4B0 38 A0 FF FF */ li r5, -1 -/* 802CF4B4 3B E0 00 00 */ li r31, 0 -/* 802CF4B8 80 C3 00 78 */ lwz r6, 0x78(r3) -/* 802CF4BC 48 00 00 38 */ b lbl_802CF4F4 -lbl_802CF4C0: -/* 802CF4C0 80 66 00 04 */ lwz r3, 4(r6) -/* 802CF4C4 7C 03 20 40 */ cmplw r3, r4 -/* 802CF4C8 41 80 00 28 */ blt lbl_802CF4F0 -/* 802CF4CC 7C 05 18 40 */ cmplw r5, r3 -/* 802CF4D0 40 81 00 20 */ ble lbl_802CF4F0 -/* 802CF4D4 7C 65 1B 78 */ mr r5, r3 -/* 802CF4D8 7C DF 33 78 */ mr r31, r6 -/* 802CF4DC 88 1E 00 6C */ lbz r0, 0x6c(r30) -/* 802CF4E0 28 00 00 00 */ cmplwi r0, 0 -/* 802CF4E4 40 82 00 18 */ bne lbl_802CF4FC -/* 802CF4E8 7C 03 20 40 */ cmplw r3, r4 -/* 802CF4EC 41 82 00 10 */ beq lbl_802CF4FC -lbl_802CF4F0: -/* 802CF4F0 80 C6 00 0C */ lwz r6, 0xc(r6) -lbl_802CF4F4: -/* 802CF4F4 28 06 00 00 */ cmplwi r6, 0 -/* 802CF4F8 40 82 FF C8 */ bne lbl_802CF4C0 -lbl_802CF4FC: -/* 802CF4FC 28 1F 00 00 */ cmplwi r31, 0 -/* 802CF500 41 82 00 58 */ beq lbl_802CF558 -/* 802CF504 7F E3 FB 78 */ mr r3, r31 -/* 802CF508 88 BE 00 6D */ lbz r5, 0x6d(r30) -/* 802CF50C 38 C0 00 00 */ li r6, 0 -/* 802CF510 38 E0 00 00 */ li r7, 0 -/* 802CF514 39 00 00 00 */ li r8, 0 -/* 802CF518 48 00 13 19 */ bl allocFore__Q210JKRExpHeap9CMemBlockFUlUcUcUcUc -/* 802CF51C 7C 64 1B 79 */ or. r4, r3, r3 -/* 802CF520 41 82 00 18 */ beq lbl_802CF538 -/* 802CF524 7F C3 F3 78 */ mr r3, r30 -/* 802CF528 80 BF 00 08 */ lwz r5, 8(r31) -/* 802CF52C 80 DF 00 0C */ lwz r6, 0xc(r31) -/* 802CF530 48 00 09 39 */ bl setFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlockPQ210JKRExpHeap9CMemBlockPQ210JKRExpHeap9CMemBlock -/* 802CF534 48 00 00 10 */ b lbl_802CF544 -lbl_802CF538: -/* 802CF538 7F C3 F3 78 */ mr r3, r30 -/* 802CF53C 7F E4 FB 78 */ mr r4, r31 -/* 802CF540 48 00 09 75 */ bl removeFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock -lbl_802CF544: -/* 802CF544 7F C3 F3 78 */ mr r3, r30 -/* 802CF548 7F E4 FB 78 */ mr r4, r31 -/* 802CF54C 48 00 08 81 */ bl appendUsedList__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock -/* 802CF550 38 7F 00 10 */ addi r3, r31, 0x10 -/* 802CF554 48 00 00 08 */ b lbl_802CF55C -lbl_802CF558: -/* 802CF558 38 60 00 00 */ li r3, 0 -lbl_802CF55C: -/* 802CF55C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802CF560 83 C1 00 08 */ lwz r30, 8(r1) -/* 802CF564 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802CF568 7C 08 03 A6 */ mtlr r0 -/* 802CF56C 38 21 00 10 */ addi r1, r1, 0x10 -/* 802CF570 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/allocFromTail__10JKRExpHeapFUl.s b/asm/JSystem/JKernel/JKRExpHeap/allocFromTail__10JKRExpHeapFUl.s deleted file mode 100644 index 37eff3efc6e..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/allocFromTail__10JKRExpHeapFUl.s +++ /dev/null @@ -1,64 +0,0 @@ -lbl_802CF6D4: -/* 802CF6D4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802CF6D8 7C 08 02 A6 */ mflr r0 -/* 802CF6DC 90 01 00 24 */ stw r0, 0x24(r1) -/* 802CF6E0 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CF6E4 48 09 2A F9 */ bl _savegpr_29 -/* 802CF6E8 7C 7D 1B 78 */ mr r29, r3 -/* 802CF6EC 38 04 00 03 */ addi r0, r4, 3 -/* 802CF6F0 54 04 00 3A */ rlwinm r4, r0, 0, 0, 0x1d -/* 802CF6F4 3B E0 00 00 */ li r31, 0 -/* 802CF6F8 80 63 00 7C */ lwz r3, 0x7c(r3) -/* 802CF6FC 48 00 00 1C */ b lbl_802CF718 -lbl_802CF700: -/* 802CF700 80 03 00 04 */ lwz r0, 4(r3) -/* 802CF704 7C 00 20 40 */ cmplw r0, r4 -/* 802CF708 41 80 00 0C */ blt lbl_802CF714 -/* 802CF70C 7C 7F 1B 78 */ mr r31, r3 -/* 802CF710 48 00 00 10 */ b lbl_802CF720 -lbl_802CF714: -/* 802CF714 80 63 00 08 */ lwz r3, 8(r3) -lbl_802CF718: -/* 802CF718 28 03 00 00 */ cmplwi r3, 0 -/* 802CF71C 40 82 FF E4 */ bne lbl_802CF700 -lbl_802CF720: -/* 802CF720 28 1F 00 00 */ cmplwi r31, 0 -/* 802CF724 41 82 00 6C */ beq lbl_802CF790 -/* 802CF728 7F E3 FB 78 */ mr r3, r31 -/* 802CF72C 38 A0 00 00 */ li r5, 0 -/* 802CF730 38 C0 00 00 */ li r6, 0 -/* 802CF734 88 FD 00 6D */ lbz r7, 0x6d(r29) -/* 802CF738 39 00 00 00 */ li r8, 0 -/* 802CF73C 48 00 11 39 */ bl allocBack__Q210JKRExpHeap9CMemBlockFUlUcUcUcUc -/* 802CF740 7C 7E 1B 79 */ or. r30, r3, r3 -/* 802CF744 41 82 00 0C */ beq lbl_802CF750 -/* 802CF748 7F E4 FB 78 */ mr r4, r31 -/* 802CF74C 48 00 00 18 */ b lbl_802CF764 -lbl_802CF750: -/* 802CF750 7F A3 EB 78 */ mr r3, r29 -/* 802CF754 7F E4 FB 78 */ mr r4, r31 -/* 802CF758 48 00 07 5D */ bl removeFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock -/* 802CF75C 7F FE FB 78 */ mr r30, r31 -/* 802CF760 38 80 00 00 */ li r4, 0 -lbl_802CF764: -/* 802CF764 28 04 00 00 */ cmplwi r4, 0 -/* 802CF768 41 82 00 14 */ beq lbl_802CF77C -/* 802CF76C 7F A3 EB 78 */ mr r3, r29 -/* 802CF770 80 BF 00 08 */ lwz r5, 8(r31) -/* 802CF774 80 DF 00 0C */ lwz r6, 0xc(r31) -/* 802CF778 48 00 06 F1 */ bl setFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlockPQ210JKRExpHeap9CMemBlockPQ210JKRExpHeap9CMemBlock -lbl_802CF77C: -/* 802CF77C 7F A3 EB 78 */ mr r3, r29 -/* 802CF780 7F C4 F3 78 */ mr r4, r30 -/* 802CF784 48 00 06 49 */ bl appendUsedList__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock -/* 802CF788 38 7E 00 10 */ addi r3, r30, 0x10 -/* 802CF78C 48 00 00 08 */ b lbl_802CF794 -lbl_802CF790: -/* 802CF790 38 60 00 00 */ li r3, 0 -lbl_802CF794: -/* 802CF794 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CF798 48 09 2A 91 */ bl _restgpr_29 -/* 802CF79C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802CF7A0 7C 08 03 A6 */ mtlr r0 -/* 802CF7A4 38 21 00 20 */ addi r1, r1, 0x20 -/* 802CF7A8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/appendUsedList__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s b/asm/JSystem/JKernel/JKRExpHeap/appendUsedList__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s deleted file mode 100644 index 6f4211587c7..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/appendUsedList__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_802CFDCC: -/* 802CFDCC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802CFDD0 7C 08 02 A6 */ mflr r0 -/* 802CFDD4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802CFDD8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802CFDDC 93 C1 00 08 */ stw r30, 8(r1) -/* 802CFDE0 7C 7E 1B 78 */ mr r30, r3 -/* 802CFDE4 7C 9F 23 79 */ or. r31, r4, r4 -/* 802CFDE8 40 82 00 24 */ bne lbl_802CFE0C -/* 802CFDEC 3C 60 80 3A */ lis r3, JKRExpHeap__stringBase0@ha /* 0x8039CAF0@ha */ -/* 802CFDF0 38 C3 CA F0 */ addi r6, r3, JKRExpHeap__stringBase0@l /* 0x8039CAF0@l */ -/* 802CFDF4 38 66 00 25 */ addi r3, r6, 0x25 -/* 802CFDF8 38 80 06 20 */ li r4, 0x620 -/* 802CFDFC 38 A6 00 34 */ addi r5, r6, 0x34 -/* 802CFE00 38 C6 00 37 */ addi r6, r6, 0x37 -/* 802CFE04 4C C6 31 82 */ crclr 6 -/* 802CFE08 48 01 23 F5 */ bl panic_f__12JUTExceptionFPCciPCce -lbl_802CFE0C: -/* 802CFE0C 80 7E 00 84 */ lwz r3, 0x84(r30) -/* 802CFE10 38 00 48 4D */ li r0, 0x484d -/* 802CFE14 B0 1F 00 00 */ sth r0, 0(r31) -/* 802CFE18 28 03 00 00 */ cmplwi r3, 0 -/* 802CFE1C 41 82 00 10 */ beq lbl_802CFE2C -/* 802CFE20 93 E3 00 0C */ stw r31, 0xc(r3) -/* 802CFE24 90 7F 00 08 */ stw r3, 8(r31) -/* 802CFE28 48 00 00 0C */ b lbl_802CFE34 -lbl_802CFE2C: -/* 802CFE2C 38 00 00 00 */ li r0, 0 -/* 802CFE30 90 1F 00 08 */ stw r0, 8(r31) -lbl_802CFE34: -/* 802CFE34 93 FE 00 84 */ stw r31, 0x84(r30) -/* 802CFE38 80 1E 00 80 */ lwz r0, 0x80(r30) -/* 802CFE3C 28 00 00 00 */ cmplwi r0, 0 -/* 802CFE40 40 82 00 08 */ bne lbl_802CFE48 -/* 802CFE44 93 FE 00 80 */ stw r31, 0x80(r30) -lbl_802CFE48: -/* 802CFE48 38 00 00 00 */ li r0, 0 -/* 802CFE4C 90 1F 00 0C */ stw r0, 0xc(r31) -/* 802CFE50 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802CFE54 83 C1 00 08 */ lwz r30, 8(r1) -/* 802CFE58 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802CFE5C 7C 08 03 A6 */ mtlr r0 -/* 802CFE60 38 21 00 10 */ addi r1, r1, 0x10 -/* 802CFE64 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/createRoot__10JKRExpHeapFib.s b/asm/JSystem/JKernel/JKRExpHeap/createRoot__10JKRExpHeapFib.s deleted file mode 100644 index 0d4e6c94ce5..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/createRoot__10JKRExpHeapFib.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_802CEDB4: -/* 802CEDB4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802CEDB8 7C 08 02 A6 */ mflr r0 -/* 802CEDBC 90 01 00 24 */ stw r0, 0x24(r1) -/* 802CEDC0 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 802CEDC4 7C 65 1B 78 */ mr r5, r3 -/* 802CEDC8 7C 9F 23 78 */ mr r31, r4 -/* 802CEDCC 38 60 00 00 */ li r3, 0 -/* 802CEDD0 80 0D 8D F8 */ lwz r0, sRootHeap__7JKRHeap(r13) -/* 802CEDD4 28 00 00 00 */ cmplwi r0, 0 -/* 802CEDD8 40 82 00 38 */ bne lbl_802CEE10 -/* 802CEDDC 38 61 00 0C */ addi r3, r1, 0xc -/* 802CEDE0 38 81 00 08 */ addi r4, r1, 8 -/* 802CEDE4 4B FF F5 95 */ bl initArena__7JKRHeapFPPcPUli -/* 802CEDE8 80 61 00 0C */ lwz r3, 0xc(r1) -/* 802CEDEC 38 83 00 90 */ addi r4, r3, 0x90 -/* 802CEDF0 80 A1 00 08 */ lwz r5, 8(r1) -/* 802CEDF4 38 A5 FF 70 */ addi r5, r5, -144 -/* 802CEDF8 28 03 00 00 */ cmplwi r3, 0 -/* 802CEDFC 41 82 00 10 */ beq lbl_802CEE0C -/* 802CEE00 38 C0 00 00 */ li r6, 0 -/* 802CEE04 7F E7 FB 78 */ mr r7, r31 -/* 802CEE08 48 00 02 29 */ bl __ct__10JKRExpHeapFPvUlP7JKRHeapb -lbl_802CEE0C: -/* 802CEE0C 90 6D 8D F8 */ stw r3, sRootHeap__7JKRHeap(r13) -lbl_802CEE10: -/* 802CEE10 38 00 00 01 */ li r0, 1 -/* 802CEE14 98 03 00 6E */ stb r0, 0x6e(r3) -/* 802CEE18 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 802CEE1C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802CEE20 7C 08 03 A6 */ mtlr r0 -/* 802CEE24 38 21 00 20 */ addi r1, r1, 0x20 -/* 802CEE28 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/create__10JKRExpHeapFPvUlP7JKRHeapb.s b/asm/JSystem/JKernel/JKRExpHeap/create__10JKRExpHeapFPvUlP7JKRHeapb.s deleted file mode 100644 index 1e9541a7de9..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/create__10JKRExpHeapFPvUlP7JKRHeapb.s +++ /dev/null @@ -1,49 +0,0 @@ -lbl_802CEF00: -/* 802CEF00 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802CEF04 7C 08 02 A6 */ mflr r0 -/* 802CEF08 90 01 00 24 */ stw r0, 0x24(r1) -/* 802CEF0C 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CEF10 48 09 32 CD */ bl _savegpr_29 -/* 802CEF14 7C 7D 1B 78 */ mr r29, r3 -/* 802CEF18 7C 9E 23 78 */ mr r30, r4 -/* 802CEF1C 7C DF 33 78 */ mr r31, r6 -/* 802CEF20 28 05 00 00 */ cmplwi r5, 0 -/* 802CEF24 40 82 00 20 */ bne lbl_802CEF44 -/* 802CEF28 80 6D 8D F8 */ lwz r3, sRootHeap__7JKRHeap(r13) -/* 802CEF2C 7F A4 EB 78 */ mr r4, r29 -/* 802CEF30 4B FF F9 65 */ bl find__7JKRHeapCFPv -/* 802CEF34 7C 66 1B 79 */ or. r6, r3, r3 -/* 802CEF38 40 82 00 10 */ bne lbl_802CEF48 -/* 802CEF3C 38 60 00 00 */ li r3, 0 -/* 802CEF40 48 00 00 54 */ b lbl_802CEF94 -lbl_802CEF44: -/* 802CEF44 7C A6 2B 78 */ mr r6, r5 -lbl_802CEF48: -/* 802CEF48 38 60 00 00 */ li r3, 0 -/* 802CEF4C 28 1E 00 90 */ cmplwi r30, 0x90 -/* 802CEF50 40 80 00 0C */ bge lbl_802CEF5C -/* 802CEF54 38 60 00 00 */ li r3, 0 -/* 802CEF58 48 00 00 3C */ b lbl_802CEF94 -lbl_802CEF5C: -/* 802CEF5C 38 9D 00 90 */ addi r4, r29, 0x90 -/* 802CEF60 7C 1D F2 14 */ add r0, r29, r30 -/* 802CEF64 7C 04 00 50 */ subf r0, r4, r0 -/* 802CEF68 54 05 00 36 */ rlwinm r5, r0, 0, 0, 0x1b -/* 802CEF6C 28 1D 00 00 */ cmplwi r29, 0 -/* 802CEF70 41 82 00 14 */ beq lbl_802CEF84 -/* 802CEF74 7F A3 EB 78 */ mr r3, r29 -/* 802CEF78 41 82 00 0C */ beq lbl_802CEF84 -/* 802CEF7C 7F E7 FB 78 */ mr r7, r31 -/* 802CEF80 48 00 00 B1 */ bl __ct__10JKRExpHeapFPvUlP7JKRHeapb -lbl_802CEF84: -/* 802CEF84 38 00 00 01 */ li r0, 1 -/* 802CEF88 98 03 00 6E */ stb r0, 0x6e(r3) -/* 802CEF8C 93 A3 00 70 */ stw r29, 0x70(r3) -/* 802CEF90 93 C3 00 74 */ stw r30, 0x74(r3) -lbl_802CEF94: -/* 802CEF94 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CEF98 48 09 32 91 */ bl _restgpr_29 -/* 802CEF9C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802CEFA0 7C 08 03 A6 */ mtlr r0 -/* 802CEFA4 38 21 00 20 */ addi r1, r1, 0x20 -/* 802CEFA8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/do_alloc__10JKRExpHeapFUli.s b/asm/JSystem/JKernel/JKRExpHeap/do_alloc__10JKRExpHeapFUli.s deleted file mode 100644 index af13d3957c1..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/do_alloc__10JKRExpHeapFUli.s +++ /dev/null @@ -1,74 +0,0 @@ -lbl_802CF128: -/* 802CF128 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802CF12C 7C 08 02 A6 */ mflr r0 -/* 802CF130 90 01 00 24 */ stw r0, 0x24(r1) -/* 802CF134 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CF138 48 09 30 A1 */ bl _savegpr_28 -/* 802CF13C 7C 7C 1B 78 */ mr r28, r3 -/* 802CF140 7C 9D 23 78 */ mr r29, r4 -/* 802CF144 7C BE 2B 78 */ mr r30, r5 -/* 802CF148 38 7C 00 18 */ addi r3, r28, 0x18 -/* 802CF14C 48 06 FE F5 */ bl OSLockMutex -/* 802CF150 28 1D 00 04 */ cmplwi r29, 4 -/* 802CF154 40 80 00 08 */ bge lbl_802CF15C -/* 802CF158 3B A0 00 04 */ li r29, 4 -lbl_802CF15C: -/* 802CF15C 2C 1E 00 00 */ cmpwi r30, 0 -/* 802CF160 41 80 00 38 */ blt lbl_802CF198 -/* 802CF164 2C 1E 00 04 */ cmpwi r30, 4 -/* 802CF168 41 81 00 18 */ bgt lbl_802CF180 -/* 802CF16C 7F 83 E3 78 */ mr r3, r28 -/* 802CF170 7F A4 EB 78 */ mr r4, r29 -/* 802CF174 48 00 03 1D */ bl allocFromHead__10JKRExpHeapFUl -/* 802CF178 7C 7F 1B 78 */ mr r31, r3 -/* 802CF17C 48 00 00 4C */ b lbl_802CF1C8 -lbl_802CF180: -/* 802CF180 7F 83 E3 78 */ mr r3, r28 -/* 802CF184 7F A4 EB 78 */ mr r4, r29 -/* 802CF188 7F C5 F3 78 */ mr r5, r30 -/* 802CF18C 48 00 00 A9 */ bl allocFromHead__10JKRExpHeapFUli -/* 802CF190 7C 7F 1B 78 */ mr r31, r3 -/* 802CF194 48 00 00 34 */ b lbl_802CF1C8 -lbl_802CF198: -/* 802CF198 7C BE 00 D0 */ neg r5, r30 -/* 802CF19C 2C 05 00 04 */ cmpwi r5, 4 -/* 802CF1A0 41 81 00 18 */ bgt lbl_802CF1B8 -/* 802CF1A4 7F 83 E3 78 */ mr r3, r28 -/* 802CF1A8 7F A4 EB 78 */ mr r4, r29 -/* 802CF1AC 48 00 05 29 */ bl allocFromTail__10JKRExpHeapFUl -/* 802CF1B0 7C 7F 1B 78 */ mr r31, r3 -/* 802CF1B4 48 00 00 14 */ b lbl_802CF1C8 -lbl_802CF1B8: -/* 802CF1B8 7F 83 E3 78 */ mr r3, r28 -/* 802CF1BC 7F A4 EB 78 */ mr r4, r29 -/* 802CF1C0 48 00 03 B5 */ bl allocFromTail__10JKRExpHeapFUli -/* 802CF1C4 7C 7F 1B 78 */ mr r31, r3 -lbl_802CF1C8: -/* 802CF1C8 28 1F 00 00 */ cmplwi r31, 0 -/* 802CF1CC 40 82 00 44 */ bne lbl_802CF210 -/* 802CF1D0 3C 60 80 3A */ lis r3, JKRExpHeap__stringBase0@ha /* 0x8039CAF0@ha */ -/* 802CF1D4 38 63 CA F0 */ addi r3, r3, JKRExpHeap__stringBase0@l /* 0x8039CAF0@l */ -/* 802CF1D8 7F A4 EB 78 */ mr r4, r29 -/* 802CF1DC 4C C6 31 82 */ crclr 6 -/* 802CF1E0 48 01 94 9D */ bl JUTWarningConsole_f -/* 802CF1E4 88 1C 00 68 */ lbz r0, 0x68(r28) -/* 802CF1E8 28 00 00 01 */ cmplwi r0, 1 -/* 802CF1EC 40 82 00 24 */ bne lbl_802CF210 -/* 802CF1F0 81 8D 8D FC */ lwz r12, mErrorHandler__7JKRHeap(r13) -/* 802CF1F4 28 0C 00 00 */ cmplwi r12, 0 -/* 802CF1F8 41 82 00 18 */ beq lbl_802CF210 -/* 802CF1FC 7F 83 E3 78 */ mr r3, r28 -/* 802CF200 7F A4 EB 78 */ mr r4, r29 -/* 802CF204 7F C5 F3 78 */ mr r5, r30 -/* 802CF208 7D 89 03 A6 */ mtctr r12 -/* 802CF20C 4E 80 04 21 */ bctrl -lbl_802CF210: -/* 802CF210 38 7C 00 18 */ addi r3, r28, 0x18 -/* 802CF214 48 06 FF 09 */ bl OSUnlockMutex -/* 802CF218 7F E3 FB 78 */ mr r3, r31 -/* 802CF21C 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CF220 48 09 30 05 */ bl _restgpr_28 -/* 802CF224 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802CF228 7C 08 03 A6 */ mtlr r0 -/* 802CF22C 38 21 00 20 */ addi r1, r1, 0x20 -/* 802CF230 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/do_changeGroupID__10JKRExpHeapFUc.s b/asm/JSystem/JKernel/JKRExpHeap/do_changeGroupID__10JKRExpHeapFUc.s deleted file mode 100644 index a1a69faabd5..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/do_changeGroupID__10JKRExpHeapFUc.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_802CF928: -/* 802CF928 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802CF92C 7C 08 02 A6 */ mflr r0 -/* 802CF930 90 01 00 24 */ stw r0, 0x24(r1) -/* 802CF934 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CF938 48 09 28 A5 */ bl _savegpr_29 -/* 802CF93C 7C 7D 1B 78 */ mr r29, r3 -/* 802CF940 7C 9E 23 78 */ mr r30, r4 -/* 802CF944 38 7D 00 18 */ addi r3, r29, 0x18 -/* 802CF948 48 06 F6 F9 */ bl OSLockMutex -/* 802CF94C 8B FD 00 6D */ lbz r31, 0x6d(r29) -/* 802CF950 9B DD 00 6D */ stb r30, 0x6d(r29) -/* 802CF954 38 7D 00 18 */ addi r3, r29, 0x18 -/* 802CF958 48 06 F7 C5 */ bl OSUnlockMutex -/* 802CF95C 7F E3 FB 78 */ mr r3, r31 -/* 802CF960 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CF964 48 09 28 C5 */ bl _restgpr_29 -/* 802CF968 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802CF96C 7C 08 03 A6 */ mtlr r0 -/* 802CF970 38 21 00 20 */ addi r1, r1, 0x20 -/* 802CF974 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/do_destroy__10JKRExpHeapFv.s b/asm/JSystem/JKernel/JKRExpHeap/do_destroy__10JKRExpHeapFv.s deleted file mode 100644 index 63729f517cc..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/do_destroy__10JKRExpHeapFv.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_802CEFAC: -/* 802CEFAC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802CEFB0 7C 08 02 A6 */ mflr r0 -/* 802CEFB4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802CEFB8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802CEFBC 93 C1 00 08 */ stw r30, 8(r1) -/* 802CEFC0 7C 7E 1B 78 */ mr r30, r3 -/* 802CEFC4 88 03 00 6E */ lbz r0, 0x6e(r3) -/* 802CEFC8 28 00 00 00 */ cmplwi r0, 0 -/* 802CEFCC 40 82 00 38 */ bne lbl_802CF004 -/* 802CEFD0 80 9E 00 50 */ lwz r4, 0x50(r30) -/* 802CEFD4 83 E4 00 0C */ lwz r31, 0xc(r4) -/* 802CEFD8 28 1F 00 00 */ cmplwi r31, 0 -/* 802CEFDC 41 82 00 3C */ beq lbl_802CF018 -/* 802CEFE0 38 80 FF FF */ li r4, -1 -/* 802CEFE4 81 83 00 00 */ lwz r12, 0(r3) -/* 802CEFE8 81 8C 00 08 */ lwz r12, 8(r12) -/* 802CEFEC 7D 89 03 A6 */ mtctr r12 -/* 802CEFF0 4E 80 04 21 */ bctrl -/* 802CEFF4 7F C3 F3 78 */ mr r3, r30 -/* 802CEFF8 7F E4 FB 78 */ mr r4, r31 -/* 802CEFFC 4B FF F5 05 */ bl free__7JKRHeapFPvP7JKRHeap -/* 802CF000 48 00 00 18 */ b lbl_802CF018 -lbl_802CF004: -/* 802CF004 38 80 FF FF */ li r4, -1 -/* 802CF008 81 83 00 00 */ lwz r12, 0(r3) -/* 802CF00C 81 8C 00 08 */ lwz r12, 8(r12) -/* 802CF010 7D 89 03 A6 */ mtctr r12 -/* 802CF014 4E 80 04 21 */ bctrl -lbl_802CF018: -/* 802CF018 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802CF01C 83 C1 00 08 */ lwz r30, 8(r1) -/* 802CF020 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802CF024 7C 08 03 A6 */ mtlr r0 -/* 802CF028 38 21 00 10 */ addi r1, r1, 0x10 -/* 802CF02C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/do_freeAll__10JKRExpHeapFv.s b/asm/JSystem/JKernel/JKRExpHeap/do_freeAll__10JKRExpHeapFv.s deleted file mode 100644 index d8a71bc708d..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/do_freeAll__10JKRExpHeapFv.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_802CF820: -/* 802CF820 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802CF824 7C 08 02 A6 */ mflr r0 -/* 802CF828 90 01 00 14 */ stw r0, 0x14(r1) -/* 802CF82C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802CF830 7C 7F 1B 78 */ mr r31, r3 -/* 802CF834 38 7F 00 18 */ addi r3, r31, 0x18 -/* 802CF838 48 06 F8 09 */ bl OSLockMutex -/* 802CF83C 7F E3 FB 78 */ mr r3, r31 -/* 802CF840 4B FF ED 35 */ bl callAllDisposer__7JKRHeapFv -/* 802CF844 80 1F 00 30 */ lwz r0, 0x30(r31) -/* 802CF848 90 1F 00 78 */ stw r0, 0x78(r31) -/* 802CF84C 80 1F 00 78 */ lwz r0, 0x78(r31) -/* 802CF850 90 1F 00 7C */ stw r0, 0x7c(r31) -/* 802CF854 80 7F 00 78 */ lwz r3, 0x78(r31) -/* 802CF858 38 80 00 00 */ li r4, 0 -/* 802CF85C 38 A0 00 00 */ li r5, 0 -/* 802CF860 80 DF 00 38 */ lwz r6, 0x38(r31) -/* 802CF864 38 C6 FF F0 */ addi r6, r6, -16 -/* 802CF868 38 E0 00 00 */ li r7, 0 -/* 802CF86C 39 00 00 00 */ li r8, 0 -/* 802CF870 48 00 0F A1 */ bl initiate__Q210JKRExpHeap9CMemBlockFPQ210JKRExpHeap9CMemBlockPQ210JKRExpHeap9CMemBlockUlUcUc -/* 802CF874 38 00 00 00 */ li r0, 0 -/* 802CF878 90 1F 00 80 */ stw r0, 0x80(r31) -/* 802CF87C 90 1F 00 84 */ stw r0, 0x84(r31) -/* 802CF880 38 7F 00 18 */ addi r3, r31, 0x18 -/* 802CF884 48 06 F8 99 */ bl OSUnlockMutex -/* 802CF888 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802CF88C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802CF890 7C 08 03 A6 */ mtlr r0 -/* 802CF894 38 21 00 10 */ addi r1, r1, 0x10 -/* 802CF898 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/do_free__10JKRExpHeapFPv.s b/asm/JSystem/JKernel/JKRExpHeap/do_free__10JKRExpHeapFPv.s deleted file mode 100644 index 142f7bb8080..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/do_free__10JKRExpHeapFPv.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_802CF7AC: -/* 802CF7AC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802CF7B0 7C 08 02 A6 */ mflr r0 -/* 802CF7B4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802CF7B8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802CF7BC 93 C1 00 08 */ stw r30, 8(r1) -/* 802CF7C0 7C 7E 1B 78 */ mr r30, r3 -/* 802CF7C4 7C 9F 23 78 */ mr r31, r4 -/* 802CF7C8 38 7E 00 18 */ addi r3, r30, 0x18 -/* 802CF7CC 48 06 F8 75 */ bl OSLockMutex -/* 802CF7D0 80 1E 00 30 */ lwz r0, 0x30(r30) -/* 802CF7D4 7C 00 F8 40 */ cmplw r0, r31 -/* 802CF7D8 41 81 00 28 */ bgt lbl_802CF800 -/* 802CF7DC 80 1E 00 34 */ lwz r0, 0x34(r30) -/* 802CF7E0 7C 1F 00 40 */ cmplw r31, r0 -/* 802CF7E4 41 81 00 1C */ bgt lbl_802CF800 -/* 802CF7E8 7F E3 FB 78 */ mr r3, r31 -/* 802CF7EC 48 00 11 31 */ bl getHeapBlock__Q210JKRExpHeap9CMemBlockFPv -/* 802CF7F0 28 03 00 00 */ cmplwi r3, 0 -/* 802CF7F4 41 82 00 0C */ beq lbl_802CF800 -/* 802CF7F8 7F C4 F3 78 */ mr r4, r30 -/* 802CF7FC 48 00 10 D1 */ bl free__Q210JKRExpHeap9CMemBlockFP10JKRExpHeap -lbl_802CF800: -/* 802CF800 38 7E 00 18 */ addi r3, r30, 0x18 -/* 802CF804 48 06 F9 19 */ bl OSUnlockMutex -/* 802CF808 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802CF80C 83 C1 00 08 */ lwz r30, 8(r1) -/* 802CF810 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802CF814 7C 08 03 A6 */ mtlr r0 -/* 802CF818 38 21 00 10 */ addi r1, r1, 0x10 -/* 802CF81C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/do_getCurrentGroupId__10JKRExpHeapFv.s b/asm/JSystem/JKernel/JKRExpHeap/do_getCurrentGroupId__10JKRExpHeapFv.s deleted file mode 100644 index 7451dc6625c..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/do_getCurrentGroupId__10JKRExpHeapFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_802D0A1C: -/* 802D0A1C 88 63 00 6D */ lbz r3, 0x6d(r3) -/* 802D0A20 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/do_getFreeSize__10JKRExpHeapFv.s b/asm/JSystem/JKernel/JKRExpHeap/do_getFreeSize__10JKRExpHeapFv.s deleted file mode 100644 index 655755bbdc5..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/do_getFreeSize__10JKRExpHeapFv.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_802CFBA4: -/* 802CFBA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802CFBA8 7C 08 02 A6 */ mflr r0 -/* 802CFBAC 90 01 00 14 */ stw r0, 0x14(r1) -/* 802CFBB0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802CFBB4 93 C1 00 08 */ stw r30, 8(r1) -/* 802CFBB8 7C 7E 1B 78 */ mr r30, r3 -/* 802CFBBC 38 7E 00 18 */ addi r3, r30, 0x18 -/* 802CFBC0 48 06 F4 81 */ bl OSLockMutex -/* 802CFBC4 3B E0 00 00 */ li r31, 0 -/* 802CFBC8 80 7E 00 78 */ lwz r3, 0x78(r30) -/* 802CFBCC 48 00 00 18 */ b lbl_802CFBE4 -lbl_802CFBD0: -/* 802CFBD0 80 03 00 04 */ lwz r0, 4(r3) -/* 802CFBD4 7C 1F 00 00 */ cmpw r31, r0 -/* 802CFBD8 40 80 00 08 */ bge lbl_802CFBE0 -/* 802CFBDC 7C 1F 03 78 */ mr r31, r0 -lbl_802CFBE0: -/* 802CFBE0 80 63 00 0C */ lwz r3, 0xc(r3) -lbl_802CFBE4: -/* 802CFBE4 28 03 00 00 */ cmplwi r3, 0 -/* 802CFBE8 40 82 FF E8 */ bne lbl_802CFBD0 -/* 802CFBEC 38 7E 00 18 */ addi r3, r30, 0x18 -/* 802CFBF0 48 06 F5 2D */ bl OSUnlockMutex -/* 802CFBF4 7F E3 FB 78 */ mr r3, r31 -/* 802CFBF8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802CFBFC 83 C1 00 08 */ lwz r30, 8(r1) -/* 802CFC00 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802CFC04 7C 08 03 A6 */ mtlr r0 -/* 802CFC08 38 21 00 10 */ addi r1, r1, 0x10 -/* 802CFC0C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/do_getMaxFreeBlock__10JKRExpHeapFv.s b/asm/JSystem/JKernel/JKRExpHeap/do_getMaxFreeBlock__10JKRExpHeapFv.s deleted file mode 100644 index ee74522270f..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/do_getMaxFreeBlock__10JKRExpHeapFv.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_802CFC10: -/* 802CFC10 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802CFC14 7C 08 02 A6 */ mflr r0 -/* 802CFC18 90 01 00 14 */ stw r0, 0x14(r1) -/* 802CFC1C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802CFC20 93 C1 00 08 */ stw r30, 8(r1) -/* 802CFC24 7C 7E 1B 78 */ mr r30, r3 -/* 802CFC28 38 7E 00 18 */ addi r3, r30, 0x18 -/* 802CFC2C 48 06 F4 15 */ bl OSLockMutex -/* 802CFC30 38 60 00 00 */ li r3, 0 -/* 802CFC34 3B E0 00 00 */ li r31, 0 -/* 802CFC38 80 9E 00 78 */ lwz r4, 0x78(r30) -/* 802CFC3C 48 00 00 1C */ b lbl_802CFC58 -lbl_802CFC40: -/* 802CFC40 80 04 00 04 */ lwz r0, 4(r4) -/* 802CFC44 7C 03 00 00 */ cmpw r3, r0 -/* 802CFC48 40 80 00 0C */ bge lbl_802CFC54 -/* 802CFC4C 7C 03 03 78 */ mr r3, r0 -/* 802CFC50 7C 9F 23 78 */ mr r31, r4 -lbl_802CFC54: -/* 802CFC54 80 84 00 0C */ lwz r4, 0xc(r4) -lbl_802CFC58: -/* 802CFC58 28 04 00 00 */ cmplwi r4, 0 -/* 802CFC5C 40 82 FF E4 */ bne lbl_802CFC40 -/* 802CFC60 38 7E 00 18 */ addi r3, r30, 0x18 -/* 802CFC64 48 06 F4 B9 */ bl OSUnlockMutex -/* 802CFC68 7F E3 FB 78 */ mr r3, r31 -/* 802CFC6C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802CFC70 83 C1 00 08 */ lwz r30, 8(r1) -/* 802CFC74 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802CFC78 7C 08 03 A6 */ mtlr r0 -/* 802CFC7C 38 21 00 10 */ addi r1, r1, 0x10 -/* 802CFC80 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/do_getSize__10JKRExpHeapFPv.s b/asm/JSystem/JKernel/JKRExpHeap/do_getSize__10JKRExpHeapFPv.s deleted file mode 100644 index 5598acc7841..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/do_getSize__10JKRExpHeapFPv.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_802CFB24: -/* 802CFB24 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802CFB28 7C 08 02 A6 */ mflr r0 -/* 802CFB2C 90 01 00 24 */ stw r0, 0x24(r1) -/* 802CFB30 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CFB34 48 09 26 A9 */ bl _savegpr_29 -/* 802CFB38 7C 7D 1B 78 */ mr r29, r3 -/* 802CFB3C 7C 9E 23 78 */ mr r30, r4 -/* 802CFB40 38 7D 00 18 */ addi r3, r29, 0x18 -/* 802CFB44 48 06 F4 FD */ bl OSLockMutex -/* 802CFB48 7F C3 F3 78 */ mr r3, r30 -/* 802CFB4C 48 00 0D D1 */ bl getHeapBlock__Q210JKRExpHeap9CMemBlockFPv -/* 802CFB50 7C 7F 1B 79 */ or. r31, r3, r3 -/* 802CFB54 41 82 00 1C */ beq lbl_802CFB70 -/* 802CFB58 80 1D 00 30 */ lwz r0, 0x30(r29) -/* 802CFB5C 7C 1E 00 40 */ cmplw r30, r0 -/* 802CFB60 41 80 00 10 */ blt lbl_802CFB70 -/* 802CFB64 80 1D 00 34 */ lwz r0, 0x34(r29) -/* 802CFB68 7C 00 F0 40 */ cmplw r0, r30 -/* 802CFB6C 40 80 00 14 */ bge lbl_802CFB80 -lbl_802CFB70: -/* 802CFB70 38 7D 00 18 */ addi r3, r29, 0x18 -/* 802CFB74 48 06 F5 A9 */ bl OSUnlockMutex -/* 802CFB78 38 60 FF FF */ li r3, -1 -/* 802CFB7C 48 00 00 10 */ b lbl_802CFB8C -lbl_802CFB80: -/* 802CFB80 38 7D 00 18 */ addi r3, r29, 0x18 -/* 802CFB84 48 06 F5 99 */ bl OSUnlockMutex -/* 802CFB88 80 7F 00 04 */ lwz r3, 4(r31) -lbl_802CFB8C: -/* 802CFB8C 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CFB90 48 09 26 99 */ bl _restgpr_29 -/* 802CFB94 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802CFB98 7C 08 03 A6 */ mtlr r0 -/* 802CFB9C 38 21 00 20 */ addi r1, r1, 0x20 -/* 802CFBA0 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/do_getTotalFreeSize__10JKRExpHeapFv.s b/asm/JSystem/JKernel/JKRExpHeap/do_getTotalFreeSize__10JKRExpHeapFv.s deleted file mode 100644 index 744f124ae40..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/do_getTotalFreeSize__10JKRExpHeapFv.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_802CFC84: -/* 802CFC84 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802CFC88 7C 08 02 A6 */ mflr r0 -/* 802CFC8C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802CFC90 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802CFC94 93 C1 00 08 */ stw r30, 8(r1) -/* 802CFC98 7C 7E 1B 78 */ mr r30, r3 -/* 802CFC9C 3B E0 00 00 */ li r31, 0 -/* 802CFCA0 38 7E 00 18 */ addi r3, r30, 0x18 -/* 802CFCA4 48 06 F3 9D */ bl OSLockMutex -/* 802CFCA8 80 7E 00 78 */ lwz r3, 0x78(r30) -/* 802CFCAC 48 00 00 10 */ b lbl_802CFCBC -lbl_802CFCB0: -/* 802CFCB0 80 03 00 04 */ lwz r0, 4(r3) -/* 802CFCB4 7F FF 02 14 */ add r31, r31, r0 -/* 802CFCB8 80 63 00 0C */ lwz r3, 0xc(r3) -lbl_802CFCBC: -/* 802CFCBC 28 03 00 00 */ cmplwi r3, 0 -/* 802CFCC0 40 82 FF F0 */ bne lbl_802CFCB0 -/* 802CFCC4 38 7E 00 18 */ addi r3, r30, 0x18 -/* 802CFCC8 48 06 F4 55 */ bl OSUnlockMutex -/* 802CFCCC 7F E3 FB 78 */ mr r3, r31 -/* 802CFCD0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802CFCD4 83 C1 00 08 */ lwz r30, 8(r1) -/* 802CFCD8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802CFCDC 7C 08 03 A6 */ mtlr r0 -/* 802CFCE0 38 21 00 10 */ addi r1, r1, 0x10 -/* 802CFCE4 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/func_802CFE68.s b/asm/JSystem/JKernel/JKRExpHeap/func_802CFE68.s deleted file mode 100644 index 9e372a7dc09..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/func_802CFE68.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_802CFE68: -/* 802CFE68 28 05 00 00 */ cmplwi r5, 0 -/* 802CFE6C 40 82 00 14 */ bne lbl_802CFE80 -/* 802CFE70 90 83 00 78 */ stw r4, 0x78(r3) -/* 802CFE74 38 00 00 00 */ li r0, 0 -/* 802CFE78 90 04 00 08 */ stw r0, 8(r4) -/* 802CFE7C 48 00 00 0C */ b lbl_802CFE88 -lbl_802CFE80: -/* 802CFE80 90 85 00 0C */ stw r4, 0xc(r5) -/* 802CFE84 90 A4 00 08 */ stw r5, 8(r4) -lbl_802CFE88: -/* 802CFE88 28 06 00 00 */ cmplwi r6, 0 -/* 802CFE8C 40 82 00 14 */ bne lbl_802CFEA0 -/* 802CFE90 90 83 00 7C */ stw r4, 0x7c(r3) -/* 802CFE94 38 00 00 00 */ li r0, 0 -/* 802CFE98 90 04 00 0C */ stw r0, 0xc(r4) -/* 802CFE9C 48 00 00 0C */ b lbl_802CFEA8 -lbl_802CFEA0: -/* 802CFEA0 90 86 00 08 */ stw r4, 8(r6) -/* 802CFEA4 90 C4 00 0C */ stw r6, 0xc(r4) -lbl_802CFEA8: -/* 802CFEA8 38 00 00 00 */ li r0, 0 -/* 802CFEAC B0 04 00 00 */ sth r0, 0(r4) -/* 802CFEB0 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/func_802D0810.s b/asm/JSystem/JKernel/JKRExpHeap/func_802D0810.s deleted file mode 100644 index a4eef31d57a..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/func_802D0810.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_802D0810: -/* 802D0810 38 00 48 4D */ li r0, 0x484d -/* 802D0814 B0 03 00 00 */ sth r0, 0(r3) -/* 802D0818 99 03 00 02 */ stb r8, 2(r3) -/* 802D081C 98 E3 00 03 */ stb r7, 3(r3) -/* 802D0820 90 C3 00 04 */ stw r6, 4(r3) -/* 802D0824 90 83 00 08 */ stw r4, 8(r3) -/* 802D0828 90 A3 00 0C */ stw r5, 0xc(r3) -/* 802D082C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/getHeapBlock__Q210JKRExpHeap9CMemBlockFPv.s b/asm/JSystem/JKernel/JKRExpHeap/getHeapBlock__Q210JKRExpHeap9CMemBlockFPv.s deleted file mode 100644 index 371ff77d71f..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/getHeapBlock__Q210JKRExpHeap9CMemBlockFPv.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_802D091C: -/* 802D091C 28 03 00 00 */ cmplwi r3, 0 -/* 802D0920 41 82 00 10 */ beq lbl_802D0930 -/* 802D0924 A4 03 FF F0 */ lhzu r0, -0x10(r3) -/* 802D0928 28 00 48 4D */ cmplwi r0, 0x484d -/* 802D092C 4D 82 00 20 */ beqlr -lbl_802D0930: -/* 802D0930 38 60 00 00 */ li r3, 0 -/* 802D0934 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/getHeapType__10JKRExpHeapFv.s b/asm/JSystem/JKernel/JKRExpHeap/getHeapType__10JKRExpHeapFv.s deleted file mode 100644 index a9f0dec3f89..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/getHeapType__10JKRExpHeapFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_802D0A10: -/* 802D0A10 3C 60 45 58 */ lis r3, 0x4558 /* 0x45585048@ha */ -/* 802D0A14 38 63 50 48 */ addi r3, r3, 0x5048 /* 0x45585048@l */ -/* 802D0A18 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/getTotalUsedSize__10JKRExpHeapCFv.s b/asm/JSystem/JKernel/JKRExpHeap/getTotalUsedSize__10JKRExpHeapCFv.s deleted file mode 100644 index 913157232d1..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/getTotalUsedSize__10JKRExpHeapCFv.s +++ /dev/null @@ -1,29 +0,0 @@ -lbl_802CFD64: -/* 802CFD64 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802CFD68 7C 08 02 A6 */ mflr r0 -/* 802CFD6C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802CFD70 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802CFD74 93 C1 00 08 */ stw r30, 8(r1) -/* 802CFD78 7C 7E 1B 78 */ mr r30, r3 -/* 802CFD7C 38 7E 00 18 */ addi r3, r30, 0x18 -/* 802CFD80 48 06 F2 C1 */ bl OSLockMutex -/* 802CFD84 3B E0 00 00 */ li r31, 0 -/* 802CFD88 80 7E 00 80 */ lwz r3, 0x80(r30) -/* 802CFD8C 48 00 00 14 */ b lbl_802CFDA0 -lbl_802CFD90: -/* 802CFD90 80 03 00 04 */ lwz r0, 4(r3) -/* 802CFD94 7F E0 FA 14 */ add r31, r0, r31 -/* 802CFD98 80 63 00 0C */ lwz r3, 0xc(r3) -/* 802CFD9C 3B FF 00 10 */ addi r31, r31, 0x10 -lbl_802CFDA0: -/* 802CFDA0 28 03 00 00 */ cmplwi r3, 0 -/* 802CFDA4 40 82 FF EC */ bne lbl_802CFD90 -/* 802CFDA8 38 7E 00 18 */ addi r3, r30, 0x18 -/* 802CFDAC 48 06 F3 71 */ bl OSUnlockMutex -/* 802CFDB0 7F E3 FB 78 */ mr r3, r31 -/* 802CFDB4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802CFDB8 83 C1 00 08 */ lwz r30, 8(r1) -/* 802CFDBC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802CFDC0 7C 08 03 A6 */ mtlr r0 -/* 802CFDC4 38 21 00 10 */ addi r1, r1, 0x10 -/* 802CFDC8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/getUsedSize__10JKRExpHeapCFUc.s b/asm/JSystem/JKernel/JKRExpHeap/getUsedSize__10JKRExpHeapCFUc.s deleted file mode 100644 index d3c9c1b1e7f..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/getUsedSize__10JKRExpHeapCFUc.s +++ /dev/null @@ -1,35 +0,0 @@ -lbl_802CFCE8: -/* 802CFCE8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802CFCEC 7C 08 02 A6 */ mflr r0 -/* 802CFCF0 90 01 00 24 */ stw r0, 0x24(r1) -/* 802CFCF4 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CFCF8 48 09 24 E5 */ bl _savegpr_29 -/* 802CFCFC 7C 7D 1B 78 */ mr r29, r3 -/* 802CFD00 7C 9E 23 78 */ mr r30, r4 -/* 802CFD04 38 7D 00 18 */ addi r3, r29, 0x18 -/* 802CFD08 48 06 F3 39 */ bl OSLockMutex -/* 802CFD0C 3B E0 00 00 */ li r31, 0 -/* 802CFD10 80 9D 00 80 */ lwz r4, 0x80(r29) -/* 802CFD14 57 C3 06 3E */ clrlwi r3, r30, 0x18 -/* 802CFD18 48 00 00 20 */ b lbl_802CFD38 -lbl_802CFD1C: -/* 802CFD1C 88 04 00 03 */ lbz r0, 3(r4) -/* 802CFD20 7C 00 18 40 */ cmplw r0, r3 -/* 802CFD24 40 82 00 10 */ bne lbl_802CFD34 -/* 802CFD28 80 04 00 04 */ lwz r0, 4(r4) -/* 802CFD2C 7F E0 FA 14 */ add r31, r0, r31 -/* 802CFD30 3B FF 00 10 */ addi r31, r31, 0x10 -lbl_802CFD34: -/* 802CFD34 80 84 00 0C */ lwz r4, 0xc(r4) -lbl_802CFD38: -/* 802CFD38 28 04 00 00 */ cmplwi r4, 0 -/* 802CFD3C 40 82 FF E0 */ bne lbl_802CFD1C -/* 802CFD40 38 7D 00 18 */ addi r3, r29, 0x18 -/* 802CFD44 48 06 F3 D9 */ bl OSUnlockMutex -/* 802CFD48 7F E3 FB 78 */ mr r3, r31 -/* 802CFD4C 39 61 00 20 */ addi r11, r1, 0x20 -/* 802CFD50 48 09 24 D9 */ bl _restgpr_29 -/* 802CFD54 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802CFD58 7C 08 03 A6 */ mtlr r0 -/* 802CFD5C 38 21 00 20 */ addi r1, r1, 0x20 -/* 802CFD60 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/removeFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s b/asm/JSystem/JKernel/JKRExpHeap/removeFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s deleted file mode 100644 index 5393cf95d6e..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/removeFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_802CFEB4: -/* 802CFEB4 80 A4 00 08 */ lwz r5, 8(r4) -/* 802CFEB8 80 84 00 0C */ lwz r4, 0xc(r4) -/* 802CFEBC 28 05 00 00 */ cmplwi r5, 0 -/* 802CFEC0 40 82 00 0C */ bne lbl_802CFECC -/* 802CFEC4 90 83 00 78 */ stw r4, 0x78(r3) -/* 802CFEC8 48 00 00 08 */ b lbl_802CFED0 -lbl_802CFECC: -/* 802CFECC 90 85 00 0C */ stw r4, 0xc(r5) -lbl_802CFED0: -/* 802CFED0 28 04 00 00 */ cmplwi r4, 0 -/* 802CFED4 40 82 00 0C */ bne lbl_802CFEE0 -/* 802CFED8 90 A3 00 7C */ stw r5, 0x7c(r3) -/* 802CFEDC 4E 80 00 20 */ blr -lbl_802CFEE0: -/* 802CFEE0 90 A4 00 08 */ stw r5, 8(r4) -/* 802CFEE4 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/removeUsedBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s b/asm/JSystem/JKernel/JKRExpHeap/removeUsedBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s deleted file mode 100644 index 6ef922b3a8c..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/removeUsedBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_802CFEE8: -/* 802CFEE8 80 A4 00 08 */ lwz r5, 8(r4) -/* 802CFEEC 80 84 00 0C */ lwz r4, 0xc(r4) -/* 802CFEF0 28 05 00 00 */ cmplwi r5, 0 -/* 802CFEF4 40 82 00 0C */ bne lbl_802CFF00 -/* 802CFEF8 90 83 00 80 */ stw r4, 0x80(r3) -/* 802CFEFC 48 00 00 08 */ b lbl_802CFF04 -lbl_802CFF00: -/* 802CFF00 90 85 00 0C */ stw r4, 0xc(r5) -lbl_802CFF04: -/* 802CFF04 28 04 00 00 */ cmplwi r4, 0 -/* 802CFF08 40 82 00 0C */ bne lbl_802CFF14 -/* 802CFF0C 90 A3 00 84 */ stw r5, 0x84(r3) -/* 802CFF10 4E 80 00 20 */ blr -lbl_802CFF14: -/* 802CFF14 90 A4 00 08 */ stw r5, 8(r4) -/* 802CFF18 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/state_compare__10JKRExpHeapCFRCQ27JKRHeap6TStateRCQ27JKRHeap6TState.s b/asm/JSystem/JKernel/JKRExpHeap/state_compare__10JKRExpHeapCFRCQ27JKRHeap6TStateRCQ27JKRHeap6TState.s deleted file mode 100644 index ddbe0faa605..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/state_compare__10JKRExpHeapCFRCQ27JKRHeap6TStateRCQ27JKRHeap6TState.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_802D09E0: -/* 802D09E0 38 60 00 01 */ li r3, 1 -/* 802D09E4 80 C4 00 04 */ lwz r6, 4(r4) -/* 802D09E8 80 05 00 04 */ lwz r0, 4(r5) -/* 802D09EC 7C 06 00 40 */ cmplw r6, r0 -/* 802D09F0 41 82 00 08 */ beq lbl_802D09F8 -/* 802D09F4 38 60 00 00 */ li r3, 0 -lbl_802D09F8: -/* 802D09F8 80 84 00 00 */ lwz r4, 0(r4) -/* 802D09FC 80 05 00 00 */ lwz r0, 0(r5) -/* 802D0A00 7C 04 00 40 */ cmplw r4, r0 -/* 802D0A04 4D 82 00 20 */ beqlr -/* 802D0A08 38 60 00 00 */ li r3, 0 -/* 802D0A0C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRExpHeap/state_register__10JKRExpHeapCFPQ27JKRHeap6TStateUl.s b/asm/JSystem/JKernel/JKRExpHeap/state_register__10JKRExpHeapCFPQ27JKRHeap6TStateUl.s deleted file mode 100644 index 8753c14aafa..00000000000 --- a/asm/JSystem/JKernel/JKRExpHeap/state_register__10JKRExpHeapCFPQ27JKRHeap6TStateUl.s +++ /dev/null @@ -1,49 +0,0 @@ -lbl_802D0938: -/* 802D0938 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802D093C 7C 08 02 A6 */ mflr r0 -/* 802D0940 90 01 00 24 */ stw r0, 0x24(r1) -/* 802D0944 39 61 00 20 */ addi r11, r1, 0x20 -/* 802D0948 48 09 18 95 */ bl _savegpr_29 -/* 802D094C 7C 7D 1B 78 */ mr r29, r3 -/* 802D0950 7C 9E 23 78 */ mr r30, r4 -/* 802D0954 7C BF 2B 78 */ mr r31, r5 -/* 802D0958 93 E4 00 14 */ stw r31, 0x14(r4) -/* 802D095C 28 1F 00 FF */ cmplwi r31, 0xff -/* 802D0960 41 81 00 14 */ bgt lbl_802D0974 -/* 802D0964 57 E4 06 3E */ clrlwi r4, r31, 0x18 -/* 802D0968 4B FF F3 81 */ bl getUsedSize__10JKRExpHeapCFUc -/* 802D096C 90 7E 00 00 */ stw r3, 0(r30) -/* 802D0970 48 00 00 14 */ b lbl_802D0984 -lbl_802D0974: -/* 802D0974 4B FF DE 11 */ bl getTotalFreeSize__7JKRHeapFv -/* 802D0978 80 1D 00 38 */ lwz r0, 0x38(r29) -/* 802D097C 7C 03 00 50 */ subf r0, r3, r0 -/* 802D0980 90 1E 00 00 */ stw r0, 0(r30) -lbl_802D0984: -/* 802D0984 38 60 00 00 */ li r3, 0 -/* 802D0988 80 9D 00 80 */ lwz r4, 0x80(r29) -/* 802D098C 48 00 00 30 */ b lbl_802D09BC -lbl_802D0990: -/* 802D0990 28 1F 00 FF */ cmplwi r31, 0xff -/* 802D0994 41 81 00 1C */ bgt lbl_802D09B0 -/* 802D0998 88 04 00 03 */ lbz r0, 3(r4) -/* 802D099C 7C 00 F8 40 */ cmplw r0, r31 -/* 802D09A0 40 82 00 18 */ bne lbl_802D09B8 -/* 802D09A4 1C 04 00 03 */ mulli r0, r4, 3 -/* 802D09A8 7C 63 02 14 */ add r3, r3, r0 -/* 802D09AC 48 00 00 0C */ b lbl_802D09B8 -lbl_802D09B0: -/* 802D09B0 1C 04 00 03 */ mulli r0, r4, 3 -/* 802D09B4 7C 63 02 14 */ add r3, r3, r0 -lbl_802D09B8: -/* 802D09B8 80 84 00 0C */ lwz r4, 0xc(r4) -lbl_802D09BC: -/* 802D09BC 28 04 00 00 */ cmplwi r4, 0 -/* 802D09C0 40 82 FF D0 */ bne lbl_802D0990 -/* 802D09C4 90 7E 00 04 */ stw r3, 4(r30) -/* 802D09C8 39 61 00 20 */ addi r11, r1, 0x20 -/* 802D09CC 48 09 18 5D */ bl _restgpr_29 -/* 802D09D0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802D09D4 7C 08 03 A6 */ mtlr r0 -/* 802D09D8 38 21 00 20 */ addi r1, r1, 0x20 -/* 802D09DC 4E 80 00 20 */ blr diff --git a/include/JSystem/JKernel/JKRExpHeap.h b/include/JSystem/JKernel/JKRExpHeap.h index eeeab96a394..d2e93baa53d 100644 --- a/include/JSystem/JKernel/JKRExpHeap.h +++ b/include/JSystem/JKernel/JKRExpHeap.h @@ -7,21 +7,24 @@ class JKRExpHeap : public JKRHeap { public: class CMemBlock { + friend class JKRExpHeap; + public: void initiate(CMemBlock*, CMemBlock*, u32, u8, u8); - void allocFore(u32, u8, u8, u8, u8); - void allocBack(u32, u8, u8, u8, u8); - void free(JKRExpHeap*); - void getHeapBlock(void*); + JKRExpHeap::CMemBlock* allocFore(u32, u8, u8, u8, u8); + JKRExpHeap::CMemBlock* allocBack(u32, u8, u8, u8, u8); + int free(JKRExpHeap*); + static CMemBlock* getHeapBlock(void*); void newGroupId(u8 groupId) { this->mGroupId = groupId; } - bool isValid() const { return this->mMagic == 0x484d; } + bool isValid() const { return this->mMagic == 'HM'; } bool _isTempMemBlock() const { return (this->mFlags & 0x80) ? true : false; } int getAlignment() const { return this->mFlags & 0x7f; } void* getContent() const { return (void*)(this + 1); } CMemBlock* getPrevBlock() const { return this->mPrev; } CMemBlock* getNextBlock() const { return this->mNext; } u32 getSize() const { return this->size; } + u8 getGroupId() const { return this->mGroupId; } static CMemBlock* getBlock(void* data) { return (CMemBlock*)((u32)data + -0x10); } private: @@ -32,15 +35,16 @@ public: CMemBlock* mPrev; CMemBlock* mNext; }; + friend class CMemBlock; protected: JKRExpHeap(void*, u32, JKRHeap*, bool); virtual ~JKRExpHeap(); - void allocFromHead(u32, int); - void allocFromHead(u32); - void allocFromTail(u32, int); - void allocFromTail(u32); + void* allocFromHead(u32, int); + void* allocFromHead(u32); + void* allocFromTail(u32, int); + void* allocFromTail(u32); void appendUsedList(CMemBlock*); void setFreeBlock(CMemBlock*, CMemBlock*, CMemBlock*); void removeFreeBlock(CMemBlock*); @@ -76,9 +80,11 @@ public: JKRHeap::TState const&) const; /* override */ u8 field_0x6c; + u8 mCurrentGroupId; + bool field_0x6e; private: - u32 field_0x70; + void* field_0x70; u32 field_0x74; CMemBlock* mHeadFreeList; CMemBlock* mTailFreeList; @@ -91,8 +97,8 @@ public: static JKRExpHeap* create(void*, u32, JKRHeap*, bool); }; -inline JKRExpHeap* JKRCreateExpHeap(u32 param_0, JKRHeap* param_1, bool param_2) { - return JKRExpHeap::create(param_0, param_1, param_2); +inline JKRExpHeap* JKRCreateExpHeap(u32 size, JKRHeap* parent, bool errorFlag) { + return JKRExpHeap::create(size, parent, errorFlag); } #endif /* JKREXPHEAP_H */ diff --git a/libs/JSystem/JKernel/JKRExpHeap.cpp b/libs/JSystem/JKernel/JKRExpHeap.cpp index 6dca878c656..9bfb17e015b 100644 --- a/libs/JSystem/JKernel/JKRExpHeap.cpp +++ b/libs/JSystem/JKernel/JKRExpHeap.cpp @@ -7,6 +7,7 @@ #include "JSystem/JUtility/JUTException.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "global.h" // // Forward References: @@ -75,10 +76,10 @@ extern "C" void dispose__7JKRHeapFv(); extern "C" void __dl__FPv(); extern "C" void state_dump__7JKRHeapCFRCQ27JKRHeap6TState(); extern "C" void panic_f__12JUTExceptionFPCciPCce(); -extern "C" void JUTReportConsole_f(); -extern "C" void JUTReportConsole(); -extern "C" void JUTWarningConsole_f(); -extern "C" void JUTWarningConsole(); +extern "C" void JUTReportConsole_f(const char*, ...); +extern "C" void JUTReportConsole(const char*); +extern "C" void JUTWarningConsole_f(const char*, ...); +extern "C" void JUTWarningConsole(const char*); extern "C" void _savegpr_25(); extern "C" void _savegpr_27(); extern "C" void _savegpr_28(); @@ -96,17 +97,53 @@ extern "C" u8 mErrorHandler__7JKRHeap[4]; // /* 802CEDB4-802CEE2C 2C96F4 0078+00 0/0 1/1 0/0 .text createRoot__10JKRExpHeapFib */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JKRExpHeap* JKRExpHeap::createRoot(int param_0, bool param_1) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/createRoot__10JKRExpHeapFib.s" +JKRExpHeap* JKRExpHeap::createRoot(int param_0, bool errorFlag) { + JKRExpHeap* heap = NULL; + if (!sRootHeap) { + void* memory; + u32 memorySize; + initArena((char**)&memory, &memorySize, param_0); + u8* start = (u8*)memory + ALIGN_NEXT(sizeof(JKRExpHeap), 0x10); + u32 alignedSize = memorySize - ALIGN_NEXT(sizeof(JKRExpHeap), 0x10); + heap = new (memory) JKRExpHeap(start, alignedSize, NULL, errorFlag); + sRootHeap = heap; + } + heap->field_0x6e = true; + return heap; } -#pragma pop /* 802CEE2C-802CEF00 2C976C 00D4+00 0/0 19/19 1/1 .text create__10JKRExpHeapFUlP7JKRHeapb */ +#if NONMATCHING +JKRExpHeap* JKRExpHeap::create(u32 size, JKRHeap* parent, bool errorFlag) { + if (!parent) { + parent = sRootHeap; + } + + if (size == 0xffffffff) { + size = parent->getMaxAllocatableSize(0x10); + } + + u32 alignedSize = ALIGN_PREV(size, 0x10); + u32 expHeapSize = ALIGN_NEXT(sizeof(JKRExpHeap), 0x10); + if (alignedSize < 0xa0) + return NULL; + + void* memory = alloc(alignedSize, 0x10, parent); + void* dataPtr = (u8*)memory + expHeapSize; + if (!memory) { + return NULL; + } + JKRExpHeap* newHeap = + new (memory) JKRExpHeap(dataPtr, alignedSize - expHeapSize, parent, errorFlag); + if (newHeap == NULL) { + free(memory, NULL); + return NULL; + }; + newHeap->field_0x6e = false; + return newHeap; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -115,27 +152,46 @@ asm JKRExpHeap* JKRExpHeap::create(u32 param_0, JKRHeap* param_1, bool param_2) #include "asm/JSystem/JKernel/JKRExpHeap/create__10JKRExpHeapFUlP7JKRHeapb.s" } #pragma pop +#endif /* 802CEF00-802CEFAC 2C9840 00AC+00 0/0 1/1 0/0 .text create__10JKRExpHeapFPvUlP7JKRHeapb */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JKRExpHeap* JKRExpHeap::create(void* param_0, u32 param_1, JKRHeap* param_2, bool param_3) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/create__10JKRExpHeapFPvUlP7JKRHeapb.s" +JKRExpHeap* JKRExpHeap::create(void* ptr, u32 size, JKRHeap* parent, bool errorFlag) { + JKRHeap* parent2; + if (parent == NULL) { + parent2 = sRootHeap->find(ptr); + if (!parent2) + return NULL; + } else { + parent2 = parent; + } + JKRExpHeap* newHeap = NULL; + u32 expHeapSize = ALIGN_NEXT(sizeof(JKRExpHeap), 0x10); + if (size < expHeapSize) + return NULL; + void* dataPtr = (u8*)ptr + expHeapSize; + u32 alignedSize = ALIGN_PREV((u32)ptr + size - (u32)dataPtr, 0x10); + if (ptr) { + newHeap = new (ptr) JKRExpHeap(dataPtr, alignedSize, parent2, errorFlag); + } + newHeap->field_0x6e = true; + newHeap->field_0x70 = ptr; + newHeap->field_0x74 = size; + return newHeap; } -#pragma pop /* 802CEFAC-802CF030 2C98EC 0084+00 1/0 0/0 0/0 .text do_destroy__10JKRExpHeapFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::do_destroy() { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/do_destroy__10JKRExpHeapFv.s" +void JKRExpHeap::do_destroy() { + if (!field_0x6e) { + JKRHeap* heap = mChildTree.getParent()->getObject(); + if (heap) { + this->~JKRExpHeap(); + JKRHeap::free(this, heap); + } + } else { + this->~JKRExpHeap(); + } } -#pragma pop /* ############################################################################################## */ /* 803CBFD0-803CC030 0290F0 0060+00 2/2 0/0 0/0 .data __vt__10JKRExpHeap */ @@ -168,119 +224,323 @@ SECTION_DATA extern void* __vt__10JKRExpHeap[24] = { /* 802CF030-802CF0C0 2C9970 0090+00 3/3 0/0 0/0 .text __ct__10JKRExpHeapFPvUlP7JKRHeapb */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JKRExpHeap::JKRExpHeap(void* param_0, u32 param_1, JKRHeap* param_2, bool param_3) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/__ct__10JKRExpHeapFPvUlP7JKRHeapb.s" +JKRExpHeap::JKRExpHeap(void* data, u32 size, JKRHeap* parent, bool errorFlag) + : JKRHeap(data, size, parent, errorFlag) { + field_0x6c = 0; + mCurrentGroupId = 0xff; + mHeadFreeList = (CMemBlock*)data; + mTailFreeList = mHeadFreeList; + mHeadFreeList->initiate(NULL, NULL, size - sizeof(CMemBlock), 0, 0); + mHeadUsedList = NULL; + mTailUsedList = NULL; } -#pragma pop /* 802CF0C0-802CF128 2C9A00 0068+00 1/0 0/0 0/0 .text __dt__10JKRExpHeapFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JKRExpHeap::~JKRExpHeap() { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/__dt__10JKRExpHeapFv.s" +JKRExpHeap::~JKRExpHeap() { + dispose(); } -#pragma pop - -/* ############################################################################################## */ -/* 8039CAF0-8039CAF0 029150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039CAF0 = ":::cannot alloc memory (0x%x byte).\n"; -#pragma pop /* 802CF128-802CF234 2C9A68 010C+00 1/0 0/0 0/0 .text do_alloc__10JKRExpHeapFUli */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void* JKRExpHeap::do_alloc(u32 param_0, int param_1) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/do_alloc__10JKRExpHeapFUli.s" +void* JKRExpHeap::do_alloc(u32 size, int alignment) { + void* ptr; + + lock(); + if (size < 4) { + size = 4; + } + if (alignment >= 0) { + if (alignment <= 4) { + ptr = allocFromHead(size); + } else { + ptr = allocFromHead(size, alignment); + } + } else { + if (-alignment <= 4) { + ptr = allocFromTail(size); + } else { + ptr = allocFromTail(size, -alignment); + } + } + if (ptr == NULL) { + JUTWarningConsole_f(":::cannot alloc memory (0x%x byte).\n", size); + if (mErrorFlag == true) { + callErrorHandler(this, size, alignment); + } + } + unlock(); + + return ptr; } -#pragma pop /* ############################################################################################## */ /* 80451398-8045139C 000898 0004+00 1/1 0/0 0/0 .sbss DBfoundSize */ -static u8 DBfoundSize[4]; +static u32 DBfoundSize; /* 8045139C-804513A0 00089C 0004+00 1/1 0/0 0/0 .sbss DBfoundOffset */ -static u8 DBfoundOffset[4]; +static u32 DBfoundOffset; /* 804513A0-804513A4 0008A0 0004+00 1/1 0/0 0/0 .sbss DBfoundBlock */ -static u8 DBfoundBlock[4]; +static JKRExpHeap::CMemBlock* DBfoundBlock; /* 804513A4-804513A8 0008A4 0004+00 1/1 0/0 0/0 .sbss DBnewFreeBlock */ -static u8 DBnewFreeBlock[4]; +static JKRExpHeap::CMemBlock* DBnewFreeBlock; /* 804513A8-804513B0 0008A8 0004+04 1/1 0/0 0/0 .sbss DBnewUsedBlock */ -static u8 DBnewUsedBlock[4 + 4 /* padding */]; +static JKRExpHeap::CMemBlock* DBnewUsedBlock; /* 802CF234-802CF490 2C9B74 025C+00 1/1 0/0 0/0 .text allocFromHead__10JKRExpHeapFUli */ +#if NONMATCHING +void* JKRExpHeap::allocFromHead(u32 size, int align) { + size = ALIGN_NEXT(size, 4); + s32 foundSize = -1; + u32 foundOffset = 0; + CMemBlock* foundBlock = NULL; + + for (CMemBlock* block = mHeadFreeList; block; block = block->getNextBlock()) { + u32 start = (u32)(block->getContent()); + u32 offset = ALIGN_PREV(align - 1 + start, align) - start; + if (block->getSize() < size + offset) { + continue; + } + if (foundSize <= block->getSize()) { + continue; + } + foundSize = block->getSize(); + foundBlock = block; + foundOffset = offset; + if (field_0x6c != 0) { + break; + } + u32 blockSize = block->getSize(); + if (blockSize == size) { + break; + } + } + DBfoundSize = foundSize; + DBfoundOffset = foundOffset; + DBfoundBlock = foundBlock; + if (foundBlock) { + if (foundOffset >= sizeof(CMemBlock)) { + CMemBlock* prev = foundBlock->getPrevBlock(); + CMemBlock* next = foundBlock->getNextBlock(); + CMemBlock* newUsedBlock = + foundBlock->allocFore(foundOffset - sizeof(CMemBlock), 0, 0, 0, 0); + CMemBlock* newFreeBlock; + if (newUsedBlock) { + newFreeBlock = newUsedBlock->allocFore(size, mCurrentGroupId, 0, 0, 0); + } else { + newFreeBlock = NULL; + } + if (newFreeBlock) { + setFreeBlock(foundBlock, prev, newFreeBlock); + } else { + setFreeBlock(foundBlock, prev, next); + } + if (newFreeBlock) { + setFreeBlock(newFreeBlock, foundBlock, next); + } + appendUsedList(newUsedBlock); + DBnewFreeBlock = newFreeBlock; + DBnewUsedBlock = newUsedBlock; + return newUsedBlock->getContent(); + } else { + if (foundOffset != 0) { + CMemBlock* prev = foundBlock->getPrevBlock(); + CMemBlock* next = foundBlock->getNextBlock(); + removeFreeBlock(foundBlock); + CMemBlock* newUsedBlock = (CMemBlock*)((u32)foundBlock + foundOffset); + newUsedBlock->size = foundBlock->getSize() - foundOffset; + CMemBlock* newFreeBlock = + newUsedBlock->allocFore(size, mCurrentGroupId, (u8)foundOffset, 0, 0); + if (newFreeBlock) { + setFreeBlock(newFreeBlock, prev, next); + } + appendUsedList(newUsedBlock); + return newUsedBlock->getContent(); + } else { + CMemBlock* prev = foundBlock->getPrevBlock(); + CMemBlock* next = foundBlock->getNextBlock(); + CMemBlock* newFreeBlock = foundBlock->allocFore(size, mCurrentGroupId, 0, 0, 0); + removeFreeBlock(foundBlock); + if (newFreeBlock) { + setFreeBlock(newFreeBlock, prev, next); + } + appendUsedList(foundBlock); + return foundBlock->getContent(); + } + } + } + return NULL; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JKRExpHeap::allocFromHead(u32 param_0, int param_1) { +asm void* JKRExpHeap::allocFromHead(u32 param_0, int param_1) { nofralloc #include "asm/JSystem/JKernel/JKRExpHeap/allocFromHead__10JKRExpHeapFUli.s" } #pragma pop +#endif /* 802CF490-802CF574 2C9DD0 00E4+00 1/1 0/0 0/0 .text allocFromHead__10JKRExpHeapFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::allocFromHead(u32 param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/allocFromHead__10JKRExpHeapFUl.s" +void* JKRExpHeap::allocFromHead(u32 size) { + size = ALIGN_NEXT(size, 4); + s32 foundSize = -1; + CMemBlock* foundBlock = NULL; + for (CMemBlock* block = mHeadFreeList; block; block = block->getNextBlock()) { + if (block->getSize() < size) { + continue; + } + if (foundSize <= block->getSize()) { + continue; + } + foundSize = block->getSize(); + foundBlock = block; + if (field_0x6c != 0) { + break; + } + if (foundSize == size) { + break; + } + } + if (foundBlock) { + CMemBlock* newblock = foundBlock->allocFore(size, mCurrentGroupId, 0, 0, 0); + if (newblock) { + setFreeBlock(newblock, foundBlock->getPrevBlock(), foundBlock->getNextBlock()); + } else { + removeFreeBlock(foundBlock); + } + appendUsedList(foundBlock); + return foundBlock->getContent(); + } + return NULL; } -#pragma pop /* 802CF574-802CF6D4 2C9EB4 0160+00 1/1 0/0 0/0 .text allocFromTail__10JKRExpHeapFUli */ +#if NONMATCHING +void* JKRExpHeap::allocFromTail(u32 size, int align) { + u32 offset = 0; + CMemBlock* foundBlock = NULL; + CMemBlock* newBlock = NULL; + u32 end; + u32 start; + u32 usedSize; + for (CMemBlock* block = mTailFreeList; block; block = block->getPrevBlock()) { + end = (u32)block->getContent() + block->getSize(); + start = ALIGN_PREV(end - size, align); + usedSize = end - start; + if (block->getSize() >= usedSize) { + foundBlock = block; + offset = block->getSize() - usedSize; + newBlock = (CMemBlock*)start - 1; + break; + } + } + if (foundBlock != NULL) { + if (offset >= sizeof(CMemBlock)) { + newBlock->initiate(NULL, NULL, usedSize, mCurrentGroupId, -0x80); + foundBlock->size = foundBlock->size - usedSize - sizeof(CMemBlock); + appendUsedList(newBlock); + return newBlock->getContent(); + } else { + if (offset != 0) { + removeFreeBlock(foundBlock); + newBlock->initiate(NULL, NULL, usedSize, mCurrentGroupId, offset | 0x80); + appendUsedList(newBlock); + return newBlock->getContent(); + } else { + removeFreeBlock(foundBlock); + newBlock->initiate(NULL, NULL, usedSize, mCurrentGroupId, -0x80); + appendUsedList(newBlock); + return newBlock->getContent(); + } + } + } + return NULL; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JKRExpHeap::allocFromTail(u32 param_0, int param_1) { +asm void* JKRExpHeap::allocFromTail(u32 param_0, int param_1) { nofralloc #include "asm/JSystem/JKernel/JKRExpHeap/allocFromTail__10JKRExpHeapFUli.s" } #pragma pop +#endif /* 802CF6D4-802CF7AC 2CA014 00D8+00 1/1 0/0 0/0 .text allocFromTail__10JKRExpHeapFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::allocFromTail(u32 param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/allocFromTail__10JKRExpHeapFUl.s" +void* JKRExpHeap::allocFromTail(u32 size) { + u32 size2 = ALIGN_NEXT(size, 4); + CMemBlock* foundBlock = NULL; + for (CMemBlock* block = mTailFreeList; block; block = block->getPrevBlock()) { + if (block->getSize() >= size2) { + foundBlock = block; + break; + } + } + if (foundBlock != NULL) { + CMemBlock* usedBlock = foundBlock->allocBack(size2, 0, 0, mCurrentGroupId, 0); + CMemBlock* freeBlock; + if (usedBlock) { + freeBlock = foundBlock; + } else { + removeFreeBlock(foundBlock); + usedBlock = foundBlock; + freeBlock = NULL; + } + if (freeBlock) { + setFreeBlock(freeBlock, foundBlock->getPrevBlock(), foundBlock->getNextBlock()); + } + appendUsedList(usedBlock); + return usedBlock->getContent(); + } + return NULL; } -#pragma pop /* 802CF7AC-802CF820 2CA0EC 0074+00 1/0 0/0 0/0 .text do_free__10JKRExpHeapFPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::do_free(void* param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/do_free__10JKRExpHeapFPv.s" +void JKRExpHeap::do_free(void* ptr) { + lock(); + if (getStartAddr() <= ptr && ptr <= getEndAddr()) { + CMemBlock* block = CMemBlock::getHeapBlock(ptr); + if (block) { + block->free(this); + } + } + unlock(); } -#pragma pop /* 802CF820-802CF89C 2CA160 007C+00 1/0 0/0 0/0 .text do_freeAll__10JKRExpHeapFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::do_freeAll() { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/do_freeAll__10JKRExpHeapFv.s" +void JKRExpHeap::do_freeAll() { + lock(); + JKRHeap::callAllDisposer(); + mHeadFreeList = (CMemBlock*)getStartAddr(); + mTailFreeList = mHeadFreeList; + mHeadFreeList->initiate(NULL, NULL, getSize() - 0x10, 0, 0); + mHeadUsedList = NULL; + mTailUsedList = NULL; + unlock(); } -#pragma pop /* 802CF89C-802CF924 2CA1DC 0088+00 1/0 0/0 0/0 .text do_freeTail__10JKRExpHeapFv */ +#if NONMATCHING +void JKRExpHeap::do_freeTail() { + lock(); + CMemBlock* block = mHeadUsedList; + while (block) { + if (block->_isTempMemBlock()) { + dispose(block->getContent(), block->getSize()); + CMemBlock* next = block->getNextBlock(); + block->free(this); + block = next; + } else { + block = block->getNextBlock(); + } + } + unlock(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -289,6 +549,7 @@ asm void JKRExpHeap::do_freeTail() { #include "asm/JSystem/JKernel/JKRExpHeap/do_freeTail__10JKRExpHeapFv.s" } #pragma pop +#endif /* 802CF924-802CF928 2CA264 0004+00 1/0 0/0 0/0 .text do_fillFreeArea__10JKRExpHeapFv */ void JKRExpHeap::do_fillFreeArea() { @@ -297,16 +558,67 @@ void JKRExpHeap::do_fillFreeArea() { /* 802CF928-802CF978 2CA268 0050+00 1/0 0/0 0/0 .text do_changeGroupID__10JKRExpHeapFUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u8 JKRExpHeap::do_changeGroupID(u8 param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/do_changeGroupID__10JKRExpHeapFUc.s" +u8 JKRExpHeap::do_changeGroupID(u8 param_0) { + lock(); + u8 prev = mCurrentGroupId; + mCurrentGroupId = param_0; + unlock(); + return prev; } -#pragma pop /* 802CF978-802CFB24 2CA2B8 01AC+00 1/0 0/0 0/0 .text do_resize__10JKRExpHeapFPvUl */ +#if NONMATCHING +s32 JKRExpHeap::do_resize(void* ptr, u32 size) { + lock(); + CMemBlock* block = CMemBlock::getHeapBlock(ptr); + if (block == NULL || ptr < getStartAddr() || getEndAddr() < ptr) { + unlock(); + return -1; + } + u32 newSize = ALIGN_NEXT(size, 4); + if (newSize == block->getSize()) { + unlock(); + return newSize; + } + if (newSize > block->getSize()) { + CMemBlock* foundBlock = NULL; + for (CMemBlock* freeBlock = mHeadFreeList; freeBlock; + freeBlock = freeBlock->getNextBlock()) { + if (freeBlock == (CMemBlock*)((u32)block->getContent() + block->getSize())) { + foundBlock = freeBlock; + break; + } + } + if (foundBlock == NULL) { + unlock(); + return -1; + } + if (newSize > block->getSize() + sizeof(CMemBlock) + foundBlock->getSize()) { + unlock(); + return -1; + } + removeFreeBlock(foundBlock); + block->size += foundBlock->getSize() + sizeof(CMemBlock); + if (block->getSize() - newSize > sizeof(CMemBlock)) { + CMemBlock* newBlock = + block->allocFore(newSize, block->getGroupId(), block->mFlags, 0, 0); + if (newBlock) { + recycleFreeBlock(newBlock); + } + } + } else { + if (block->getSize() - newSize > 0x10) { + CMemBlock* freeBlock = + block->allocFore(newSize, block->getGroupId(), block->mFlags, 0, 0); + if (freeBlock) { + recycleFreeBlock(freeBlock); + } + } + } + unlock(); + return block->getSize(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -315,127 +627,216 @@ asm s32 JKRExpHeap::do_resize(void* param_0, u32 param_1) { #include "asm/JSystem/JKernel/JKRExpHeap/do_resize__10JKRExpHeapFPvUl.s" } #pragma pop +#endif /* 802CFB24-802CFBA4 2CA464 0080+00 1/0 0/0 0/0 .text do_getSize__10JKRExpHeapFPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 JKRExpHeap::do_getSize(void* param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/do_getSize__10JKRExpHeapFPv.s" +s32 JKRExpHeap::do_getSize(void* ptr) { + lock(); + CMemBlock* block = CMemBlock::getHeapBlock(ptr); + if (!block || ptr < getStartAddr() || getEndAddr() < ptr) { + unlock(); + return -1; + } + unlock(); + return block->getSize(); } -#pragma pop /* 802CFBA4-802CFC10 2CA4E4 006C+00 1/0 0/0 0/0 .text do_getFreeSize__10JKRExpHeapFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 JKRExpHeap::do_getFreeSize() { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/do_getFreeSize__10JKRExpHeapFv.s" +s32 JKRExpHeap::do_getFreeSize() { + lock(); + s32 size = 0; + for (CMemBlock* block = mHeadFreeList; block; block = block->getNextBlock()) { + if (size < (s32)block->getSize()) { + size = block->getSize(); + } + } + unlock(); + return size; } -#pragma pop /* 802CFC10-802CFC84 2CA550 0074+00 1/0 0/0 0/0 .text do_getMaxFreeBlock__10JKRExpHeapFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void* JKRExpHeap::do_getMaxFreeBlock() { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/do_getMaxFreeBlock__10JKRExpHeapFv.s" +void* JKRExpHeap::do_getMaxFreeBlock() { + lock(); + s32 size = 0; + CMemBlock* res = NULL; + for (CMemBlock* block = mHeadFreeList; block; block = block->getNextBlock()) { + if (size < (s32)block->getSize()) { + size = block->getSize(); + res = block; + } + } + unlock(); + return res; } -#pragma pop /* 802CFC84-802CFCE8 2CA5C4 0064+00 1/0 0/0 0/0 .text do_getTotalFreeSize__10JKRExpHeapFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 JKRExpHeap::do_getTotalFreeSize() { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/do_getTotalFreeSize__10JKRExpHeapFv.s" +s32 JKRExpHeap::do_getTotalFreeSize() { + u32 size = 0; + lock(); + for (CMemBlock* block = mHeadFreeList; block; block = block->getNextBlock()) { + size += block->getSize(); + } + unlock(); + return size; } -#pragma pop /* 802CFCE8-802CFD64 2CA628 007C+00 1/1 0/0 0/0 .text getUsedSize__10JKRExpHeapCFUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 JKRExpHeap::getUsedSize(u8 param_0) const { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/getUsedSize__10JKRExpHeapCFUc.s" +s32 JKRExpHeap::getUsedSize(u8 groupId) const { + JKRExpHeap* this2 = const_cast(this); + this2->lock(); + u32 size = 0; + for (CMemBlock* block = mHeadUsedList; block; block = block->getNextBlock()) { + u8 blockGroupId = block->getGroupId(); + if (blockGroupId == groupId) { + size += block->getSize() + sizeof(CMemBlock); + } + } + this2->unlock(); + return size; } -#pragma pop /* 802CFD64-802CFDCC 2CA6A4 0068+00 0/0 5/5 0/0 .text getTotalUsedSize__10JKRExpHeapCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 JKRExpHeap::getTotalUsedSize() const { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/getTotalUsedSize__10JKRExpHeapCFv.s" +s32 JKRExpHeap::getTotalUsedSize() const { + JKRExpHeap* this2 = const_cast(this); + this2->lock(); + u32 size = 0; + for (CMemBlock* block = mHeadUsedList; block; block = block->getNextBlock()) { + size += block->getSize() + sizeof(CMemBlock); + } + this2->unlock(); + return size; } -#pragma pop - -/* ############################################################################################## */ -/* 8039CAF0-8039CAF0 029150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039CB15 = "JKRExpHeap.cpp"; -SECTION_DEAD static char const* const stringBase_8039CB24 = "%s"; -SECTION_DEAD static char const* const stringBase_8039CB27 = "bad appendUsedList\n"; -#pragma pop /* 802CFDCC-802CFE68 2CA70C 009C+00 4/4 0/0 0/0 .text * appendUsedList__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::appendUsedList(JKRExpHeap::CMemBlock* param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/appendUsedList__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s" +void JKRExpHeap::appendUsedList(JKRExpHeap::CMemBlock* newblock) { + if (!newblock) { + JUTException::panic_f("JKRExpHeap.cpp", 0x620, "%s", "bad appendUsedList\n"); + } + CMemBlock* block = mTailUsedList; + newblock->mMagic = 'HM'; + if (block) { + block->mNext = newblock; + newblock->mPrev = block; + } else { + newblock->mPrev = NULL; + } + mTailUsedList = newblock; + if (!mHeadUsedList) { + mHeadUsedList = newblock; + } + newblock->mNext = NULL; } -#pragma pop /* 802CFE68-802CFEB4 2CA7A8 004C+00 5/5 0/0 0/0 .text * setFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlockPQ210JKRExpHeap9CMemBlockPQ210JKRExpHeap9CMemBlock */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::setFreeBlock(JKRExpHeap::CMemBlock* param_0, JKRExpHeap::CMemBlock* param_1, - JKRExpHeap::CMemBlock* param_2) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/func_802CFE68.s" +void JKRExpHeap::setFreeBlock(CMemBlock* block, CMemBlock* prev, CMemBlock* next) { + if (prev == NULL) { + mHeadFreeList = block; + block->mPrev = NULL; + } else { + prev->mNext = block; + block->mPrev = prev; + } + if (next == NULL) { + mTailFreeList = block; + block->mNext = NULL; + } else { + next->mPrev = block; + block->mNext = next; + } + block->mMagic = 0; } -#pragma pop /* 802CFEB4-802CFEE8 2CA7F4 0034+00 5/5 0/0 0/0 .text * removeFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::removeFreeBlock(JKRExpHeap::CMemBlock* param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/removeFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s" +void JKRExpHeap::removeFreeBlock(CMemBlock* block) { + CMemBlock* prev = block->mPrev; + CMemBlock* next = block->mNext; + if (prev == NULL) { + mHeadFreeList = next; + } else { + prev->mNext = next; + } + if (next == NULL) { + mTailFreeList = prev; + } else { + next->mPrev = prev; + } } -#pragma pop /* 802CFEE8-802CFF1C 2CA828 0034+00 1/1 0/0 0/0 .text * removeUsedBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::removeUsedBlock(JKRExpHeap::CMemBlock* param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/removeUsedBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s" +void JKRExpHeap::removeUsedBlock(JKRExpHeap::CMemBlock* block) { + CMemBlock* prev = block->mPrev; + CMemBlock* next = block->mNext; + if (prev == NULL) { + mHeadUsedList = next; + } else { + prev->mNext = next; + } + if (next == NULL) { + mTailUsedList = prev; + } else { + next->mPrev = prev; + } } -#pragma pop /* 802CFF1C-802D00B4 2CA85C 0198+00 2/2 0/0 0/0 .text * recycleFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock */ +#if NONMATCHING +void JKRExpHeap::recycleFreeBlock(JKRExpHeap::CMemBlock* block) { + u32 size = block->size; + void* blockEnd = (u8*)block + size; + block->mMagic = 0; + u32 offset = block->getAlignment(); + if (offset) { + block = (CMemBlock*)((u8*)block - offset); + size += offset; + blockEnd = (u8*)block + size; + block->mGroupId = 0; + block->mFlags = 0; + block->size = size; + } + + if (!mHeadFreeList) { + block->initiate(NULL, NULL, size, 0, 0); + mHeadFreeList = block; + mTailFreeList = block; + setFreeBlock(block, NULL, NULL); + return; + } + if (mHeadFreeList >= blockEnd) { + block->initiate(NULL, NULL, size, 0, 0); + setFreeBlock(block, NULL, mHeadFreeList); + joinTwoBlocks(block); + return; + } + if (mTailFreeList <= block) { + block->initiate(NULL, NULL, size, 0, 0); + setFreeBlock(block, mTailFreeList, NULL); + joinTwoBlocks(block->getPrevBlock()); + return; + } + for (CMemBlock* freeBlock = mHeadFreeList; freeBlock; freeBlock = freeBlock->getNextBlock()) { + if (freeBlock >= block || block >= freeBlock->getNextBlock()) { + continue; + } + block->mNext = freeBlock->getNextBlock(); + block->mPrev = freeBlock; + freeBlock->mNext = block; + block->mNext->mPrev = block; + block->mGroupId = 0; + joinTwoBlocks(block); + joinTwoBlocks(freeBlock); + return; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -444,6 +845,7 @@ asm void JKRExpHeap::recycleFreeBlock(JKRExpHeap::CMemBlock* param_0) { #include "asm/JSystem/JKernel/JKRExpHeap/recycleFreeBlock__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8039CAF0-8039CAF0 029150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -455,6 +857,22 @@ SECTION_DEAD static char const* const stringBase_8039CB5F = "Bad Block\n"; /* 802D00B4-802D0190 2CA9F4 00DC+00 1/1 0/0 0/0 .text * joinTwoBlocks__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock */ +#if NONMATCHING +void JKRExpHeap::joinTwoBlocks(CMemBlock* block) { + u32 endAddr = (u32)block->getContent() + block->getSize(); + CMemBlock* next = block->getNextBlock(); + u32 nextAddr = (u32)next - next->getAlignment(); + if (endAddr > nextAddr) { + JUTWarningConsole_f(":::Heap may be broken. (block = %x)", block); + getCurrentHeap()->dump(); + JUTException::panic_f("JKRExpHeap.cpp", 0x71c, "%s", "Bad Block\n"); + } + if (endAddr == nextAddr) { + block->size = next->getSize() + sizeof(CMemBlock) + next->getAlignment() + block->getSize(); + setFreeBlock(block, block->getPrevBlock(), next->getNextBlock()); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -463,6 +881,7 @@ asm void JKRExpHeap::joinTwoBlocks(JKRExpHeap::CMemBlock* param_0) { #include "asm/JSystem/JKernel/JKRExpHeap/joinTwoBlocks__10JKRExpHeapFPQ210JKRExpHeap9CMemBlock.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8039CAF0-8039CAF0 029150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -484,6 +903,72 @@ SECTION_DEAD static char const* const stringBase_8039CC67 = #pragma pop /* 802D0190-802D03B8 2CAAD0 0228+00 1/0 0/0 0/0 .text check__10JKRExpHeapFv */ +#if NONMATCHING +bool JKRExpHeap::check() { + lock(); + int totalBytes = 0; + bool ok = true; + for (CMemBlock* block = mHeadUsedList; block; block = block->getNextBlock()) { + if (!block->isValid()) { + ok = false; + JUTWarningConsole_f(":::addr %08x: bad heap signature. (%c%c)\n", block, + block->mMagic >> 8, block->mMagic & 0xff); + } + if (block->getNextBlock()) { + if (!block->getNextBlock()->isValid()) { + ok = false; + JUTWarningConsole_f(":::addr %08x: bad next pointer (%08x)\nabort\n", block, + block->getNextBlock()); + break; + } + if (block->getNextBlock()->getPrevBlock() != block) { + ok = false; + JUTWarningConsole_f(":::addr %08x: bad previous pointer (%08x)\n", + block->getNextBlock(), block->getNextBlock()->getPrevBlock()); + } + } else { + if (mTailUsedList != block) { + ok = false; + JUTWarningConsole_f(":::addr %08x: bad used list(REV) (%08x)\n", block, + mTailUsedList); + } + } + totalBytes += sizeof(CMemBlock) + block->getSize() + block->getAlignment(); + } + for (CMemBlock* block = mHeadFreeList; block; block = block->getNextBlock()) { + totalBytes += block->getSize() + sizeof(CMemBlock); + if (block->getNextBlock()) { + if (block->getNextBlock()->getPrevBlock() != block) { + ok = false; + JUTWarningConsole_f(":::addr %08x: bad previous pointer (%08x)\n", + block->getNextBlock(), block->getNextBlock()->getPrevBlock()); + } + if ((u32)block + block->getSize() + sizeof(CMemBlock) > (u32)block->getNextBlock()) { + ok = false; + JUTWarningConsole_f(":::addr %08x: bad block size (%08x)\n", block, + block->getSize()); + } + } else { + if (mTailFreeList != block) { + ok = false; + JUTWarningConsole_f(":::addr %08x: bad used list(REV) (%08x)\n", block, + mTailFreeList); + } + } + } + if (totalBytes != getSize()) { + ok = false; + JUTWarningConsole_f(":::bad total memory block size (%08X, %08X)\n", getSize(), totalBytes); + } + + if (!ok) { + JUTWarningConsole(":::there is some error in this heap!\n"); + } + + unlock(); + return ok; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -492,6 +977,7 @@ asm bool JKRExpHeap::check() { #include "asm/JSystem/JKernel/JKRExpHeap/check__10JKRExpHeapFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8039CAF0-8039CAF0 029150 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -525,6 +1011,51 @@ SECTION_SDATA2 static f32 lit_1121[1 + 1 /* padding */] = { SECTION_SDATA2 static f64 lit_1123 = 4503599627370496.0 /* cast u32 to float */; /* 802D03B8-802D05CC 2CACF8 0214+00 1/0 0/0 0/0 .text dump__10JKRExpHeapFv */ +#if NONMATCHING +bool JKRExpHeap::dump() { + lock(); + bool result = check(); + u32 usedBytes = 0; + u32 usedCount = 0; + u32 freeCount = 0; + JUTReportConsole(" attr address: size gid aln prev_ptr next_ptr\n"); + JUTReportConsole("(Used Blocks)\n"); + if (!mHeadUsedList) { + JUTReportConsole(" NONE\n"); + } + for (CMemBlock* block = mHeadUsedList; block; block = block->getNextBlock()) { + if (!block->isValid()) { + JUTReportConsole_f("xxxxx %08x: -------- --- --- (-------- --------)\nabort\n", + block); + break; + } + int offset = block->getAlignment(); + void* content = block->getContent(); + const char* type = block->_isTempMemBlock() ? " temp" : "alloc"; + + JUTReportConsole_f("%s %08x: %08x %3d %3d (%08x %08x)\n", type, content, block->getSize(), + block->getGroupId(), offset, block->getPrevBlock(), + block->getNextBlock()); + usedBytes += sizeof(CMemBlock) + block->getSize() + block->getAlignment(); + usedCount++; + } + JUTReportConsole("(Free Blocks)\n"); + if (!mHeadFreeList) { + JUTReportConsole(" NONE\n"); + } + for (CMemBlock* block = mHeadFreeList; block; block = block->getNextBlock()) { + JUTReportConsole_f("%s %08x: %08x %3d %3d (%08x %08x)\n", " free", block->getContent(), + block->getSize(), block->getGroupId(), block->getAlignment(), + block->getPrevBlock(), block->getNextBlock()); + freeCount++; + } + float percent = ((float)usedBytes / (float)getSize()) * 100.0f; + JUTReportConsole_f("%d / %d bytes (%6.2f%%) used (U:%d F:%d)\n", usedBytes, getSize(), percent, + usedCount, freeCount); + unlock(); + return result; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -533,8 +1064,65 @@ asm bool JKRExpHeap::dump() { #include "asm/JSystem/JKernel/JKRExpHeap/dump__10JKRExpHeapFv.s" } #pragma pop +#endif /* 802D05CC-802D0810 2CAF0C 0244+00 1/0 0/0 0/0 .text dump_sort__10JKRExpHeapFv */ +#if NONMATCHING +bool JKRExpHeap::dump_sort() { + lock(); + bool result = check(); + u32 usedBytes = 0; + u32 usedCount = 0; + u32 freeCount = 0; + JUTReportConsole(" attr address: size gid aln prev_ptr next_ptr\n"); + JUTReportConsole("(Used Blocks)\n"); + if (mHeadUsedList == NULL) { + JUTReportConsole(" NONE\n"); + } else { + CMemBlock* var1 = NULL; + while (true) { + CMemBlock* block = (CMemBlock*)0xffffffff; + for (CMemBlock* iterBlock = mHeadUsedList; iterBlock; + iterBlock = iterBlock->getNextBlock()) { + if (var1 < iterBlock && iterBlock < block) { + block = iterBlock; + } + } + if (block == (CMemBlock*)0xffffffff) { + break; + } + if (!block->isValid()) { + JUTReportConsole_f("xxxxx %08x: -------- --- --- (-------- --------)\nabort\n"); + break; + } + int offset = block->getAlignment(); + void* content = block->getContent(); + const char* type = block->_isTempMemBlock() ? " temp" : "alloc"; + JUTReportConsole_f("%s %08x: %08x %3d %3d (%08x %08x)\n", type, content, + block->getSize(), block->getGroupId(), offset, block->getPrevBlock(), + block->getNextBlock()); + usedBytes += sizeof(CMemBlock) + block->getSize() + block->getAlignment(); + usedCount++; + var1 = block; + } + } + JUTReportConsole("(Free Blocks)\n"); + if (mHeadFreeList == NULL) { + JUTReportConsole(" NONE\n"); + } + for (CMemBlock* block = mHeadFreeList; block; block = block->getNextBlock()) { + JUTReportConsole_f("%s %08x: %08x %3d %3d (%08x %08x)\n", " free", block->getContent(), + block->getSize(), block->getGroupId(), block->getAlignment(), + block->getPrevBlock(), block->getNextBlock()); + freeCount++; + } + float percent = ((float)usedBytes / (float)getSize()) * 100.0f; + JUTReportConsole_f("%d / %d bytes (%6.2f%%) used (U:%d F:%d)\n", usedBytes, getSize(), percent, + usedCount, freeCount); + unlock(); + return result; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -543,107 +1131,135 @@ asm bool JKRExpHeap::dump_sort() { #include "asm/JSystem/JKernel/JKRExpHeap/dump_sort__10JKRExpHeapFv.s" } #pragma pop +#endif /* 802D0810-802D0830 2CB150 0020+00 4/4 0/0 0/0 .text * initiate__Q210JKRExpHeap9CMemBlockFPQ210JKRExpHeap9CMemBlockPQ210JKRExpHeap9CMemBlockUlUcUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::CMemBlock::initiate(JKRExpHeap::CMemBlock* param_0, - JKRExpHeap::CMemBlock* param_1, u32 param_2, u8 param_3, - u8 param_4) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/func_802D0810.s" +void JKRExpHeap::CMemBlock::initiate(JKRExpHeap::CMemBlock* prev, JKRExpHeap::CMemBlock* next, + u32 size, u8 groupId, u8 alignment) { + mMagic = 'HM'; + mFlags = alignment; + mGroupId = groupId; + this->size = size; + mPrev = prev; + mNext = next; } -#pragma pop /* 802D0830-802D0874 2CB170 0044+00 3/3 0/0 0/0 .text * allocFore__Q210JKRExpHeap9CMemBlockFUlUcUcUcUc */ +#if NONMATCHING +JKRExpHeap::CMemBlock* JKRExpHeap::CMemBlock::allocFore(u32 size, u8 groupId1, u8 alignment1, + u8 groupId2, u8 alignment2) { + CMemBlock* block = NULL; + mGroupId = groupId1; + mFlags = alignment1; + if (getSize() >= size + sizeof(CMemBlock)) { + CMemBlock* newblock = (CMemBlock*)(size + (u32)this); + newblock[1].mGroupId = groupId2; + newblock[1].mFlags = alignment2; + newblock[1].size = this->size - (size + sizeof(CMemBlock)); + this->size = size; + block = newblock + 1; + } + return block; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JKRExpHeap::CMemBlock::allocFore(u32 param_0, u8 param_1, u8 param_2, u8 param_3, - u8 param_4) { +asm JKRExpHeap::CMemBlock* JKRExpHeap::CMemBlock::allocFore(u32 param_0, u8 param_1, u8 param_2, + u8 param_3, u8 param_4) { nofralloc #include "asm/JSystem/JKernel/JKRExpHeap/allocFore__Q210JKRExpHeap9CMemBlockFUlUcUcUcUc.s" } #pragma pop +#endif /* 802D0874-802D08CC 2CB1B4 0058+00 1/1 0/0 0/0 .text * allocBack__Q210JKRExpHeap9CMemBlockFUlUcUcUcUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::CMemBlock::allocBack(u32 param_0, u8 param_1, u8 param_2, u8 param_3, - u8 param_4) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/allocBack__Q210JKRExpHeap9CMemBlockFUlUcUcUcUc.s" +JKRExpHeap::CMemBlock* JKRExpHeap::CMemBlock::allocBack(u32 size, u8 groupId1, u8 alignment1, + u8 groupId2, u8 alignment2) { + CMemBlock* newblock = NULL; + if (getSize() >= size + sizeof(CMemBlock)) { + newblock = (CMemBlock*)((u32)this + getSize() - size); + newblock->mGroupId = groupId2; + newblock->mFlags = alignment2 | 0x80; + newblock->size = size; + mGroupId = groupId1; + mFlags = alignment1; + this->size -= size + sizeof(CMemBlock); + } else { + mGroupId = groupId2; + mFlags = 0x80; + } + return newblock; } -#pragma pop /* 802D08CC-802D091C 2CB20C 0050+00 2/2 0/0 0/0 .text free__Q210JKRExpHeap9CMemBlockFP10JKRExpHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::CMemBlock::free(JKRExpHeap* param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/free__Q210JKRExpHeap9CMemBlockFP10JKRExpHeap.s" +int JKRExpHeap::CMemBlock::free(JKRExpHeap* heap) { + heap->removeUsedBlock(this); + heap->recycleFreeBlock(this); + return 0; } -#pragma pop /* 802D091C-802D0938 2CB25C 001C+00 3/3 0/0 0/0 .text getHeapBlock__Q210JKRExpHeap9CMemBlockFPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::CMemBlock::getHeapBlock(void* param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/getHeapBlock__Q210JKRExpHeap9CMemBlockFPv.s" +JKRExpHeap::CMemBlock* JKRExpHeap::CMemBlock::getHeapBlock(void* ptr) { + if (ptr) { + CMemBlock* block = (CMemBlock*)ptr - 1; + if (block->isValid()) { + return block; + } + } + return NULL; } -#pragma pop /* 802D0938-802D09E0 2CB278 00A8+00 1/0 0/0 0/0 .text * state_register__10JKRExpHeapCFPQ27JKRHeap6TStateUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRExpHeap::state_register(JKRHeap::TState* param_0, u32 param_1) const { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/state_register__10JKRExpHeapCFPQ27JKRHeap6TStateUl.s" +void JKRExpHeap::state_register(JKRHeap::TState* p, u32 param_1) const { + p->mId = param_1; + if (param_1 <= 0xff) { + p->mUsedSize = getUsedSize(param_1); + } else { + s32 freeSize = const_cast(this)->getTotalFreeSize(); + p->mUsedSize = getSize() - freeSize; + } + u32 checkCode = 0; + for (CMemBlock* block = mHeadUsedList; block; block = block->getNextBlock()) { + if (param_1 <= 0xff) { + u8 groupId = block->getGroupId(); + if (groupId == param_1) { + checkCode += (u32)block * 3; + } + } else { + checkCode += (u32)block * 3; + } + } + p->mCheckCode = checkCode; } -#pragma pop /* 802D09E0-802D0A10 2CB320 0030+00 1/0 0/0 0/0 .text * state_compare__10JKRExpHeapCFRCQ27JKRHeap6TStateRCQ27JKRHeap6TState */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool JKRExpHeap::state_compare(JKRHeap::TState const& param_0, - JKRHeap::TState const& param_1) const { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/state_compare__10JKRExpHeapCFRCQ27JKRHeap6TStateRCQ27JKRHeap6TState.s" +bool JKRExpHeap::state_compare(JKRHeap::TState const& r1, JKRHeap::TState const& r2) const { + bool result = true; + if (r1.mCheckCode != r2.mCheckCode) { + result = false; + } + if (r1.mUsedSize != r2.mUsedSize) { + result = false; + } + return result; } -#pragma pop /* 802D0A10-802D0A1C 2CB350 000C+00 1/0 0/0 0/0 .text getHeapType__10JKRExpHeapFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 JKRExpHeap::getHeapType() { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/getHeapType__10JKRExpHeapFv.s" +u32 JKRExpHeap::getHeapType() { + return 'EXPH'; } -#pragma pop /* 802D0A1C-802D0A24 2CB35C 0008+00 1/0 0/0 0/0 .text do_getCurrentGroupId__10JKRExpHeapFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u8 JKRExpHeap::do_getCurrentGroupId() { - nofralloc -#include "asm/JSystem/JKernel/JKRExpHeap/do_getCurrentGroupId__10JKRExpHeapFv.s" +u8 JKRExpHeap::do_getCurrentGroupId() { + return mCurrentGroupId; } -#pragma pop /* ############################################################################################## */ /* 8039CD84-8039CDA0 0293E4 001C+00 0/0 0/0 0/0 .rodata None */