diff --git a/.gitignore b/.gitignore index 942ca7a549..97bc4f785e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ build/ *.elf *.map *.dol +vtable.lcf # Temporary files *.swp diff --git a/asm/JKernel/JKRDisposer.s b/asm/JKernel/JKRDisposer.s deleted file mode 100644 index 197854cbe4..0000000000 --- a/asm/JKernel/JKRDisposer.s +++ /dev/null @@ -1,3 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 802d147c diff --git a/asm/JKernel/JKRHeap.s b/asm/JKernel/JKRHeap.s index 574b9bed2f..e57c21fdf7 100644 --- a/asm/JKernel/JKRHeap.s +++ b/asm/JKernel/JKRHeap.s @@ -1,7 +1,30 @@ .include "macros.inc" -.section .text, "ax" # 802ce138 +.section .text, "ax" # 802CED84 +.global JKRHeap_state_register +JKRHeap_state_register: +/* 802CED84 002CBCC4 4E 80 00 20 */ blr -.extern "C" becomeCurrentHeap__7JKRHeapFv -.extern "C" __nw__FUl +.global JKRHeap_state_compare +JKRHeap_state_compare: +/* 802CED88 002CBCC8 80 64 00 04 */ lwz r3, 4(r4) +/* 802CED8C 002CBCCC 80 05 00 04 */ lwz r0, 4(r5) +/* 802CED90 002CBCD0 7C 03 00 50 */ subf r0, r3, r0 +/* 802CED94 002CBCD4 7C 00 00 34 */ cntlzw r0, r0 +/* 802CED98 002CBCD8 54 03 D9 7E */ srwi r3, r0, 5 +/* 802CED9C 002CBCDC 4E 80 00 20 */ blr + +.global JKRHeap_state_dump +JKRHeap_state_dump: +/* 802CEDA0 002CBCE0 4E 80 00 20 */ blr + +.global JKRHeap_do_changeGroupID +JKRHeap_do_changeGroupID: +/* 802CEDA4 002CBCE4 38 60 00 00 */ li r3, 0 +/* 802CEDA8 002CBCE8 4E 80 00 20 */ blr + +.global JKRHeap_do_getCurrentGroupId +JKRHeap_do_getCurrentGroupId: +/* 802CEDAC 002CBCEC 38 60 00 00 */ li r3, 0 +/* 802CEDB0 002CBCF0 4E 80 00 20 */ blr \ No newline at end of file diff --git a/asm/SComponent/c/c_counter.s b/asm/SComponent/c/c_counter.s deleted file mode 100644 index 527c26c5bd..0000000000 --- a/asm/SComponent/c/c_counter.s +++ /dev/null @@ -1,28 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80265e1c - - -.global cCt_Counter -cCt_Counter: -/* 80265E1C 00262D5C 2C 03 00 01 */ cmpwi r3, 1 -/* 80265E20 00262D60 40 82 00 18 */ bne lbl_80265E38 -/* 80265E24 00262D64 38 00 00 00 */ li r0, 0 -/* 80265E28 00262D68 3C 60 80 43 */ lis r3, lbl_80430CD8@ha -/* 80265E2C 00262D6C 38 63 0C D8 */ addi r3, r3, lbl_80430CD8@l -/* 80265E30 00262D70 90 03 00 04 */ stw r0, 4(r3) -/* 80265E34 00262D74 48 00 00 18 */ b lbl_80265E4C -lbl_80265E38: -/* 80265E38 00262D78 3C 60 80 43 */ lis r3, lbl_80430CD8@ha -/* 80265E3C 00262D7C 38 83 0C D8 */ addi r4, r3, lbl_80430CD8@l -/* 80265E40 00262D80 80 64 00 04 */ lwz r3, 4(r4) -/* 80265E44 00262D84 38 03 00 01 */ addi r0, r3, 1 -/* 80265E48 00262D88 90 04 00 04 */ stw r0, 4(r4) -lbl_80265E4C: -/* 80265E4C 00262D8C 3C 60 80 43 */ lis r3, lbl_80430CD8@ha -/* 80265E50 00262D90 38 83 0C D8 */ addi r4, r3, lbl_80430CD8@l -/* 80265E54 00262D94 80 64 00 00 */ lwz r3, 0(r4) -/* 80265E58 00262D98 38 03 00 01 */ addi r0, r3, 1 -/* 80265E5C 00262D9C 90 04 00 00 */ stw r0, 0(r4) -/* 80265E60 00262DA0 4E 80 00 20 */ blr - diff --git a/asm/SComponent/c/c_list.s b/asm/SComponent/c/c_list.s deleted file mode 100644 index 549471be66..0000000000 --- a/asm/SComponent/c/c_list.s +++ /dev/null @@ -1,158 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80265e64 - - -.global cLs_Init -cLs_Init: -/* 80265E64 00262DA4 38 00 00 00 */ li r0, 0 -/* 80265E68 00262DA8 90 03 00 00 */ stw r0, 0(r3) -/* 80265E6C 00262DAC 90 03 00 04 */ stw r0, 4(r3) -/* 80265E70 00262DB0 90 03 00 08 */ stw r0, 8(r3) -/* 80265E74 00262DB4 4E 80 00 20 */ blr - -.global cLs_SingleCut -cLs_SingleCut: -/* 80265E78 00262DB8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80265E7C 00262DBC 7C 08 02 A6 */ mflr r0 -/* 80265E80 00262DC0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80265E84 00262DC4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80265E88 00262DC8 93 C1 00 08 */ stw r30, 8(r1) -/* 80265E8C 00262DCC 7C 7E 1B 78 */ mr r30, r3 -/* 80265E90 00262DD0 83 E3 00 04 */ lwz r31, 4(r3) -/* 80265E94 00262DD4 80 1F 00 00 */ lwz r0, 0(r31) -/* 80265E98 00262DD8 7C 1E 00 40 */ cmplw r30, r0 -/* 80265E9C 00262DDC 40 82 00 0C */ bne lbl_80265EA8 -/* 80265EA0 00262DE0 80 1E 00 08 */ lwz r0, 8(r30) -/* 80265EA4 00262DE4 90 1F 00 00 */ stw r0, 0(r31) -lbl_80265EA8: -/* 80265EA8 00262DE8 80 1F 00 04 */ lwz r0, 4(r31) -/* 80265EAC 00262DEC 7C 1E 00 40 */ cmplw r30, r0 -/* 80265EB0 00262DF0 40 82 00 0C */ bne lbl_80265EBC -/* 80265EB4 00262DF4 80 1E 00 00 */ lwz r0, 0(r30) -/* 80265EB8 00262DF8 90 1F 00 04 */ stw r0, 4(r31) -lbl_80265EBC: -/* 80265EBC 00262DFC 7F C3 F3 78 */ mr r3, r30 -/* 80265EC0 00262E00 48 00 02 FD */ bl cNd_SingleCut -/* 80265EC4 00262E04 7F C3 F3 78 */ mr r3, r30 -/* 80265EC8 00262E08 48 00 04 11 */ bl cNd_ClearObject -/* 80265ECC 00262E0C 80 7F 00 08 */ lwz r3, 8(r31) -/* 80265ED0 00262E10 38 63 FF FF */ addi r3, r3, -1 -/* 80265ED4 00262E14 90 7F 00 08 */ stw r3, 8(r31) -/* 80265ED8 00262E18 7C 03 00 D0 */ neg r0, r3 -/* 80265EDC 00262E1C 7C 00 18 78 */ andc r0, r0, r3 -/* 80265EE0 00262E20 54 03 0F FE */ srwi r3, r0, 0x1f -/* 80265EE4 00262E24 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80265EE8 00262E28 83 C1 00 08 */ lwz r30, 8(r1) -/* 80265EEC 00262E2C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80265EF0 00262E30 7C 08 03 A6 */ mtlr r0 -/* 80265EF4 00262E34 38 21 00 10 */ addi r1, r1, 0x10 -/* 80265EF8 00262E38 4E 80 00 20 */ blr - -.global cLs_Addition -cLs_Addition: -/* 80265EFC 00262E3C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80265F00 00262E40 7C 08 02 A6 */ mflr r0 -/* 80265F04 00262E44 90 01 00 14 */ stw r0, 0x14(r1) -/* 80265F08 00262E48 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80265F0C 00262E4C 93 C1 00 08 */ stw r30, 8(r1) -/* 80265F10 00262E50 7C 7E 1B 78 */ mr r30, r3 -/* 80265F14 00262E54 7C 9F 23 78 */ mr r31, r4 -/* 80265F18 00262E58 80 63 00 04 */ lwz r3, 4(r3) -/* 80265F1C 00262E5C 28 03 00 00 */ cmplwi r3, 0 -/* 80265F20 00262E60 40 82 00 0C */ bne lbl_80265F2C -/* 80265F24 00262E64 93 FE 00 00 */ stw r31, 0(r30) -/* 80265F28 00262E68 48 00 00 08 */ b lbl_80265F30 -lbl_80265F2C: -/* 80265F2C 00262E6C 48 00 02 E5 */ bl cNd_Addition -lbl_80265F30: -/* 80265F30 00262E70 7F E3 FB 78 */ mr r3, r31 -/* 80265F34 00262E74 48 00 02 09 */ bl cNd_Last -/* 80265F38 00262E78 90 7E 00 04 */ stw r3, 4(r30) -/* 80265F3C 00262E7C 7F E3 FB 78 */ mr r3, r31 -/* 80265F40 00262E80 7F C4 F3 78 */ mr r4, r30 -/* 80265F44 00262E84 48 00 03 6D */ bl cNd_SetObject -/* 80265F48 00262E88 80 7E 00 00 */ lwz r3, 0(r30) -/* 80265F4C 00262E8C 48 00 01 91 */ bl cNd_LengthOf -/* 80265F50 00262E90 90 7E 00 08 */ stw r3, 8(r30) -/* 80265F54 00262E94 80 7E 00 08 */ lwz r3, 8(r30) -/* 80265F58 00262E98 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80265F5C 00262E9C 83 C1 00 08 */ lwz r30, 8(r1) -/* 80265F60 00262EA0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80265F64 00262EA4 7C 08 03 A6 */ mtlr r0 -/* 80265F68 00262EA8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80265F6C 00262EAC 4E 80 00 20 */ blr - -.global cLs_Insert -cLs_Insert: -/* 80265F70 00262EB0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80265F74 00262EB4 7C 08 02 A6 */ mflr r0 -/* 80265F78 00262EB8 90 01 00 24 */ stw r0, 0x24(r1) -/* 80265F7C 00262EBC 39 61 00 20 */ addi r11, r1, 0x20 -/* 80265F80 00262EC0 48 0F C2 5D */ bl _savegpr_29 -/* 80265F84 00262EC4 7C 7D 1B 78 */ mr r29, r3 -/* 80265F88 00262EC8 7C BE 2B 78 */ mr r30, r5 -/* 80265F8C 00262ECC 80 63 00 00 */ lwz r3, 0(r3) -/* 80265F90 00262ED0 48 00 01 DD */ bl cNd_Order -/* 80265F94 00262ED4 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80265F98 00262ED8 40 82 00 14 */ bne lbl_80265FAC -/* 80265F9C 00262EDC 7F A3 EB 78 */ mr r3, r29 -/* 80265FA0 00262EE0 7F C4 F3 78 */ mr r4, r30 -/* 80265FA4 00262EE4 4B FF FF 59 */ bl cLs_Addition -/* 80265FA8 00262EE8 48 00 00 38 */ b lbl_80265FE0 -lbl_80265FAC: -/* 80265FAC 00262EEC 7F C3 F3 78 */ mr r3, r30 -/* 80265FB0 00262EF0 7F A4 EB 78 */ mr r4, r29 -/* 80265FB4 00262EF4 48 00 02 FD */ bl cNd_SetObject -/* 80265FB8 00262EF8 7F E3 FB 78 */ mr r3, r31 -/* 80265FBC 00262EFC 7F C4 F3 78 */ mr r4, r30 -/* 80265FC0 00262F00 48 00 02 85 */ bl cNd_Insert -/* 80265FC4 00262F04 7F C3 F3 78 */ mr r3, r30 -/* 80265FC8 00262F08 48 00 01 45 */ bl cNd_First -/* 80265FCC 00262F0C 90 7D 00 00 */ stw r3, 0(r29) -/* 80265FD0 00262F10 80 7D 00 00 */ lwz r3, 0(r29) -/* 80265FD4 00262F14 48 00 01 09 */ bl cNd_LengthOf -/* 80265FD8 00262F18 90 7D 00 08 */ stw r3, 8(r29) -/* 80265FDC 00262F1C 80 7D 00 08 */ lwz r3, 8(r29) -lbl_80265FE0: -/* 80265FE0 00262F20 39 61 00 20 */ addi r11, r1, 0x20 -/* 80265FE4 00262F24 48 0F C2 45 */ bl _restgpr_29 -/* 80265FE8 00262F28 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80265FEC 00262F2C 7C 08 03 A6 */ mtlr r0 -/* 80265FF0 00262F30 38 21 00 20 */ addi r1, r1, 0x20 -/* 80265FF4 00262F34 4E 80 00 20 */ blr - -.global cLs_GetFirst -cLs_GetFirst: -/* 80265FF8 00262F38 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80265FFC 00262F3C 7C 08 02 A6 */ mflr r0 -/* 80266000 00262F40 90 01 00 14 */ stw r0, 0x14(r1) -/* 80266004 00262F44 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80266008 00262F48 80 03 00 08 */ lwz r0, 8(r3) -/* 8026600C 00262F4C 2C 00 00 00 */ cmpwi r0, 0 -/* 80266010 00262F50 41 82 00 18 */ beq lbl_80266028 -/* 80266014 00262F54 83 E3 00 00 */ lwz r31, 0(r3) -/* 80266018 00262F58 7F E3 FB 78 */ mr r3, r31 -/* 8026601C 00262F5C 4B FF FE 5D */ bl cLs_SingleCut -/* 80266020 00262F60 7F E3 FB 78 */ mr r3, r31 -/* 80266024 00262F64 48 00 00 08 */ b lbl_8026602C -lbl_80266028: -/* 80266028 00262F68 38 60 00 00 */ li r3, 0 -lbl_8026602C: -/* 8026602C 00262F6C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80266030 00262F70 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266034 00262F74 7C 08 03 A6 */ mtlr r0 -/* 80266038 00262F78 38 21 00 10 */ addi r1, r1, 0x10 -/* 8026603C 00262F7C 4E 80 00 20 */ blr - -.global cLs_Create -cLs_Create: -/* 80266040 00262F80 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80266044 00262F84 7C 08 02 A6 */ mflr r0 -/* 80266048 00262F88 90 01 00 14 */ stw r0, 0x14(r1) -/* 8026604C 00262F8C 4B FF FE 19 */ bl cLs_Init -/* 80266050 00262F90 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266054 00262F94 7C 08 03 A6 */ mtlr r0 -/* 80266058 00262F98 38 21 00 10 */ addi r1, r1, 0x10 -/* 8026605C 00262F9C 4E 80 00 20 */ blr - diff --git a/asm/SComponent/c/c_node.s b/asm/SComponent/c/c_node.s deleted file mode 100644 index 316e0981ad..0000000000 --- a/asm/SComponent/c/c_node.s +++ /dev/null @@ -1,215 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 802660d0 - - -.global cNd_Join -cNd_Join: -/* 802660D0 00263010 90 83 00 08 */ stw r4, 8(r3) -/* 802660D4 00263014 90 64 00 00 */ stw r3, 0(r4) -/* 802660D8 00263018 4E 80 00 20 */ blr - -.global cNd_LengthOf -cNd_LengthOf: -/* 802660DC 0026301C 38 80 00 00 */ li r4, 0 -/* 802660E0 00263020 48 00 00 1C */ b lbl_802660FC -lbl_802660E4: -/* 802660E4 00263024 28 03 00 00 */ cmplwi r3, 0 -/* 802660E8 00263028 38 84 00 01 */ addi r4, r4, 1 -/* 802660EC 0026302C 41 82 00 0C */ beq lbl_802660F8 -/* 802660F0 00263030 80 63 00 08 */ lwz r3, 8(r3) -/* 802660F4 00263034 48 00 00 08 */ b lbl_802660FC -lbl_802660F8: -/* 802660F8 00263038 38 60 00 00 */ li r3, 0 -lbl_802660FC: -/* 802660FC 0026303C 28 03 00 00 */ cmplwi r3, 0 -/* 80266100 00263040 40 82 FF E4 */ bne lbl_802660E4 -/* 80266104 00263044 7C 83 23 78 */ mr r3, r4 -/* 80266108 00263048 4E 80 00 20 */ blr - -.global cNd_First -cNd_First: -/* 8026610C 0026304C 38 00 00 00 */ li r0, 0 -/* 80266110 00263050 48 00 00 1C */ b lbl_8026612C -lbl_80266114: -/* 80266114 00263054 7C 60 1B 78 */ mr r0, r3 -/* 80266118 00263058 28 03 00 00 */ cmplwi r3, 0 -/* 8026611C 0026305C 41 82 00 0C */ beq lbl_80266128 -/* 80266120 00263060 80 63 00 00 */ lwz r3, 0(r3) -/* 80266124 00263064 48 00 00 08 */ b lbl_8026612C -lbl_80266128: -/* 80266128 00263068 38 60 00 00 */ li r3, 0 -lbl_8026612C: -/* 8026612C 0026306C 28 03 00 00 */ cmplwi r3, 0 -/* 80266130 00263070 40 82 FF E4 */ bne lbl_80266114 -/* 80266134 00263074 7C 03 03 78 */ mr r3, r0 -/* 80266138 00263078 4E 80 00 20 */ blr - -.global cNd_Last -cNd_Last: -/* 8026613C 0026307C 38 00 00 00 */ li r0, 0 -/* 80266140 00263080 48 00 00 1C */ b lbl_8026615C -lbl_80266144: -/* 80266144 00263084 7C 60 1B 78 */ mr r0, r3 -/* 80266148 00263088 28 03 00 00 */ cmplwi r3, 0 -/* 8026614C 0026308C 41 82 00 0C */ beq lbl_80266158 -/* 80266150 00263090 80 63 00 08 */ lwz r3, 8(r3) -/* 80266154 00263094 48 00 00 08 */ b lbl_8026615C -lbl_80266158: -/* 80266158 00263098 38 60 00 00 */ li r3, 0 -lbl_8026615C: -/* 8026615C 0026309C 28 03 00 00 */ cmplwi r3, 0 -/* 80266160 002630A0 40 82 FF E4 */ bne lbl_80266144 -/* 80266164 002630A4 7C 03 03 78 */ mr r3, r0 -/* 80266168 002630A8 4E 80 00 20 */ blr - -.global cNd_Order -cNd_Order: -/* 8026616C 002630AC 38 00 00 00 */ li r0, 0 -/* 80266170 002630B0 38 A0 00 00 */ li r5, 0 -/* 80266174 002630B4 48 00 00 20 */ b lbl_80266194 -lbl_80266178: -/* 80266178 002630B8 7C 60 1B 78 */ mr r0, r3 -/* 8026617C 002630BC 28 03 00 00 */ cmplwi r3, 0 -/* 80266180 002630C0 38 A5 00 01 */ addi r5, r5, 1 -/* 80266184 002630C4 41 82 00 0C */ beq lbl_80266190 -/* 80266188 002630C8 80 63 00 08 */ lwz r3, 8(r3) -/* 8026618C 002630CC 48 00 00 08 */ b lbl_80266194 -lbl_80266190: -/* 80266190 002630D0 38 60 00 00 */ li r3, 0 -lbl_80266194: -/* 80266194 002630D4 7C 05 20 00 */ cmpw r5, r4 -/* 80266198 002630D8 40 80 00 0C */ bge lbl_802661A4 -/* 8026619C 002630DC 28 03 00 00 */ cmplwi r3, 0 -/* 802661A0 002630E0 40 82 FF D8 */ bne lbl_80266178 -lbl_802661A4: -/* 802661A4 002630E4 7C 05 20 00 */ cmpw r5, r4 -/* 802661A8 002630E8 40 80 00 0C */ bge lbl_802661B4 -/* 802661AC 002630EC 7C 03 03 78 */ mr r3, r0 -/* 802661B0 002630F0 4E 80 00 20 */ blr -lbl_802661B4: -/* 802661B4 002630F4 38 60 00 00 */ li r3, 0 -/* 802661B8 002630F8 4E 80 00 20 */ blr - -.global cNd_SingleCut -cNd_SingleCut: -/* 802661BC 002630FC 80 A3 00 00 */ lwz r5, 0(r3) -/* 802661C0 00263100 80 83 00 08 */ lwz r4, 8(r3) -/* 802661C4 00263104 28 05 00 00 */ cmplwi r5, 0 -/* 802661C8 00263108 41 82 00 08 */ beq lbl_802661D0 -/* 802661CC 0026310C 90 85 00 08 */ stw r4, 8(r5) -lbl_802661D0: -/* 802661D0 00263110 28 04 00 00 */ cmplwi r4, 0 -/* 802661D4 00263114 41 82 00 0C */ beq lbl_802661E0 -/* 802661D8 00263118 80 03 00 00 */ lwz r0, 0(r3) -/* 802661DC 0026311C 90 04 00 00 */ stw r0, 0(r4) -lbl_802661E0: -/* 802661E0 00263120 38 00 00 00 */ li r0, 0 -/* 802661E4 00263124 90 03 00 00 */ stw r0, 0(r3) -/* 802661E8 00263128 90 03 00 08 */ stw r0, 8(r3) -/* 802661EC 0026312C 4E 80 00 20 */ blr - -.global cNd_Cut -cNd_Cut: -/* 802661F0 00263130 80 83 00 00 */ lwz r4, 0(r3) -/* 802661F4 00263134 28 04 00 00 */ cmplwi r4, 0 -/* 802661F8 00263138 41 82 00 0C */ beq lbl_80266204 -/* 802661FC 0026313C 38 00 00 00 */ li r0, 0 -/* 80266200 00263140 90 04 00 08 */ stw r0, 8(r4) -lbl_80266204: -/* 80266204 00263144 38 00 00 00 */ li r0, 0 -/* 80266208 00263148 90 03 00 00 */ stw r0, 0(r3) -/* 8026620C 0026314C 4E 80 00 20 */ blr - -.global cNd_Addition -cNd_Addition: -/* 80266210 00263150 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80266214 00263154 7C 08 02 A6 */ mflr r0 -/* 80266218 00263158 90 01 00 14 */ stw r0, 0x14(r1) -/* 8026621C 0026315C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80266220 00263160 7C 9F 23 78 */ mr r31, r4 -/* 80266224 00263164 4B FF FF 19 */ bl cNd_Last -/* 80266228 00263168 7F E4 FB 78 */ mr r4, r31 -/* 8026622C 0026316C 4B FF FE A5 */ bl cNd_Join -/* 80266230 00263170 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80266234 00263174 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266238 00263178 7C 08 03 A6 */ mtlr r0 -/* 8026623C 0026317C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80266240 00263180 4E 80 00 20 */ blr - -.global cNd_Insert -cNd_Insert: -/* 80266244 00263184 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80266248 00263188 7C 08 02 A6 */ mflr r0 -/* 8026624C 0026318C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80266250 00263190 39 61 00 20 */ addi r11, r1, 0x20 -/* 80266254 00263194 48 0F BF 89 */ bl _savegpr_29 -/* 80266258 00263198 7C 7D 1B 78 */ mr r29, r3 -/* 8026625C 0026319C 7C 9E 23 78 */ mr r30, r4 -/* 80266260 002631A0 83 E3 00 00 */ lwz r31, 0(r3) -/* 80266264 002631A4 28 1F 00 00 */ cmplwi r31, 0 -/* 80266268 002631A8 40 82 00 14 */ bne lbl_8026627C -/* 8026626C 002631AC 7F C3 F3 78 */ mr r3, r30 -/* 80266270 002631B0 7F A4 EB 78 */ mr r4, r29 -/* 80266274 002631B4 4B FF FF 9D */ bl cNd_Addition -/* 80266278 002631B8 48 00 00 20 */ b lbl_80266298 -lbl_8026627C: -/* 8026627C 002631BC 4B FF FF 75 */ bl cNd_Cut -/* 80266280 002631C0 7F E3 FB 78 */ mr r3, r31 -/* 80266284 002631C4 7F C4 F3 78 */ mr r4, r30 -/* 80266288 002631C8 4B FF FF 89 */ bl cNd_Addition -/* 8026628C 002631CC 7F C3 F3 78 */ mr r3, r30 -/* 80266290 002631D0 7F A4 EB 78 */ mr r4, r29 -/* 80266294 002631D4 4B FF FF 7D */ bl cNd_Addition -lbl_80266298: -/* 80266298 002631D8 39 61 00 20 */ addi r11, r1, 0x20 -/* 8026629C 002631DC 48 0F BF 8D */ bl _restgpr_29 -/* 802662A0 002631E0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802662A4 002631E4 7C 08 03 A6 */ mtlr r0 -/* 802662A8 002631E8 38 21 00 20 */ addi r1, r1, 0x20 -/* 802662AC 002631EC 4E 80 00 20 */ blr - -.global cNd_SetObject -cNd_SetObject: -/* 802662B0 002631F0 48 00 00 1C */ b lbl_802662CC -lbl_802662B4: -/* 802662B4 002631F4 90 83 00 04 */ stw r4, 4(r3) -/* 802662B8 002631F8 28 03 00 00 */ cmplwi r3, 0 -/* 802662BC 002631FC 41 82 00 0C */ beq lbl_802662C8 -/* 802662C0 00263200 80 63 00 08 */ lwz r3, 8(r3) -/* 802662C4 00263204 48 00 00 08 */ b lbl_802662CC -lbl_802662C8: -/* 802662C8 00263208 38 60 00 00 */ li r3, 0 -lbl_802662CC: -/* 802662CC 0026320C 28 03 00 00 */ cmplwi r3, 0 -/* 802662D0 00263210 40 82 FF E4 */ bne lbl_802662B4 -/* 802662D4 00263214 4E 80 00 20 */ blr - -.global cNd_ClearObject -cNd_ClearObject: -/* 802662D8 00263218 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802662DC 0026321C 7C 08 02 A6 */ mflr r0 -/* 802662E0 00263220 90 01 00 14 */ stw r0, 0x14(r1) -/* 802662E4 00263224 38 80 00 00 */ li r4, 0 -/* 802662E8 00263228 4B FF FF C9 */ bl cNd_SetObject -/* 802662EC 0026322C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802662F0 00263230 7C 08 03 A6 */ mtlr r0 -/* 802662F4 00263234 38 21 00 10 */ addi r1, r1, 0x10 -/* 802662F8 00263238 4E 80 00 20 */ blr - -.global cNd_ForcedClear -cNd_ForcedClear: -/* 802662FC 0026323C 38 00 00 00 */ li r0, 0 -/* 80266300 00263240 90 03 00 00 */ stw r0, 0(r3) -/* 80266304 00263244 90 03 00 08 */ stw r0, 8(r3) -/* 80266308 00263248 90 03 00 04 */ stw r0, 4(r3) -/* 8026630C 0026324C 4E 80 00 20 */ blr - -.global cNd_Create -cNd_Create: -/* 80266310 00263250 38 00 00 00 */ li r0, 0 -/* 80266314 00263254 90 03 00 00 */ stw r0, 0(r3) -/* 80266318 00263258 90 03 00 08 */ stw r0, 8(r3) -/* 8026631C 0026325C 90 83 00 04 */ stw r4, 4(r3) -/* 80266320 00263260 4E 80 00 20 */ blr - diff --git a/asm/SComponent/c/c_phase.s b/asm/SComponent/c/c_phase.s deleted file mode 100644 index 065ea20822..0000000000 --- a/asm/SComponent/c/c_phase.s +++ /dev/null @@ -1,146 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80266624 - - -.global cPhs_Reset -cPhs_Reset: -/* 80266624 00263564 38 00 00 00 */ li r0, 0 -/* 80266628 00263568 90 03 00 04 */ stw r0, 4(r3) -/* 8026662C 0026356C 4E 80 00 20 */ blr - -.global cPhs_Set -cPhs_Set: -/* 80266630 00263570 90 83 00 00 */ stw r4, 0(r3) -/* 80266634 00263574 38 00 00 00 */ li r0, 0 -/* 80266638 00263578 90 03 00 04 */ stw r0, 4(r3) -/* 8026663C 0026357C 4E 80 00 20 */ blr - -.global cPhs_UnCompleate -cPhs_UnCompleate: -/* 80266640 00263580 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80266644 00263584 7C 08 02 A6 */ mflr r0 -/* 80266648 00263588 90 01 00 14 */ stw r0, 0x14(r1) -/* 8026664C 0026358C 38 00 00 00 */ li r0, 0 -/* 80266650 00263590 90 03 00 00 */ stw r0, 0(r3) -/* 80266654 00263594 4B FF FF D1 */ bl cPhs_Reset -/* 80266658 00263598 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8026665C 0026359C 7C 08 03 A6 */ mtlr r0 -/* 80266660 002635A0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80266664 002635A4 4E 80 00 20 */ blr - -.global cPhs_Compleate -cPhs_Compleate: -/* 80266668 002635A8 38 00 00 00 */ li r0, 0 -/* 8026666C 002635AC 90 03 00 00 */ stw r0, 0(r3) -/* 80266670 002635B0 38 60 00 04 */ li r3, 4 -/* 80266674 002635B4 4E 80 00 20 */ blr - -.global cPhs_Next -cPhs_Next: -/* 80266678 002635B8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8026667C 002635BC 7C 08 02 A6 */ mflr r0 -/* 80266680 002635C0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80266684 002635C4 80 A3 00 00 */ lwz r5, 0(r3) -/* 80266688 002635C8 28 05 00 00 */ cmplwi r5, 0 -/* 8026668C 002635CC 41 82 00 38 */ beq lbl_802666C4 -/* 80266690 002635D0 80 83 00 04 */ lwz r4, 4(r3) -/* 80266694 002635D4 38 04 00 01 */ addi r0, r4, 1 -/* 80266698 002635D8 90 03 00 04 */ stw r0, 4(r3) -/* 8026669C 002635DC 80 03 00 04 */ lwz r0, 4(r3) -/* 802666A0 002635E0 54 00 10 3A */ slwi r0, r0, 2 -/* 802666A4 002635E4 7C 05 00 2E */ lwzx r0, r5, r0 -/* 802666A8 002635E8 28 00 00 00 */ cmplwi r0, 0 -/* 802666AC 002635EC 41 82 00 08 */ beq lbl_802666B4 -/* 802666B0 002635F0 40 82 00 0C */ bne lbl_802666BC -lbl_802666B4: -/* 802666B4 002635F4 4B FF FF B5 */ bl cPhs_Compleate -/* 802666B8 002635F8 48 00 00 10 */ b lbl_802666C8 -lbl_802666BC: -/* 802666BC 002635FC 38 60 00 01 */ li r3, 1 -/* 802666C0 00263600 48 00 00 08 */ b lbl_802666C8 -lbl_802666C4: -/* 802666C4 00263604 38 60 00 04 */ li r3, 4 -lbl_802666C8: -/* 802666C8 00263608 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802666CC 0026360C 7C 08 03 A6 */ mtlr r0 -/* 802666D0 00263610 38 21 00 10 */ addi r1, r1, 0x10 -/* 802666D4 00263614 4E 80 00 20 */ blr - -.global cPhs_Do -cPhs_Do: -/* 802666D8 00263618 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802666DC 0026361C 7C 08 02 A6 */ mflr r0 -/* 802666E0 00263620 90 01 00 14 */ stw r0, 0x14(r1) -/* 802666E4 00263624 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802666E8 00263628 7C 7F 1B 78 */ mr r31, r3 -/* 802666EC 0026362C 80 A3 00 00 */ lwz r5, 0(r3) -/* 802666F0 00263630 28 05 00 00 */ cmplwi r5, 0 -/* 802666F4 00263634 41 82 00 A0 */ beq lbl_80266794 -/* 802666F8 00263638 80 1F 00 04 */ lwz r0, 4(r31) -/* 802666FC 0026363C 54 00 10 3A */ slwi r0, r0, 2 -/* 80266700 00263640 7C 83 23 78 */ mr r3, r4 -/* 80266704 00263644 7D 85 00 2E */ lwzx r12, r5, r0 -/* 80266708 00263648 7D 89 03 A6 */ mtctr r12 -/* 8026670C 0026364C 4E 80 04 21 */ bctrl -/* 80266710 00263650 2C 03 00 03 */ cmpwi r3, 3 -/* 80266714 00263654 41 82 00 5C */ beq lbl_80266770 -/* 80266718 00263658 40 80 00 14 */ bge lbl_8026672C -/* 8026671C 0026365C 2C 03 00 01 */ cmpwi r3, 1 -/* 80266720 00263660 41 82 00 1C */ beq lbl_8026673C -/* 80266724 00263664 40 80 00 24 */ bge lbl_80266748 -/* 80266728 00263668 48 00 00 70 */ b lbl_80266798 -lbl_8026672C: -/* 8026672C 0026366C 2C 03 00 05 */ cmpwi r3, 5 -/* 80266730 00263670 41 82 00 50 */ beq lbl_80266780 -/* 80266734 00263674 40 80 00 64 */ bge lbl_80266798 -/* 80266738 00263678 48 00 00 2C */ b lbl_80266764 -lbl_8026673C: -/* 8026673C 0026367C 7F E3 FB 78 */ mr r3, r31 -/* 80266740 00263680 4B FF FF 39 */ bl cPhs_Next -/* 80266744 00263684 48 00 00 54 */ b lbl_80266798 -lbl_80266748: -/* 80266748 00263688 7F E3 FB 78 */ mr r3, r31 -/* 8026674C 0026368C 4B FF FF 2D */ bl cPhs_Next -/* 80266750 00263690 2C 03 00 01 */ cmpwi r3, 1 -/* 80266754 00263694 38 60 00 04 */ li r3, 4 -/* 80266758 00263698 40 82 00 40 */ bne lbl_80266798 -/* 8026675C 0026369C 38 60 00 02 */ li r3, 2 -/* 80266760 002636A0 48 00 00 38 */ b lbl_80266798 -lbl_80266764: -/* 80266764 002636A4 7F E3 FB 78 */ mr r3, r31 -/* 80266768 002636A8 4B FF FF 01 */ bl cPhs_Compleate -/* 8026676C 002636AC 48 00 00 2C */ b lbl_80266798 -lbl_80266770: -/* 80266770 002636B0 7F E3 FB 78 */ mr r3, r31 -/* 80266774 002636B4 4B FF FE CD */ bl cPhs_UnCompleate -/* 80266778 002636B8 38 60 00 03 */ li r3, 3 -/* 8026677C 002636BC 48 00 00 1C */ b lbl_80266798 -lbl_80266780: -/* 80266780 002636C0 7F E3 FB 78 */ mr r3, r31 -/* 80266784 002636C4 4B FF FE BD */ bl cPhs_UnCompleate -/* 80266788 002636C8 38 60 00 05 */ li r3, 5 -/* 8026678C 002636CC 48 00 00 0C */ b lbl_80266798 -/* 80266790 002636D0 48 00 00 08 */ b lbl_80266798 -lbl_80266794: -/* 80266794 002636D4 4B FF FE D5 */ bl cPhs_Compleate -lbl_80266798: -/* 80266798 002636D8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8026679C 002636DC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802667A0 002636E0 7C 08 03 A6 */ mtlr r0 -/* 802667A4 002636E4 38 21 00 10 */ addi r1, r1, 0x10 -/* 802667A8 002636E8 4E 80 00 20 */ blr - -.global cPhs_Handler -cPhs_Handler: -/* 802667AC 002636EC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802667B0 002636F0 7C 08 02 A6 */ mflr r0 -/* 802667B4 002636F4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802667B8 002636F8 90 83 00 00 */ stw r4, 0(r3) -/* 802667BC 002636FC 7C A4 2B 78 */ mr r4, r5 -/* 802667C0 00263700 4B FF FF 19 */ bl cPhs_Do -/* 802667C4 00263704 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802667C8 00263708 7C 08 03 A6 */ mtlr r0 -/* 802667CC 0026370C 38 21 00 10 */ addi r1, r1, 0x10 -/* 802667D0 00263710 4E 80 00 20 */ blr - diff --git a/asm/SComponent/c/c_tag.s b/asm/SComponent/c/c_tag.s deleted file mode 100644 index 007c67e3c8..0000000000 --- a/asm/SComponent/c/c_tag.s +++ /dev/null @@ -1,168 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80266880 - - -.global cTg_IsUse -cTg_IsUse: -/* 80266880 002637C0 88 63 00 10 */ lbz r3, 0x10(r3) -/* 80266884 002637C4 7C 63 07 74 */ extsb r3, r3 -/* 80266888 002637C8 4E 80 00 20 */ blr - -.global cTg_SingleCutFromTree -cTg_SingleCutFromTree: -/* 8026688C 002637CC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80266890 002637D0 7C 08 02 A6 */ mflr r0 -/* 80266894 002637D4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80266898 002637D8 88 03 00 10 */ lbz r0, 0x10(r3) -/* 8026689C 002637DC 2C 00 00 01 */ cmpwi r0, 1 -/* 802668A0 002637E0 40 82 00 18 */ bne lbl_802668B8 -/* 802668A4 002637E4 38 00 00 00 */ li r0, 0 -/* 802668A8 002637E8 98 03 00 10 */ stb r0, 0x10(r3) -/* 802668AC 002637EC 4B FF FB 95 */ bl cTr_SingleCut -/* 802668B0 002637F0 38 60 00 01 */ li r3, 1 -/* 802668B4 002637F4 48 00 00 08 */ b lbl_802668BC -lbl_802668B8: -/* 802668B8 002637F8 38 60 00 00 */ li r3, 0 -lbl_802668BC: -/* 802668BC 002637FC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802668C0 00263800 7C 08 03 A6 */ mtlr r0 -/* 802668C4 00263804 38 21 00 10 */ addi r1, r1, 0x10 -/* 802668C8 00263808 4E 80 00 20 */ blr - -.global cTg_AdditionToTree -cTg_AdditionToTree: -/* 802668CC 0026380C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802668D0 00263810 7C 08 02 A6 */ mflr r0 -/* 802668D4 00263814 90 01 00 14 */ stw r0, 0x14(r1) -/* 802668D8 00263818 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802668DC 0026381C 7C BF 2B 78 */ mr r31, r5 -/* 802668E0 00263820 88 05 00 10 */ lbz r0, 0x10(r5) -/* 802668E4 00263824 7C 00 07 75 */ extsb. r0, r0 -/* 802668E8 00263828 40 82 00 1C */ bne lbl_80266904 -/* 802668EC 0026382C 4B FF FB 75 */ bl cTr_Addition -/* 802668F0 00263830 2C 03 00 00 */ cmpwi r3, 0 -/* 802668F4 00263834 41 82 00 10 */ beq lbl_80266904 -/* 802668F8 00263838 38 00 00 01 */ li r0, 1 -/* 802668FC 0026383C 98 1F 00 10 */ stb r0, 0x10(r31) -/* 80266900 00263840 48 00 00 08 */ b lbl_80266908 -lbl_80266904: -/* 80266904 00263844 38 60 00 00 */ li r3, 0 -lbl_80266908: -/* 80266908 00263848 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8026690C 0026384C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266910 00263850 7C 08 03 A6 */ mtlr r0 -/* 80266914 00263854 38 21 00 10 */ addi r1, r1, 0x10 -/* 80266918 00263858 4E 80 00 20 */ blr - -.global cTg_InsertToTree -cTg_InsertToTree: -/* 8026691C 0026385C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80266920 00263860 7C 08 02 A6 */ mflr r0 -/* 80266924 00263864 90 01 00 14 */ stw r0, 0x14(r1) -/* 80266928 00263868 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8026692C 0026386C 7C BF 2B 78 */ mr r31, r5 -/* 80266930 00263870 88 05 00 10 */ lbz r0, 0x10(r5) -/* 80266934 00263874 7C 00 07 75 */ extsb. r0, r0 -/* 80266938 00263878 40 82 00 1C */ bne lbl_80266954 -/* 8026693C 0026387C 4B FF FB 69 */ bl cTr_Insert -/* 80266940 00263880 2C 03 00 00 */ cmpwi r3, 0 -/* 80266944 00263884 41 82 00 10 */ beq lbl_80266954 -/* 80266948 00263888 38 00 00 01 */ li r0, 1 -/* 8026694C 0026388C 98 1F 00 10 */ stb r0, 0x10(r31) -/* 80266950 00263890 48 00 00 08 */ b lbl_80266958 -lbl_80266954: -/* 80266954 00263894 38 60 00 00 */ li r3, 0 -lbl_80266958: -/* 80266958 00263898 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8026695C 0026389C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266960 002638A0 7C 08 03 A6 */ mtlr r0 -/* 80266964 002638A4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80266968 002638A8 4E 80 00 20 */ blr - -.global cTg_GetFirst -cTg_GetFirst: -/* 8026696C 002638AC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80266970 002638B0 7C 08 02 A6 */ mflr r0 -/* 80266974 002638B4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80266978 002638B8 4B FF F6 81 */ bl cLs_GetFirst -/* 8026697C 002638BC 28 03 00 00 */ cmplwi r3, 0 -/* 80266980 002638C0 41 82 00 10 */ beq lbl_80266990 -/* 80266984 002638C4 38 00 00 00 */ li r0, 0 -/* 80266988 002638C8 98 03 00 10 */ stb r0, 0x10(r3) -/* 8026698C 002638CC 48 00 00 08 */ b lbl_80266994 -lbl_80266990: -/* 80266990 002638D0 38 60 00 00 */ li r3, 0 -lbl_80266994: -/* 80266994 002638D4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266998 002638D8 7C 08 03 A6 */ mtlr r0 -/* 8026699C 002638DC 38 21 00 10 */ addi r1, r1, 0x10 -/* 802669A0 002638E0 4E 80 00 20 */ blr - -.global cTg_SingleCut -cTg_SingleCut: -/* 802669A4 002638E4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802669A8 002638E8 7C 08 02 A6 */ mflr r0 -/* 802669AC 002638EC 90 01 00 14 */ stw r0, 0x14(r1) -/* 802669B0 002638F0 88 03 00 10 */ lbz r0, 0x10(r3) -/* 802669B4 002638F4 2C 00 00 01 */ cmpwi r0, 1 -/* 802669B8 002638F8 40 82 00 18 */ bne lbl_802669D0 -/* 802669BC 002638FC 38 00 00 00 */ li r0, 0 -/* 802669C0 00263900 98 03 00 10 */ stb r0, 0x10(r3) -/* 802669C4 00263904 4B FF F4 B5 */ bl cLs_SingleCut -/* 802669C8 00263908 38 60 00 01 */ li r3, 1 -/* 802669CC 0026390C 48 00 00 08 */ b lbl_802669D4 -lbl_802669D0: -/* 802669D0 00263910 38 60 00 00 */ li r3, 0 -lbl_802669D4: -/* 802669D4 00263914 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802669D8 00263918 7C 08 03 A6 */ mtlr r0 -/* 802669DC 0026391C 38 21 00 10 */ addi r1, r1, 0x10 -/* 802669E0 00263920 4E 80 00 20 */ blr - -.global cTg_Addition -cTg_Addition: -/* 802669E4 00263924 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802669E8 00263928 7C 08 02 A6 */ mflr r0 -/* 802669EC 0026392C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802669F0 00263930 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802669F4 00263934 7C 9F 23 78 */ mr r31, r4 -/* 802669F8 00263938 88 04 00 10 */ lbz r0, 0x10(r4) -/* 802669FC 0026393C 7C 00 07 75 */ extsb. r0, r0 -/* 80266A00 00263940 40 82 00 1C */ bne lbl_80266A1C -/* 80266A04 00263944 4B FF F4 F9 */ bl cLs_Addition -/* 80266A08 00263948 2C 03 00 00 */ cmpwi r3, 0 -/* 80266A0C 0026394C 41 82 00 10 */ beq lbl_80266A1C -/* 80266A10 00263950 38 00 00 01 */ li r0, 1 -/* 80266A14 00263954 98 1F 00 10 */ stb r0, 0x10(r31) -/* 80266A18 00263958 48 00 00 08 */ b lbl_80266A20 -lbl_80266A1C: -/* 80266A1C 0026395C 38 60 00 00 */ li r3, 0 -lbl_80266A20: -/* 80266A20 00263960 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80266A24 00263964 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266A28 00263968 7C 08 03 A6 */ mtlr r0 -/* 80266A2C 0026396C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80266A30 00263970 4E 80 00 20 */ blr - -.global cTg_Create -cTg_Create: -/* 80266A34 00263974 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80266A38 00263978 7C 08 02 A6 */ mflr r0 -/* 80266A3C 0026397C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80266A40 00263980 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80266A44 00263984 93 C1 00 08 */ stw r30, 8(r1) -/* 80266A48 00263988 7C 7E 1B 78 */ mr r30, r3 -/* 80266A4C 0026398C 7C 9F 23 78 */ mr r31, r4 -/* 80266A50 00263990 38 80 00 00 */ li r4, 0 -/* 80266A54 00263994 4B FF F8 BD */ bl cNd_Create -/* 80266A58 00263998 93 FE 00 0C */ stw r31, 0xc(r30) -/* 80266A5C 0026399C 38 00 00 00 */ li r0, 0 -/* 80266A60 002639A0 98 1E 00 10 */ stb r0, 0x10(r30) -/* 80266A64 002639A4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80266A68 002639A8 83 C1 00 08 */ lwz r30, 8(r1) -/* 80266A6C 002639AC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266A70 002639B0 7C 08 03 A6 */ mtlr r0 -/* 80266A74 002639B4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80266A78 002639B8 4E 80 00 20 */ blr - diff --git a/asm/SComponent/c/c_tree.s b/asm/SComponent/c/c_tree.s deleted file mode 100644 index a06428afba..0000000000 --- a/asm/SComponent/c/c_tree.s +++ /dev/null @@ -1,87 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80266440 - - -.global cTr_SingleCut -cTr_SingleCut: -/* 80266440 00263380 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80266444 00263384 7C 08 02 A6 */ mflr r0 -/* 80266448 00263388 90 01 00 14 */ stw r0, 0x14(r1) -/* 8026644C 0026338C 4B FF FA 2D */ bl cLs_SingleCut -/* 80266450 00263390 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266454 00263394 7C 08 03 A6 */ mtlr r0 -/* 80266458 00263398 38 21 00 10 */ addi r1, r1, 0x10 -/* 8026645C 0026339C 4E 80 00 20 */ blr - -.global cTr_Addition -cTr_Addition: -/* 80266460 002633A0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80266464 002633A4 7C 08 02 A6 */ mflr r0 -/* 80266468 002633A8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8026646C 002633AC 80 03 00 04 */ lwz r0, 4(r3) -/* 80266470 002633B0 7C 04 00 00 */ cmpw r4, r0 -/* 80266474 002633B4 41 80 00 0C */ blt lbl_80266480 -/* 80266478 002633B8 38 60 00 00 */ li r3, 0 -/* 8026647C 002633BC 48 00 00 18 */ b lbl_80266494 -lbl_80266480: -/* 80266480 002633C0 80 63 00 00 */ lwz r3, 0(r3) -/* 80266484 002633C4 1C 04 00 0C */ mulli r0, r4, 0xc -/* 80266488 002633C8 7C 63 02 14 */ add r3, r3, r0 -/* 8026648C 002633CC 7C A4 2B 78 */ mr r4, r5 -/* 80266490 002633D0 4B FF FA 6D */ bl cLs_Addition -lbl_80266494: -/* 80266494 002633D4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266498 002633D8 7C 08 03 A6 */ mtlr r0 -/* 8026649C 002633DC 38 21 00 10 */ addi r1, r1, 0x10 -/* 802664A0 002633E0 4E 80 00 20 */ blr - -.global cTr_Insert -cTr_Insert: -/* 802664A4 002633E4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802664A8 002633E8 7C 08 02 A6 */ mflr r0 -/* 802664AC 002633EC 90 01 00 14 */ stw r0, 0x14(r1) -/* 802664B0 002633F0 80 03 00 04 */ lwz r0, 4(r3) -/* 802664B4 002633F4 7C 04 00 00 */ cmpw r4, r0 -/* 802664B8 002633F8 41 80 00 0C */ blt lbl_802664C4 -/* 802664BC 002633FC 38 60 00 00 */ li r3, 0 -/* 802664C0 00263400 48 00 00 18 */ b lbl_802664D8 -lbl_802664C4: -/* 802664C4 00263404 80 63 00 00 */ lwz r3, 0(r3) -/* 802664C8 00263408 1C 04 00 0C */ mulli r0, r4, 0xc -/* 802664CC 0026340C 7C 63 02 14 */ add r3, r3, r0 -/* 802664D0 00263410 7C C4 33 78 */ mr r4, r6 -/* 802664D4 00263414 4B FF FA 9D */ bl cLs_Insert -lbl_802664D8: -/* 802664D8 00263418 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802664DC 0026341C 7C 08 03 A6 */ mtlr r0 -/* 802664E0 00263420 38 21 00 10 */ addi r1, r1, 0x10 -/* 802664E4 00263424 4E 80 00 20 */ blr - -.global cTr_Create -cTr_Create: -/* 802664E8 00263428 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802664EC 0026342C 7C 08 02 A6 */ mflr r0 -/* 802664F0 00263430 90 01 00 14 */ stw r0, 0x14(r1) -/* 802664F4 00263434 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802664F8 00263438 93 C1 00 08 */ stw r30, 8(r1) -/* 802664FC 0026343C 7C 9E 23 78 */ mr r30, r4 -/* 80266500 00263440 7C BF 2B 78 */ mr r31, r5 -/* 80266504 00263444 93 C3 00 00 */ stw r30, 0(r3) -/* 80266508 00263448 93 E3 00 04 */ stw r31, 4(r3) -/* 8026650C 0026344C 48 00 00 10 */ b lbl_8026651C -lbl_80266510: -/* 80266510 00263450 7F C3 F3 78 */ mr r3, r30 -/* 80266514 00263454 3B DE 00 0C */ addi r30, r30, 0xc -/* 80266518 00263458 4B FF FB 29 */ bl cLs_Create -lbl_8026651C: -/* 8026651C 0026345C 2C 1F 00 00 */ cmpwi r31, 0 -/* 80266520 00263460 3B FF FF FF */ addi r31, r31, -1 -/* 80266524 00263464 41 81 FF EC */ bgt lbl_80266510 -/* 80266528 00263468 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8026652C 0026346C 83 C1 00 08 */ lwz r30, 8(r1) -/* 80266530 00263470 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266534 00263474 7C 08 03 A6 */ mtlr r0 -/* 80266538 00263478 38 21 00 10 */ addi r1, r1, 0x10 -/* 8026653C 0026347C 4E 80 00 20 */ blr - diff --git a/asm/SComponent/c/list/c_list_iter.s b/asm/SComponent/c/list/c_list_iter.s deleted file mode 100644 index 06abc9280f..0000000000 --- a/asm/SComponent/c/list/c_list_iter.s +++ /dev/null @@ -1,43 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80266060 - - -.global cLsIt_Method -cLsIt_Method: -/* 80266060 00262FA0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80266064 00262FA4 7C 08 02 A6 */ mflr r0 -/* 80266068 00262FA8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8026606C 00262FAC 80 03 00 08 */ lwz r0, 8(r3) -/* 80266070 00262FB0 2C 00 00 00 */ cmpwi r0, 0 -/* 80266074 00262FB4 40 81 00 10 */ ble lbl_80266084 -/* 80266078 00262FB8 80 63 00 00 */ lwz r3, 0(r3) -/* 8026607C 00262FBC 48 00 02 A9 */ bl cNdIt_Method -/* 80266080 00262FC0 48 00 00 08 */ b lbl_80266088 -lbl_80266084: -/* 80266084 00262FC4 38 60 00 01 */ li r3, 1 -lbl_80266088: -/* 80266088 00262FC8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8026608C 00262FCC 7C 08 03 A6 */ mtlr r0 -/* 80266090 00262FD0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80266094 00262FD4 4E 80 00 20 */ blr - -.global cLsIt_Judge -cLsIt_Judge: -/* 80266098 00262FD8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8026609C 00262FDC 7C 08 02 A6 */ mflr r0 -/* 802660A0 00262FE0 90 01 00 14 */ stw r0, 0x14(r1) -/* 802660A4 00262FE4 80 03 00 08 */ lwz r0, 8(r3) -/* 802660A8 00262FE8 2C 00 00 00 */ cmpwi r0, 0 -/* 802660AC 00262FEC 40 81 00 10 */ ble lbl_802660BC -/* 802660B0 00262FF0 80 63 00 00 */ lwz r3, 0(r3) -/* 802660B4 00262FF4 48 00 03 01 */ bl cNdIt_Judge -/* 802660B8 00262FF8 48 00 00 08 */ b lbl_802660C0 -lbl_802660BC: -/* 802660BC 00262FFC 38 60 00 00 */ li r3, 0 -lbl_802660C0: -/* 802660C0 00263000 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802660C4 00263004 7C 08 03 A6 */ mtlr r0 -/* 802660C8 00263008 38 21 00 10 */ addi r1, r1, 0x10 -/* 802660CC 0026300C 4E 80 00 20 */ blr - diff --git a/asm/SComponent/c/node/c_node_iter.s b/asm/SComponent/c/node/c_node_iter.s deleted file mode 100644 index 4ea882e380..0000000000 --- a/asm/SComponent/c/node/c_node_iter.s +++ /dev/null @@ -1,93 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80266324 - - -.global cNdIt_Method -cNdIt_Method: -/* 80266324 00263264 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80266328 00263268 7C 08 02 A6 */ mflr r0 -/* 8026632C 0026326C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80266330 00263270 39 61 00 20 */ addi r11, r1, 0x20 -/* 80266334 00263274 48 0F BE A5 */ bl _savegpr_28 -/* 80266338 00263278 7C 9C 23 78 */ mr r28, r4 -/* 8026633C 0026327C 7C BD 2B 78 */ mr r29, r5 -/* 80266340 00263280 3B E0 00 01 */ li r31, 1 -/* 80266344 00263284 28 03 00 00 */ cmplwi r3, 0 -/* 80266348 00263288 41 82 00 0C */ beq lbl_80266354 -/* 8026634C 0026328C 83 C3 00 08 */ lwz r30, 8(r3) -/* 80266350 00263290 48 00 00 40 */ b lbl_80266390 -lbl_80266354: -/* 80266354 00263294 3B C0 00 00 */ li r30, 0 -/* 80266358 00263298 48 00 00 38 */ b lbl_80266390 -lbl_8026635C: -/* 8026635C 0026329C 7F A4 EB 78 */ mr r4, r29 -/* 80266360 002632A0 7F 8C E3 78 */ mr r12, r28 -/* 80266364 002632A4 7D 89 03 A6 */ mtctr r12 -/* 80266368 002632A8 4E 80 04 21 */ bctrl -/* 8026636C 002632AC 2C 03 00 00 */ cmpwi r3, 0 -/* 80266370 002632B0 40 82 00 08 */ bne lbl_80266378 -/* 80266374 002632B4 3B E0 00 00 */ li r31, 0 -lbl_80266378: -/* 80266378 002632B8 7F C3 F3 78 */ mr r3, r30 -/* 8026637C 002632BC 28 1E 00 00 */ cmplwi r30, 0 -/* 80266380 002632C0 41 82 00 0C */ beq lbl_8026638C -/* 80266384 002632C4 83 DE 00 08 */ lwz r30, 8(r30) -/* 80266388 002632C8 48 00 00 08 */ b lbl_80266390 -lbl_8026638C: -/* 8026638C 002632CC 3B C0 00 00 */ li r30, 0 -lbl_80266390: -/* 80266390 002632D0 28 03 00 00 */ cmplwi r3, 0 -/* 80266394 002632D4 40 82 FF C8 */ bne lbl_8026635C -/* 80266398 002632D8 7F E3 FB 78 */ mr r3, r31 -/* 8026639C 002632DC 39 61 00 20 */ addi r11, r1, 0x20 -/* 802663A0 002632E0 48 0F BE 85 */ bl _restgpr_28 -/* 802663A4 002632E4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802663A8 002632E8 7C 08 03 A6 */ mtlr r0 -/* 802663AC 002632EC 38 21 00 20 */ addi r1, r1, 0x20 -/* 802663B0 002632F0 4E 80 00 20 */ blr - -.global cNdIt_Judge -cNdIt_Judge: -/* 802663B4 002632F4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802663B8 002632F8 7C 08 02 A6 */ mflr r0 -/* 802663BC 002632FC 90 01 00 24 */ stw r0, 0x24(r1) -/* 802663C0 00263300 39 61 00 20 */ addi r11, r1, 0x20 -/* 802663C4 00263304 48 0F BE 19 */ bl _savegpr_29 -/* 802663C8 00263308 7C 9D 23 78 */ mr r29, r4 -/* 802663CC 0026330C 7C BE 2B 78 */ mr r30, r5 -/* 802663D0 00263310 28 03 00 00 */ cmplwi r3, 0 -/* 802663D4 00263314 41 82 00 0C */ beq lbl_802663E0 -/* 802663D8 00263318 83 E3 00 08 */ lwz r31, 8(r3) -/* 802663DC 0026331C 48 00 00 40 */ b lbl_8026641C -lbl_802663E0: -/* 802663E0 00263320 3B E0 00 00 */ li r31, 0 -/* 802663E4 00263324 48 00 00 38 */ b lbl_8026641C -lbl_802663E8: -/* 802663E8 00263328 7F C4 F3 78 */ mr r4, r30 -/* 802663EC 0026332C 7F AC EB 78 */ mr r12, r29 -/* 802663F0 00263330 7D 89 03 A6 */ mtctr r12 -/* 802663F4 00263334 4E 80 04 21 */ bctrl -/* 802663F8 00263338 28 03 00 00 */ cmplwi r3, 0 -/* 802663FC 0026333C 41 82 00 08 */ beq lbl_80266404 -/* 80266400 00263340 48 00 00 28 */ b lbl_80266428 -lbl_80266404: -/* 80266404 00263344 7F E3 FB 78 */ mr r3, r31 -/* 80266408 00263348 28 1F 00 00 */ cmplwi r31, 0 -/* 8026640C 0026334C 41 82 00 0C */ beq lbl_80266418 -/* 80266410 00263350 83 FF 00 08 */ lwz r31, 8(r31) -/* 80266414 00263354 48 00 00 08 */ b lbl_8026641C -lbl_80266418: -/* 80266418 00263358 3B E0 00 00 */ li r31, 0 -lbl_8026641C: -/* 8026641C 0026335C 28 03 00 00 */ cmplwi r3, 0 -/* 80266420 00263360 40 82 FF C8 */ bne lbl_802663E8 -/* 80266424 00263364 38 60 00 00 */ li r3, 0 -lbl_80266428: -/* 80266428 00263368 39 61 00 20 */ addi r11, r1, 0x20 -/* 8026642C 0026336C 48 0F BD FD */ bl _restgpr_29 -/* 80266430 00263370 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80266434 00263374 7C 08 03 A6 */ mtlr r0 -/* 80266438 00263378 38 21 00 20 */ addi r1, r1, 0x20 -/* 8026643C 0026337C 4E 80 00 20 */ blr - diff --git a/asm/SComponent/c/tree/c_tree_iter.s b/asm/SComponent/c/tree/c_tree_iter.s deleted file mode 100644 index 86ae9d1ac2..0000000000 --- a/asm/SComponent/c/tree/c_tree_iter.s +++ /dev/null @@ -1,73 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80266540 - - -.global cTrIt_Method -cTrIt_Method: -/* 80266540 00263480 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80266544 00263484 7C 08 02 A6 */ mflr r0 -/* 80266548 00263488 90 01 00 24 */ stw r0, 0x24(r1) -/* 8026654C 0026348C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80266550 00263490 48 0F BC 85 */ bl _savegpr_27 -/* 80266554 00263494 7C 9B 23 78 */ mr r27, r4 -/* 80266558 00263498 7C BC 2B 78 */ mr r28, r5 -/* 8026655C 0026349C 83 E3 00 00 */ lwz r31, 0(r3) -/* 80266560 002634A0 83 C3 00 04 */ lwz r30, 4(r3) -/* 80266564 002634A4 3B A0 00 01 */ li r29, 1 -/* 80266568 002634A8 48 00 00 24 */ b lbl_8026658C -lbl_8026656C: -/* 8026656C 002634AC 7F E3 FB 78 */ mr r3, r31 -/* 80266570 002634B0 7F 64 DB 78 */ mr r4, r27 -/* 80266574 002634B4 7F 85 E3 78 */ mr r5, r28 -/* 80266578 002634B8 3B FF 00 0C */ addi r31, r31, 0xc -/* 8026657C 002634BC 4B FF FA E5 */ bl cLsIt_Method -/* 80266580 002634C0 2C 03 00 00 */ cmpwi r3, 0 -/* 80266584 002634C4 40 82 00 08 */ bne lbl_8026658C -/* 80266588 002634C8 3B A0 00 00 */ li r29, 0 -lbl_8026658C: -/* 8026658C 002634CC 2C 1E 00 00 */ cmpwi r30, 0 -/* 80266590 002634D0 3B DE FF FF */ addi r30, r30, -1 -/* 80266594 002634D4 41 81 FF D8 */ bgt lbl_8026656C -/* 80266598 002634D8 7F A3 EB 78 */ mr r3, r29 -/* 8026659C 002634DC 39 61 00 20 */ addi r11, r1, 0x20 -/* 802665A0 002634E0 48 0F BC 81 */ bl _restgpr_27 -/* 802665A4 002634E4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802665A8 002634E8 7C 08 03 A6 */ mtlr r0 -/* 802665AC 002634EC 38 21 00 20 */ addi r1, r1, 0x20 -/* 802665B0 002634F0 4E 80 00 20 */ blr - -.global cTrIt_Judge -cTrIt_Judge: -/* 802665B4 002634F4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802665B8 002634F8 7C 08 02 A6 */ mflr r0 -/* 802665BC 002634FC 90 01 00 24 */ stw r0, 0x24(r1) -/* 802665C0 00263500 39 61 00 20 */ addi r11, r1, 0x20 -/* 802665C4 00263504 48 0F BC 15 */ bl _savegpr_28 -/* 802665C8 00263508 7C 9C 23 78 */ mr r28, r4 -/* 802665CC 0026350C 7C BD 2B 78 */ mr r29, r5 -/* 802665D0 00263510 83 E3 00 00 */ lwz r31, 0(r3) -/* 802665D4 00263514 83 C3 00 04 */ lwz r30, 4(r3) -/* 802665D8 00263518 48 00 00 24 */ b lbl_802665FC -lbl_802665DC: -/* 802665DC 0026351C 7F E3 FB 78 */ mr r3, r31 -/* 802665E0 00263520 7F 84 E3 78 */ mr r4, r28 -/* 802665E4 00263524 7F A5 EB 78 */ mr r5, r29 -/* 802665E8 00263528 3B FF 00 0C */ addi r31, r31, 0xc -/* 802665EC 0026352C 4B FF FA AD */ bl cLsIt_Judge -/* 802665F0 00263530 28 03 00 00 */ cmplwi r3, 0 -/* 802665F4 00263534 41 82 00 08 */ beq lbl_802665FC -/* 802665F8 00263538 48 00 00 14 */ b lbl_8026660C -lbl_802665FC: -/* 802665FC 0026353C 2C 1E 00 00 */ cmpwi r30, 0 -/* 80266600 00263540 3B DE FF FF */ addi r30, r30, -1 -/* 80266604 00263544 41 81 FF D8 */ bgt lbl_802665DC -/* 80266608 00263548 38 60 00 00 */ li r3, 0 -lbl_8026660C: -/* 8026660C 0026354C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80266610 00263550 48 0F BC 15 */ bl _restgpr_28 -/* 80266614 00263554 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80266618 00263558 7C 08 03 A6 */ mtlr r0 -/* 8026661C 0026355C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80266620 00263560 4E 80 00 20 */ blr - diff --git a/asm/f/pc/create/f_pc_create_req.s b/asm/f/pc/create/f_pc_create_req.s deleted file mode 100644 index 59d6a5bb20..0000000000 --- a/asm/f/pc/create/f_pc_create_req.s +++ /dev/null @@ -1,273 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80020acc - - -.global fpcCtRq_isCreatingByID -fpcCtRq_isCreatingByID: -/* 80020ACC 0001DA0C 80 63 00 0C */ lwz r3, 0xc(r3) -/* 80020AD0 0001DA10 80 63 00 3C */ lwz r3, 0x3c(r3) -/* 80020AD4 0001DA14 80 04 00 00 */ lwz r0, 0(r4) -/* 80020AD8 0001DA18 7C 03 00 50 */ subf r0, r3, r0 -/* 80020ADC 0001DA1C 7C 00 00 34 */ cntlzw r0, r0 -/* 80020AE0 0001DA20 54 03 D9 7E */ srwi r3, r0, 5 -/* 80020AE4 0001DA24 4E 80 00 20 */ blr - -.global fpcCtRq_IsCreatingByID -fpcCtRq_IsCreatingByID: -/* 80020AE8 0001DA28 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020AEC 0001DA2C 7C 08 02 A6 */ mflr r0 -/* 80020AF0 0001DA30 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020AF4 0001DA34 90 61 00 08 */ stw r3, 8(r1) -.global fpcCtRq_isCreatingByID -/* 80020AF8 0001DA38 3C 60 80 02 */ lis r3, fpcCtRq_isCreatingByID@ha -.global fpcCtRq_isCreatingByID -/* 80020AFC 0001DA3C 38 63 0A CC */ addi r3, r3, fpcCtRq_isCreatingByID@l -/* 80020B00 0001DA40 38 81 00 08 */ addi r4, r1, 8 -/* 80020B04 0001DA44 4B FF FF 01 */ bl fpcCtIt_Judge -/* 80020B08 0001DA48 30 03 FF FF */ addic r0, r3, -1 -/* 80020B0C 0001DA4C 7C 60 19 10 */ subfe r3, r0, r3 -/* 80020B10 0001DA50 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020B14 0001DA54 7C 08 03 A6 */ mtlr r0 -/* 80020B18 0001DA58 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020B1C 0001DA5C 4E 80 00 20 */ blr - -.global fpcCtRq_CreateQTo -fpcCtRq_CreateQTo: -/* 80020B20 0001DA60 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020B24 0001DA64 7C 08 02 A6 */ mflr r0 -/* 80020B28 0001DA68 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020B2C 0001DA6C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80020B30 0001DA70 7C 7F 1B 78 */ mr r31, r3 -/* 80020B34 0001DA74 48 00 03 31 */ bl fpcCtTg_CreateQTo -/* 80020B38 0001DA78 80 7F 00 44 */ lwz r3, 0x44(r31) -/* 80020B3C 0001DA7C 48 00 0B 89 */ bl fpcLy_CreatedMesg -/* 80020B40 0001DA80 38 7F 00 18 */ addi r3, r31, 0x18 -/* 80020B44 0001DA84 48 00 0A 45 */ bl fpcLy_CancelQTo -/* 80020B48 0001DA88 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80020B4C 0001DA8C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020B50 0001DA90 7C 08 03 A6 */ mtlr r0 -/* 80020B54 0001DA94 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020B58 0001DA98 4E 80 00 20 */ blr - -.global fpcCtRq_ToCreateQ -fpcCtRq_ToCreateQ: -/* 80020B5C 0001DA9C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020B60 0001DAA0 7C 08 02 A6 */ mflr r0 -/* 80020B64 0001DAA4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020B68 0001DAA8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80020B6C 0001DAAC 7C 7F 1B 78 */ mr r31, r3 -/* 80020B70 0001DAB0 80 63 00 44 */ lwz r3, 0x44(r3) -/* 80020B74 0001DAB4 48 00 0B 41 */ bl fpcLy_CreatingMesg -/* 80020B78 0001DAB8 80 7F 00 44 */ lwz r3, 0x44(r31) -/* 80020B7C 0001DABC 38 9F 00 18 */ addi r4, r31, 0x18 -/* 80020B80 0001DAC0 48 00 0A 29 */ bl fpcLy_ToCancelQ -/* 80020B84 0001DAC4 7F E3 FB 78 */ mr r3, r31 -/* 80020B88 0001DAC8 48 00 02 B1 */ bl fpcCtTg_ToCreateQ -/* 80020B8C 0001DACC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80020B90 0001DAD0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020B94 0001DAD4 7C 08 03 A6 */ mtlr r0 -/* 80020B98 0001DAD8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020B9C 0001DADC 4E 80 00 20 */ blr - -.global fpcCtRq_Delete -fpcCtRq_Delete: -/* 80020BA0 0001DAE0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020BA4 0001DAE4 7C 08 02 A6 */ mflr r0 -/* 80020BA8 0001DAE8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020BAC 0001DAEC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80020BB0 0001DAF0 7C 7F 1B 78 */ mr r31, r3 -/* 80020BB4 0001DAF4 4B FF FF 6D */ bl fpcCtRq_CreateQTo -/* 80020BB8 0001DAF8 80 7F 00 34 */ lwz r3, 0x34(r31) -/* 80020BBC 0001DAFC 28 03 00 00 */ cmplwi r3, 0 -/* 80020BC0 0001DB00 41 82 00 20 */ beq lbl_80020BE0 -/* 80020BC4 0001DB04 80 63 00 08 */ lwz r3, 8(r3) -/* 80020BC8 0001DB08 7F E4 FB 78 */ mr r4, r31 -/* 80020BCC 0001DB0C 48 00 18 5D */ bl fpcMtd_Method -/* 80020BD0 0001DB10 2C 03 00 00 */ cmpwi r3, 0 -/* 80020BD4 0001DB14 40 82 00 0C */ bne lbl_80020BE0 -/* 80020BD8 0001DB18 38 60 00 00 */ li r3, 0 -/* 80020BDC 0001DB1C 48 00 00 24 */ b lbl_80020C00 -lbl_80020BE0: -/* 80020BE0 0001DB20 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 80020BE4 0001DB24 28 03 00 00 */ cmplwi r3, 0 -/* 80020BE8 0001DB28 41 82 00 0C */ beq lbl_80020BF4 -/* 80020BEC 0001DB2C 38 00 00 00 */ li r0, 0 -/* 80020BF0 0001DB30 90 03 00 14 */ stw r0, 0x14(r3) -lbl_80020BF4: -/* 80020BF4 0001DB34 7F E3 FB 78 */ mr r3, r31 -/* 80020BF8 0001DB38 48 24 26 69 */ bl cMl_NS_free -/* 80020BFC 0001DB3C 38 60 00 01 */ li r3, 1 -lbl_80020C00: -/* 80020C00 0001DB40 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80020C04 0001DB44 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020C08 0001DB48 7C 08 03 A6 */ mtlr r0 -/* 80020C0C 0001DB4C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020C10 0001DB50 4E 80 00 20 */ blr - -.global fpcCtRq_Cancel -fpcCtRq_Cancel: -/* 80020C14 0001DB54 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020C18 0001DB58 7C 08 02 A6 */ mflr r0 -/* 80020C1C 0001DB5C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020C20 0001DB60 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80020C24 0001DB64 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80020C28 0001DB68 41 82 00 6C */ beq lbl_80020C94 -/* 80020C2C 0001DB6C 88 1F 00 15 */ lbz r0, 0x15(r31) -/* 80020C30 0001DB70 7C 00 07 75 */ extsb. r0, r0 -/* 80020C34 0001DB74 40 82 00 60 */ bne lbl_80020C94 -/* 80020C38 0001DB78 38 00 00 01 */ li r0, 1 -/* 80020C3C 0001DB7C 98 1F 00 15 */ stb r0, 0x15(r31) -/* 80020C40 0001DB80 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 80020C44 0001DB84 28 03 00 00 */ cmplwi r3, 0 -/* 80020C48 0001DB88 41 82 00 18 */ beq lbl_80020C60 -/* 80020C4C 0001DB8C 48 00 06 59 */ bl fpcDt_Delete -/* 80020C50 0001DB90 2C 03 00 00 */ cmpwi r3, 0 -/* 80020C54 0001DB94 40 82 00 0C */ bne lbl_80020C60 -/* 80020C58 0001DB98 38 60 00 00 */ li r3, 0 -/* 80020C5C 0001DB9C 48 00 00 3C */ b lbl_80020C98 -lbl_80020C60: -/* 80020C60 0001DBA0 80 7F 00 34 */ lwz r3, 0x34(r31) -/* 80020C64 0001DBA4 28 03 00 00 */ cmplwi r3, 0 -/* 80020C68 0001DBA8 41 82 00 20 */ beq lbl_80020C88 -/* 80020C6C 0001DBAC 80 63 00 04 */ lwz r3, 4(r3) -/* 80020C70 0001DBB0 7F E4 FB 78 */ mr r4, r31 -/* 80020C74 0001DBB4 48 00 17 B5 */ bl fpcMtd_Method -/* 80020C78 0001DBB8 2C 03 00 00 */ cmpwi r3, 0 -/* 80020C7C 0001DBBC 40 82 00 0C */ bne lbl_80020C88 -/* 80020C80 0001DBC0 38 60 00 00 */ li r3, 0 -/* 80020C84 0001DBC4 48 00 00 14 */ b lbl_80020C98 -lbl_80020C88: -/* 80020C88 0001DBC8 7F E3 FB 78 */ mr r3, r31 -/* 80020C8C 0001DBCC 4B FF FF 15 */ bl fpcCtRq_Delete -/* 80020C90 0001DBD0 48 00 00 08 */ b lbl_80020C98 -lbl_80020C94: -/* 80020C94 0001DBD4 38 60 00 01 */ li r3, 1 -lbl_80020C98: -/* 80020C98 0001DBD8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80020C9C 0001DBDC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020CA0 0001DBE0 7C 08 03 A6 */ mtlr r0 -/* 80020CA4 0001DBE4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020CA8 0001DBE8 4E 80 00 20 */ blr - -.global fpcCtRq_IsDoing -fpcCtRq_IsDoing: -/* 80020CAC 0001DBEC 28 03 00 00 */ cmplwi r3, 0 -/* 80020CB0 0001DBF0 41 82 00 10 */ beq lbl_80020CC0 -/* 80020CB4 0001DBF4 88 63 00 14 */ lbz r3, 0x14(r3) -/* 80020CB8 0001DBF8 7C 63 07 74 */ extsb r3, r3 -/* 80020CBC 0001DBFC 4E 80 00 20 */ blr -lbl_80020CC0: -/* 80020CC0 0001DC00 38 60 00 00 */ li r3, 0 -/* 80020CC4 0001DC04 4E 80 00 20 */ blr -.global fpcCtRq_Do -fpcCtRq_Do: -/* 80020CC8 0001DC08 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020CCC 0001DC0C 7C 08 02 A6 */ mflr r0 -/* 80020CD0 0001DC10 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020CD4 0001DC14 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80020CD8 0001DC18 7C 7F 1B 78 */ mr r31, r3 -/* 80020CDC 0001DC1C 38 A0 00 04 */ li r5, 4 -/* 80020CE0 0001DC20 80 83 00 34 */ lwz r4, 0x34(r3) -/* 80020CE4 0001DC24 28 04 00 00 */ cmplwi r4, 0 -/* 80020CE8 0001DC28 41 82 00 2C */ beq lbl_80020D14 -/* 80020CEC 0001DC2C 81 84 00 00 */ lwz r12, 0(r4) -/* 80020CF0 0001DC30 28 0C 00 00 */ cmplwi r12, 0 -/* 80020CF4 0001DC34 41 82 00 20 */ beq lbl_80020D14 -/* 80020CF8 0001DC38 38 00 00 01 */ li r0, 1 -/* 80020CFC 0001DC3C 98 1F 00 14 */ stb r0, 0x14(r31) -/* 80020D00 0001DC40 7D 89 03 A6 */ mtctr r12 -/* 80020D04 0001DC44 4E 80 04 21 */ bctrl -/* 80020D08 0001DC48 7C 65 1B 78 */ mr r5, r3 -/* 80020D0C 0001DC4C 38 00 00 00 */ li r0, 0 -/* 80020D10 0001DC50 98 1F 00 14 */ stb r0, 0x14(r31) -lbl_80020D14: -/* 80020D14 0001DC54 2C 05 00 04 */ cmpwi r5, 4 -/* 80020D18 0001DC58 41 82 00 20 */ beq lbl_80020D38 -/* 80020D1C 0001DC5C 40 80 00 10 */ bge lbl_80020D2C -/* 80020D20 0001DC60 2C 05 00 03 */ cmpwi r5, 3 -/* 80020D24 0001DC64 40 80 00 3C */ bge lbl_80020D60 -/* 80020D28 0001DC68 48 00 00 44 */ b lbl_80020D6C -lbl_80020D2C: -/* 80020D2C 0001DC6C 2C 05 00 06 */ cmpwi r5, 6 -/* 80020D30 0001DC70 40 80 00 3C */ bge lbl_80020D6C -/* 80020D34 0001DC74 48 00 00 2C */ b lbl_80020D60 -lbl_80020D38: -/* 80020D38 0001DC78 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 80020D3C 0001DC7C 48 00 07 D5 */ bl fpcEx_ToExecuteQ -/* 80020D40 0001DC80 2C 03 00 00 */ cmpwi r3, 0 -/* 80020D44 0001DC84 40 82 00 10 */ bne lbl_80020D54 -/* 80020D48 0001DC88 7F E3 FB 78 */ mr r3, r31 -/* 80020D4C 0001DC8C 4B FF FE C9 */ bl fpcCtRq_Cancel -/* 80020D50 0001DC90 48 00 00 20 */ b lbl_80020D70 -lbl_80020D54: -/* 80020D54 0001DC94 7F E3 FB 78 */ mr r3, r31 -/* 80020D58 0001DC98 4B FF FE 49 */ bl fpcCtRq_Delete -/* 80020D5C 0001DC9C 48 00 00 14 */ b lbl_80020D70 -lbl_80020D60: -/* 80020D60 0001DCA0 7F E3 FB 78 */ mr r3, r31 -/* 80020D64 0001DCA4 4B FF FE B1 */ bl fpcCtRq_Cancel -/* 80020D68 0001DCA8 48 00 00 08 */ b lbl_80020D70 -lbl_80020D6C: -/* 80020D6C 0001DCAC 38 60 00 01 */ li r3, 1 -lbl_80020D70: -/* 80020D70 0001DCB0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80020D74 0001DCB4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020D78 0001DCB8 7C 08 03 A6 */ mtlr r0 -/* 80020D7C 0001DCBC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020D80 0001DCC0 4E 80 00 20 */ blr - -.global fpcCtRq_Handler -fpcCtRq_Handler: -/* 80020D84 0001DCC4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020D88 0001DCC8 7C 08 02 A6 */ mflr r0 -/* 80020D8C 0001DCCC 90 01 00 14 */ stw r0, 0x14(r1) -.global fpcCtRq_Do -/* 80020D90 0001DCD0 3C 60 80 02 */ lis r3, fpcCtRq_Do@ha -.global fpcCtRq_Do -/* 80020D94 0001DCD4 38 63 0C C8 */ addi r3, r3, fpcCtRq_Do@l -/* 80020D98 0001DCD8 38 80 00 00 */ li r4, 0 -/* 80020D9C 0001DCDC 4B FF FC 2D */ bl fpcCtIt_Method -/* 80020DA0 0001DCE0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020DA4 0001DCE4 7C 08 03 A6 */ mtlr r0 -/* 80020DA8 0001DCE8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020DAC 0001DCEC 4E 80 00 20 */ blr - -.global fpcCtRq_Create -fpcCtRq_Create: -/* 80020DB0 0001DCF0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80020DB4 0001DCF4 7C 08 02 A6 */ mflr r0 -/* 80020DB8 0001DCF8 90 01 00 24 */ stw r0, 0x24(r1) -/* 80020DBC 0001DCFC 39 61 00 20 */ addi r11, r1, 0x20 -/* 80020DC0 0001DD00 48 34 14 1D */ bl _savegpr_29 -/* 80020DC4 0001DD04 7C 7D 1B 78 */ mr r29, r3 -/* 80020DC8 0001DD08 7C BE 2B 78 */ mr r30, r5 -/* 80020DCC 0001DD0C 38 60 FF FC */ li r3, -4 -/* 80020DD0 0001DD10 48 24 24 59 */ bl cMl_NS_memalignB -/* 80020DD4 0001DD14 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80020DD8 0001DD18 41 82 00 44 */ beq lbl_80020E1C -/* 80020DDC 0001DD1C 7F E4 FB 78 */ mr r4, r31 -/* 80020DE0 0001DD20 48 00 00 A5 */ bl fpcCtTg_Init -/* 80020DE4 0001DD24 38 7F 00 18 */ addi r3, r31, 0x18 -/* 80020DE8 0001DD28 3C 80 80 02 */ lis r4, fpcCtRq_Cancel@ha -/* 80020DEC 0001DD2C 38 84 0C 14 */ addi r4, r4, fpcCtRq_Cancel@l -/* 80020DF0 0001DD30 7F E5 FB 78 */ mr r5, r31 -/* 80020DF4 0001DD34 48 00 2A 05 */ bl fpcMtdTg_Init -/* 80020DF8 0001DD38 93 BF 00 44 */ stw r29, 0x44(r31) -/* 80020DFC 0001DD3C 93 DF 00 34 */ stw r30, 0x34(r31) -/* 80020E00 0001DD40 4B FF F8 9D */ bl fpcBs_MakeOfId -/* 80020E04 0001DD44 90 7F 00 3C */ stw r3, 0x3c(r31) -/* 80020E08 0001DD48 38 00 00 00 */ li r0, 0 -/* 80020E0C 0001DD4C 90 1F 00 40 */ stw r0, 0x40(r31) -/* 80020E10 0001DD50 98 1F 00 15 */ stb r0, 0x15(r31) -/* 80020E14 0001DD54 7F E3 FB 78 */ mr r3, r31 -/* 80020E18 0001DD58 4B FF FD 45 */ bl fpcCtRq_ToCreateQ -lbl_80020E1C: -/* 80020E1C 0001DD5C 7F E3 FB 78 */ mr r3, r31 -/* 80020E20 0001DD60 39 61 00 20 */ addi r11, r1, 0x20 -/* 80020E24 0001DD64 48 34 14 05 */ bl _restgpr_29 -/* 80020E28 0001DD68 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80020E2C 0001DD6C 7C 08 03 A6 */ mtlr r0 -/* 80020E30 0001DD70 38 21 00 20 */ addi r1, r1, 0x20 -/* 80020E34 0001DD74 4E 80 00 20 */ blr - diff --git a/asm/f/pc/create/f_pc_create_tag.s b/asm/f/pc/create/f_pc_create_tag.s deleted file mode 100644 index d5897bf225..0000000000 --- a/asm/f/pc/create/f_pc_create_tag.s +++ /dev/null @@ -1,42 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80020e38 - - -.global fpcCtTg_ToCreateQ -fpcCtTg_ToCreateQ: -/* 80020E38 0001DD78 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020E3C 0001DD7C 7C 08 02 A6 */ mflr r0 -/* 80020E40 0001DD80 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020E44 0001DD84 7C 64 1B 78 */ mr r4, r3 -/* 80020E48 0001DD88 3C 60 80 3A */ lis r3, lbl_803A3990@ha -/* 80020E4C 0001DD8C 38 63 39 90 */ addi r3, r3, lbl_803A3990@l -/* 80020E50 0001DD90 48 24 5B 95 */ bl cTg_Addition -/* 80020E54 0001DD94 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020E58 0001DD98 7C 08 03 A6 */ mtlr r0 -/* 80020E5C 0001DD9C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020E60 0001DDA0 4E 80 00 20 */ blr - -.global fpcCtTg_CreateQTo -fpcCtTg_CreateQTo: -/* 80020E64 0001DDA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020E68 0001DDA8 7C 08 02 A6 */ mflr r0 -/* 80020E6C 0001DDAC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020E70 0001DDB0 48 24 5B 35 */ bl cTg_SingleCut -/* 80020E74 0001DDB4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020E78 0001DDB8 7C 08 03 A6 */ mtlr r0 -/* 80020E7C 0001DDBC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020E80 0001DDC0 4E 80 00 20 */ blr - -.global fpcCtTg_Init -fpcCtTg_Init: -/* 80020E84 0001DDC4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020E88 0001DDC8 7C 08 02 A6 */ mflr r0 -/* 80020E8C 0001DDCC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020E90 0001DDD0 48 24 5B A5 */ bl cTg_Create -/* 80020E94 0001DDD4 38 60 00 01 */ li r3, 1 -/* 80020E98 0001DDD8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020E9C 0001DDDC 7C 08 03 A6 */ mtlr r0 -/* 80020EA0 0001DDE0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020EA4 0001DDE4 4E 80 00 20 */ blr - diff --git a/asm/f/pc/delete/f_pc_delete_tag.s b/asm/f/pc/delete/f_pc_delete_tag.s deleted file mode 100644 index 2c7097a53e..0000000000 --- a/asm/f/pc/delete/f_pc_delete_tag.s +++ /dev/null @@ -1,90 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80020f30 - - -.global fpcDtTg_IsEmpty -fpcDtTg_IsEmpty: -/* 80020F30 0001DE70 3C 60 80 3A */ lis r3, lbl_803A39A0@ha -/* 80020F34 0001DE74 38 63 39 A0 */ addi r3, r3, lbl_803A39A0@l -/* 80020F38 0001DE78 80 03 00 08 */ lwz r0, 8(r3) -/* 80020F3C 0001DE7C 7C 00 00 34 */ cntlzw r0, r0 -/* 80020F40 0001DE80 54 03 D9 7E */ srwi r3, r0, 5 -/* 80020F44 0001DE84 4E 80 00 20 */ blr - -.global fpcDtTg_ToDeleteQ -fpcDtTg_ToDeleteQ: -/* 80020F48 0001DE88 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020F4C 0001DE8C 7C 08 02 A6 */ mflr r0 -/* 80020F50 0001DE90 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020F54 0001DE94 7C 64 1B 78 */ mr r4, r3 -/* 80020F58 0001DE98 38 00 00 01 */ li r0, 1 -/* 80020F5C 0001DE9C B0 03 00 18 */ sth r0, 0x18(r3) -/* 80020F60 0001DEA0 3C 60 80 3A */ lis r3, lbl_803A39A0@ha -/* 80020F64 0001DEA4 38 63 39 A0 */ addi r3, r3, lbl_803A39A0@l -/* 80020F68 0001DEA8 48 24 5A 7D */ bl cTg_Addition -/* 80020F6C 0001DEAC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020F70 0001DEB0 7C 08 03 A6 */ mtlr r0 -/* 80020F74 0001DEB4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020F78 0001DEB8 4E 80 00 20 */ blr - -.global fpcDtTg_DeleteQTo -fpcDtTg_DeleteQTo: -/* 80020F7C 0001DEBC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020F80 0001DEC0 7C 08 02 A6 */ mflr r0 -/* 80020F84 0001DEC4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020F88 0001DEC8 48 24 5A 1D */ bl cTg_SingleCut -/* 80020F8C 0001DECC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020F90 0001DED0 7C 08 03 A6 */ mtlr r0 -/* 80020F94 0001DED4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020F98 0001DED8 4E 80 00 20 */ blr -.global fpcDtTg_Do -fpcDtTg_Do: -/* 80020F9C 0001DEDC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020FA0 0001DEE0 7C 08 02 A6 */ mflr r0 -/* 80020FA4 0001DEE4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020FA8 0001DEE8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80020FAC 0001DEEC 93 C1 00 08 */ stw r30, 8(r1) -/* 80020FB0 0001DEF0 7C 7E 1B 78 */ mr r30, r3 -/* 80020FB4 0001DEF4 7C 9F 23 78 */ mr r31, r4 -/* 80020FB8 0001DEF8 A8 83 00 18 */ lha r4, 0x18(r3) -/* 80020FBC 0001DEFC 2C 04 00 00 */ cmpwi r4, 0 -/* 80020FC0 0001DF00 41 81 00 38 */ bgt lbl_80020FF8 -/* 80020FC4 0001DF04 4B FF FF B9 */ bl fpcDtTg_DeleteQTo -/* 80020FC8 0001DF08 80 7E 00 0C */ lwz r3, 0xc(r30) -/* 80020FCC 0001DF0C 7F EC FB 78 */ mr r12, r31 -/* 80020FD0 0001DF10 7D 89 03 A6 */ mtctr r12 -/* 80020FD4 0001DF14 4E 80 04 21 */ bctrl -/* 80020FD8 0001DF18 2C 03 00 00 */ cmpwi r3, 0 -/* 80020FDC 0001DF1C 40 82 00 14 */ bne lbl_80020FF0 -/* 80020FE0 0001DF20 7F C3 F3 78 */ mr r3, r30 -/* 80020FE4 0001DF24 4B FF FF 65 */ bl fpcDtTg_ToDeleteQ -/* 80020FE8 0001DF28 38 60 00 00 */ li r3, 0 -/* 80020FEC 0001DF2C 48 00 00 18 */ b lbl_80021004 -lbl_80020FF0: -/* 80020FF0 0001DF30 38 60 00 01 */ li r3, 1 -/* 80020FF4 0001DF34 48 00 00 10 */ b lbl_80021004 -lbl_80020FF8: -/* 80020FF8 0001DF38 38 04 FF FF */ addi r0, r4, -1 -/* 80020FFC 0001DF3C B0 1E 00 18 */ sth r0, 0x18(r30) -/* 80021000 0001DF40 38 60 00 00 */ li r3, 0 -lbl_80021004: -/* 80021004 0001DF44 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80021008 0001DF48 83 C1 00 08 */ lwz r30, 8(r1) -/* 8002100C 0001DF4C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021010 0001DF50 7C 08 03 A6 */ mtlr r0 -/* 80021014 0001DF54 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021018 0001DF58 4E 80 00 20 */ blr - -.global fpcDtTg_Init -fpcDtTg_Init: -/* 8002101C 0001DF5C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80021020 0001DF60 7C 08 02 A6 */ mflr r0 -/* 80021024 0001DF64 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021028 0001DF68 48 24 5A 0D */ bl cTg_Create -/* 8002102C 0001DF6C 38 60 00 01 */ li r3, 1 -/* 80021030 0001DF70 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021034 0001DF74 7C 08 03 A6 */ mtlr r0 -/* 80021038 0001DF78 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002103C 0001DF7C 4E 80 00 20 */ blr - diff --git a/asm/f/pc/draw/f_pc_draw_priority.s b/asm/f/pc/draw/f_pc_draw_priority.s deleted file mode 100644 index c4ad904deb..0000000000 --- a/asm/f/pc/draw/f_pc_draw_priority.s +++ /dev/null @@ -1,26 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80021308 - - -.global fpcDwPi_Get -fpcDwPi_Get: -/* 80021308 0001E248 A8 63 00 00 */ lha r3, 0(r3) -/* 8002130C 0001E24C 4E 80 00 20 */ blr - -.global fpcDwPi_Set -fpcDwPi_Set: -/* 80021310 0001E250 B0 83 00 00 */ sth r4, 0(r3) -/* 80021314 0001E254 4E 80 00 20 */ blr - -.global fpcDwPi_Init -fpcDwPi_Init: -/* 80021318 0001E258 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002131C 0001E25C 7C 08 02 A6 */ mflr r0 -/* 80021320 0001E260 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021324 0001E264 4B FF FF ED */ bl fpcDwPi_Set -/* 80021328 0001E268 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002132C 0001E26C 7C 08 03 A6 */ mtlr r0 -/* 80021330 0001E270 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021334 0001E274 4E 80 00 20 */ blr - diff --git a/asm/f/pc/f_pc_creator.s b/asm/f/pc/f_pc_creator.s deleted file mode 100644 index 1c8d3dd7ae..0000000000 --- a/asm/f/pc/f_pc_creator.s +++ /dev/null @@ -1,51 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80020ea8 - - -.global fpcCt_IsCreatingByID -fpcCt_IsCreatingByID: -/* 80020EA8 0001DDE8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020EAC 0001DDEC 7C 08 02 A6 */ mflr r0 -/* 80020EB0 0001DDF0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020EB4 0001DDF4 4B FF FC 35 */ bl fpcCtRq_IsCreatingByID -/* 80020EB8 0001DDF8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020EBC 0001DDFC 7C 08 03 A6 */ mtlr r0 -/* 80020EC0 0001DE00 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020EC4 0001DE04 4E 80 00 20 */ blr - -.global fpcCt_IsDoing -fpcCt_IsDoing: -/* 80020EC8 0001DE08 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020ECC 0001DE0C 7C 08 02 A6 */ mflr r0 -/* 80020ED0 0001DE10 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020ED4 0001DE14 80 63 00 14 */ lwz r3, 0x14(r3) -/* 80020ED8 0001DE18 4B FF FD D5 */ bl fpcCtRq_IsDoing -/* 80020EDC 0001DE1C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020EE0 0001DE20 7C 08 03 A6 */ mtlr r0 -/* 80020EE4 0001DE24 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020EE8 0001DE28 4E 80 00 20 */ blr - -.global fpcCt_Abort -fpcCt_Abort: -/* 80020EEC 0001DE2C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020EF0 0001DE30 7C 08 02 A6 */ mflr r0 -/* 80020EF4 0001DE34 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020EF8 0001DE38 80 63 00 14 */ lwz r3, 0x14(r3) -/* 80020EFC 0001DE3C 4B FF FD 19 */ bl fpcCtRq_Cancel -/* 80020F00 0001DE40 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020F04 0001DE44 7C 08 03 A6 */ mtlr r0 -/* 80020F08 0001DE48 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020F0C 0001DE4C 4E 80 00 20 */ blr - -.global fpcCt_Handler -fpcCt_Handler: -/* 80020F10 0001DE50 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020F14 0001DE54 7C 08 02 A6 */ mflr r0 -/* 80020F18 0001DE58 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020F1C 0001DE5C 4B FF FE 69 */ bl fpcCtRq_Handler -/* 80020F20 0001DE60 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020F24 0001DE64 7C 08 03 A6 */ mtlr r0 -/* 80020F28 0001DE68 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020F2C 0001DE6C 4E 80 00 20 */ blr - diff --git a/asm/f/pc/f_pc_deletor.s b/asm/f/pc/f_pc_deletor.s index f3b9b10df1..7a6a0f08c3 100644 --- a/asm/f/pc/f_pc_deletor.s +++ b/asm/f/pc/f_pc_deletor.s @@ -187,35 +187,3 @@ lbl_8002128C: /* 8002129C 0001E1DC 38 21 00 10 */ addi r1, r1, 0x10 /* 800212A0 0001E1E0 4E 80 00 20 */ blr -.global fpcDt_Delete -fpcDt_Delete: -/* 800212A4 0001E1E4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800212A8 0001E1E8 7C 08 02 A6 */ mflr r0 -/* 800212AC 0001E1EC 90 01 00 14 */ stw r0, 0x14(r1) -/* 800212B0 0001E1F0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800212B4 0001E1F4 7C 7F 1B 79 */ or. r31, r3, r3 -/* 800212B8 0001E1F8 41 82 00 38 */ beq lbl_800212F0 -/* 800212BC 0001E1FC 4B FF FC 0D */ bl fpcCt_IsDoing -/* 800212C0 0001E200 2C 03 00 01 */ cmpwi r3, 1 -/* 800212C4 0001E204 40 82 00 0C */ bne lbl_800212D0 -/* 800212C8 0001E208 38 60 00 00 */ li r3, 0 -/* 800212CC 0001E20C 48 00 00 28 */ b lbl_800212F4 -lbl_800212D0: -/* 800212D0 0001E210 88 1F 00 0C */ lbz r0, 0xc(r31) -/* 800212D4 0001E214 2C 00 00 03 */ cmpwi r0, 3 -/* 800212D8 0001E218 40 82 00 0C */ bne lbl_800212E4 -/* 800212DC 0001E21C 38 60 00 00 */ li r3, 0 -/* 800212E0 0001E220 48 00 00 14 */ b lbl_800212F4 -lbl_800212E4: -/* 800212E4 0001E224 7F E3 FB 78 */ mr r3, r31 -/* 800212E8 0001E228 4B FF FE A1 */ bl fpcDt_ToDeleteQ -/* 800212EC 0001E22C 48 00 00 08 */ b lbl_800212F4 -lbl_800212F0: -/* 800212F0 0001E230 38 60 00 01 */ li r3, 1 -lbl_800212F4: -/* 800212F4 0001E234 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800212F8 0001E238 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800212FC 0001E23C 7C 08 03 A6 */ mtlr r0 -/* 80021300 0001E240 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021304 0001E244 4E 80 00 20 */ blr - diff --git a/asm/f/pc/f_pc_executor.s b/asm/f/pc/f_pc_executor.s deleted file mode 100644 index dfdae1c2d6..0000000000 --- a/asm/f/pc/f_pc_executor.s +++ /dev/null @@ -1,193 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80021338 - - -.global fpcEx_Search -fpcEx_Search: -/* 80021338 0001E278 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002133C 0001E27C 7C 08 02 A6 */ mflr r0 -/* 80021340 0001E280 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021344 0001E284 48 00 09 1D */ bl fpcLyIt_AllJudge -/* 80021348 0001E288 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002134C 0001E28C 7C 08 03 A6 */ mtlr r0 -/* 80021350 0001E290 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021354 0001E294 4E 80 00 20 */ blr - -.global fpcEx_SearchByID -fpcEx_SearchByID: -/* 80021358 0001E298 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002135C 0001E29C 7C 08 02 A6 */ mflr r0 -/* 80021360 0001E2A0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021364 0001E2A4 90 61 00 08 */ stw r3, 8(r1) -/* 80021368 0001E2A8 38 03 00 02 */ addi r0, r3, 2 -/* 8002136C 0001E2AC 28 00 00 01 */ cmplwi r0, 1 -/* 80021370 0001E2B0 41 81 00 0C */ bgt lbl_8002137C -/* 80021374 0001E2B4 38 60 00 00 */ li r3, 0 -/* 80021378 0001E2B8 48 00 00 14 */ b lbl_8002138C -lbl_8002137C: -.global fpcSch_JudgeByID -/* 8002137C 0001E2BC 3C 60 80 02 */ lis r3, fpcSch_JudgeByID@ha -.global fpcSch_JudgeByID -/* 80021380 0001E2C0 38 63 35 90 */ addi r3, r3, fpcSch_JudgeByID@l -/* 80021384 0001E2C4 38 81 00 08 */ addi r4, r1, 8 -/* 80021388 0001E2C8 4B FF FF B1 */ bl fpcEx_Search -lbl_8002138C: -/* 8002138C 0001E2CC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021390 0001E2D0 7C 08 03 A6 */ mtlr r0 -/* 80021394 0001E2D4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021398 0001E2D8 4E 80 00 20 */ blr - -.global fpcEx_IsExist -fpcEx_IsExist: -/* 8002139C 0001E2DC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800213A0 0001E2E0 7C 08 02 A6 */ mflr r0 -/* 800213A4 0001E2E4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800213A8 0001E2E8 4B FF FF B1 */ bl fpcEx_SearchByID -/* 800213AC 0001E2EC 30 03 FF FF */ addic r0, r3, -1 -/* 800213B0 0001E2F0 7C 60 19 10 */ subfe r3, r0, r3 -/* 800213B4 0001E2F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800213B8 0001E2F8 7C 08 03 A6 */ mtlr r0 -/* 800213BC 0001E2FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800213C0 0001E300 4E 80 00 20 */ blr - -.global fpcEx_Execute -fpcEx_Execute: -/* 800213C4 0001E304 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800213C8 0001E308 7C 08 02 A6 */ mflr r0 -/* 800213CC 0001E30C 90 01 00 14 */ stw r0, 0x14(r1) -/* 800213D0 0001E310 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800213D4 0001E314 7C 7F 1B 78 */ mr r31, r3 -/* 800213D8 0001E318 88 03 00 0C */ lbz r0, 0xc(r3) -/* 800213DC 0001E31C 2C 00 00 02 */ cmpwi r0, 2 -/* 800213E0 0001E320 40 82 00 14 */ bne lbl_800213F4 -/* 800213E4 0001E324 38 80 00 01 */ li r4, 1 -/* 800213E8 0001E328 48 00 24 5D */ bl fpcPause_IsEnable -/* 800213EC 0001E32C 2C 03 00 01 */ cmpwi r3, 1 -/* 800213F0 0001E330 40 82 00 0C */ bne lbl_800213FC -lbl_800213F4: -/* 800213F4 0001E334 38 60 00 00 */ li r3, 0 -/* 800213F8 0001E338 48 00 00 0C */ b lbl_80021404 -lbl_800213FC: -/* 800213FC 0001E33C 7F E3 FB 78 */ mr r3, r31 -/* 80021400 0001E340 4B FF F2 C5 */ bl fpcBs_Execute -lbl_80021404: -/* 80021404 0001E344 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80021408 0001E348 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002140C 0001E34C 7C 08 03 A6 */ mtlr r0 -/* 80021410 0001E350 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021414 0001E354 4E 80 00 20 */ blr - -.global fpcEx_ToLineQ -fpcEx_ToLineQ: -/* 80021418 0001E358 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002141C 0001E35C 7C 08 02 A6 */ mflr r0 -/* 80021420 0001E360 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021424 0001E364 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80021428 0001E368 7C 7F 1B 78 */ mr r31, r3 -/* 8002142C 0001E36C 80 63 00 2C */ lwz r3, 0x2c(r3) -/* 80021430 0001E370 80 83 00 18 */ lwz r4, 0x18(r3) -/* 80021434 0001E374 80 03 00 0C */ lwz r0, 0xc(r3) -/* 80021438 0001E378 28 00 00 00 */ cmplwi r0, 0 -/* 8002143C 0001E37C 41 82 00 14 */ beq lbl_80021450 -/* 80021440 0001E380 38 64 00 34 */ addi r3, r4, 0x34 -/* 80021444 0001E384 48 24 54 3D */ bl cTg_IsUse -/* 80021448 0001E388 2C 03 00 01 */ cmpwi r3, 1 -/* 8002144C 0001E38C 40 82 00 60 */ bne lbl_800214AC -lbl_80021450: -/* 80021450 0001E390 38 7F 00 34 */ addi r3, r31, 0x34 -/* 80021454 0001E394 A0 9F 00 A4 */ lhz r4, 0xa4(r31) -/* 80021458 0001E398 48 00 21 DD */ bl fpcLnTg_ToQueue -/* 8002145C 0001E39C 2C 03 00 00 */ cmpwi r3, 0 -/* 80021460 0001E3A0 40 82 00 14 */ bne lbl_80021474 -/* 80021464 0001E3A4 38 7F 00 18 */ addi r3, r31, 0x18 -/* 80021468 0001E3A8 48 00 09 65 */ bl fpcLyTg_QueueTo -/* 8002146C 0001E3AC 38 60 00 00 */ li r3, 0 -/* 80021470 0001E3B0 48 00 00 40 */ b lbl_800214B0 -lbl_80021474: -/* 80021474 0001E3B4 38 00 00 02 */ li r0, 2 -/* 80021478 0001E3B8 98 1F 00 0C */ stb r0, 0xc(r31) -/* 8002147C 0001E3BC 80 6D 87 C0 */ lwz r3, lbl_80450D40-_SDA_BASE_(r13) -/* 80021480 0001E3C0 80 9F 00 B4 */ lwz r4, 0xb4(r31) -/* 80021484 0001E3C4 4B FF F1 C9 */ bl fpcBs_Is_JustOfType -/* 80021488 0001E3C8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002148C 0001E3CC 41 82 00 18 */ beq lbl_800214A4 -/* 80021490 0001E3D0 38 7F 00 BC */ addi r3, r31, 0xbc -/* 80021494 0001E3D4 3C 80 80 02 */ lis r4, fpcEx_ToLineQ@ha -/* 80021498 0001E3D8 38 84 14 18 */ addi r4, r4, fpcEx_ToLineQ@l -/* 8002149C 0001E3DC 7F E5 FB 78 */ mr r5, r31 -/* 800214A0 0001E3E0 48 00 06 E9 */ bl fpcLyIt_OnlyHere -lbl_800214A4: -/* 800214A4 0001E3E4 38 60 00 01 */ li r3, 1 -/* 800214A8 0001E3E8 48 00 00 08 */ b lbl_800214B0 -lbl_800214AC: -/* 800214AC 0001E3EC 38 60 00 00 */ li r3, 0 -lbl_800214B0: -/* 800214B0 0001E3F0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800214B4 0001E3F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800214B8 0001E3F8 7C 08 03 A6 */ mtlr r0 -/* 800214BC 0001E3FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800214C0 0001E400 4E 80 00 20 */ blr - -.global fpcEx_ExecuteQTo -fpcEx_ExecuteQTo: -/* 800214C4 0001E404 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800214C8 0001E408 7C 08 02 A6 */ mflr r0 -/* 800214CC 0001E40C 90 01 00 14 */ stw r0, 0x14(r1) -/* 800214D0 0001E410 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800214D4 0001E414 7C 7F 1B 78 */ mr r31, r3 -/* 800214D8 0001E418 38 7F 00 18 */ addi r3, r31, 0x18 -/* 800214DC 0001E41C 48 00 08 F1 */ bl fpcLyTg_QueueTo -/* 800214E0 0001E420 2C 03 00 01 */ cmpwi r3, 1 -/* 800214E4 0001E424 40 82 00 14 */ bne lbl_800214F8 -/* 800214E8 0001E428 38 00 00 03 */ li r0, 3 -/* 800214EC 0001E42C 98 1F 00 0C */ stb r0, 0xc(r31) -/* 800214F0 0001E430 38 60 00 01 */ li r3, 1 -/* 800214F4 0001E434 48 00 00 08 */ b lbl_800214FC -lbl_800214F8: -/* 800214F8 0001E438 38 60 00 00 */ li r3, 0 -lbl_800214FC: -/* 800214FC 0001E43C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80021500 0001E440 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021504 0001E444 7C 08 03 A6 */ mtlr r0 -/* 80021508 0001E448 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002150C 0001E44C 4E 80 00 20 */ blr - -.global fpcEx_ToExecuteQ -fpcEx_ToExecuteQ: -/* 80021510 0001E450 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80021514 0001E454 7C 08 02 A6 */ mflr r0 -/* 80021518 0001E458 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002151C 0001E45C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80021520 0001E460 7C 7F 1B 78 */ mr r31, r3 -/* 80021524 0001E464 38 7F 00 18 */ addi r3, r31, 0x18 -/* 80021528 0001E468 80 9F 00 A0 */ lwz r4, 0xa0(r31) -/* 8002152C 0001E46C A0 BF 00 A4 */ lhz r5, 0xa4(r31) -/* 80021530 0001E470 A0 DF 00 A6 */ lhz r6, 0xa6(r31) -/* 80021534 0001E474 48 00 07 A1 */ bl fpcLyTg_ToQueue -/* 80021538 0001E478 2C 03 00 01 */ cmpwi r3, 1 -/* 8002153C 0001E47C 40 82 00 14 */ bne lbl_80021550 -/* 80021540 0001E480 7F E3 FB 78 */ mr r3, r31 -/* 80021544 0001E484 4B FF FE D5 */ bl fpcEx_ToLineQ -/* 80021548 0001E488 38 60 00 01 */ li r3, 1 -/* 8002154C 0001E48C 48 00 00 08 */ b lbl_80021554 -lbl_80021550: -/* 80021550 0001E490 38 60 00 00 */ li r3, 0 -lbl_80021554: -/* 80021554 0001E494 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80021558 0001E498 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002155C 0001E49C 7C 08 03 A6 */ mtlr r0 -/* 80021560 0001E4A0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021564 0001E4A4 4E 80 00 20 */ blr - -.global fpcEx_Handler -fpcEx_Handler: -/* 80021568 0001E4A8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002156C 0001E4AC 7C 08 02 A6 */ mflr r0 -/* 80021570 0001E4B0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021574 0001E4B4 48 00 21 B5 */ bl fpcLnIt_Queue -/* 80021578 0001E4B8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002157C 0001E4BC 7C 08 03 A6 */ mtlr r0 -/* 80021580 0001E4C0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021584 0001E4C4 4E 80 00 20 */ blr - diff --git a/asm/f/pc/f_pc_leaf.s b/asm/f/pc/f_pc_leaf.s index 4b30383c1d..f6577a657f 100644 --- a/asm/f/pc/f_pc_leaf.s +++ b/asm/f/pc/f_pc_leaf.s @@ -2,30 +2,8 @@ .section .text, "ax" # 80021a00 - -.global fpcLf_GetPriority -fpcLf_GetPriority: -/* 80021A00 0001E940 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80021A04 0001E944 7C 08 02 A6 */ mflr r0 -/* 80021A08 0001E948 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021A0C 0001E94C 38 63 00 BE */ addi r3, r3, 0xbe -/* 80021A10 0001E950 4B FF F8 F9 */ bl fpcDwPi_Get -/* 80021A14 0001E954 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021A18 0001E958 7C 08 03 A6 */ mtlr r0 -/* 80021A1C 0001E95C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021A20 0001E960 4E 80 00 20 */ blr - -.global fpcLf_DrawMethod -fpcLf_DrawMethod: -/* 80021A24 0001E964 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80021A28 0001E968 7C 08 02 A6 */ mflr r0 -/* 80021A2C 0001E96C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021A30 0001E970 80 63 00 10 */ lwz r3, 0x10(r3) -/* 80021A34 0001E974 48 00 09 F5 */ bl fpcMtd_Method -/* 80021A38 0001E978 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021A3C 0001E97C 7C 08 03 A6 */ mtlr r0 -/* 80021A40 0001E980 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021A44 0001E984 4E 80 00 20 */ blr +.global fpcLf_Draw +fpcLf_Draw: /* 80021A48 0001E988 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80021A4C 0001E98C 7C 08 02 A6 */ mflr r0 /* 80021A50 0001E990 90 01 00 14 */ stw r0, 0x14(r1) @@ -40,7 +18,10 @@ lbl_80021A70: /* 80021A70 0001E9B0 80 01 00 14 */ lwz r0, 0x14(r1) /* 80021A74 0001E9B4 7C 08 03 A6 */ mtlr r0 /* 80021A78 0001E9B8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021A7C 0001E9BC 4E 80 00 20 */ blr +/* 80021A7C 0001E9BC 4E 80 00 20 */ blr + +.global fpcLf_Execute +fpcLf_Execute: /* 80021A80 0001E9C0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80021A84 0001E9C4 7C 08 02 A6 */ mflr r0 /* 80021A88 0001E9C8 90 01 00 14 */ stw r0, 0x14(r1) @@ -50,7 +31,10 @@ lbl_80021A70: /* 80021A98 0001E9D8 80 01 00 14 */ lwz r0, 0x14(r1) /* 80021A9C 0001E9DC 7C 08 03 A6 */ mtlr r0 /* 80021AA0 0001E9E0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021AA4 0001E9E4 4E 80 00 20 */ blr +/* 80021AA4 0001E9E4 4E 80 00 20 */ blr + +.global fpcLf_IsDelete +fpcLf_IsDelete: /* 80021AA8 0001E9E8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80021AAC 0001E9EC 7C 08 02 A6 */ mflr r0 /* 80021AB0 0001E9F0 90 01 00 14 */ stw r0, 0x14(r1) @@ -60,7 +44,10 @@ lbl_80021A70: /* 80021AC0 0001EA00 80 01 00 14 */ lwz r0, 0x14(r1) /* 80021AC4 0001EA04 7C 08 03 A6 */ mtlr r0 /* 80021AC8 0001EA08 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021ACC 0001EA0C 4E 80 00 20 */ blr +/* 80021ACC 0001EA0C 4E 80 00 20 */ blr + +.global fpcLf_Delete +fpcLf_Delete: /* 80021AD0 0001EA10 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80021AD4 0001EA14 7C 08 02 A6 */ mflr r0 /* 80021AD8 0001EA18 90 01 00 14 */ stw r0, 0x14(r1) @@ -78,7 +65,10 @@ lbl_80021B00: /* 80021B04 0001EA44 80 01 00 14 */ lwz r0, 0x14(r1) /* 80021B08 0001EA48 7C 08 03 A6 */ mtlr r0 /* 80021B0C 0001EA4C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021B10 0001EA50 4E 80 00 20 */ blr +/* 80021B10 0001EA50 4E 80 00 20 */ blr + +.global fpcLf_Create +fpcLf_Create: /* 80021B14 0001EA54 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80021B18 0001EA58 7C 08 02 A6 */ mflr r0 /* 80021B1C 0001EA5C 90 01 00 14 */ stw r0, 0x14(r1) diff --git a/asm/f/pc/f_pc_line.s b/asm/f/pc/f_pc_line.s deleted file mode 100644 index 1db7091db8..0000000000 --- a/asm/f/pc/f_pc_line.s +++ /dev/null @@ -1,30 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80021f64 - - -.global fpcLn_Create -fpcLn_Create: -/* 80021F64 0001EEA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80021F68 0001EEA8 7C 08 02 A6 */ mflr r0 -/* 80021F6C 0001EEAC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021F70 0001EEB0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80021F74 0001EEB4 93 C1 00 08 */ stw r30, 8(r1) -/* 80021F78 0001EEB8 3C 60 80 3F */ lis r3, lbl_803F4CF0@ha -/* 80021F7C 0001EEBC 38 03 4C F0 */ addi r0, r3, lbl_803F4CF0@l -/* 80021F80 0001EEC0 7C 1E 03 78 */ mr r30, r0 -/* 80021F84 0001EEC4 3B E0 00 0F */ li r31, 0xf -lbl_80021F88: -/* 80021F88 0001EEC8 7F C3 F3 78 */ mr r3, r30 -/* 80021F8C 0001EECC 3B DE 00 0C */ addi r30, r30, 0xc -/* 80021F90 0001EED0 48 24 40 B1 */ bl cLs_Create -/* 80021F94 0001EED4 2C 1F 00 00 */ cmpwi r31, 0 -/* 80021F98 0001EED8 3B FF FF FF */ addi r31, r31, -1 -/* 80021F9C 0001EEDC 41 81 FF EC */ bgt lbl_80021F88 -/* 80021FA0 0001EEE0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80021FA4 0001EEE4 83 C1 00 08 */ lwz r30, 8(r1) -/* 80021FA8 0001EEE8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021FAC 0001EEEC 7C 08 03 A6 */ mtlr r0 -/* 80021FB0 0001EEF0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021FB4 0001EEF4 4E 80 00 20 */ blr - diff --git a/asm/f/pc/f_pc_load.s b/asm/f/pc/f_pc_load.s deleted file mode 100644 index 42492aa12c..0000000000 --- a/asm/f/pc/f_pc_load.s +++ /dev/null @@ -1,81 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80021fb8 - - -.global fpcLd_Use -fpcLd_Use: -/* 80021FB8 0001EEF8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80021FBC 0001EEFC 7C 08 02 A6 */ mflr r0 -/* 80021FC0 0001EF00 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021FC4 0001EF04 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80021FC8 0001EF08 7C 7F 1B 78 */ mr r31, r3 -/* 80021FCC 0001EF0C 48 00 00 3D */ bl fpcLd_IsLoaded -/* 80021FD0 0001EF10 2C 03 00 01 */ cmpwi r3, 1 -/* 80021FD4 0001EF14 40 82 00 1C */ bne lbl_80021FF0 -/* 80021FD8 0001EF18 7F E3 FB 78 */ mr r3, r31 -/* 80021FDC 0001EF1C 48 00 00 75 */ bl fpcLd_Load -/* 80021FE0 0001EF20 2C 03 00 04 */ cmpwi r3, 4 -/* 80021FE4 0001EF24 40 82 00 0C */ bne lbl_80021FF0 -/* 80021FE8 0001EF28 38 60 00 01 */ li r3, 1 -/* 80021FEC 0001EF2C 48 00 00 08 */ b lbl_80021FF4 -lbl_80021FF0: -/* 80021FF0 0001EF30 38 60 00 00 */ li r3, 0 -lbl_80021FF4: -/* 80021FF4 0001EF34 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80021FF8 0001EF38 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021FFC 0001EF3C 7C 08 03 A6 */ mtlr r0 -/* 80022000 0001EF40 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022004 0001EF44 4E 80 00 20 */ blr - -.global fpcLd_IsLoaded -fpcLd_IsLoaded: -/* 80022008 0001EF48 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002200C 0001EF4C 7C 08 02 A6 */ mflr r0 -/* 80022010 0001EF50 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022014 0001EF54 7C 63 07 34 */ extsh r3, r3 -/* 80022018 0001EF58 4B FF 65 2D */ bl cDyl_IsLinked -/* 8002201C 0001EF5C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022020 0001EF60 7C 08 03 A6 */ mtlr r0 -/* 80022024 0001EF64 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022028 0001EF68 4E 80 00 20 */ blr - -.global fpcLd_Free -fpcLd_Free: -/* 8002202C 0001EF6C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022030 0001EF70 7C 08 02 A6 */ mflr r0 -/* 80022034 0001EF74 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022038 0001EF78 7C 63 07 34 */ extsh r3, r3 -/* 8002203C 0001EF7C 4B FF 65 41 */ bl cDyl_Unlink -/* 80022040 0001EF80 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022044 0001EF84 7C 08 03 A6 */ mtlr r0 -/* 80022048 0001EF88 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002204C 0001EF8C 4E 80 00 20 */ blr - -.global fpcLd_Load -fpcLd_Load: -/* 80022050 0001EF90 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022054 0001EF94 7C 08 02 A6 */ mflr r0 -/* 80022058 0001EF98 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002205C 0001EF9C 7C 63 07 34 */ extsh r3, r3 -/* 80022060 0001EFA0 4B FF 65 61 */ bl cDyl_LinkASync -/* 80022064 0001EFA4 2C 03 00 04 */ cmpwi r3, 4 -/* 80022068 0001EFA8 41 82 00 14 */ beq lbl_8002207C -/* 8002206C 0001EFAC 40 80 00 20 */ bge lbl_8002208C -/* 80022070 0001EFB0 2C 03 00 00 */ cmpwi r3, 0 -/* 80022074 0001EFB4 41 82 00 10 */ beq lbl_80022084 -/* 80022078 0001EFB8 48 00 00 14 */ b lbl_8002208C -lbl_8002207C: -/* 8002207C 0001EFBC 38 60 00 04 */ li r3, 4 -/* 80022080 0001EFC0 48 00 00 10 */ b lbl_80022090 -lbl_80022084: -/* 80022084 0001EFC4 38 60 00 00 */ li r3, 0 -/* 80022088 0001EFC8 48 00 00 08 */ b lbl_80022090 -lbl_8002208C: -/* 8002208C 0001EFCC 38 60 00 05 */ li r3, 5 -lbl_80022090: -/* 80022090 0001EFD0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022094 0001EFD4 7C 08 03 A6 */ mtlr r0 -/* 80022098 0001EFD8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002209C 0001EFDC 4E 80 00 20 */ blr - diff --git a/asm/f/pc/f_pc_method.s b/asm/f/pc/f_pc_method.s deleted file mode 100644 index 0ea98392b4..0000000000 --- a/asm/f/pc/f_pc_method.s +++ /dev/null @@ -1,72 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80022428 - - -.global fpcMtd_Method -fpcMtd_Method: -/* 80022428 0001F368 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002242C 0001F36C 7C 08 02 A6 */ mflr r0 -/* 80022430 0001F370 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022434 0001F374 7C 6C 1B 79 */ or. r12, r3, r3 -/* 80022438 0001F378 41 82 00 14 */ beq lbl_8002244C -/* 8002243C 0001F37C 7C 83 23 78 */ mr r3, r4 -/* 80022440 0001F380 7D 89 03 A6 */ mtctr r12 -/* 80022444 0001F384 4E 80 04 21 */ bctrl -/* 80022448 0001F388 48 00 00 08 */ b lbl_80022450 -lbl_8002244C: -/* 8002244C 0001F38C 38 60 00 01 */ li r3, 1 -lbl_80022450: -/* 80022450 0001F390 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022454 0001F394 7C 08 03 A6 */ mtlr r0 -/* 80022458 0001F398 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002245C 0001F39C 4E 80 00 20 */ blr - -.global fpcMtd_Execute -fpcMtd_Execute: -/* 80022460 0001F3A0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022464 0001F3A4 7C 08 02 A6 */ mflr r0 -/* 80022468 0001F3A8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002246C 0001F3AC 80 63 00 08 */ lwz r3, 8(r3) -/* 80022470 0001F3B0 4B FF FF B9 */ bl fpcMtd_Method -/* 80022474 0001F3B4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022478 0001F3B8 7C 08 03 A6 */ mtlr r0 -/* 8002247C 0001F3BC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022480 0001F3C0 4E 80 00 20 */ blr - -.global fpcMtd_IsDelete -fpcMtd_IsDelete: -/* 80022484 0001F3C4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022488 0001F3C8 7C 08 02 A6 */ mflr r0 -/* 8002248C 0001F3CC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022490 0001F3D0 80 63 00 0C */ lwz r3, 0xc(r3) -/* 80022494 0001F3D4 4B FF FF 95 */ bl fpcMtd_Method -/* 80022498 0001F3D8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002249C 0001F3DC 7C 08 03 A6 */ mtlr r0 -/* 800224A0 0001F3E0 38 21 00 10 */ addi r1, r1, 0x10 -/* 800224A4 0001F3E4 4E 80 00 20 */ blr - -.global fpcMtd_Delete -fpcMtd_Delete: -/* 800224A8 0001F3E8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800224AC 0001F3EC 7C 08 02 A6 */ mflr r0 -/* 800224B0 0001F3F0 90 01 00 14 */ stw r0, 0x14(r1) -/* 800224B4 0001F3F4 80 63 00 04 */ lwz r3, 4(r3) -/* 800224B8 0001F3F8 4B FF FF 71 */ bl fpcMtd_Method -/* 800224BC 0001F3FC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800224C0 0001F400 7C 08 03 A6 */ mtlr r0 -/* 800224C4 0001F404 38 21 00 10 */ addi r1, r1, 0x10 -/* 800224C8 0001F408 4E 80 00 20 */ blr - -.global fpcMtd_Create -fpcMtd_Create: -/* 800224CC 0001F40C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800224D0 0001F410 7C 08 02 A6 */ mflr r0 -/* 800224D4 0001F414 90 01 00 14 */ stw r0, 0x14(r1) -/* 800224D8 0001F418 80 63 00 00 */ lwz r3, 0(r3) -/* 800224DC 0001F41C 4B FF FF 4D */ bl fpcMtd_Method -/* 800224E0 0001F420 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800224E4 0001F424 7C 08 03 A6 */ mtlr r0 -/* 800224E8 0001F428 38 21 00 10 */ addi r1, r1, 0x10 -/* 800224EC 0001F42C 4E 80 00 20 */ blr - diff --git a/asm/f/pc/f_pc_profile.s b/asm/f/pc/f_pc_profile.s deleted file mode 100644 index 483814503a..0000000000 --- a/asm/f/pc/f_pc_profile.s +++ /dev/null @@ -1,12 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80023564 - - -.global fpcPf_Get -fpcPf_Get: -/* 80023564 000204A4 80 8D 87 D0 */ lwz r4, lbl_80450D50-_SDA_BASE_(r13) -/* 80023568 000204A8 7C 60 07 34 */ extsh r0, r3 -/* 8002356C 000204AC 54 00 10 3A */ slwi r0, r0, 2 -/* 80023570 000204B0 7C 64 00 2E */ lwzx r3, r4, r0 -/* 80023574 000204B4 4E 80 00 20 */ blr diff --git a/asm/f/pc/f_pc_searcher.s b/asm/f/pc/f_pc_searcher.s deleted file mode 100644 index d7287213ba..0000000000 --- a/asm/f/pc/f_pc_searcher.s +++ /dev/null @@ -1,22 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80023578 - - -.global fpcSch_JudgeForPName -fpcSch_JudgeForPName: -/* 80023578 000204B8 A8 A3 00 08 */ lha r5, 8(r3) -/* 8002357C 000204BC A8 04 00 00 */ lha r0, 0(r4) -/* 80023580 000204C0 7C 05 00 00 */ cmpw r5, r0 -/* 80023584 000204C4 4D 82 00 20 */ beqlr -/* 80023588 000204C8 38 60 00 00 */ li r3, 0 -/* 8002358C 000204CC 4E 80 00 20 */ blr -.global fpcSch_JudgeByID -fpcSch_JudgeByID: -/* 80023590 000204D0 80 A3 00 04 */ lwz r5, 4(r3) -/* 80023594 000204D4 80 04 00 00 */ lwz r0, 0(r4) -/* 80023598 000204D8 7C 05 00 40 */ cmplw r5, r0 -/* 8002359C 000204DC 4D 82 00 20 */ beqlr -/* 800235A0 000204E0 38 60 00 00 */ li r3, 0 -/* 800235A4 000204E4 4E 80 00 20 */ blr - diff --git a/asm/f/pc/line/f_pc_line_iter.s b/asm/f/pc/line/f_pc_line_iter.s deleted file mode 100644 index 9c2bd734bf..0000000000 --- a/asm/f/pc/line/f_pc_line_iter.s +++ /dev/null @@ -1,54 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 800236c0 - - -.global fpcLnIt_MethodCall -fpcLnIt_MethodCall: -/* 800236C0 00020600 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800236C4 00020604 7C 08 02 A6 */ mflr r0 -/* 800236C8 00020608 90 01 00 24 */ stw r0, 0x24(r1) -/* 800236CC 0002060C 39 61 00 20 */ addi r11, r1, 0x20 -/* 800236D0 00020610 48 33 EB 09 */ bl _savegpr_28 -/* 800236D4 00020614 7C 7C 1B 78 */ mr r28, r3 -/* 800236D8 00020618 7C 9D 23 78 */ mr r29, r4 -/* 800236DC 0002061C 80 63 00 0C */ lwz r3, 0xc(r3) -/* 800236E0 00020620 83 E3 00 2C */ lwz r31, 0x2c(r3) -/* 800236E4 00020624 4B FF E0 11 */ bl fpcLy_CurrentLayer -/* 800236E8 00020628 7C 7E 1B 78 */ mr r30, r3 -/* 800236EC 0002062C 7F E3 FB 78 */ mr r3, r31 -/* 800236F0 00020630 4B FF DF FD */ bl fpcLy_SetCurrentLayer -/* 800236F4 00020634 7F 83 E3 78 */ mr r3, r28 -/* 800236F8 00020638 7F A4 EB 78 */ mr r4, r29 -/* 800236FC 0002063C 48 24 33 81 */ bl cTgIt_MethodCall -/* 80023700 00020640 7C 7F 1B 78 */ mr r31, r3 -/* 80023704 00020644 7F C3 F3 78 */ mr r3, r30 -/* 80023708 00020648 4B FF DF E5 */ bl fpcLy_SetCurrentLayer -/* 8002370C 0002064C 7F E3 FB 78 */ mr r3, r31 -/* 80023710 00020650 39 61 00 20 */ addi r11, r1, 0x20 -/* 80023714 00020654 48 33 EB 11 */ bl _restgpr_28 -/* 80023718 00020658 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8002371C 0002065C 7C 08 03 A6 */ mtlr r0 -/* 80023720 00020660 38 21 00 20 */ addi r1, r1, 0x20 -/* 80023724 00020664 4E 80 00 20 */ blr - -.global fpcLnIt_Queue -fpcLnIt_Queue: -/* 80023728 00020668 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002372C 0002066C 7C 08 02 A6 */ mflr r0 -/* 80023730 00020670 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023734 00020674 90 61 00 08 */ stw r3, 8(r1) -/* 80023738 00020678 38 00 00 00 */ li r0, 0 -/* 8002373C 0002067C 90 01 00 0C */ stw r0, 0xc(r1) -/* 80023740 00020680 38 6D 80 58 */ addi r3, r13, lbl_804505D8-_SDA_BASE_ -.global fpcLnIt_MethodCall -/* 80023744 00020684 3C 80 80 02 */ lis r4, fpcLnIt_MethodCall@ha -.global fpcLnIt_MethodCall -/* 80023748 00020688 38 84 36 C0 */ addi r4, r4, fpcLnIt_MethodCall@l -/* 8002374C 0002068C 38 A1 00 08 */ addi r5, r1, 8 -/* 80023750 00020690 48 24 2D F1 */ bl cTrIt_Method -/* 80023754 00020694 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023758 00020698 7C 08 03 A6 */ mtlr r0 -/* 8002375C 0002069C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023760 000206A0 4E 80 00 20 */ blr - diff --git a/asm/f/pc/line/f_pc_line_tag.s b/asm/f/pc/line/f_pc_line_tag.s deleted file mode 100644 index 67cd96a846..0000000000 --- a/asm/f/pc/line/f_pc_line_tag.s +++ /dev/null @@ -1,90 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 800235a8 - - -.global fpcLnTg_Move -fpcLnTg_Move: -/* 800235A8 000204E8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800235AC 000204EC 7C 08 02 A6 */ mflr r0 -/* 800235B0 000204F0 90 01 00 14 */ stw r0, 0x14(r1) -/* 800235B4 000204F4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800235B8 000204F8 93 C1 00 08 */ stw r30, 8(r1) -/* 800235BC 000204FC 7C 7E 1B 78 */ mr r30, r3 -/* 800235C0 00020500 7C 9F 23 78 */ mr r31, r4 -/* 800235C4 00020504 80 03 00 14 */ lwz r0, 0x14(r3) -/* 800235C8 00020508 7C 00 F8 00 */ cmpw r0, r31 -/* 800235CC 0002050C 41 82 00 18 */ beq lbl_800235E4 -/* 800235D0 00020510 48 00 00 31 */ bl fpcLnTg_QueueTo -/* 800235D4 00020514 7F C3 F3 78 */ mr r3, r30 -/* 800235D8 00020518 7F E4 FB 78 */ mr r4, r31 -/* 800235DC 0002051C 48 00 00 59 */ bl fpcLnTg_ToQueue -/* 800235E0 00020520 48 00 00 08 */ b lbl_800235E8 -lbl_800235E4: -/* 800235E4 00020524 38 60 00 01 */ li r3, 1 -lbl_800235E8: -/* 800235E8 00020528 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800235EC 0002052C 83 C1 00 08 */ lwz r30, 8(r1) -/* 800235F0 00020530 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800235F4 00020534 7C 08 03 A6 */ mtlr r0 -/* 800235F8 00020538 38 21 00 10 */ addi r1, r1, 0x10 -/* 800235FC 0002053C 4E 80 00 20 */ blr - -.global fpcLnTg_QueueTo -fpcLnTg_QueueTo: -/* 80023600 00020540 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023604 00020544 7C 08 02 A6 */ mflr r0 -/* 80023608 00020548 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002360C 0002054C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80023610 00020550 7C 7F 1B 78 */ mr r31, r3 -/* 80023614 00020554 48 24 32 79 */ bl cTg_SingleCutFromTree -/* 80023618 00020558 38 00 FF FF */ li r0, -1 -/* 8002361C 0002055C 90 1F 00 14 */ stw r0, 0x14(r31) -/* 80023620 00020560 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80023624 00020564 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023628 00020568 7C 08 03 A6 */ mtlr r0 -/* 8002362C 0002056C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023630 00020570 4E 80 00 20 */ blr - -.global fpcLnTg_ToQueue -fpcLnTg_ToQueue: -/* 80023634 00020574 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023638 00020578 7C 08 02 A6 */ mflr r0 -/* 8002363C 0002057C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023640 00020580 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80023644 00020584 93 C1 00 08 */ stw r30, 8(r1) -/* 80023648 00020588 7C 7E 1B 78 */ mr r30, r3 -/* 8002364C 0002058C 7C 9F 23 78 */ mr r31, r4 -/* 80023650 00020590 38 6D 80 58 */ addi r3, r13, lbl_804505D8-_SDA_BASE_ -/* 80023654 00020594 7F C5 F3 78 */ mr r5, r30 -/* 80023658 00020598 48 24 32 75 */ bl cTg_AdditionToTree -/* 8002365C 0002059C 2C 03 00 00 */ cmpwi r3, 0 -/* 80023660 000205A0 41 82 00 10 */ beq lbl_80023670 -/* 80023664 000205A4 93 FE 00 14 */ stw r31, 0x14(r30) -/* 80023668 000205A8 38 60 00 01 */ li r3, 1 -/* 8002366C 000205AC 48 00 00 08 */ b lbl_80023674 -lbl_80023670: -/* 80023670 000205B0 38 60 00 00 */ li r3, 0 -lbl_80023674: -/* 80023674 000205B4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80023678 000205B8 83 C1 00 08 */ lwz r30, 8(r1) -/* 8002367C 000205BC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023680 000205C0 7C 08 03 A6 */ mtlr r0 -/* 80023684 000205C4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023688 000205C8 4E 80 00 20 */ blr - -.global fpcLnTg_Init -fpcLnTg_Init: -/* 8002368C 000205CC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023690 000205D0 7C 08 02 A6 */ mflr r0 -/* 80023694 000205D4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023698 000205D8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8002369C 000205DC 7C 7F 1B 78 */ mr r31, r3 -/* 800236A0 000205E0 48 24 33 95 */ bl cTg_Create -/* 800236A4 000205E4 38 00 FF FF */ li r0, -1 -/* 800236A8 000205E8 90 1F 00 14 */ stw r0, 0x14(r31) -/* 800236AC 000205EC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800236B0 000205F0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800236B4 000205F4 7C 08 03 A6 */ mtlr r0 -/* 800236B8 000205F8 38 21 00 10 */ addi r1, r1, 0x10 -/* 800236BC 000205FC 4E 80 00 20 */ blr diff --git a/asm/f/pc/method/f_pc_method_iter.s b/asm/f/pc/method/f_pc_method_iter.s deleted file mode 100644 index 796555df5f..0000000000 --- a/asm/f/pc/method/f_pc_method_iter.s +++ /dev/null @@ -1,17 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80023764 - - -.global fpcMtdIt_Method -fpcMtdIt_Method: -/* 80023764 000206A4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023768 000206A8 7C 08 02 A6 */ mflr r0 -/* 8002376C 000206AC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023770 000206B0 38 A0 00 00 */ li r5, 0 -/* 80023774 000206B4 48 24 28 ED */ bl cLsIt_Method -/* 80023778 000206B8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002377C 000206BC 7C 08 03 A6 */ mtlr r0 -/* 80023780 000206C0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023784 000206C4 4E 80 00 20 */ blr - diff --git a/asm/f/pc/method/f_pc_method_tag.s b/asm/f/pc/method/f_pc_method_tag.s deleted file mode 100644 index c15a2d9b80..0000000000 --- a/asm/f/pc/method/f_pc_method_tag.s +++ /dev/null @@ -1,64 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80023788 - - -.global fpcMtdTg_Do -fpcMtdTg_Do: -/* 80023788 000206C8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002378C 000206CC 7C 08 02 A6 */ mflr r0 -/* 80023790 000206D0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023794 000206D4 7C 64 1B 78 */ mr r4, r3 -/* 80023798 000206D8 80 63 00 18 */ lwz r3, 0x18(r3) -/* 8002379C 000206DC 81 84 00 14 */ lwz r12, 0x14(r4) -/* 800237A0 000206E0 7D 89 03 A6 */ mtctr r12 -/* 800237A4 000206E4 4E 80 04 21 */ bctrl -/* 800237A8 000206E8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800237AC 000206EC 7C 08 03 A6 */ mtlr r0 -/* 800237B0 000206F0 38 21 00 10 */ addi r1, r1, 0x10 -/* 800237B4 000206F4 4E 80 00 20 */ blr - -.global fpcMtdTg_ToMethodQ -fpcMtdTg_ToMethodQ: -/* 800237B8 000206F8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800237BC 000206FC 7C 08 02 A6 */ mflr r0 -/* 800237C0 00020700 90 01 00 14 */ stw r0, 0x14(r1) -/* 800237C4 00020704 48 24 32 21 */ bl cTg_Addition -/* 800237C8 00020708 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800237CC 0002070C 7C 08 03 A6 */ mtlr r0 -/* 800237D0 00020710 38 21 00 10 */ addi r1, r1, 0x10 -/* 800237D4 00020714 4E 80 00 20 */ blr - -.global fpcMtdTg_MethodQTo -fpcMtdTg_MethodQTo: -/* 800237D8 00020718 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800237DC 0002071C 7C 08 02 A6 */ mflr r0 -/* 800237E0 00020720 90 01 00 14 */ stw r0, 0x14(r1) -/* 800237E4 00020724 48 24 31 C1 */ bl cTg_SingleCut -/* 800237E8 00020728 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800237EC 0002072C 7C 08 03 A6 */ mtlr r0 -/* 800237F0 00020730 38 21 00 10 */ addi r1, r1, 0x10 -/* 800237F4 00020734 4E 80 00 20 */ blr - -.global fpcMtdTg_Init -fpcMtdTg_Init: -/* 800237F8 00020738 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800237FC 0002073C 7C 08 02 A6 */ mflr r0 -/* 80023800 00020740 90 01 00 24 */ stw r0, 0x24(r1) -/* 80023804 00020744 39 61 00 20 */ addi r11, r1, 0x20 -/* 80023808 00020748 48 33 E9 D5 */ bl _savegpr_29 -/* 8002380C 0002074C 7C 7D 1B 78 */ mr r29, r3 -/* 80023810 00020750 7C 9E 23 78 */ mr r30, r4 -/* 80023814 00020754 7C BF 2B 78 */ mr r31, r5 -/* 80023818 00020758 7F A4 EB 78 */ mr r4, r29 -/* 8002381C 0002075C 48 24 32 19 */ bl cTg_Create -/* 80023820 00020760 93 DD 00 14 */ stw r30, 0x14(r29) -/* 80023824 00020764 93 FD 00 18 */ stw r31, 0x18(r29) -/* 80023828 00020768 38 60 00 01 */ li r3, 1 -/* 8002382C 0002076C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80023830 00020770 48 33 E9 F9 */ bl _restgpr_29 -/* 80023834 00020774 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80023838 00020778 7C 08 03 A6 */ mtlr r0 -/* 8002383C 0002077C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80023840 00020780 4E 80 00 20 */ blr - diff --git a/asmdiff.sh b/asmdiff.sh index 177dbe023b..314e1709eb 100644 --- a/asmdiff.sh +++ b/asmdiff.sh @@ -2,6 +2,7 @@ OBJDUMP="$DEVKITPPC/bin/powerpc-eabi-objdump -D -bbinary -EB -mpowerpc -M gekko" OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" +echo $OPTIONS $OBJDUMP $OPTIONS baserom.dol > baserom.dump -$OBJDUMP $OPTIONS main.dol > main.dump -diff -u --color=always baserom.dump main.dump \ No newline at end of file +$OBJDUMP $OPTIONS build/dolzel2/main.dol > main.dump +diff -u --color=always baserom.dump main.dump diff --git a/include/JSystem/JKernel/JKRDisposer/JKRDisposer.h b/include/JSystem/JKernel/JKRDisposer/JKRDisposer.h index f272e75136..7d9576912f 100644 --- a/include/JSystem/JKernel/JKRDisposer/JKRDisposer.h +++ b/include/JSystem/JKernel/JKRDisposer/JKRDisposer.h @@ -8,10 +8,11 @@ class JKRHeap; class JKRDisposer { public: JKRDisposer(); - ~JKRDisposer(); + virtual ~JKRDisposer(); + + virtual void callAllDisposer() = 0; public: - void** __vt; JKRHeap* heap; JSUPtrLink ptr_link; }; diff --git a/include/JSystem/JKernel/JKRHeap/asm/func_802D147C.s b/include/JSystem/JKernel/JKRDisposer/asm/func_802D147C.s similarity index 100% rename from include/JSystem/JKernel/JKRHeap/asm/func_802D147C.s rename to include/JSystem/JKernel/JKRDisposer/asm/func_802D147C.s diff --git a/include/JSystem/JKernel/JKRHeap/JKRHeap.h b/include/JSystem/JKernel/JKRHeap/JKRHeap.h index 3658a02c35..509bde938b 100644 --- a/include/JSystem/JKernel/JKRHeap/JKRHeap.h +++ b/include/JSystem/JKernel/JKRHeap/JKRHeap.h @@ -1,3 +1,5 @@ +#ifndef __JKRHEAP_H__ +#define __JKRHEAP_H__ #include "dolphin/types.h" #include "JSystem/JKernel/JKRDisposer/JKRDisposer.h" @@ -6,11 +8,11 @@ typedef void (*JKRErrorHandler)(void*, unsigned long, int); class JKRHeap : JKRDisposer { public: JKRHeap(void*, u32, JKRHeap*, bool); - ~JKRHeap(); + virtual ~JKRHeap(); static bool initArena(char**, u32*, int); - void becomeSystemHeap(); - void becomeCurrentHeap(); + JKRHeap* becomeSystemHeap(); + JKRHeap* becomeCurrentHeap(); void destroy(); static void* alloc(u32 size, int alignment, JKRHeap* heap); @@ -19,7 +21,6 @@ class JKRHeap : JKRDisposer { static void free(void* ptr, JKRHeap* heap); void free(void* ptr); - void callAllDisposer(); void freeAll(); void freeTail(); @@ -30,17 +31,17 @@ class JKRHeap : JKRDisposer { s32 getSize(void* ptr); s32 getFreeSize(); - u32 getMaxFreeBlock(); - u32 getTotalFreeSize(); + s32 getMaxFreeBlock(); + s32 getTotalFreeSize(); u8 changeGroupID(u8 param_1); - u32 getMaxAllocatableSize(int alignment); + s32 getMaxAllocatableSize(int alignment); static JKRHeap* findFromRoot(void* ptr); JKRHeap* find(void* ptr) const; JKRHeap* findAllHeap(void* ptr) const; void dispose_subroutine(u32 begin, u32 end); - void dispose(void* ptr, u32 size); + bool dispose(void* ptr, u32 size); void dispose(void* begin, void* end); void dispose(); @@ -52,6 +53,29 @@ class JKRHeap : JKRDisposer { bool isSubHeap(JKRHeap* heap) const; + protected: + void callAllDisposer(); + virtual void vt_func4() = 0; + virtual void vt_func5() = 0; + virtual void dump_sort(); + virtual void vt_func7() = 0; + virtual void do_destroy() = 0; + virtual void* do_alloc(u32 size, int alignment) = 0; + virtual void do_free(void* ptr) = 0; + virtual void do_freeAll() = 0; + virtual void do_freeTail() = 0; + virtual void vt_func13() = 0; + virtual s32 do_resize(void* ptr, u32 size) = 0; + virtual s32 do_getSize(void* ptr) = 0; + virtual s32 do_getFreeSize() = 0; + virtual s32 do_getMaxFreeBlock() = 0; + virtual s32 do_getTotalFreeSize() = 0; + virtual u8 do_changeGroupID(u8 param_1); + virtual void do_getCurrent(); + virtual void state_register(); + virtual void state_compare(); + virtual void state_dump(); + public: u8 mutex[24]; u32 begin; @@ -64,8 +88,9 @@ class JKRHeap : JKRDisposer { JSUPtrList child_list; JSUPtrLink heap_link; JSUPtrList disposable_list; - bool error_handler; + bool error_flag; u8 field_0x69; + u8 field_0x6a[2]; }; void* operator new(u32 size); @@ -77,4 +102,6 @@ void* operator new[](u32 size, int alignment); void* operator new[](u32 size, JKRHeap* heap, int alignment); void operator delete(void* ptr); -void operator delete[](void* ptr); \ No newline at end of file +void operator delete[](void* ptr); + +#endif \ No newline at end of file diff --git a/include/JSystem/JSupport/JSUList/JSUList.h b/include/JSystem/JSupport/JSUList/JSUList.h index c0b145f223..eb57f70984 100644 --- a/include/JSystem/JSupport/JSUList/JSUList.h +++ b/include/JSystem/JSupport/JSUList/JSUList.h @@ -6,11 +6,11 @@ class JSUPtrList; class JSUPtrLink { public: - JSUPtrLink(void*); + JSUPtrLink(void* owner); ~JSUPtrLink(); public: - void* unk0; + void* owner; JSUPtrList* list; JSUPtrLink* prev; JSUPtrLink* next; @@ -35,13 +35,24 @@ class JSUPtrList { u32 length; }; - template class JSUList : JSUPtrList { public: - JSUList() : JSUPtrList(true) {} - ~JSUList() {}; + JSUList() : JSUPtrList(true) { + } + ~JSUList(){}; + void append(T* value) { + list.append(&value->ptr_link); + } + + void prepend(T* value) { + list.prepend(&value->ptr_link); + } + + void remove(T* value) { + list.remove(&value->ptr_link); + } }; #endif diff --git a/include/SComponent/c_list.h b/include/SComponent/c_list.h new file mode 100644 index 0000000000..7a7e6066c0 --- /dev/null +++ b/include/SComponent/c_list.h @@ -0,0 +1,24 @@ + +#ifndef SCOMPONENT_C_LIST_H +#define SCOMPONENT_C_LIST_H + +#include "SComponent/c_node.h" + +struct node_list_class { + node_class *mpHead; + node_class *mpTail; + int mSize; +}; + +extern "C" { + +void cLs_Init(node_list_class *pList); +int cLs_SingleCut(node_class *pNode); +int cLs_Addition(node_list_class *pList, node_class *pNode); +int cLs_Insert(node_list_class *pList, int idx, node_class *pNode); +node_class * cLs_GetFirst(node_list_class *pList); +void cLs_Create(node_list_class *pList); + +}; + +#endif diff --git a/include/SComponent/c_list_iter.h b/include/SComponent/c_list_iter.h new file mode 100644 index 0000000000..06c06590a9 --- /dev/null +++ b/include/SComponent/c_list_iter.h @@ -0,0 +1,15 @@ + +#ifndef SCOMPONENT_C_LIST_ITER_H +#define SCOMPONENT_C_LIST_ITER_H + +#include "SComponent/c_list.h" +#include "SComponent/c_node_iter.h" + +extern "C" { + +int cLsIt_Method(node_list_class *pList, cNdIt_MethodFunc pMethod, void *pUserData); +void * cLsIt_Judge(node_list_class *pList, cNdIt_JudgeFunc pJudge, void *pUserData); + +}; + +#endif diff --git a/include/SComponent/c_node.h b/include/SComponent/c_node.h new file mode 100644 index 0000000000..73573c0bae --- /dev/null +++ b/include/SComponent/c_node.h @@ -0,0 +1,29 @@ + +#ifndef SCOMPONENT_C_NODE_H +#define SCOMPONENT_C_NODE_H + +struct node_class { + node_class *mpPrevNode; + void *mpData; + node_class *mpNextNode; +}; + +extern "C" { + +void cNd_Join(node_class *pA, node_class *pB); +int cNd_LengthOf(node_class *pNode); +node_class * cNd_First(node_class *pNode); +node_class * cNd_Last(node_class *pNode); +node_class * cNd_Order(node_class *pNode, int idx); +void cNd_SingleCut(node_class *pNode); +void cNd_Cut(node_class *pNode); +void cNd_Addition(node_class *pA, node_class *pB); +void cNd_Insert(node_class *pA, node_class *pB); +void cNd_SetObject(node_class *pNode, void *pData); +void cNd_ClearObject(node_class *pNode); +void cNd_ForcedClear(node_class *pNode); +void cNd_Create(node_class *pNode, void *pData); + +}; + +#endif diff --git a/include/SComponent/c_node_iter.h b/include/SComponent/c_node_iter.h new file mode 100644 index 0000000000..8d76321c05 --- /dev/null +++ b/include/SComponent/c_node_iter.h @@ -0,0 +1,17 @@ + +#ifndef SCOMPONENT_C_NODE_ITER_H +#define SCOMPONENT_C_NODE_ITER_H + +#include "SComponent/c_node.h" + +extern "C" { + +typedef int (*cNdIt_MethodFunc)(node_class *pNode, void *pUserData); +int cNdIt_Method(node_class *pNode, cNdIt_MethodFunc pMethod, void *pUserData); + +typedef void * (*cNdIt_JudgeFunc)(node_class *pNode, void *pUserData); +void * cNdIt_Judge(node_class *pNode, cNdIt_JudgeFunc pJudge, void *pUserData); + +}; + +#endif diff --git a/include/SComponent/c_phase.h b/include/SComponent/c_phase.h new file mode 100644 index 0000000000..c923711dd4 --- /dev/null +++ b/include/SComponent/c_phase.h @@ -0,0 +1,32 @@ + +#ifndef SCOMPONENT_C_PHASE_H +#define SCOMPONENT_C_PHASE_H + +typedef int (*cPhs__Handler)(void *); + +enum cPhs__Step { + cPhs_ZERO_e = 0x00, + // names from Wind Waker debug strings + cPhs_COMPLEATE_e = 0x04, + cPhs_ERROR_e = 0x05, + cPhs_NEXT_e = 0x06, +}; + +struct request_of_phase_process_class { + cPhs__Handler *mpHandlerTable; + int mPhaseStep; +}; + +extern "C" { + +void cPhs_Reset(request_of_phase_process_class *pPhase); +void cPhs_Set(request_of_phase_process_class *pPhase, cPhs__Handler *pHandlerTable); +void cPhs_UnCompleate(request_of_phase_process_class *pPhase); +int cPhs_Compleate(request_of_phase_process_class *pPhase); +int cPhs_Next(request_of_phase_process_class *pPhase); +int cPhs_Do(request_of_phase_process_class *pPhase, void *pUserData); +int cPhs_Handler(request_of_phase_process_class *pPhase, cPhs__Handler *pHandlerTable, void *pUserData); + +}; + +#endif diff --git a/include/SComponent/c_tag.h b/include/SComponent/c_tag.h new file mode 100644 index 0000000000..2c73b3ab10 --- /dev/null +++ b/include/SComponent/c_tag.h @@ -0,0 +1,28 @@ + +#ifndef SCOMPONENT_C_TAG_H +#define SCOMPONENT_C_TAG_H + +#include "global.h" +#include "SComponent/c_node.h" +#include "SComponent/c_list.h" +#include "SComponent/c_tree.h" + +struct create_tag_class : public node_class { + void *mpTagData; + s8 mbIsUse; +}; + +extern "C" { + +int cTg_IsUse(create_tag_class *pTag); +int cTg_SingleCutFromTree(create_tag_class *pTag); +int cTg_AdditionToTree(node_lists_tree_class *pTree, int listIdx, create_tag_class *pTag); +int cTg_InsertToTree(node_lists_tree_class *pTree, int listIdx, create_tag_class *pTag, int idx); +node_class * cTg_GetFirst(node_list_class *pTag); +int cTg_SingleCut(create_tag_class *pTag); +int cTg_Addition(node_list_class *pList, create_tag_class *pTag); +void cTg_Create(create_tag_class *pTag, void *pData); + +}; + +#endif diff --git a/include/SComponent/c_tag_iter.h b/include/SComponent/c_tag_iter.h new file mode 100644 index 0000000000..b750ac9c76 --- /dev/null +++ b/include/SComponent/c_tag_iter.h @@ -0,0 +1,25 @@ + +#ifndef SCOMPONENT_C_TAG_ITER_H +#define SCOMPONENT_C_TAG_ITER_H + +#include "SComponent/c_tag.h" +#include "SComponent/c_node_iter.h" + +struct method_filter { + cNdIt_MethodFunc mpMethodFunc; + void *mpUserData; +}; + +struct judge_filter { + cNdIt_JudgeFunc mpJudgeFunc; + void *mpUserData; +}; + +extern "C" { + +int cTgIt_MethodCall(create_tag_class *pTag, method_filter *pMethodFilter); +void * cTgIt_JudgeFilter(create_tag_class *pTag, judge_filter *pJudgeFilter); + +}; + +#endif diff --git a/include/SComponent/c_tree.h b/include/SComponent/c_tree.h new file mode 100644 index 0000000000..215b5a58e4 --- /dev/null +++ b/include/SComponent/c_tree.h @@ -0,0 +1,23 @@ + +#ifndef SCOMPONENT_C_TREE_H +#define SCOMPONENT_C_TREE_H + +#include "global.h" +#include "SComponent/c_list.h" +#include "SComponent/c_node.h" + +struct node_lists_tree_class { + node_list_class *mpLists; + int mNumLists; +}; + +extern "C" { + +int cTr_SingleCut(node_class *pNode); +int cTr_Addition(node_lists_tree_class *pTree, int listIdx, node_class *pNode); +int cTr_Insert(node_lists_tree_class *pTree, int listIdx, node_class *pNode, int idx); +void cTr_Create(node_lists_tree_class *pTree, node_list_class *pLists, int numLists); + +}; + +#endif diff --git a/include/SComponent/c_tree_iter.h b/include/SComponent/c_tree_iter.h new file mode 100644 index 0000000000..0334500efe --- /dev/null +++ b/include/SComponent/c_tree_iter.h @@ -0,0 +1,15 @@ + +#ifndef SCOMPONENT_C_TREE_ITER_H +#define SCOMPONENT_C_TREE_ITER_H + +#include "SComponent/c_tree.h" +#include "SComponent/c_node_iter.h" + +extern "C" { + +int cTrIt_Method(node_lists_tree_class *pTree, cNdIt_MethodFunc pJudgeFunc, void *pUserData); +void * cTrIt_Judge(node_lists_tree_class *pTree, cNdIt_JudgeFunc pJudgeFunc, void *pUserData); + +}; + +#endif diff --git a/include/dolphin/types.h b/include/dolphin/types.h index c8b061e796..57efce338f 100644 --- a/include/dolphin/types.h +++ b/include/dolphin/types.h @@ -29,6 +29,6 @@ typedef int BOOL; #define TRUE 1 #define FALSE 0 -#define NULL ((void*)0) +#define NULL (0) #endif \ No newline at end of file diff --git a/include/f/f_pc/f_pc_base.h b/include/f/f_pc/f_pc_base.h new file mode 100644 index 0000000000..8892d236f5 --- /dev/null +++ b/include/f/f_pc/f_pc_base.h @@ -0,0 +1,43 @@ + +#ifndef F_PC_BASE_H +#define F_PC_BASE_H + +#include "global.h" +#include "SComponent/c_tag.h" +#include "f/f_pc/f_pc_line_tag.h" +#include "f/f_pc/f_pc_layer_tag.h" +#include "f/f_pc/f_pc_delete_tag.h" +#include "f/f_pc/f_pc_priority.h" + +struct create_request; +struct profile_method_class; + +struct base_process_class { + u32 mBsType; + u32 mBsPcId; + s16 mProcName; + u8 mUnk0; + u8 mUnk1; + s8 mInitState; + u8 mUnk2; + s16 mBsTypeId; + void *mpProf; + create_request *mpCtRq; + layer_management_tag_class mLyTg; + line_tag mLnTg; + delete_tag_class mDtTg; + process_priority_class mPi; + profile_method_class *mpPcMtd; + void *mpUserData; + u32 mParameters; + u32 mSubType; +}; + +extern "C" { + +extern int fpcBs_Is_JustOfType(int a, int b); +extern int fpcBs_Execute(base_process_class *pProc); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_create_iter.h b/include/f/f_pc/f_pc_create_iter.h new file mode 100644 index 0000000000..58f3a998a8 --- /dev/null +++ b/include/f/f_pc/f_pc_create_iter.h @@ -0,0 +1,14 @@ + +#ifndef F_PC_CREATE_ITER_H +#define F_PC_CREATE_ITER_H + +#include "SComponent/c_node_iter.h" + +extern "C" { + +int fpcCtIt_Method(cNdIt_MethodFunc pJudge, void *pUserData); +void * fpcCtIt_Judge(cNdIt_JudgeFunc pJudge, void *pUserData); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_create_req.h b/include/f/f_pc/f_pc_create_req.h new file mode 100644 index 0000000000..289b10123f --- /dev/null +++ b/include/f/f_pc/f_pc_create_req.h @@ -0,0 +1,46 @@ + +#ifndef F_PC_CREATE_REQ_H +#define F_PC_CREATE_REQ_H + +#include "global.h" +#include "SComponent/c_phase.h" +#include "SComponent/c_tag.h" +#include "f/f_pc/f_pc_create_tag.h" +#include "f/f_pc/f_pc_method.h" +#include "f/f_pc/f_pc_method_tag.h" + +struct base_process_class; +struct layer_class; + +struct create_request_method_class { + cPhs__Handler mpHandler; + process_method_func mpCancel; + process_method_func mpDelete; +}; + +struct create_request : public create_tag { + s8 mbIsCreating; + s8 mbIsCancelling; + process_method_tag_class mMtdTg; + create_request_method_class *mpCtRqMtd; + void *mpUnk1; + int mBsPcId; + base_process_class *mpRes; + layer_class *mpLayer; +}; + +extern "C" { + +bool fpcCtRq_isCreatingByID(create_tag *pTag, int *pId); +bool fpcCtRq_IsCreatingByID(unsigned int id); +void fpcCtRq_CreateQTo(create_request *pReq); +void fpcCtRq_ToCreateQ(create_request *pReq); +bool fpcCtRq_Delete(create_request *pReq); +bool fpcCtRq_Cancel(create_request *pReq); +int fpcCtRq_IsDoing(create_request *pReq); +void fpcCtRq_Handler(void); +create_request * fpcCtRq_Create(layer_class *pLayer, unsigned long size, create_request_method_class *pCtRqMtd); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_create_tag.h b/include/f/f_pc/f_pc_create_tag.h new file mode 100644 index 0000000000..d851f02094 --- /dev/null +++ b/include/f/f_pc/f_pc_create_tag.h @@ -0,0 +1,19 @@ + +#ifndef F_PC_CREATE_TAG_H +#define F_PC_CREATE_TAG_H + +#include "global.h" +#include "SComponent/c_tag.h" + +struct create_tag : public create_tag_class { +}; + +extern "C" { + +void fpcCtTg_ToCreateQ(create_tag_class *pTag); +void fpcCtTg_CreateQTo(create_tag_class *pTag); +int fpcCtTg_Init(create_tag *pTag, void *pUserData); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_creator.h b/include/f/f_pc/f_pc_creator.h new file mode 100644 index 0000000000..8a0a171b85 --- /dev/null +++ b/include/f/f_pc/f_pc_creator.h @@ -0,0 +1,18 @@ + +#ifndef F_PC_CREATOR_H +#define F_PC_CREATOR_H + +#include "global.h" + +struct base_process_class; + +extern "C" { + +bool fpcCt_IsCreatingByID(unsigned int id); +int fpcCt_IsDoing(base_process_class *pProc); +void fpcCt_Abort(base_process_class *pProc); +void fpcCt_Handler(void); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_delete_tag.h b/include/f/f_pc/f_pc_delete_tag.h new file mode 100644 index 0000000000..767a8e5cb9 --- /dev/null +++ b/include/f/f_pc/f_pc_delete_tag.h @@ -0,0 +1,27 @@ + +#ifndef F_PC_DELETE_TAG_H +#define F_PC_DELETE_TAG_H + +#include "global.h" +#include "SComponent/c_tag.h" + +struct layer_class; + +typedef int (*delete_tag_func)(void*); + +struct delete_tag_class : public create_tag_class { + layer_class *mpLayer; + s16 mTimer; +}; + +extern "C" { + +bool fpcDtTg_IsEmpty(delete_tag_class *pTag); +void fpcDtTg_ToDeleteQ(delete_tag_class *pTag); +void fpcDtTg_DeleteQTo(delete_tag_class *pTag); +int fpcDtTg_Do(delete_tag_class *pTag, delete_tag_func pFunc); +int fpcDtTg_Init(delete_tag_class *pTag, void *pUserData); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_deletor.h b/include/f/f_pc/f_pc_deletor.h new file mode 100644 index 0000000000..90cf677220 --- /dev/null +++ b/include/f/f_pc/f_pc_deletor.h @@ -0,0 +1,19 @@ + +#ifndef F_PC_DELETOR_H +#define F_PC_DELETOR_H + +#include "global.h" + +struct base_process_class; + +extern "C" { + +bool fpcDt_IsComplete(void); +int fpcDt_ToDeleteQ(base_process_class *pProc); +int fpcDt_ToQueue(base_process_class *pProc); +void fpcDt_Handler(void); +int fpcDt_Delete(base_process_class *pProc); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_draw_priority.h b/include/f/f_pc/f_pc_draw_priority.h new file mode 100644 index 0000000000..fab5b3e711 --- /dev/null +++ b/include/f/f_pc/f_pc_draw_priority.h @@ -0,0 +1,17 @@ + +#ifndef F_PC_DRAW_PRIORITY_H +#define F_PC_DRAW_PRIORITY_H + +struct draw_priority_class { + short mPriority; +}; + +extern "C" { + +int fpcDwPi_Get(draw_priority_class *pDwPi); +void fpcDwPi_Set(draw_priority_class *pDwPi, int p); +void fpcDwPi_Init(draw_priority_class *pDwPi, int p); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_executor.h b/include/f/f_pc/f_pc_executor.h new file mode 100644 index 0000000000..ffffa1b3dd --- /dev/null +++ b/include/f/f_pc/f_pc_executor.h @@ -0,0 +1,18 @@ + +#ifndef F_PC_EXECUTOR_H +#define F_PC_EXECUTOR_H + +#include "SComponent/c_node_iter.h" + +struct base_process_class; + +extern "C" { + +int fpcEx_ToLineQ(base_process_class *pProc); +int fpcEx_ExecuteQTo(base_process_class *pProc); +int fpcEx_ToExecuteQ(base_process_class *pProc); +void fpcEx_Handler(cNdIt_MethodFunc pFunc); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_layer.h b/include/f/f_pc/f_pc_layer.h new file mode 100644 index 0000000000..b9076b441c --- /dev/null +++ b/include/f/f_pc/f_pc_layer.h @@ -0,0 +1,54 @@ + +#ifndef F_PC_LAYER_H +#define F_PC_LAYER_H + +#include "global.h" +#include "SComponent/c_node.h" +#include "SComponent/c_tree.h" +#include "SComponent/c_tag.h" + +struct process_method_tag_class; +struct process_node_class; + +struct layer_class : public node_class { + u32 mLayerID; + node_lists_tree_class mNodeListTree; + process_node_class *mpPcNode; + node_lists_tree_class mCancelListTree; + void *mpUnk0; + short mCreatingCount; + short mDeletingCount; +}; + +extern "C" { + +void fpcLy_SetCurrentLayer(layer_class *pLayer); +layer_class * fpcLy_CurrentLayer(void); +layer_class * fpcLy_RootLayer(void); +layer_class * fpcLy_Layer(unsigned int id); +layer_class * fpcLy_Search(unsigned int id); +void fpcLy_Regist(layer_class *pLayer); + +void fpcLy_CreatedMesg(layer_class *pLayer); +void fpcLy_CreatingMesg(layer_class *pLayer); +void fpcLy_DeletedMesg(layer_class *pLayer); +void fpcLy_DeletingMesg(layer_class *pLayer); +int fpcLy_IsCreatingMesg(layer_class *pLayer); +int fpcLy_IsDeletingMesg(layer_class *pLayer); + +void fpcLy_IntoQueue(layer_class *pLayer, int treeListIdx, create_tag_class *pTag, int idx); +void fpcLy_ToQueue(layer_class *pLayer, int treeListIdx, create_tag_class *pTag); +void fpcLy_QueueTo(layer_class *pLayer, create_tag_class *pTag); + +void fpcLy_Cancel(layer_class *pLayer); +int fpcLy_CancelMethod(layer_class *pLayer); + +void fpcLy_CancelQTo(process_method_tag_class *pMthd); +void fpcLy_ToCancelQ(layer_class *pLayer, process_method_tag_class *pMthd); + +void fpcLy_Create(layer_class *pLayer, void *pPcNode, node_list_class *pLists, int listNum); +void fpcLy_Delete(layer_class *pLayer); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_layer_tag.h b/include/f/f_pc/f_pc_layer_tag.h new file mode 100644 index 0000000000..137deb040c --- /dev/null +++ b/include/f/f_pc/f_pc_layer_tag.h @@ -0,0 +1,16 @@ + +#ifndef F_PC_LAYER_TAG_H +#define F_PC_LAYER_TAG_H + +#include "global.h" +#include "SComponent/c_tag.h" + +struct layer_class; + +struct layer_management_tag_class : public create_tag_class { + layer_class *mpLayer; + s16 mNodeListID; + s16 mNodeListIdx; +}; + +#endif diff --git a/include/f/f_pc/f_pc_leaf.h b/include/f/f_pc/f_pc_leaf.h new file mode 100644 index 0000000000..5d31ecf2cb --- /dev/null +++ b/include/f/f_pc/f_pc_leaf.h @@ -0,0 +1,28 @@ + +#ifndef F_PC_LEAF_H +#define F_PC_LEAF_H + +#include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_draw_priority.h" +#include "f/f_pc/f_pc_method.h" + +struct leafdraw_method_class : public process_method_class { + process_method_func mpDrawFunc; +}; + +struct leafdraw_class : public base_process_class { + leafdraw_method_class *mpDrawMtd; + u8 mbUnk0; + u8 mbUnk1; + draw_priority_class mDwPi; +}; + +extern "C" { + +int fpcLf_GetPriority(leafdraw_class *pLeaf); +int fpcLf_DrawMethod(leafdraw_method_class *pMthd, void *pUserData); +int fpcLf_Draw(leafdraw_class *pMthd); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_line_iter.h b/include/f/f_pc/f_pc_line_iter.h new file mode 100644 index 0000000000..1373bb3217 --- /dev/null +++ b/include/f/f_pc/f_pc_line_iter.h @@ -0,0 +1,13 @@ + +#ifndef F_PC_LINE_ITER_H +#define F_PC_LINE_ITER_H + +#include "SComponent/c_node_iter.h" + +extern "C" { + +void fpcLnIt_Queue(cNdIt_MethodFunc pFunc); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_line_tag.h b/include/f/f_pc/f_pc_line_tag.h new file mode 100644 index 0000000000..8ee5d49e85 --- /dev/null +++ b/include/f/f_pc/f_pc_line_tag.h @@ -0,0 +1,20 @@ + +#ifndef F_PC_LINE_TAG_H +#define F_PC_LINE_TAG_H + +#include "SComponent/c_tag.h" + +struct line_tag : public create_tag_class { + int mLineListID; +}; + +extern "C" { + +int fpcLnTg_Move(line_tag *pLineTag, int newLineListID); +void fpcLnTg_QueueTo(line_tag *pLineTag); +int fpcLnTg_ToQueue(line_tag *pLineTag, int lineListID); +void fpcLnTg_Init(line_tag *pLineTag, void *pData); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_load.h b/include/f/f_pc/f_pc_load.h new file mode 100644 index 0000000000..8989ff6a01 --- /dev/null +++ b/include/f/f_pc/f_pc_load.h @@ -0,0 +1,16 @@ + +#ifndef F_PC_LOAD_H +#define F_PC_LOAD_H + +#include "global.h" + +extern "C" { + +bool fpcLd_Use(u16 procName); +int fpcLd_IsLoaded(u16 procName); +void fpcLd_Free(u16 procName); +int fpcLd_Load(u16 procName); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_method.h b/include/f/f_pc/f_pc_method.h new file mode 100644 index 0000000000..6ff4ab121c --- /dev/null +++ b/include/f/f_pc/f_pc_method.h @@ -0,0 +1,24 @@ + +#ifndef F_PC_METHOD_H +#define F_PC_METHOD_H + +typedef int (*process_method_func)(void *); + +struct process_method_class { + process_method_func mpCreateFunc; + process_method_func mpDeleteFunc; + process_method_func mpExecuteFunc; + process_method_func mpIsDeleteFunc; +}; + +extern "C" { + +int fpcMtd_Method(process_method_func pFunc, void *pUserData); +int fpcMtd_Execute(process_method_class *pMthd, void *pUserData); +int fpcMtd_IsDelete(process_method_class *pMthd, void *pUserData); +int fpcMtd_Delete(process_method_class *pMthd, void *pUserData); +int fpcMtd_Create(process_method_class *pMthd, void *pUserData); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_method_iter.h b/include/f/f_pc/f_pc_method_iter.h new file mode 100644 index 0000000000..4cabf574da --- /dev/null +++ b/include/f/f_pc/f_pc_method_iter.h @@ -0,0 +1,13 @@ + +#ifndef F_PC_METHOD_ITER_H +#define F_PC_METHOD_ITER_H + +#include "SComponent/c_list_iter.h" + +extern "C" { + +void fpcMtdIt_Method(node_list_class *pList, cNdIt_MethodFunc pMethod); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_method_tag.h b/include/f/f_pc/f_pc_method_tag.h new file mode 100644 index 0000000000..dd979ab33f --- /dev/null +++ b/include/f/f_pc/f_pc_method_tag.h @@ -0,0 +1,21 @@ + +#ifndef F_PC_METHOD_TAG_H +#define F_PC_METHOD_TAG_H + +#include "SComponent/c_tag.h" + +typedef int (*process_method_tag_func)(void *); + +struct process_method_tag_class : public create_tag_class { + process_method_tag_func mpFunc; + void *mpMthdData; +}; + +extern "C" { + +void fpcMtdTg_MethodQTo(process_method_tag_class *pMthd); +int fpcMtdTg_Init(process_method_tag_class *pMthd, process_method_tag_func pFunc, void *pMthdData); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_node.h b/include/f/f_pc/f_pc_node.h new file mode 100644 index 0000000000..9c840127a5 --- /dev/null +++ b/include/f/f_pc/f_pc_node.h @@ -0,0 +1,23 @@ + +#ifndef F_PC_NODE_H +#define F_PC_NODE_H + +#include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_method.h" +#include "f/f_pc/f_pc_layer.h" + +struct process_node_class : public base_process_class { + process_method_class *mpNodeMtd; + layer_class mLayer; + node_list_class mLayerNodeLists[16]; + u8 mUnk0; +}; + +extern "C" { + +int fpcNd_Create(process_node_class *pNode); +bool fpcNd_IsDeleteTiming(void); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_priority.h b/include/f/f_pc/f_pc_priority.h new file mode 100644 index 0000000000..ce6cf40799 --- /dev/null +++ b/include/f/f_pc/f_pc_priority.h @@ -0,0 +1,32 @@ + +#ifndef F_PC_PRIORITY_H +#define F_PC_PRIORITY_H + +#include "global.h" +#include "SComponent/c_tag.h" +#include "f/f_pc/f_pc_method_tag.h" + +struct process_priority_class : public create_tag_class { + process_method_tag_class mMtdTag; + struct { + u32 mLayer; + u16 mListID; + u16 mListPrio; + } a, b; +}; + +extern "C" { + +int fpcPi_IsInQueue(process_priority_class *pProc); +int fpcPi_QueueTo(process_priority_class *pProc); +int fpcPi_ToQueue(process_priority_class *pProc); +process_priority_class * fpcPi_GetFromQueue(void); +int fpcPi_Delete(process_priority_class *pProc); +int fpcPi_IsNormal(process_priority_class *pProc); +int fpcPi_Change(process_priority_class *pProc, unsigned int layer, unsigned short listID, unsigned short priority); +void fpcPi_Handler(void); +int fpcPi_Init(process_priority_class *pProc, void *pUserData, unsigned int layer, unsigned short listID, unsigned short priority); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_profile.h b/include/f/f_pc/f_pc_profile.h new file mode 100644 index 0000000000..da105bf003 --- /dev/null +++ b/include/f/f_pc/f_pc_profile.h @@ -0,0 +1,13 @@ + +#ifndef F_PC_PROFILE_H +#define F_PC_PROFILE_H + +#include "global.h" + +extern "C" { + +void * fpcPf_Get(s16 profileID); + +}; + +#endif diff --git a/include/f/f_pc/f_pc_searcher.h b/include/f/f_pc/f_pc_searcher.h new file mode 100644 index 0000000000..2362b90244 --- /dev/null +++ b/include/f/f_pc/f_pc_searcher.h @@ -0,0 +1,16 @@ + +#ifndef F_PC_SEARCHER_H +#define F_PC_SEARCHER_H + +#include "global.h" + +struct base_process_class; + +extern "C" { + +void * fpcSch_JudgeForPName(base_process_class *pProc, void *pUserData); +void * fpcSch_JudgeByID(base_process_class *pProc, void *pUserData); + +}; + +#endif diff --git a/include/functions.h b/include/functions.h index 9964ef5f92..31b0d05146 100644 --- a/include/functions.h +++ b/include/functions.h @@ -156,12 +156,7 @@ extern "C" { // OS extern "C" { - void OSInitMutex(void); - void OSGetArenaLo(void); - void OSGetArenaHi(void); - void OSInitAlloc(void); - void OSSetArenaLo(void); - void OSSetArenaHi(void); + void OSInitMutex(u8[24]); void OSEnableScheduler(void); void OSDisableScheduler(void); void OSCheckActiveThreads(void); @@ -178,6 +173,12 @@ extern "C" { void OSReportInit(void); void OSGetCurrentThread(void); void OSTicksToCalendarTime(void); + + u32 OSGetArenaLo(); + u32 OSGetArenaHi(); + u32 OSInitAlloc(u32 low, u32 high, int param_3); + void OSSetArenaLo(u32 param_1); + void OSSetArenaHi(u32 param_1); } // DVD diff --git a/include/global.h b/include/global.h index 3e1e96deb1..10e453b8d9 100644 --- a/include/global.h +++ b/include/global.h @@ -1,6 +1,8 @@ #ifndef _global_h_ #define _global_h_ +#define ARRAY_SIZE(o) (sizeof((o)) / sizeof(*(o))) + #include "dolphin/types.h" #include "functions.h" diff --git a/include/variables.h b/include/variables.h index 838f15c9a6..65082f66d2 100644 --- a/include/variables.h +++ b/include/variables.h @@ -81,11 +81,12 @@ extern u8 lbl_803BB498; #define _SDA2_BASE_(dummy) 0 // func_802CE138 -extern u32 lbl_803CBF70[24]; +extern void* lbl_803CBF70; // JKRHeap::__vt -extern void* lbl_80451370; // JKRHeap::sSystemHeap -extern void* lbl_80451378; // JKRHeap::sRootHeap -extern void* lbl_80451374; // JKRHeap::sCurrentHeap +class JKRHeap; +extern JKRHeap* lbl_80451370; // JKRHeap::sSystemHeap +extern JKRHeap* lbl_80451378; // JKRHeap::sRootHeap +extern JKRHeap* lbl_80451374; // JKRHeap::sCurrentHeap extern void* lbl_8045137C; // JKRHeap::mErrorHandler extern u8 lbl_804508B0[8]; // ::*fill* @@ -98,9 +99,14 @@ extern void* lbl_8045138C; // JKRHeap::mUserRamStart extern void* lbl_80451390; // JKRHeap::mUserRamEnd extern u32 lbl_80451394; // JKRHeap::mMemorySize +extern u8 lbl_80000000; +extern u32 lbl_80000028; + +#define OS_GLOBAL(T, ADDR) *((T*)((void*)ADDR)) +#define OS_GLOBAL_ADDR(T, ADDR) ((T*)((void*)ADDR)) // func_802CEB40 extern char lbl_8039CAD8[12]; // "JKRHeap.cpp" // func_802D147C -extern void* lbl_803CC0F0[4]; // JKRDisposer::__vt \ No newline at end of file +extern void* lbl_803CC0F0; // JKRDisposer::__vt \ No newline at end of file diff --git a/ldscript.lcf b/ldscript.lcf index a3f40d5548..02e1d1ac65 100644 --- a/ldscript.lcf +++ b/ldscript.lcf @@ -24,6 +24,737 @@ SECTIONS { _db_stack_end = _stack_addr; __ArenaLo = (_db_stack_addr + 0x1f) & ~0x1f; __ArenaHi = 0x81700000 ; + +/* vtables locations */ +"__vt__17mDoAud_zelAudio_c" = 0x803a2f40; +"__vt__12JAUSoundInfo" = 0x803a2f4c; +"__vt__7JUTFont" = 0x803a31f0; +"__vt__26mDoExt_3DlineMatSortPacket" = 0x803a3234; +"__vt__19mDoExt_3DlineMat1_c" = 0x803a3248; +"__vt__19mDoExt_3DlineMat0_c" = 0x803a325c; +"__vt__19mDoExt_invJntPacket" = 0x803a3270; +"__vt__15mDoExt_McaMorf2" = 0x803a3284; +"__vt__16mDoExt_McaMorfSO" = 0x803a32b0; +"__vt__15mDoExt_zelAnime" = 0x803a32dc; +"__vt__14mDoExt_McaMorf" = 0x803a32fc; +"__vt__13mDoExt_morf_c" = 0x803a3328; +"__vt__12J3DFrameCtrl" = 0x803a3354; +"__vt__73J3DMtxCalcNoAnm<27J3DMtxCalcCalcTransformMaya,24J3DMtxCalcJ3DSysInitMaya>" = 0x803a3360; +"__vt__19J3DMtxCalcNoAnmBase" = 0x803a338c; +"__vt__28mDoExt_MtxCalcAnmBlendTblOld" = 0x803a33b8; +"__vt__25mDoExt_MtxCalcAnmBlendTbl" = 0x803a33e4; +"__vt__114J3DMtxCalcAnimation<64J3DMtxCalcAnimationAdaptorDefault<27J3DMtxCalcCalcTransformMaya>,24J3DMtxCalcJ3DSysInitMaya>" = 0x803a3410; +"__vt__17J3DMtxCalcAnmBase" = 0x803a343c; +"__vt__10J3DMtxCalc" = 0x803a3468; +"__vt__11J3DUClipper" = 0x803a3498; +"__vt__21mDoDvdThd_toMainRam_c" = 0x803a34a8; +"__vt__25mDoDvdThd_mountXArchive_c" = 0x803a34b8; +"__vt__24mDoDvdThd_mountArchive_c" = 0x803a34c8; +"__vt__20mDoDvdThd_callback_c" = 0x803a34d8; +"__vt__19mDoDvdThd_command_c" = 0x803a34e8; +"__vt__24JPTraceParticleCallBack4" = 0x803a3568; +"__vt__19JPAParticleCallBack" = 0x803a357c; +"__vt__11fapGm_HIO_c" = 0x803a35a0; +"__vt__11dEvt_info_c" = 0x803a35d0; +"__vt__8cM3dGPla" = 0x803a37c0; +"__vt__15dBgS_ObjRoofChk" = 0x803a37cc; +"__vt__11dBgS_WtrChk" = 0x803a37fc; +"__vt__14dBgS_ObjGndChk" = 0x803a382c; +"__vt__15dStage_roomDt_c" = 0x803a6aac; +"__vt__16dStage_stageDt_c" = 0x803a6c20; +"__vt__11dStage_dt_c" = 0x803a6d94; +"__vt__12dDlst_base_c" = 0x803a6f88; +"__vt__28dDrawPathWithNormalPattern_c" = 0x803a6f94; +"__vt__15dRenderingMap_c" = 0x803a6fd4; +"__vt__6dMap_c" = 0x803a7030; +"__vt__15renderingAmap_c" = 0x803a70f4; +"__vt__25mDoExt_McaMorfCallBack1_c" = 0x803a71e8; +"__vt__12dCcMassS_Obj" = 0x803a71f4; +"__vt__15cCcD_DivideArea" = 0x803a7200; +"__vt__8cM3dGCyl" = 0x803a720c; +"__vt__8cM3dGAab" = 0x803a7218; +"__vt__15cCcD_DivideInfo" = 0x803a7224; +"__vt__12dCcMassS_Mng" = 0x803a7230; +"__vt__10CSTControl" = 0x803a7250; +"__vt__9STControl" = 0x803a7260; +"__vt__8cM3dGLin" = 0x803a78f8; +"__vt__8cM3dGSph" = 0x803a7904; +"__vt__16dDemo_particle_c" = 0x803a7910; +"__vt__17jmessage_tControl" = 0x803a7928; +"__vt__Q27JStudio13TCreateObject" = 0x803a7934; +"__vt__14dDemo_system_c" = 0x803a7944; +"__vt__11dDemo_fog_c" = 0x803a7994; +"__vt__13dDemo_light_c" = 0x803a79f0; +"__vt__15dDemo_ambient_c" = 0x803a7a5c; +"__vt__14dDemo_camera_c" = 0x803a7aa0; +"__vt__13dDemo_actor_c" = 0x803a7b34; +"__vt__Q27JStudio16TAdaptor_message" = 0x803a7bc0; +"__vt__Q220@unnamed@d_demo_cpp@29jstudio_tCreateObject_message" = 0x803a7be4; +"__vt__Q220@unnamed@d_demo_cpp@24jstudio_tAdaptor_message" = 0x803a7bf4; +"__vt__10J3DAnmBase" = 0x803a7c38; +"__vt__15J3DAnmTransform" = 0x803a7c48; +"__vt__18mDoExt_transAnmBas" = 0x803a7c5c; +"__vt__18J3DAnmTransformKey" = 0x803a7c70; +"__vt__11J3DTexNoAnm" = 0x803a7c84; +"__vt__18dRenderingFDAmap_c" = 0x803a7c90; +"__vt__11dDrawPath_c" = 0x803a7cf8; +"__vt__19dMenuFmapIconDisp_c" = 0x803a7d74; +"__vt__19renderingPlusDoor_c" = 0x803a7d80; +"__vt__28renderingPlusDoorAndCursor_c" = 0x803a7e24; +"__vt__16renderingDAmap_c" = 0x803a7ee0; +"__vt__15dSmplMdl_draw_c" = 0x803a82f8; +"__vt__28dPa_particleTracePcallBack_c" = 0x803a838c; +"__vt__22dPa_hermiteEcallBack_c" = 0x803a83a0; +"__vt__25dPa_gen_d_light8PcallBack" = 0x803a83c4; +"__vt__25dPa_gen_b_light8PcallBack" = 0x803a83d8; +"__vt__19dPa_light8PcallBack" = 0x803a83ec; +"__vt__19dPa_fsenthPcallBack" = 0x803a8400; +"__vt__17dPa_wbPcallBack_c" = 0x803a8414; +"__vt__17dPa_windPcallBack" = 0x803a8434; +"__vt__19dPa_simpleEcallBack" = 0x803a8448; +"__vt__22dPa_selectTexEcallBack" = 0x803a8464; +"__vt__18dPa_modelEcallBack" = 0x803a8488; +"__vt__18dPa_modelPcallBack" = 0x803a84ac; +"__vt__25dPa_gen_d_light8EcallBack" = 0x803a84c0; +"__vt__25dPa_gen_b_light8EcallBack" = 0x803a84e4; +"__vt__19dPa_light8EcallBack" = 0x803a8508; +"__vt__19dPa_followEcallBack" = 0x803a852c; +"__vt__18dPa_levelEcallBack" = 0x803a8554; +"__vt__18JPAEmitterCallBack" = 0x803a8578; +"__vt__21dPa_setColorEcallBack" = 0x803a8594; +"__vt__18dDlst_shadowPoly_c" = 0x803a8dcc; +"__vt__22dDlst_shadowRealPoly_c" = 0x803a8ddc; +"__vt__14ShdwDrawPoly_c" = 0x803a8dec; +"__vt__18dDlst_effectLine_c" = 0x803a8df8; +"__vt__10J2DAnmBase" = 0x803a8e04; +"__vt__11dDlst_blo_c" = 0x803a8e14; +"__vt__10dDlst_2D_c" = 0x803a8e20; +"__vt__12dDlst_2DMt_c" = 0x803a8e2c; +"__vt__11dDlst_2Dm_c" = 0x803a8e38; +"__vt__11dDlst_2DM_c" = 0x803a8e44; +"__vt__12dDlst_2DT2_c" = 0x803a8e5c; +"__vt__11dDlst_2DT_c" = 0x803a8e68; +"__vt__15dDlst_2DPoint_c" = 0x803a8e74; +"__vt__14dDlst_2DQuad_c" = 0x803a8e80; +"__vt__13dDlst_2DTri_c" = 0x803a8e8c; +"__vt__19dKankyo_evil_Packet" = 0x803a9ac0; +"__vt__18dKankyo_mud_Packet" = 0x803a9ad4; +"__vt__20dKankyo_odour_Packet" = 0x803a9ae8; +"__vt__21dKankyo_vrkumo_Packet" = 0x803a9afc; +"__vt__20dKankyo_housi_Packet" = 0x803a9b10; +"__vt__20dKankyo_cloud_Packet" = 0x803a9b24; +"__vt__19dKankyo_star_Packet" = 0x803a9b38; +"__vt__19dKankyo_snow_Packet" = 0x803a9b4c; +"__vt__19dKankyo_rain_Packet" = 0x803a9b60; +"__vt__22dKankyo_sunlenz_Packet" = 0x803a9b74; +"__vt__18dKankyo_sun_Packet" = 0x803a9b88; +"__vt__19dAttDraw_CallBack_c" = 0x803a9c48; +"__vt__15dAttDrawParam_c" = 0x803a9c54; +"__vt__11dAttParam_c" = 0x803a9c60; +"__vt__4dBgS" = 0x803ab608; +"__vt__4cBgS" = 0x803ab61c; +"__vt__11cBgS_ChkElm" = 0x803ab630; +"__vt__9dBgS_Acch" = 0x803ab640; +"__vt__12dBgS_AcchCir" = 0x803ab664; +"__vt__8dBgS_Chk" = 0x803ab670; +"__vt__18dBgS_CamGndChk_Wtr" = 0x803ab688; +"__vt__14dBgS_CamGndChk" = 0x803ab6b8; +"__vt__18dBgS_ObjGndChk_All" = 0x803ab6e8; +"__vt__18dBgS_ObjGndChk_Spl" = 0x803ab718; +"__vt__18dBgS_ObjGndChk_Wtr" = 0x803ab748; +"__vt__11dBgS_GndChk" = 0x803ab778; +"__vt__15dBgS_GrpPassChk" = 0x803ab7a8; +"__vt__15cBgS_GrpPassChk" = 0x803ab7b4; +"__vt__16dBgS_HorseLinChk" = 0x803ab7c0; +"__vt__15dBgS_RopeLinChk" = 0x803ab7f0; +"__vt__20dBgS_BoomerangLinChk" = 0x803ab820; +"__vt__16dBgS_ArrowLinChk" = 0x803ab850; +"__vt__15dBgS_BombLinChk" = 0x803ab880; +"__vt__15dBgS_LinkLinChk" = 0x803ab8b0; +"__vt__14dBgS_ObjLinChk" = 0x803ab8e0; +"__vt__21dBgS_CamLinChk_NorWtr" = 0x803ab910; +"__vt__14dBgS_CamLinChk" = 0x803ab940; +"__vt__11dBgS_LinChk" = 0x803ab970; +"__vt__16dBgS_MoveBgActor" = 0x803ab9a0; +"__vt__11dBgS_SphChk" = 0x803ab9c8; +"__vt__14dBgS_SplGrpChk" = 0x803aba08; +"__vt__16dBgS_PolyPassChk" = 0x803aba38; +"__vt__16cBgS_PolyPassChk" = 0x803aba44; +"__vt__12dBgS_RoofChk" = 0x803aba50; +"__vt__4dBgW" = 0x803aba80; +"__vt__8cM3dGTri" = 0x803abb84; +"__vt__11cBgW_GrpElm" = 0x803abb90; +"__vt__11cBgW_TriElm" = 0x803abb9c; +"__vt__4cBgW" = 0x803abba8; +"__vt__13cBgW_NodeTree" = 0x803abcac; +"__vt__11cBgW_RwgElm" = 0x803abcb8; +"__vt__9dBgW_Base" = 0x803abcc8; +"__vt__9cBgW_BgId" = 0x803abdb8; +"__vt__8dBgWKCol" = 0x803abdc8; +"__vt__6dBgWSv" = 0x803abeb8; +"__vt__8dCcD_Sph" = 0x803abfc0; +"__vt__8dCcD_Cyl" = 0x803ac050; +"__vt__8dCcD_Tri" = 0x803ac0e0; +"__vt__8dCcD_Cps" = 0x803ac170; +"__vt__12dCcD_GObjInf" = 0x803ac200; +"__vt__11dCcD_GObjCo" = 0x803ac22c; +"__vt__11dCcD_GObjTg" = 0x803ac238; +"__vt__11dCcD_GObjAt" = 0x803ac244; +"__vt__22dCcD_GAtTgCoCommonBase" = 0x803ac250; +"__vt__12cCcD_GObjInf" = 0x803ac25c; +"__vt__8cCcD_Obj" = 0x803ac288; +"__vt__10cCcD_ObjCo" = 0x803ac2a8; +"__vt__10cCcD_ObjTg" = 0x803ac2b4; +"__vt__10cCcD_ObjAt" = 0x803ac2c0; +"__vt__18cCcD_ObjCommonBase" = 0x803ac2cc; +"__vt__14cCcD_ObjHitInf" = 0x803ac2d8; +"__vt__9dCcD_Stts" = 0x803ac2e4; +"__vt__10dCcD_GStts" = 0x803ac310; +"__vt__10cCcD_GStts" = 0x803ac31c; +"__vt__4dCcS" = 0x803ac3e4; +"__vt__11dCamSetup_c" = 0x803ac500; +"__vt__11dCamParam_c" = 0x803ac50c; +"__vt__9dCstick_c" = 0x803ac518; +"__vt__6dMdl_c" = 0x803af978; +"__vt__16daPy_frameCtrl_c" = 0x803b2e20; +"__vt__8dEyeHL_c" = 0x803b2e80; +"__vt__16dBgS_LinkRoofChk" = 0x803b2ec8; +"__vt__15dBgS_LinkGndChk" = 0x803b2ef8; +"__vt__13dBgS_LinkAcch" = 0x803b2f28; +"__vt__9daPy_py_c" = 0x803b2f70; +"__vt__12daAlinkHIO_c" = 0x803b321c; +"__vt__9daAlink_c" = 0x803b32b8; +"__vt__16daAlink_matAnm_c" = 0x803b3564; +"__vt__15daAlink_sight_c" = 0x803b3580; +"__vt__20daAlink_lockCursor_c" = 0x803b3590; +"__vt__14daAlink_blur_c" = 0x803b35a0; +"__vt__29dAlink_bottleWaterPcallBack_c" = 0x803b35b4; +"__vt__12dBgS_ObjAcch" = 0x803b35c8; +"__vt__Q29daAlink_c14hsChainShape_c" = 0x803b35ec; +"__vt__12daItemBase_c" = 0x803b3610; +"__vt__18daNpcF_ActorMngr_c" = 0x803b3864; +"__vt__20daNpcF_MoveBgActor_c" = 0x803b3870; +"__vt__8daNpcF_c" = 0x803b38d8; +"__vt__15daNpcF_MatAnm_c" = 0x803b3920; +"__vt__23daBaseNpc_moveBgActor_c" = 0x803b3948; +"__vt__11daBaseNpc_c" = 0x803b39ac; +"__vt__18daBaseNpc_lookat_c" = 0x803b3a14; +"__vt__16daBaseNpc_path_c" = 0x803b3a50; +"__vt__18daBaseNpc_matAnm_c" = 0x803b3a5c; +"__vt__18daBaseNpc_acMngr_c" = 0x803b3a6c; +"__vt__8daNpcT_c" = 0x803b3a78; +"__vt__22daNpcT_MotionSeqMngr_c" = 0x803b3b3c; +"__vt__18daNpcT_ActorMngr_c" = 0x803b3b48; +"__vt__15daNpcT_JntAnm_c" = 0x803b3b54; +"__vt__16daNpcT_Hermite_c" = 0x803b3b60; +"__vt__15daNpcT_MatAnm_c" = 0x803b3b6c; +"__vt__17daNpcCd_HIO_Jnt_c" = 0x803b6184; +"__vt__19daNpcCd_HIO_Child_c" = 0x803b6190; +"__vt__13daNpcCd_HIO_c" = 0x803b619c; +"__vt__18fOpAcm_HIO_entry_c" = 0x803b61a8; +"__vt__14mDoHIO_entry_c" = 0x803b61b4; +"__vt__21daNpcCd2_HIO_MChild_c" = 0x803b9d54; +"__vt__18daNpcCd2_HIO_Jnt_c" = 0x803b9d60; +"__vt__21daNpcCd2_HIO_WChild_c" = 0x803b9d6c; +"__vt__14daNpcCd2_HIO_c" = 0x803b9d78; +"__vt__8daItem_c" = 0x803b9fa4; +"__vt__9dInsect_c" = 0x803ba078; +"__vt__14daObj_SSBase_c" = 0x803ba088; +"__vt__18daPy_sightPacket_c" = 0x803ba14c; +"__vt__14dBgS_CamSphChk" = 0x803ba798; +"__vt__14d2DBSplinePath" = 0x803ba7ec; +"__vt__16dFile_select3D_c" = 0x803bb35c; +"__vt__17dDlst_FileSel3m_c" = 0x803bb368; +"__vt__17dDlst_FileSelYn_c" = 0x803bb378; +"__vt__17dDlst_FileSelCp_c" = 0x803bb388; +"__vt__17dDlst_FileSelDt_c" = 0x803bb398; +"__vt__15dDlst_FileSel_c" = 0x803bb3a8; +"__vt__15J2DAnmTransform" = 0x803bb3b8; +"__vt__10JUTNameTab" = 0x803bb3dc; +"__vt__14dFile_select_c" = 0x803bb3e8; +"__vt__9dFs_HIO_c" = 0x803bb400; +"__vt__16dDlst_FileWarn_c" = 0x803bb44c; +"__vt__15dFile_warning_c" = 0x803bb480; +"__vt__16dDlst_FileInfo_c" = 0x803bb588; +"__vt__12dFile_info_c" = 0x803bb598; +"__vt__19dDlst_BrightCheck_c" = 0x803bb5ec; +"__vt__14dBrightCheck_c" = 0x803bb5fc; +"__vt__8dScope_c" = 0x803bb6b4; +"__vt__11dMeterSub_c" = 0x803bb6d4; +"__vt__16dSelect_cursor_c" = 0x803bb78c; +"__vt__19dSelect_cursorHIO_c" = 0x803bb7a8; +"__vt__9dSi_HIO_c" = 0x803bb7b8; +"__vt__15dShopItemCtrl_c" = 0x803bb888; +"__vt__13dShopSystem_c" = 0x803bba7c; +"__vt__24dDlst_GameOverScrnDraw_c" = 0x803bbd68; +"__vt__12dMenu_save_c" = 0x803bbd78; +"__vt__10dGov_HIO_c" = 0x803bbd90; +"__vt__24dDlst_Gameover_CAPTURE_c" = 0x803bbda8; +"__vt__18dScnKy_env_light_c" = 0x803bc13c; +"__vt__19dDlst_KanteraIcon_c" = 0x803bc218; +"__vt__15dKantera_icon_c" = 0x803bc228; +"__vt__19dMenu_Calibration_c" = 0x803bc364; +"__vt__15dMenu_Collect_c" = 0x803bc75c; +"__vt__20dMenu_Collect2DTop_c" = 0x803bc768; +"__vt__17dMenu_Collect3D_c" = 0x803bc790; +"__vt__17dMenu_Collect2D_c" = 0x803bc7c4; +"__vt__15dMenu_DmapMap_c" = 0x803bcae0; +"__vt__20dMenu_StageMapCtrl_c" = 0x803bcaec; +"__vt__12dMenu_Dmap_c" = 0x803bcb10; +"__vt__14dMenu_DmapBg_c" = 0x803bcb38; +"__vt__19dMenu_DmapMapCtrl_c" = 0x803bcd74; +"__vt__15renderingDmap_c" = 0x803bce68; +"__vt__16dMenuMapCommon_c" = 0x803bd02c; +"__vt__15dMenu_Fishing_c" = 0x803bd074; +"__vt__12dMenu_Fmap_c" = 0x803bd664; +"__vt__9dMf_HIO_c" = 0x803bd670; +"__vt__15dMenu_FmapMap_c" = 0x803bd680; +"__vt__15renderingFmap_c" = 0x803bd6e8; +"__vt__17dMenu_Fmap2DTop_c" = 0x803bd750; +"__vt__18dMenu_Fmap2DBack_c" = 0x803bd760; +"__vt__14dMenu_Insect_c" = 0x803bd8ac; +"__vt__19dMenu_ItemExplain_c" = 0x803bd9f4; +"__vt__14dMenu_Letter_c" = 0x803bdb8c; +"__vt__14dMenu_Option_c" = 0x803bde54; +"__vt__12dMenu_Ring_c" = 0x803bdf5c; +"__vt__16dDlst_MenuSave_c" = 0x803be764; +"__vt__23dDlst_MenuSaveExplain_c" = 0x803be774; +"__vt__9dMs_HIO_c" = 0x803be7cc; +"__vt__13dMenu_Skill_c" = 0x803be8c0; +"__vt__10dMw_DHIO_c" = 0x803be8e0; +"__vt__9dMw_HIO_c" = 0x803be8ec; +"__vt__20dDlst_MENU_CAPTURE_c" = 0x803bf0d4; +"__vt__18dMeter_cursorHIO_c" = 0x803bf0e8; +"__vt__16dMeter_fmapHIO_c" = 0x803bf0f4; +"__vt__19dMeter_mapIconHIO_c" = 0x803bf100; +"__vt__16dMeter_ringHIO_c" = 0x803bf10c; +"__vt__16dMeter_drawHIO_c" = 0x803bf118; +"__vt__25dMeter_drawLightDropHIO_c" = 0x803bf124; +"__vt__24dMeter_drawMiniGameHIO_c" = 0x803bf130; +"__vt__25dMeter_drawEmpButtonHIO_c" = 0x803bf13c; +"__vt__21dMeter_drawSkillHIO_c" = 0x803bf148; +"__vt__27dMeter_drawCalibrationHIO_c" = 0x803bf154; +"__vt__22dMeter_drawInsectHIO_c" = 0x803bf160; +"__vt__23dMeter_drawFishingHIO_c" = 0x803bf16c; +"__vt__22dMeter_drawLetterHIO_c" = 0x803bf178; +"__vt__22dMeter_drawOptionHIO_c" = 0x803bf184; +"__vt__23dMeter_drawCollectHIO_c" = 0x803bf190; +"__vt__16dMeter_menuHIO_c" = 0x803bf19c; +"__vt__14dMeterButton_c" = 0x803bf258; +"__vt__14dMeterHaihai_c" = 0x803bf268; +"__vt__15dMeterHakusha_c" = 0x803bf2b8; +"__vt__11dMeterMap_c" = 0x803bf2f8; +"__vt__14dMeterString_c" = 0x803bf308; +"__vt__13dMeter2Draw_c" = 0x803bf750; +"__vt__13dMeter2Info_c" = 0x803bfa1c; +"__vt__10COutFont_c" = 0x803bfdc4; +"__vt__13COutFontSet_c" = 0x803bfde8; +"__vt__35jmessage_string_tRenderingProcessor" = 0x803c0908; +"__vt__34jmessage_string_tSequenceProcessor" = 0x803c0948; +"__vt__33jmessage_string_tMeasureProcessor" = 0x803c09a0; +"__vt__24jmessage_string_tControl" = 0x803c09e0; +"__vt__26jmessage_string_tReference" = 0x803c09ec; +"__vt__28jmessage_tRenderingProcessor" = 0x803c09fc; +"__vt__27jmessage_tSequenceProcessor" = 0x803c0a3c; +"__vt__26jmessage_tMeasureProcessor" = 0x803c0a94; +"__vt__19jmessage_tReference" = 0x803c0ad4; +"__vt__16dMsgObject_HIO_c" = 0x803c0bd8; +"__vt__20dMsgObject_HowlHIO_c" = 0x803c0be4; +"__vt__10dMsgUnit_c" = 0x803c0bf0; +"__vt__17dMsgScrn3Select_c" = 0x803c0ce8; +"__vt__15dMsgScrnArrow_c" = 0x803c0cf8; +"__vt__14dMsgScrnBase_c" = 0x803c0d58; +"__vt__14dMsgScrnBoss_c" = 0x803c0de8; +"__vt__17dMsgScrnExplain_c" = 0x803c0f6c; +"__vt__14dMsgScrnItem_c" = 0x803c0f78; +"__vt__14dMsgScrnHowl_c" = 0x803c1190; +"__vt__16dMsgScrnJimaku_c" = 0x803c11e8; +"__vt__16dMsgScrnKanban_c" = 0x803c1240; +"__vt__15dMsgScrnLight_c" = 0x803c1298; +"__vt__19dMsgScrnLight_HIO_c" = 0x803c12a4; +"__vt__15dMsgScrnPlace_c" = 0x803c12e8; +"__vt__15dMsgScrnStaff_c" = 0x803c1370; +"__vt__14dMsgScrnTalk_c" = 0x803c13c8; +"__vt__14dMsgScrnTree_c" = 0x803c1420; +"__vt__16dMsgStringBase_c" = 0x803c1478; +"__vt__12dMsgString_c" = 0x803c1498; +"__vt__10dMsgFlow_c" = 0x803c1f40; +"__vt__14dDlst_NameIN_c" = 0x803c2b38; +"__vt__7dName_c" = 0x803c2b64; +"__vt__9dNm_HIO_c" = 0x803c2b7c; +"__vt__16dNpcLib_lookat_c" = 0x803c2b88; +"__vt__15dOvlpFd2_dlst_c" = 0x803c2d5c; +"__vt__15dOvlpFd3_dlst_c" = 0x803c2ddc; +"__vt__16dDlst_snapShot_c" = 0x803c2dec; +"__vt__10JSUIosBase" = 0x803c2df8; +"__vt__8CPaneMgr" = 0x803c2e04; +"__vt__17CPaneMgrAlphaMorf" = 0x803c2e18; +"__vt__13CPaneMgrAlpha" = 0x803c2e28; +"__vt__10dLog_HIO_c" = 0x803c300c; +"__vt__17dScnName_camera_c" = 0x803c3140; +"__vt__9dSn_HIO_c" = 0x803c314c; +"__vt__22dScnPly_env_debugHIO_c" = 0x803c3224; +"__vt__22dScnPly_env_otherHIO_c" = 0x803c3230; +"__vt__17dScnPly_env_HIO_c" = 0x803c323c; +"__vt__17dScnPly_reg_HIO_c" = 0x803c3248; +"__vt__21dScnPly_preLoad_HIO_c" = 0x803c3254; +"__vt__22dSvBit_childOtherHIO_c" = 0x803c3300; +"__vt__26dSvBit_childTransformHIO_c" = 0x803c330c; +"__vt__25dSvBit_childDarknessHIO_c" = 0x803c3318; +"__vt__29dSvBit_childTbPerfectionHIO_c" = 0x803c3324; +"__vt__26dSvBit_childItOneZoneHIO_c" = 0x803c3330; +"__vt__23dSvBit_childItZoneHIO_c" = 0x803c333c; +"__vt__26dSvBit_childItDungeonHIO_c" = 0x803c3348; +"__vt__29dSvBit_childItPerfectionHIO_c" = 0x803c3354; +"__vt__26dSvBit_childSwOneZoneHIO_c" = 0x803c3360; +"__vt__23dSvBit_childSwZoneHIO_c" = 0x803c336c; +"__vt__26dSvBit_childSwDungeonHIO_c" = 0x803c3378; +"__vt__29dSvBit_childSwPerfectionHIO_c" = 0x803c3384; +"__vt__25dSvBit_childTreasureHIO_c" = 0x803c3390; +"__vt__21dSvBit_childItemHIO_c" = 0x803c339c; +"__vt__23dSvBit_childSwitchHIO_c" = 0x803c33a8; +"__vt__12dSvBit_HIO_c" = 0x803c33b4; +"__vt__21dDlst_TimerScrnDraw_c" = 0x803c3420; +"__vt__20DynamicModuleControl" = 0x803c34c0; +"__vt__24DynamicModuleControlBase" = 0x803c34f4; +"__vt__12cCcD_SphAttr" = 0x803c3540; +"__vt__12cCcD_CylAttr" = 0x803c35a4; +"__vt__12cCcD_CpsAttr" = 0x803c3608; +"__vt__12cCcD_TriAttr" = 0x803c366c; +"__vt__14cCcD_ShapeAttr" = 0x803c36d0; +"__vt__9cCcD_Stts" = 0x803c3728; +"__vt__4cCcS" = 0x803c3748; +"__vt__8cBgS_Chk" = 0x803c3f80; +"__vt__11cBgS_GndChk" = 0x803c3f90; +"__vt__11cBgS_LinChk" = 0x803c3fa8; +"__vt__13cBgS_ShdwDraw" = 0x803c3fc0; +"__vt__13cBgS_PolyInfo" = 0x803c3fd0; +"__vt__8cM3dGCir" = 0x803c3fe0; +"__vt__8cM2dGCir" = 0x803c3fec; +"__vt__8cM3dGCps" = 0x803c3ff8; +"__vt__10JFWDisplay" = 0x803c40a0; +"__vt__12JPAFieldBase" = 0x803c44cc; +"__vt__12JPAFieldSpin" = 0x803c44e0; +"__vt__12JPAFieldDrag" = 0x803c44f4; +"__vt__14JPAFieldRandom" = 0x803c4508; +"__vt__18JPAFieldConvection" = 0x803c451c; +"__vt__14JPAFieldVortex" = 0x803c4530; +"__vt__14JPAFieldNewton" = 0x803c4544; +"__vt__14JPAFieldMagnet" = 0x803c4558; +"__vt__11JPAFieldAir" = 0x803c456c; +"__vt__15JPAFieldGravity" = 0x803c4580; +"__vt__10JPATexture" = 0x803c4598; +"__vt__Q26JStage6TActor" = 0x803c45a8; +"__vt__Q26JStage13TAmbientLight" = 0x803c4638; +"__vt__Q26JStage7TCamera" = 0x803c4680; +"__vt__Q26JStage4TFog" = 0x803c4718; +"__vt__Q26JStage6TLight" = 0x803c4778; +"__vt__Q26JStage7TObject" = 0x803c47e8; +"__vt__Q26JStage7TSystem" = 0x803c4828; +"__vt__Q37JStudio3ctb6TParse" = 0x803c4878; +"__vt__Q37JGadget6binary19TParse_header_block" = 0x803c488c; +"__vt__Q37JStudio3ctb8TFactory" = 0x803c48a0; +"__vt__Q37JStudio3ctb8TControl" = 0x803c48b4; +"__vt__Q37JStudio3ctb14TObject_TxyzRy" = 0x803c48c0; +"__vt__Q37JStudio3ctb7TObject" = 0x803c48d0; +"__vt__Q27JStudio22TFunctionValue_hermite" = 0x803c48e0; +"__vt__Q27JStudio29TFunctionValue_list_parameter" = 0x803c4900; +"__vt__Q27JStudio19TFunctionValue_list" = 0x803c4920; +"__vt__Q27JStudio25TFunctionValue_transition" = 0x803c4940; +"__vt__Q27JStudio23TFunctionValue_constant" = 0x803c4960; +"__vt__Q27JStudio24TFunctionValue_composite" = 0x803c4980; +"__vt__Q27JStudio14TFunctionValue" = 0x803c49a0; +"__vt__Q37JStudio3fvb6TParse" = 0x803c4a1c; +"__vt__Q37JStudio3fvb8TFactory" = 0x803c4a30; +"__vt__Q37JStudio3fvb8TControl" = 0x803c4a44; +"__vt__Q37JStudio3fvb15TObject_hermite" = 0x803c4a50; +"__vt__Q37JStudio3fvb22TObject_list_parameter" = 0x803c4a60; +"__vt__Q37JStudio3fvb12TObject_list" = 0x803c4a70; +"__vt__Q37JStudio3fvb18TObject_transition" = 0x803c4a80; +"__vt__Q37JStudio3fvb16TObject_constant" = 0x803c4a90; +"__vt__Q37JStudio3fvb17TObject_composite" = 0x803c4aa0; +"__vt__Q37JStudio3fvb7TObject" = 0x803c4ab0; +"__vt__Q27JStudio6TParse" = 0x803c4ac0; +"__vt__Q27JStudio8TFactory" = 0x803c4ae0; +"__vt__Q27JStudio8TControl" = 0x803c4af4; +"__vt__Q27JStudio13TObject_sound" = 0x803c533c; +"__vt__Q27JStudio14TAdaptor_sound" = 0x803c535c; +"__vt__Q27JStudio16TObject_particle" = 0x803c53ac; +"__vt__Q27JStudio17TAdaptor_particle" = 0x803c53cc; +"__vt__Q27JStudio15TObject_message" = 0x803c5418; +"__vt__Q27JStudio13TObject_light" = 0x803c545c; +"__vt__Q27JStudio14TAdaptor_light" = 0x803c547c; +"__vt__Q27JStudio11TObject_fog" = 0x803c54a4; +"__vt__Q27JStudio12TAdaptor_fog" = 0x803c54c4; +"__vt__Q27JStudio14TObject_camera" = 0x803c54e4; +"__vt__Q27JStudio15TAdaptor_camera" = 0x803c5504; +"__vt__Q27JStudio20TObject_ambientLight" = 0x803c5540; +"__vt__Q27JStudio21TAdaptor_ambientLight" = 0x803c5560; +"__vt__Q27JStudio13TObject_actor" = 0x803c5580; +"__vt__Q27JStudio14TAdaptor_actor" = 0x803c55a0; +"__vt__Q27JStudio7TObject" = 0x803c55f0; +"__vt__Q27JStudio8TAdaptor" = 0x803c5610; +"__vt__Q37JStudio14TVariableValue13TOutput_none_" = 0x803c5630; +"__vt__Q37JStudio14TVariableValue7TOutput" = 0x803c5640; +"__vt__Q37JStudio28@unnamed@jstudio_object_cpp@54TOutputVariableValue_BOOL_" = 0x803c5650; +"__vt__Q37JStudio28@unnamed@jstudio_object_cpp@57TOutputVariableValue_BOOL_" = 0x803c5660; +"__vt__Q37JStudio28@unnamed@jstudio_object_cpp@54TOutputVariableValue_BOOL_" = 0x803c5670; +"__vt__Q37JStudio28@unnamed@jstudio_object_cpp@55TOutputVariableValue_BOOL_" = 0x803c5680; +"__vt__Q37JStudio28@unnamed@jstudio_object_cpp@54TOutputVariableValue_BOOL_" = 0x803c5690; +"__vt__Q37JStudio3stb6TParse" = 0x803c56a0; +"__vt__Q37JStudio3stb8TFactory" = 0x803c56c0; +"__vt__Q37JStudio3stb8TControl" = 0x803c56d4; +"__vt__Q37JStudio3stb15TObject_control" = 0x803c56e0; +"__vt__Q37JStudio3stb7TObject" = 0x803c5700; +"__vt__Q214JStudio_JStage13TCreateObject" = 0x803c5720; +"__vt__Q314JStudio_JStage14TAdaptor_actor26TVVOutput_ANIMATION_FRAME_" = 0x803c57b4; +"__vt__Q214JStudio_JStage14TAdaptor_actor" = 0x803c57c4; +"__vt__Q214JStudio_JStage81TVariableValueOutput_object_" = 0x803c5864; +"__vt__Q214JStudio_JStage21TAdaptor_ambientLight" = 0x803c5888; +"__vt__Q214JStudio_JStage15TAdaptor_camera" = 0x803c5908; +"__vt__Q214JStudio_JStage83TVariableValueOutput_object_" = 0x803c5980; +"__vt__Q214JStudio_JStage12TAdaptor_fog" = 0x803c59d0; +"__vt__Q214JStudio_JStage77TVariableValueOutput_object_" = 0x803c5a10; +"__vt__Q314JStudio_JStage14TAdaptor_light20TVVOutput_direction_" = 0x803c5a30; +"__vt__Q214JStudio_JStage14TAdaptor_light" = 0x803c5a40; +"__vt__Q215JStudio_JAudio213TCreateObject" = 0x803c5a68; +"__vt__Q315JStudio_JAudio214TAdaptor_sound13TVVOSetValue_" = 0x803c5a78; +"__vt__Q215JStudio_JAudio214TAdaptor_sound" = 0x803c5a88; +"__vt__Q217JStudio_JParticle13TCreateObject" = 0x803c5ad8; +"__vt__Q317JStudio_JParticle17TAdaptor_particle21TJPACallback_emitter_" = 0x803c5af0; +"__vt__Q217JStudio_JParticle17TAdaptor_particle" = 0x803c5b0c; +"__vt__13JASTaskThread" = 0x803c5b58; +"__vt__19JASDefaultBankTable" = 0x803c5b68; +"__vt__17JASBankTable<256>" = 0x803c5b74; +"__vt__11JASBankList" = 0x803c5b80; +"__vt__12JASSeqParser" = 0x803c7650; +"__vt__12JASBasicBank" = 0x803c76a8; +"__vt__7JASBank" = 0x803c76bc; +"__vt__12JASVoiceBank" = 0x803c76d0; +"__vt__12JASBasicInst" = 0x803c76e8; +"__vt__7JASInst" = 0x803c76fc; +"__vt__10JASDrumSet" = 0x803c7710; +"__vt__Q216JASBasicWaveBank11TWaveHandle" = 0x803c7728; +"__vt__Q216JASBasicWaveBank10TWaveGroup" = 0x803c773c; +"__vt__13JASWaveHandle" = 0x803c7754; +"__vt__16JASBasicWaveBank" = 0x803c7768; +"__vt__11JASWaveBank" = 0x803c7780; +"__vt__Q217JASSimpleWaveBank11TWaveHandle" = 0x803c7798; +"__vt__17JASSimpleWaveBank" = 0x803c77ac; +"__vt__10JASWaveArc" = 0x803c7820; +"__vt__11JASDisposer" = 0x803c7838; +"__vt__14JASAudioThread" = 0x803c78e0; +"__vt__10JAIAudible" = 0x803c9820; +"__vt__11JAIAudience" = 0x803c9838; +"__vt__5JAISe" = 0x803c9858; +"__vt__8JAISeMgr" = 0x803c98b0; +"__vt__16JAISeCategoryMgr" = 0x803c98c4; +"__vt__6JAISeq" = 0x803c98f4; +"__vt__13JAISeqDataMgr" = 0x803c9928; +"__vt__14JAISeqDataUser" = 0x803c9940; +"__vt__9JAISeqMgr" = 0x803c9958; +"__vt__8JAISound" = 0x803c9970; +"__vt__12JAISoundInfo" = 0x803c99a0; +"__vt__15JAISoundStarter" = 0x803c99c8; +"__vt__9JAIStream" = 0x803c99d8; +"__vt__16JAIStreamAramMgr" = 0x803c9a08; +"__vt__16JAIStreamDataMgr" = 0x803c9a1c; +"__vt__22JAUAudioArcInterpreter" = 0x803c9a30; +"__vt__17JAUAudioArcLoader" = 0x803c9a78; +"__vt__14JAUSectionHeap" = 0x803c9ac0; +"__vt__16JAUBankTableLink" = 0x803c9af4; +"__vt__12JAUBankTable" = 0x803c9b08; +"__vt__Q228@unnamed@JAUSectionHeap_cpp@14TStreamDataMgr" = 0x803c9b14; +"__vt__10JAUSection" = 0x803c9b24; +"__vt__27JAUSeqDataMgr_SeqCollection" = 0x803c9b38; +"__vt__32JAUStreamDataMgr_StreamFileTable" = 0x803c9b50; +"__vt__Q28JMessage8TControl" = 0x803c9b60; +"__vt__Q28JMessage19TRenderingProcessor" = 0x803c9b94; +"__vt__Q28JMessage18TSequenceProcessor" = 0x803c9bd4; +"__vt__Q28JMessage10TProcessor" = 0x803c9c2c; +"__vt__Q28JMessage10TReference" = 0x803c9c6c; +"__vt__Q28JMessage6TParse" = 0x803c9c94; +"__vt__Q38JMessage18TResourceContainer10TCResource" = 0x803c9ca8; +"__vt__Q27JGadget42TLinkList_factory" = 0x803c9cbc; +"__vt__16Z2AudioArcLoader" = 0x803c9cd0; +"__vt__10Z2SoundMgr" = 0x803c9d70; +"__vt__14Z2SoundStarter" = 0x803c9d80; +"__vt__11Z2SoundInfo" = 0x803cac48; +"__vt__10Z2Audience" = 0x803cac98; +"__vt__9Z2Audible" = 0x803cacb8; +"__vt__15Z2SoundObjAnime" = 0x803cacd0; +"__vt__15Z2SoundObjArrow" = 0x803cacf0; +"__vt__16Z2SoundObjSimple" = 0x803cad10; +"__vt__21Z2DopplerSoundObjBase" = 0x803cad30; +"__vt__14Z2SoundObjBase" = 0x803cad50; +"__vt__12Z2CreatureOI" = 0x803cb780; +"__vt__13Z2CreatureGob" = 0x803cb7b0; +"__vt__12Z2CreatureFM" = 0x803cb7e0; +"__vt__18Z2SoundObjBeeGroup" = 0x803cb810; +"__vt__16Z2CreatureSumomo" = 0x803cb830; +"__vt__15Z2CreatureEnemy" = 0x803cb860; +"__vt__17Z2CreatureCitizen" = 0x803cb890; +"__vt__10Z2Creature" = 0x803cb8c0; +"__vt__15Z2SoundObjCoach" = 0x803cb8f0; +"__vt__18Z2RideSoundStarter" = 0x803cb910; +"__vt__14Z2CreatureRide" = 0x803cb924; +"__vt__18Z2LinkSoundStarter" = 0x803cb96c; +"__vt__14Z2CreatureLink" = 0x803cb980; +"__vt__15Z2SpeechStarter" = 0x803cbf24; +"__vt__10Z2AudioMgr" = 0x803cbf38; +"__vt__26JAUStreamStaticAramMgr_<1>" = 0x803cbf44; +"__vt__24JAUStreamAramMgrBase_<1>" = 0x803cbf58; +"__vt__7JKRHeap" = 0x803cbf70; +"__vt__10JKRExpHeap" = 0x803cbfd0; +"__vt__12JKRSolidHeap" = 0x803cc030; +"__vt__13JKRAssertHeap" = 0x803cc090; +"__vt__11JKRDisposer" = 0x803cc0f0; +"__vt__15JKRThreadSwitch" = 0x803cc100; +"__vt__9JKRThread" = 0x803cc114; +"__vt__7JKRAram" = 0x803cc158; +"__vt__11JKRAramHeap" = 0x803cc168; +"__vt__12JKRAramBlock" = 0x803cc178; +"__vt__13JKRAramStream" = 0x803cc1b8; +"__vt__13JKRFileLoader" = 0x803cc1c8; +"__vt__12JKRDvdFinder" = 0x803cc208; +"__vt__12JKRArcFinder" = 0x803cc218; +"__vt__13JKRFileFinder" = 0x803cc228; +"__vt__12JKRFileCache" = 0x803cc238; +"__vt__10JKRArchive" = 0x803cc288; +"__vt__13JKRMemArchive" = 0x803cc2d8; +"__vt__7JKRFile" = 0x803cc328; +"__vt__14JKRAramArchive" = 0x803cc348; +"__vt__13JKRDvdArchive" = 0x803cc398; +"__vt__14JKRCompArchive" = 0x803cc3e8; +"__vt__10JKRDvdFile" = 0x803cc438; +"__vt__9JKRDecomp" = 0x803cc4a0; +"__vt__20JSURandomInputStream" = 0x803cc4b0; +"__vt__14JSUInputStream" = 0x803cc4d4; +"__vt__20JSUMemoryInputStream" = 0x803cc4f0; +"__vt__18JSUFileInputStream" = 0x803cc518; +"__vt__12JUTCacheFont" = 0x803cc540; +"__vt__12JUTGraphFifo" = 0x803cc590; +"__vt__10JUTResFont" = 0x803cc5a0; +"__vt__10JUTGamePad" = 0x803cc610; +"__vt__12JUTException" = 0x803cc6a4; +"__vt__8JUTVideo" = 0x803cc980; +"__vt__8JUTFader" = 0x803cc990; +"__vt__10JUTConsole" = 0x803cc9a8; +"__vt__14J2DGrafContext" = 0x803cc9b8; +"__vt__13J2DOrthoGraph" = 0x803cc9e0; +"__vt__15J2DIndBlockNull" = 0x803cca08; +"__vt__11J2DIndBlock" = 0x803cca40; +"__vt__11J2DMaterial" = 0x803cca78; +"__vt__13J2DColorBlock" = 0x803cca84; +"__vt__15J2DIndBlockFull" = 0x803cca90; +"__vt__13J2DTevBlock16" = 0x803ccac8; +"__vt__12J2DTevBlock8" = 0x803ccb84; +"__vt__12J2DTevBlock4" = 0x803ccc40; +"__vt__12J2DTevBlock2" = 0x803cccfc; +"__vt__12J2DTevBlock1" = 0x803ccdb8; +"__vt__11J2DTevBlock" = 0x803cce74; +"__vt__14J2DTexGenBlock" = 0x803ccf30; +"__vt__8J2DPrint" = 0x803ccfa0; +"__vt__7J2DPane" = 0x803ccfd0; +"__vt__9J2DScreen" = 0x803cd068; +"__vt__9J2DWindow" = 0x803cd108; +"__vt__10J2DPicture" = 0x803cd1d8; +"__vt__10J2DTextBox" = 0x803cd328; +"__vt__11J2DWindowEx" = 0x803cd3e8; +"__vt__12J2DPictureEx" = 0x803cd4b8; +"__vt__12J2DTextBoxEx" = 0x803cd608; +"__vt__20J2DAnmFullLoader_v15" = 0x803cd6c8; +"__vt__19J2DAnmKeyLoader_v15" = 0x803cd6dc; +"__vt__12J2DAnmLoader" = 0x803cd6f0; +"__vt__20J2DAnmVisibilityFull" = 0x803cd704; +"__vt__14J2DAnmVtxColor" = 0x803cd714; +"__vt__15J2DAnmTevRegKey" = 0x803cd728; +"__vt__16J2DAnmTexPattern" = 0x803cd738; +"__vt__19J2DAnmTextureSRTKey" = 0x803cd748; +"__vt__17J2DAnmVtxColorKey" = 0x803cd758; +"__vt__18J2DAnmVtxColorFull" = 0x803cd76c; +"__vt__14J2DAnmColorKey" = 0x803cd780; +"__vt__15J2DAnmColorFull" = 0x803cd794; +"__vt__11J2DAnmColor" = 0x803cd7a8; +"__vt__18J2DAnmTransformKey" = 0x803cd7bc; +"__vt__19J2DAnmTransformFull" = 0x803cd7d4; +"__vt__14J3DShapePacket" = 0x803cd940; +"__vt__12J3DMatPacket" = 0x803cd954; +"__vt__13J3DDrawPacket" = 0x803cd968; +"__vt__9J3DPacket" = 0x803cd97c; +"__vt__28J3DShapeMtxYBBoardConcatView" = 0x803cdb84; +"__vt__27J3DShapeMtxBBoardConcatView" = 0x803cdbac; +"__vt__26J3DShapeMtxMultiConcatView" = 0x803cdbd4; +"__vt__16J3DShapeMtxMulti" = 0x803cdbfc; +"__vt__21J3DShapeMtxConcatView" = 0x803cdc1c; +"__vt__11J3DShapeMtx" = 0x803cdc44; +"__vt__12J3DShapeDraw" = 0x803cdc68; +"__vt__8J3DShape" = 0x803cdc78; +"__vt__17J3DLockedMaterial" = 0x803cdc90; +"__vt__18J3DPatchedMaterial" = 0x803cdcc0; +"__vt__11J3DMaterial" = 0x803cdcf0; +"__vt__10J3DPEBlock" = 0x803cdd20; +"__vt__15J3DIndBlockNull" = 0x803cdd9c; +"__vt__11J3DIndBlock" = 0x803cdde8; +"__vt__14J3DTexGenBlock" = 0x803cde34; +"__vt__13J3DColorBlock" = 0x803cdea0; +"__vt__14J3DPEBlockFull" = 0x803cdff0; +"__vt__16J3DPEBlockFogOff" = 0x803ce06c; +"__vt__13J3DTevBlock16" = 0x803ce0e8; +"__vt__12J3DTevBlock4" = 0x803ce1c4; +"__vt__12J3DTevBlock2" = 0x803ce2a0; +"__vt__12J3DTevBlock1" = 0x803ce37c; +"__vt__18J3DTevBlockPatched" = 0x803ce458; +"__vt__19J3DTexGenBlockBasic" = 0x803ce534; +"__vt__15J3DTexGenBlock4" = 0x803ce5a0; +"__vt__21J3DTexGenBlockPatched" = 0x803ce60c; +"__vt__20J3DColorBlockLightOn" = 0x803ce678; +"__vt__22J3DColorBlockAmbientOn" = 0x803ce708; +"__vt__13J3DPEBlockXlu" = 0x803ce798; +"__vt__17J3DPEBlockTexEdge" = 0x803ce814; +"__vt__13J3DPEBlockOpa" = 0x803ce890; +"__vt__15J3DIndBlockFull" = 0x803ce90c; +"__vt__11J3DTevBlock" = 0x803ce958; +"__vt__21J3DColorBlockLightOff" = 0x803cea34; +"__vt__12J3DJointTree" = 0x803cecf4; +"__vt__13J3DShapeTable" = 0x803ced08; +"__vt__12J3DModelData" = 0x803ced14; +"__vt__8J3DModel" = 0x803ced20; +"__vt__12J3DMtxBuffer" = 0x803ced44; +"__vt__16J3DAnmTexPattern" = 0x803ced50; +"__vt__15J3DAnmTevRegKey" = 0x803ced60; +"__vt__14J3DAnmColorKey" = 0x803ced70; +"__vt__15J3DAnmColorFull" = 0x803ced84; +"__vt__11J3DAnmColor" = 0x803ced98; +"__vt__17J3DAnmVtxColorKey" = 0x803cedac; +"__vt__18J3DAnmVtxColorFull" = 0x803cedc0; +"__vt__14J3DAnmVtxColor" = 0x803cedd4; +"__vt__16J3DAnmClusterKey" = 0x803cede8; +"__vt__13J3DAnmCluster" = 0x803cedfc; +"__vt__17J3DAnmClusterFull" = 0x803cee10; +"__vt__19J3DAnmTextureSRTKey" = 0x803cee24; +"__vt__27J3DAnmTransformFullWithLerp" = 0x803cee34; +"__vt__19J3DAnmTransformFull" = 0x803cee48; +"__vt__14J3DMaterialAnm" = 0x803cee60; +"__vt__13J3DSkinDeform" = 0x803cee70; +"__vt__16J3DMaterialTable" = 0x803cee80; +"__vt__14J3DPEBlockNull" = 0x803cee90; +"__vt__15J3DTevBlockNull" = 0x803cef0c; +"__vt__18J3DTexGenBlockNull" = 0x803cefe8; +"__vt__17J3DColorBlockNull" = 0x803cf054; +"__vt__20J3DClusterLoader_v15" = 0x803cf0e8; +"__vt__16J3DClusterLoader" = 0x803cf0f8; +"__vt__18J3DModelLoader_v21" = 0x803cf108; +"__vt__18J3DModelLoader_v26" = 0x803cf14c; +"__vt__83J3DMtxCalcNoAnm<32J3DMtxCalcCalcTransformSoftimage,29J3DMtxCalcJ3DSysInitSoftimage>" = 0x803cf190; +"__vt__75J3DMtxCalcNoAnm<28J3DMtxCalcCalcTransformBasic,25J3DMtxCalcJ3DSysInitBasic>" = 0x803cf1bc; +"__vt__10J3DTexture" = 0x803cf1e8; +"__vt__14J3DModelLoader" = 0x803cf1f4; +"__vt__19J3DAnmKeyLoader_v15" = 0x803cf238; +"__vt__20J3DAnmFullLoader_v15" = 0x803cf24c; +"__vt__12J3DAnmLoader" = 0x803cf260; +"__vt__20J3DAnmVisibilityFull" = 0x803cf274; + } FORCEACTIVE { set__17dSv_horse_place_cFPCcRC4cXyzsSc @@ -54,4 +785,4 @@ extabindex 80005660 - 800056BC .sbss 80450B00 - 80451A00 .sdata2 80451A00 - 80456B60 .sbss2 80456B60 - 80456BC8 -*/ \ No newline at end of file +*/ diff --git a/libs/JSystem/JKernel/JKRDisposer.cpp b/libs/JSystem/JKernel/JKRDisposer.cpp index bd5223fd17..928784f65b 100644 --- a/libs/JSystem/JKernel/JKRDisposer.cpp +++ b/libs/JSystem/JKernel/JKRDisposer.cpp @@ -3,20 +3,31 @@ #include "JSystem/JKernel/JKRHeap/JKRHeap.h" // #include "JSystem/JKernel/asm/func_802D147C.s" -JKRDisposer::JKRDisposer() : __vt(lbl_803CC0F0), ptr_link(this) { - this->heap = JKRHeap::findFromRoot(this); +JKRDisposer::JKRDisposer() : ptr_link(this) { + this->heap = JKRHeap::findFromRoot(this); if (this->heap != 0) { this->heap->disposable_list.append(&this->ptr_link); } } -// Almost. Missing three instructions, something -// to do with the destruction of JSUPtrLink +/* +Super close. + +This is what we expected: (from Ghidra) + if (this != (JKRDisposer *)&DAT_fffffff8) { + JSUPtrLink::~JSUPtrLink(&this->ptr_link,0); + } + +But the compiler generate code like this instead: (no if and -1 instead of 0) + JSUPtrLink::~JSUPtrLink(&this->ptr_link,-1); + +Maybe we are using the wrong compiler? +*/ #ifdef NONMATCHING JKRDisposer::~JKRDisposer() { - this->__vt = lbl_803CC0F0; - if (this->heap != NULL) { - this->heap->disposable_list.remove(&this->ptr_link); + JKRHeap* heap = this->heap; + if (heap != 0) { + heap->disposable_list.remove(&this->ptr_link); } } #else diff --git a/libs/JSystem/JKernel/JKRHeap.cpp b/libs/JSystem/JKernel/JKRHeap.cpp index 3e552be13b..e1ffcd5092 100644 --- a/libs/JSystem/JKernel/JKRHeap.cpp +++ b/libs/JSystem/JKernel/JKRHeap.cpp @@ -1,11 +1,55 @@ #include "JSystem/JKernel/JKRHeap/JKRHeap.h" #include "global.h" +/* +Very close! When initialzing child_list(true) it will use less register then the asm code. +- 2cb0b0: 3b 5f 00 40 addi r26,r31,64 +- 2cb0b4: 7f 43 d3 78 mr r3,r26 +- 2cb0b8: 48 00 dd 9d bl 0x2d8e54 +- 2cb0bc: 38 7a 00 0c addi r3,r26,12 + ++ 2cb0b0: 38 7f 00 40 addi r3,r31,64 ++ 2cb0b4: 38 80 00 01 li r4,1 ++ 2cb0b8: 48 00 dd 01 bl 0x2d8db8 ++ 2cb0bc: 38 7f 00 4c addi r3,r31,76 +*/ #ifdef NONMATCHING -JKRHeap::JKRHeap(void* data, u32 size, JKRHeap* parent, bool error_handler) { +JKRHeap::JKRHeap(void* data, u32 size, JKRHeap* parent, bool error_flag) + : JKRDisposer(), child_list(true), heap_link(this), disposable_list(true) { + OSInitMutex(this->mutex); + this->size = size; + this->begin = (u32)data; + this->end = (u32)data + size; + + if (parent == NULL) { + this->becomeSystemHeap(); + this->becomeCurrentHeap(); + } else { + JSUPtrLink* ptr = (JSUPtrLink*)&this->child_list; + if (ptr != NULL) { + ptr = &this->heap_link; + } + + parent->child_list.append(ptr); + if (lbl_80451370 == lbl_80451378) { + this->becomeSystemHeap(); + } + if (lbl_80451374 == lbl_80451378) { + this->becomeCurrentHeap(); + } + } + + this->error_flag = error_flag; + if ((this->error_flag == true) && (lbl_8045137C == NULL)) { + lbl_8045137C = JKRHeap::JKRDefaultMemoryErrorRoutine; + } + + this->field_0x3c = lbl_804508B0[0]; + this->field_0x3d = lbl_80451380[0]; + this->field_0x69 = 0; } #else -asm JKRHeap::JKRHeap(void* data, u32 size, JKRHeap* parent, bool error_handler) { +asm JKRHeap::JKRHeap(void* data, u32 size, JKRHeap* parent, bool error_flag) { nofralloc #include "JSystem/JKernel/JKRHeap/asm/func_802CE138.s" } @@ -16,44 +60,81 @@ asm JKRHeap::~JKRHeap() { #include "JSystem/JKernel/JKRHeap/asm/func_802CE264.s" } -asm bool JKRHeap::initArena(char**, u32*, int) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE378.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE378.s" +bool JKRHeap::initArena(char** memory, u32* size, int param_3) { + u32 ram_start; + u32 ram_end; + u32 ram; + + u32 low = OSGetArenaLo(); + u32 high = OSGetArenaHi(); + if (low == high) return false; + + ram = OSInitAlloc(low, high, param_3); + ram_start = (ram + 0x1fU & 0xffffffe0); + ram_end = (high & 0xffffffe0); + lbl_80451384 = OS_GLOBAL_ADDR(void, 0x80000000); + lbl_80451388 = (void*)ram_start; + lbl_8045138C = (void*)ram_start; + lbl_80451390 = (void*)ram_end; + lbl_80451394 = OS_GLOBAL(u32, 0x80000028); + OSSetArenaLo(ram_end); + OSSetArenaHi(ram_end); + *memory = (char*)ram_start; + *size = ram_end - ram_start; + return true; } -asm void JKRHeap::becomeSystemHeap() { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE428.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE428.s" +JKRHeap* JKRHeap::becomeSystemHeap() { + JKRHeap* prev = lbl_80451370; + lbl_80451370 = this; + return prev; } -asm void JKRHeap::becomeCurrentHeap() { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE438.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE438.s" +JKRHeap* JKRHeap::becomeCurrentHeap() { + JKRHeap* prev = lbl_80451374; + lbl_80451374 = this; + return prev; } -asm void JKRHeap::destroy() { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE448.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE448.s" +void JKRHeap::destroy() { + this->do_destroy(); } -asm void* JKRHeap::alloc(u32 size, int alignment, JKRHeap* heap) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE474.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE474.s" +void* JKRHeap::alloc(u32 size, int alignment, JKRHeap* heap) { + if (heap != NULL) { + return heap->alloc(size, alignment); + } + + if (lbl_80451374 != NULL) { + return lbl_80451374->alloc(size, alignment); + } + + return NULL; } -asm void* JKRHeap::alloc(u32 size, int alignment) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE4D4.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE4D4.s" +void* JKRHeap::alloc(u32 size, int alignment) { + return this->do_alloc(size, alignment); } -asm void JKRHeap::free(void* ptr, JKRHeap* heap) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE500.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE500.s" +void JKRHeap::free(void* ptr, JKRHeap* heap) { + if (!heap) { + heap = findFromRoot(ptr); + if (!heap) return; + } + + heap->free(ptr); } -asm void JKRHeap::free(void* ptr) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE548.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE548.s" +void JKRHeap::free(void* ptr) { + this->do_free(ptr); } asm void JKRHeap::callAllDisposer() { @@ -61,64 +142,82 @@ asm void JKRHeap::callAllDisposer() { #include "JSystem/JKernel/JKRHeap/asm/func_802CE574.s" } -asm void JKRHeap::freeAll() { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE5CC.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE5CC.s" +void JKRHeap::freeAll() { + this->do_freeAll(); } -asm void JKRHeap::freeTail() { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE5F8.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE5F8.s" +void JKRHeap::freeTail() { + this->do_freeTail(); } -asm s32 JKRHeap::resize(void* ptr, u32 size, JKRHeap* heap) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE624.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE624.s" +s32 JKRHeap::resize(void* ptr, u32 size, JKRHeap* heap) { + if (!heap) { + heap = findFromRoot(ptr); + if (!heap) return -1; + } + + return heap->resize(ptr, size); } -asm s32 JKRHeap::resize(void* ptr, u32 size) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE684.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE684.s" +s32 JKRHeap::resize(void* ptr, u32 size) { + return this->do_resize(ptr, size); } -asm s32 JKRHeap::getSize(void* ptr, JKRHeap* heap) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE6B0.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE6B0.s" +s32 JKRHeap::getSize(void* ptr, JKRHeap* heap) { + if (!heap) { + heap = findFromRoot(ptr); + if (!heap) return -1; + } + + return heap->getSize(ptr); } -asm s32 JKRHeap::getSize(void* ptr) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE700.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE700.s" +s32 JKRHeap::getSize(void* ptr) { + return this->do_getSize(ptr); } -asm s32 JKRHeap::getFreeSize() { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE72C.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE72C.s" +s32 JKRHeap::getFreeSize() { + return this->do_getFreeSize(); } -asm u32 JKRHeap::getMaxFreeBlock() { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE758.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE758.s" +s32 JKRHeap::getMaxFreeBlock() { + return this->do_getMaxFreeBlock(); } -asm u32 JKRHeap::getTotalFreeSize() { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE784.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE784.s" +s32 JKRHeap::getTotalFreeSize() { + return this->do_getTotalFreeSize(); } -asm u8 JKRHeap::changeGroupID(u8 param_1) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE7B0.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE7B0.s" +u8 JKRHeap::changeGroupID(u8 param_1) { + return this->do_changeGroupID(param_1); } -asm u32 JKRHeap::getMaxAllocatableSize(int alignment) { +asm s32 JKRHeap::getMaxAllocatableSize(int alignment) { nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE7DC.s" + #include "JSystem/JKernel/JKRHeap/asm/func_802CE7DC.s" } -asm JKRHeap* JKRHeap::findFromRoot(void* ptr) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CE83C.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CE83C.s" +JKRHeap* JKRHeap::findFromRoot(void* ptr) { + if (lbl_80451378 == NULL) { + return (JKRHeap*)NULL; + } + + if (((void*)lbl_80451378->begin <= ptr) && (ptr < (void*)lbl_80451378->end)) { + return lbl_80451378->find(ptr); + } + + return lbl_80451378->findAllHeap(ptr); } asm JKRHeap* JKRHeap::find(void* ptr) const { @@ -136,24 +235,47 @@ asm void JKRHeap::dispose_subroutine(u32 begin, u32 end) { #include "JSystem/JKernel/JKRHeap/asm/func_802CE9E4.s" } -asm void JKRHeap::dispose(void* ptr, u32 size) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CEA78.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CEA78.s" +bool JKRHeap::dispose(void* ptr, u32 size) { + u32 begin = (u32)ptr; + u32 end = (u32)ptr + size; + this->dispose_subroutine(begin, end); + return false; } -asm void JKRHeap::dispose(void* begin, void* end) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CEAA0.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CEAA0.s" +void JKRHeap::dispose(void* begin, void* end) { + this->dispose_subroutine((u32)begin, (u32)end); } +#ifdef NONMATCHING +void JKRHeap::dispose() { + JSUPtrLink* node; + JKRDisposer* disposable; + while (node = this->disposable_list.head, node != NULL) { + disposable = (JKRDisposer*)node->owner; + disposable->~JKRDisposer(); + } +} +#else asm void JKRHeap::dispose() { nofralloc #include "JSystem/JKernel/JKRHeap/asm/func_802CEAC0.s" } +#endif -asm void JKRHeap::copyMemory(void* dst, void* src, u32 size) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CEB18.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CEB18.s" +void JKRHeap::copyMemory(void* dst, void* src, u32 size) { + u32 count = (size + 3) / 4; + + u32* dst_32 = (u32*)dst; + u32* src_32 = (u32*)src; + while (count > 0) { + *dst_32 = *src_32; + dst_32++; + src_32++; + count--; + } } asm void JKRHeap::JKRDefaultMemoryErrorRoutine(JKRHeap* heap, u32 size, int alignment) { @@ -176,42 +298,42 @@ asm bool JKRHeap::isSubHeap(JKRHeap* heap) const { #include "JSystem/JKernel/JKRHeap/asm/func_802CEBA8.s" } -asm void* operator new(u32 size) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CEC4C.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CEC4C.s" +void* operator new(u32 size) { + return JKRHeap::alloc(size, 4, NULL); } -asm void* operator new(u32 size, int alignment) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CEC74.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CEC74.s" +void* operator new(u32 size, int alignment) { + return JKRHeap::alloc(size, alignment, NULL); } -asm void* operator new(u32 size, JKRHeap* heap, int alignment) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CEC98.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CEC98.s" +void* operator new(u32 size, JKRHeap* heap, int alignment) { + return JKRHeap::alloc(size, alignment, heap); } -asm void* operator new[](u32 size) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CECC4.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CECC4.s" +void* operator new[](u32 size) { + return JKRHeap::alloc(size, 4, NULL); } -asm void* operator new[](u32 size, int alignment) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CECEC.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CECEC.s" +void* operator new[](u32 size, int alignment) { + return JKRHeap::alloc(size, alignment, NULL); } -asm void* operator new[](u32 size, JKRHeap* heap, int alignment) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CED10.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CED10.s" +void* operator new[](u32 size, JKRHeap* heap, int alignment) { + return JKRHeap::alloc(size, alignment, heap); } -asm void operator delete(void* ptr) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CED3C.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CED3C.s" +void operator delete(void* ptr) { + JKRHeap::free(ptr, NULL); } -asm void operator delete[](void* ptr) { - nofralloc -#include "JSystem/JKernel/JKRHeap/asm/func_802CED60.s" +// #include "JSystem/JKernel/JKRHeap/asm/func_802CED60.s" +void operator delete[](void* ptr) { + JKRHeap::free(ptr, NULL); } diff --git a/libs/JSystem/JSupport/JSUList.cpp b/libs/JSystem/JSupport/JSUList.cpp index 99922822e4..508cc262b0 100644 --- a/libs/JSystem/JSupport/JSUList.cpp +++ b/libs/JSystem/JSupport/JSUList.cpp @@ -2,11 +2,11 @@ #include "global.h" // #include "JSupport/asm/func_802DBDFC.s" -JSUPtrLink::JSUPtrLink(void* param_1) { - this->list = (JSUPtrList*)NULL; - this->unk0 = param_1; - this->prev = (JSUPtrLink*)NULL; - this->next = (JSUPtrLink*)NULL; +JSUPtrLink::JSUPtrLink(void* owner) { + this->list = NULL; + this->owner = owner; + this->prev = NULL; + this->next = NULL; } // #include "JSupport/asm/func_802DBE14.s" @@ -32,7 +32,7 @@ JSUPtrList::~JSUPtrList() { JSUPtrLink* node = this->head; s32 removed = 0; while (this->length > removed) { - node->list = (JSUPtrList*)NULL; + node->list = NULL; node = node->next; removed += 1; } @@ -40,16 +40,16 @@ JSUPtrList::~JSUPtrList() { // #include "JSupport/asm/func_802DBF14.s" void JSUPtrList::initiate() { - this->head = (JSUPtrLink*)NULL; - this->tail = (JSUPtrLink*)NULL; + this->head = NULL; + this->tail = NULL; this->length = 0; } // #include "JSupport/asm/func_802DBF28.s" void JSUPtrList::setFirst(JSUPtrLink* first) { first->list = this; - first->prev = (JSUPtrLink*)NULL; - first->next = (JSUPtrLink*)NULL; + first->prev = NULL; + first->next = NULL; this->tail = first; this->head = first; this->length = 1; @@ -58,7 +58,7 @@ void JSUPtrList::setFirst(JSUPtrLink* first) { // #include "JSupport/asm/func_802DBF4C.s" bool JSUPtrList::append(JSUPtrLink* ptr) { JSUPtrList* list = ptr->list; - bool result = ((JSUPtrList*)NULL == list); + bool result = (NULL == list); if (!result) { result = list->remove(ptr); } @@ -69,7 +69,7 @@ bool JSUPtrList::append(JSUPtrLink* ptr) { } else { ptr->list = this; ptr->prev = this->tail; - ptr->next = (JSUPtrLink*)NULL; + ptr->next = NULL; this->tail->next = ptr; this->tail = ptr; this->length++; @@ -82,7 +82,7 @@ bool JSUPtrList::append(JSUPtrLink* ptr) { // #include "JSupport/asm/func_802DBFF0.s" bool JSUPtrList::prepend(JSUPtrLink* ptr) { JSUPtrList* list = ptr->list; - bool result = ((JSUPtrList*)NULL == list); + bool result = (NULL == list); if (!result) { result = list->remove(ptr); } @@ -107,7 +107,7 @@ bool JSUPtrList::prepend(JSUPtrLink* ptr) { bool JSUPtrList::insert(JSUPtrLink* before, JSUPtrLink* ptr) { if (before == this->head) { return this->prepend(ptr); - } else if (before == (JSUPtrLink*)NULL) { + } else if (before == NULL) { return this->append(ptr); } @@ -115,7 +115,7 @@ bool JSUPtrList::insert(JSUPtrLink* before, JSUPtrLink* ptr) { return false; } - bool result = ((JSUPtrList*)NULL == ptr->list); + bool result = (NULL == ptr->list); if (!result) { result = ptr->list->remove(ptr); } @@ -138,20 +138,20 @@ bool JSUPtrList::remove(JSUPtrLink* ptr) { bool is_parent = (ptr->list == this); if (is_parent) { if (this->length == 1) { - this->head = (JSUPtrLink*)NULL; - this->tail = (JSUPtrLink*)NULL; + this->head = NULL; + this->tail = NULL; } else if (ptr == this->head) { - ptr->next->prev = (JSUPtrLink*)NULL; + ptr->next->prev = NULL; this->head = ptr->next; } else if (ptr == this->tail) { - ptr->prev->next = (JSUPtrLink*)NULL; + ptr->prev->next = NULL; this->tail = ptr->prev; } else { ptr->prev->next = ptr->next; ptr->next->prev = ptr->prev; } - ptr->list = (JSUPtrList*)NULL; + ptr->list = NULL; this->length--; } @@ -161,7 +161,7 @@ bool JSUPtrList::remove(JSUPtrLink* ptr) { // #include "JSupport/asm/func_802DC20C.s" JSUPtrLink* JSUPtrList::getNthLink(u32 index) const { if (index >= this->length) { - return (JSUPtrLink*)NULL; + return NULL; } JSUPtrLink* node = this->head; diff --git a/libs/SSystem/SComponent/c_counter.cpp b/libs/SSystem/SComponent/c_counter.cpp index 4bf93c8658..cad95bd1ce 100644 --- a/libs/SSystem/SComponent/c_counter.cpp +++ b/libs/SSystem/SComponent/c_counter.cpp @@ -1 +1,24 @@ -// ok + +struct counter_class { + int mCounter0; + int mCounter1; + int mTimer; +}; + +// g_Counter +extern counter_class lbl_80430CD8; + +extern "C" { + +void cCt_Counter(int resetCounter1) +{ + if (resetCounter1 == 1) { + lbl_80430CD8.mCounter1 = 0; + } else { + lbl_80430CD8.mCounter1++; + } + + lbl_80430CD8.mCounter0++; +} + +}; diff --git a/libs/SSystem/SComponent/c_list.cpp b/libs/SSystem/SComponent/c_list.cpp index 4bf93c8658..22e18ba1c7 100644 --- a/libs/SSystem/SComponent/c_list.cpp +++ b/libs/SSystem/SComponent/c_list.cpp @@ -1 +1,72 @@ -// ok + +#include "global.h" +#include "SComponent/c_list.h" + +extern "C" { + +void cLs_Init(node_list_class *pList) +{ + pList->mpHead = NULL; + pList->mpTail = NULL; + pList->mSize = 0; +} + +int cLs_SingleCut(node_class *pNode) +{ + node_list_class *pList = (node_list_class *) pNode->mpData; + if (pNode == pList->mpHead) + pList->mpHead = pNode->mpNextNode; + if (pNode == pList->mpTail) + pList->mpTail = pNode->mpPrevNode; + cNd_SingleCut(pNode); + cNd_ClearObject(pNode); + int newSize = pList->mSize - 1; + pList->mSize = newSize; + return newSize > 0; +} + +int cLs_Addition(node_list_class *pList, node_class *pNode) +{ + if (pList->mpTail == NULL) { + pList->mpHead = pNode; + } else { + cNd_Addition(pList->mpTail, pNode); + } + + pList->mpTail = cNd_Last(pNode); + cNd_SetObject(pNode, pList); + pList->mSize = cNd_LengthOf(pList->mpHead); + return pList->mSize; +} + +int cLs_Insert(node_list_class *pList, int idx, node_class *pNode) +{ + node_class *pExisting = cNd_Order(pList->mpHead, idx); + if (pExisting == NULL) { + return cLs_Addition(pList, pNode); + } else { + cNd_SetObject(pNode, pList); + cNd_Insert(pExisting, pNode); + pList->mpHead = cNd_First(pNode); + pList->mSize = cNd_LengthOf(pList->mpHead); + return pList->mSize; + } +} + +node_class * cLs_GetFirst(node_list_class *pList) +{ + if (pList->mSize != 0) { + node_class *pHead = pList->mpHead; + cLs_SingleCut(pHead); + return pHead; + } else { + return NULL; + } +} + +void cLs_Create(node_list_class *pList) +{ + cLs_Init(pList); +} + +}; diff --git a/libs/SSystem/SComponent/c_list_iter.cpp b/libs/SSystem/SComponent/c_list_iter.cpp index 4bf93c8658..1ee96ca935 100644 --- a/libs/SSystem/SComponent/c_list_iter.cpp +++ b/libs/SSystem/SComponent/c_list_iter.cpp @@ -1 +1,23 @@ -// ok + +#include "global.h" +#include "SComponent/c_list_iter.h" + +extern "C" { + +int cLsIt_Method(node_list_class *pList, cNdIt_MethodFunc pMethod, void *pUserData) +{ + if (pList->mSize > 0) + return cNdIt_Method(pList->mpHead, pMethod, pUserData); + else + return 1; +} + +void * cLsIt_Judge(node_list_class *pList, cNdIt_JudgeFunc pJudge, void *pUserData) +{ + if (pList->mSize > 0) + return cNdIt_Judge(pList->mpHead, pJudge, pUserData); + else + return NULL; +} + +}; diff --git a/libs/SSystem/SComponent/c_node.cpp b/libs/SSystem/SComponent/c_node.cpp index 4bf93c8658..4fd843d63e 100644 --- a/libs/SSystem/SComponent/c_node.cpp +++ b/libs/SSystem/SComponent/c_node.cpp @@ -1 +1,125 @@ -// ok + +#include "global.h" +#include "SComponent/c_node.h" + +extern "C" { + +#define NODE_GET_PREV(pNode) (pNode ? pNode->mpPrevNode : NULL) +#define NODE_GET_NEXT(pNode) (pNode ? pNode->mpNextNode : NULL) + +void cNd_Join(node_class *pA, node_class *pB) +{ + pA->mpNextNode = pB; + pB->mpPrevNode = pA; +} + +int cNd_LengthOf(node_class *pNode) +{ + int count = 0; + while (pNode) { + count++; + pNode = NODE_GET_NEXT(pNode); + } + return count; +} + +node_class * cNd_First(node_class *pNode) +{ + node_class *pRet = NULL; + while (pNode) { + pRet = pNode; + pNode = NODE_GET_PREV(pNode); + } + return pRet; +} + +node_class * cNd_Last(node_class *pNode) +{ + node_class *pRet = NULL; + while (pNode) { + pRet = pNode; + pNode = NODE_GET_NEXT(pNode); + } + return pRet; +} + +node_class * cNd_Order(node_class *pNode, int idx) +{ + node_class *pRet = NULL; + int i = 0; + while (i < idx && pNode) { + pRet = pNode; + i++; + pNode = NODE_GET_NEXT(pNode); + } + if (i < idx) + return pRet; + return NULL; +} + +void cNd_SingleCut(node_class *pNode) +{ + node_class *pPrev = pNode->mpPrevNode; + node_class *pNext = pNode->mpNextNode; + + if (pPrev) + pPrev->mpNextNode = pNode->mpNextNode; + if (pNext) + pNext->mpPrevNode = pNode->mpPrevNode; + pNode->mpPrevNode = NULL; + pNode->mpNextNode = NULL; +} + +void cNd_Cut(node_class *pNode) +{ + if (pNode->mpPrevNode) + pNode->mpPrevNode->mpNextNode = NULL; + pNode->mpPrevNode = NULL; +} + +void cNd_Addition(node_class *pA, node_class *pB) +{ + node_class *pLast = cNd_Last(pA); + cNd_Join(pLast, pB); +} + +void cNd_Insert(node_class *pA, node_class *pB) +{ + node_class *pPrev = pA->mpPrevNode; + if (pPrev == NULL) { + cNd_Addition(pB, pA); + } else { + cNd_Cut(pA); + cNd_Addition(pPrev, pB); + cNd_Addition(pB, pA); + } +} + +void cNd_SetObject(node_class *pNode, void *pData) +{ + while (pNode) { + pNode->mpData = pData; + pNode = NODE_GET_NEXT(pNode); + } +} + +void cNd_ClearObject(node_class *pNode) +{ + cNd_SetObject(pNode, NULL); +} + +void cNd_ForcedClear(node_class *pNode) +{ + pNode->mpPrevNode = NULL; + pNode->mpNextNode = NULL; + pNode->mpData = NULL; +} + +void cNd_Create(node_class *pNode, void *pData) +{ + pNode->mpPrevNode = NULL; + pNode->mpNextNode = NULL; + pNode->mpData = pData; +} + +}; diff --git a/libs/SSystem/SComponent/c_node_iter.cpp b/libs/SSystem/SComponent/c_node_iter.cpp index 4bf93c8658..0f0a9613fe 100644 --- a/libs/SSystem/SComponent/c_node_iter.cpp +++ b/libs/SSystem/SComponent/c_node_iter.cpp @@ -1 +1,41 @@ -// ok + +#include "global.h" +#include "SComponent/c_node_iter.h" + +extern "C" { + +#define NODE_GET_PREV(pNode) (pNode ? pNode->mpPrevNode : NULL) +#define NODE_GET_NEXT(pNode) (pNode ? pNode->mpNextNode : NULL) + +int cNdIt_Method(node_class *pNode, cNdIt_MethodFunc pMethod, void *pUserData) +{ + int ret = 1; + node_class *pNext = NODE_GET_NEXT(pNode); + + while (pNode) { + int methodRet = pMethod(pNode, pUserData); + if (!methodRet) + ret = 0; + pNode = pNext; + pNext = NODE_GET_NEXT(pNext); + } + + return ret; +} + +void * cNdIt_Judge(node_class *pNode, cNdIt_JudgeFunc pJudge, void *pUserData) +{ + node_class *pNext = NODE_GET_NEXT(pNode); + + while (pNode) { + void *pJudgeRet = pJudge(pNode, pUserData); + if (pJudgeRet != NULL) + return pJudgeRet; + pNode = pNext; + pNext = NODE_GET_NEXT(pNext); + } + + return NULL; +} + +}; diff --git a/libs/SSystem/SComponent/c_phase.cpp b/libs/SSystem/SComponent/c_phase.cpp index 4bf93c8658..28ffa56643 100644 --- a/libs/SSystem/SComponent/c_phase.cpp +++ b/libs/SSystem/SComponent/c_phase.cpp @@ -1 +1,183 @@ -// ok + +#include "global.h" +#include "SComponent/c_phase.h" + +void cPhs_Reset(request_of_phase_process_class *pPhase) +{ + pPhase->mPhaseStep = 0; +} + +void cPhs_Set(request_of_phase_process_class *pPhase, cPhs__Handler *pHandlerTable) +{ + pPhase->mpHandlerTable = pHandlerTable; + pPhase->mPhaseStep = 0; +} + +void cPhs_UnCompleate(request_of_phase_process_class *pPhase) +{ + pPhase->mpHandlerTable = NULL; + cPhs_Reset(pPhase); +} + +int cPhs_Compleate(request_of_phase_process_class *pPhase) +{ + pPhase->mpHandlerTable = NULL; + return cPhs_COMPLEATE_e; +} + +#if NON_MATCHING +int cPhs_Next(request_of_phase_process_class *pPhase) +{ + // flow control + + if (pPhase->mpHandlerTable != NULL) { + pPhase->mPhaseStep++; + cPhs__Handler pHandler = pPhase->mpHandlerTable[pPhase->mPhaseStep]; + if (pHandler == NULL) + return cPhs_Compleate(pPhase); + else if (pHandler != NULL) + return 1; + } + + return cPhs_COMPLEATE_e; +} +#else +asm int cPhs_Next(request_of_phase_process_class *pPhase) +{ + nofralloc + /* 80266678 002635B8 94 21 FF F0 */ stwu r1, -0x10(r1) + /* 8026667C 002635BC 7C 08 02 A6 */ mflr r0 + /* 80266680 002635C0 90 01 00 14 */ stw r0, 0x14(r1) + /* 80266684 002635C4 80 A3 00 00 */ lwz r5, 0(r3) + /* 80266688 002635C8 28 05 00 00 */ cmplwi r5, 0 + /* 8026668C 002635CC 41 82 00 38 */ beq lbl_802666C4 + /* 80266690 002635D0 80 83 00 04 */ lwz r4, 4(r3) + /* 80266694 002635D4 38 04 00 01 */ addi r0, r4, 1 + /* 80266698 002635D8 90 03 00 04 */ stw r0, 4(r3) + /* 8026669C 002635DC 80 03 00 04 */ lwz r0, 4(r3) + /* 802666A0 002635E0 54 00 10 3A */ slwi r0, r0, 2 + /* 802666A4 002635E4 7C 05 00 2E */ lwzx r0, r5, r0 + /* 802666A8 002635E8 28 00 00 00 */ cmplwi r0, 0 + /* 802666AC 002635EC 41 82 00 08 */ beq lbl_802666B4 + /* 802666B0 002635F0 40 82 00 0C */ bne lbl_802666BC + lbl_802666B4: + /* 802666B4 002635F4 4B FF FF B5 */ bl cPhs_Compleate + /* 802666B8 002635F8 48 00 00 10 */ b lbl_802666C8 + lbl_802666BC: + /* 802666BC 002635FC 38 60 00 01 */ li r3, 1 + /* 802666C0 00263600 48 00 00 08 */ b lbl_802666C8 + lbl_802666C4: + /* 802666C4 00263604 38 60 00 04 */ li r3, 4 + lbl_802666C8: + /* 802666C8 00263608 80 01 00 14 */ lwz r0, 0x14(r1) + /* 802666CC 0026360C 7C 08 03 A6 */ mtlr r0 + /* 802666D0 00263610 38 21 00 10 */ addi r1, r1, 0x10 + /* 802666D4 00263614 4E 80 00 20 */ blr +} +#endif + +#if NON_MATCHING +int cPhs_Do(request_of_phase_process_class *pPhase, void *pUserData) +{ + cPhs__Handler *pHandlerTable = pPhase->mpHandlerTable; + if (pHandlerTable != NULL) { + // the load of pUserData seems to be slightly scrambled.. + int step = pPhase->mPhaseStep; + cPhs__Handler pHandler = pHandlerTable[step]; + int newStep = pHandler(pUserData); + switch (newStep) { + case 1: + return cPhs_Next(pPhase); + case 2: { + int step2 = cPhs_Next(pPhase); + return step2 == 1 ? 2 : cPhs_COMPLEATE_e; + } + case 3: { + cPhs_UnCompleate(pPhase); + return 3; + } + case cPhs_COMPLEATE_e: + return cPhs_Compleate(pPhase); + case cPhs_ERROR_e: + cPhs_UnCompleate(pPhase); + return cPhs_ERROR_e; + } + + return newStep; + } else { + return cPhs_Compleate(pPhase); + } +} +#else +asm int cPhs_Do(request_of_phase_process_class *pPhase, void *pUserData) +{ + nofralloc + /* 802666D8 00263618 94 21 FF F0 */ stwu r1, -0x10(r1) + /* 802666DC 0026361C 7C 08 02 A6 */ mflr r0 + /* 802666E0 00263620 90 01 00 14 */ stw r0, 0x14(r1) + /* 802666E4 00263624 93 E1 00 0C */ stw r31, 0xc(r1) + /* 802666E8 00263628 7C 7F 1B 78 */ mr r31, r3 + /* 802666EC 0026362C 80 A3 00 00 */ lwz r5, 0(r3) + /* 802666F0 00263630 28 05 00 00 */ cmplwi r5, 0 + /* 802666F4 00263634 41 82 00 A0 */ beq lbl_80266794 + /* 802666F8 00263638 80 1F 00 04 */ lwz r0, 4(r31) + /* 802666FC 0026363C 54 00 10 3A */ slwi r0, r0, 2 + /* 80266700 00263640 7C 83 23 78 */ mr r3, r4 + /* 80266704 00263644 7D 85 00 2E */ lwzx r12, r5, r0 + /* 80266708 00263648 7D 89 03 A6 */ mtctr r12 + /* 8026670C 0026364C 4E 80 04 21 */ bctrl + /* 80266710 00263650 2C 03 00 03 */ cmpwi r3, 3 + /* 80266714 00263654 41 82 00 5C */ beq lbl_80266770 + /* 80266718 00263658 40 80 00 14 */ bge lbl_8026672C + /* 8026671C 0026365C 2C 03 00 01 */ cmpwi r3, 1 + /* 80266720 00263660 41 82 00 1C */ beq lbl_8026673C + /* 80266724 00263664 40 80 00 24 */ bge lbl_80266748 + /* 80266728 00263668 48 00 00 70 */ b lbl_80266798 + lbl_8026672C: + /* 8026672C 0026366C 2C 03 00 05 */ cmpwi r3, 5 + /* 80266730 00263670 41 82 00 50 */ beq lbl_80266780 + /* 80266734 00263674 40 80 00 64 */ bge lbl_80266798 + /* 80266738 00263678 48 00 00 2C */ b lbl_80266764 + lbl_8026673C: + /* 8026673C 0026367C 7F E3 FB 78 */ mr r3, r31 + /* 80266740 00263680 4B FF FF 39 */ bl cPhs_Next + /* 80266744 00263684 48 00 00 54 */ b lbl_80266798 + lbl_80266748: + /* 80266748 00263688 7F E3 FB 78 */ mr r3, r31 + /* 8026674C 0026368C 4B FF FF 2D */ bl cPhs_Next + /* 80266750 00263690 2C 03 00 01 */ cmpwi r3, 1 + /* 80266754 00263694 38 60 00 04 */ li r3, 4 + /* 80266758 00263698 40 82 00 40 */ bne lbl_80266798 + /* 8026675C 0026369C 38 60 00 02 */ li r3, 2 + /* 80266760 002636A0 48 00 00 38 */ b lbl_80266798 + lbl_80266764: + /* 80266764 002636A4 7F E3 FB 78 */ mr r3, r31 + /* 80266768 002636A8 4B FF FF 01 */ bl cPhs_Compleate + /* 8026676C 002636AC 48 00 00 2C */ b lbl_80266798 + lbl_80266770: + /* 80266770 002636B0 7F E3 FB 78 */ mr r3, r31 + /* 80266774 002636B4 4B FF FE CD */ bl cPhs_UnCompleate + /* 80266778 002636B8 38 60 00 03 */ li r3, 3 + /* 8026677C 002636BC 48 00 00 1C */ b lbl_80266798 + lbl_80266780: + /* 80266780 002636C0 7F E3 FB 78 */ mr r3, r31 + /* 80266784 002636C4 4B FF FE BD */ bl cPhs_UnCompleate + /* 80266788 002636C8 38 60 00 05 */ li r3, 5 + /* 8026678C 002636CC 48 00 00 0C */ b lbl_80266798 + /* 80266790 002636D0 48 00 00 08 */ b lbl_80266798 + lbl_80266794: + /* 80266794 002636D4 4B FF FE D5 */ bl cPhs_Compleate + lbl_80266798: + /* 80266798 002636D8 83 E1 00 0C */ lwz r31, 0xc(r1) + /* 8026679C 002636DC 80 01 00 14 */ lwz r0, 0x14(r1) + /* 802667A0 002636E0 7C 08 03 A6 */ mtlr r0 + /* 802667A4 002636E4 38 21 00 10 */ addi r1, r1, 0x10 + /* 802667A8 002636E8 4E 80 00 20 */ blr +} +#endif + +int cPhs_Handler(request_of_phase_process_class *pPhase, cPhs__Handler *pHandlerTable, void *pUserData) +{ + pPhase->mpHandlerTable = pHandlerTable; + return cPhs_Do(pPhase, pUserData); +} diff --git a/libs/SSystem/SComponent/c_tag.cpp b/libs/SSystem/SComponent/c_tag.cpp index 4bf93c8658..b6d629fbeb 100644 --- a/libs/SSystem/SComponent/c_tag.cpp +++ b/libs/SSystem/SComponent/c_tag.cpp @@ -1 +1,91 @@ -// ok + +#include "SComponent/c_tag.h" +#include "SComponent/c_tree.h" + +extern "C" { + +int cTg_IsUse(create_tag_class *pTag) +{ + return pTag->mbIsUse; +} + +int cTg_SingleCutFromTree(create_tag_class *pTag) +{ + if (pTag->mbIsUse == true) { + pTag->mbIsUse = false; + cTr_SingleCut(pTag); + return true; + } else { + return false; + } +} + +int cTg_AdditionToTree(node_lists_tree_class *pTree, int listIdx, create_tag_class *pTag) +{ + if (!pTag->mbIsUse) { + int ret = cTr_Addition(pTree, listIdx, pTag); + if (ret) { + pTag->mbIsUse = true; + return ret; + } + } + + return 0; +} + +int cTg_InsertToTree(node_lists_tree_class *pTree, int listIdx, create_tag_class *pTag, int idx) +{ + if (!pTag->mbIsUse) { + int ret = cTr_Insert(pTree, listIdx, pTag, idx); + if (ret) { + pTag->mbIsUse = true; + return ret; + } + } + + return 0; +} + +node_class * cTg_GetFirst(node_list_class *pList) +{ + create_tag_class *pTag = (create_tag_class *) cLs_GetFirst(pList); + if (pTag != NULL) { + pTag->mbIsUse = false; + } else { + pTag = NULL; + } + return pTag; +} + +int cTg_SingleCut(create_tag_class *pTag) +{ + if (pTag->mbIsUse == 1) { + pTag->mbIsUse = false; + cLs_SingleCut(pTag); + return 1; + } + + return 0; +} + +int cTg_Addition(node_list_class *pList, create_tag_class *pTag) +{ + if (!pTag->mbIsUse) { + int ret = cLs_Addition(pList, pTag); + if (ret) { + pTag->mbIsUse = true; + return ret; + } + } + + return 0; +} + +void cTg_Create(create_tag_class *pTag, void *pData) +{ + cNd_Create(pTag, NULL); + pTag->mpTagData = pData; + pTag->mbIsUse = false; +} + +}; diff --git a/libs/SSystem/SComponent/c_tag_iter.cpp b/libs/SSystem/SComponent/c_tag_iter.cpp index 4bf93c8658..9748d44da1 100644 --- a/libs/SSystem/SComponent/c_tag_iter.cpp +++ b/libs/SSystem/SComponent/c_tag_iter.cpp @@ -1 +1,17 @@ -// ok + +#include "global.h" +#include "SComponent/c_tag_iter.h" + +extern "C" { + +int cTgIt_MethodCall(create_tag_class *pTag, method_filter *pMethodFilter) +{ + return pMethodFilter->mpMethodFunc((node_class *) pTag->mpTagData, pMethodFilter->mpUserData); +} + +void * cTgIt_JudgeFilter(create_tag_class *pTag, judge_filter *pJudgeFilter) +{ + return pJudgeFilter->mpJudgeFunc((node_class *) pTag->mpTagData, pJudgeFilter->mpUserData); +} + +}; diff --git a/libs/SSystem/SComponent/c_tree.cpp b/libs/SSystem/SComponent/c_tree.cpp index 4bf93c8658..036d871866 100644 --- a/libs/SSystem/SComponent/c_tree.cpp +++ b/libs/SSystem/SComponent/c_tree.cpp @@ -1 +1,37 @@ -// ok + +#include "global.h" +#include "SComponent/c_tree.h" + +extern "C" { + +int cTr_SingleCut(node_class *pNode) +{ + return cLs_SingleCut(pNode); +} + +int cTr_Addition(node_lists_tree_class *pTree, int listIdx, node_class *pNode) +{ + if (listIdx >= pTree->mNumLists) + return 0; + + return cLs_Addition(&pTree->mpLists[listIdx], pNode); +} + +int cTr_Insert(node_lists_tree_class *pTree, int listIdx, node_class *pNode, int idx) +{ + if (listIdx >= pTree->mNumLists) + return 0; + + return cLs_Insert(&pTree->mpLists[listIdx], idx, pNode); +} + +void cTr_Create(node_lists_tree_class *pTree, node_list_class *pLists, int numLists) +{ + pTree->mpLists = pLists; + pTree->mNumLists = numLists; + + while (numLists-- > 0) + cLs_Create(pLists++); +} + +}; diff --git a/libs/SSystem/SComponent/c_tree_iter.cpp b/libs/SSystem/SComponent/c_tree_iter.cpp index 4bf93c8658..cf8ff41c91 100644 --- a/libs/SSystem/SComponent/c_tree_iter.cpp +++ b/libs/SSystem/SComponent/c_tree_iter.cpp @@ -1 +1,33 @@ -// ok + +#include "global.h" +#include "SComponent/c_list_iter.h" +#include "SComponent/c_tree_iter.h" + +extern "C" { + +int cTrIt_Method(node_lists_tree_class *pTree, cNdIt_MethodFunc pMethod, void *pUserData) +{ + node_list_class *pList = pTree->mpLists; + int i = pTree->mNumLists; + int ret = 1; + while (i-- > 0) { + int sub = cLsIt_Method(pList++, pMethod, pUserData); + if (sub == 0) + ret = 0; + } + return ret; +} + +void * cTrIt_Judge(node_lists_tree_class *pTree, cNdIt_JudgeFunc pJudge, void *pUserData) +{ + node_list_class *pList = pTree->mpLists; + int i = pTree->mNumLists; + while (i-- > 0) { + void *pJudgeRet = cLsIt_Judge(pList++, pJudge, pUserData); + if (pJudgeRet != NULL) + return pJudgeRet; + } + return NULL; +} + +}; diff --git a/obj_files.mk b/obj_files.mk index b22b21a0f0..7e840cb61b 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -52,30 +52,32 @@ TEXT_O_FILES := \ $(BUILD_DIR)/asm/f/op/scene/f_op_scene_pause.o \ $(BUILD_DIR)/asm/f/pc/f_pc_base.o \ $(BUILD_DIR)/asm/f/pc/create/f_pc_create_iter.o \ - $(BUILD_DIR)/asm/f/pc/create/f_pc_create_req.o \ - $(BUILD_DIR)/asm/f/pc/create/f_pc_create_tag.o \ - $(BUILD_DIR)/asm/f/pc/f_pc_creator.o \ - $(BUILD_DIR)/asm/f/pc/delete/f_pc_delete_tag.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_create_req.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_create_tag.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_creator.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_delete_tag.o \ $(BUILD_DIR)/asm/f/pc/f_pc_deletor.o \ - $(BUILD_DIR)/asm/f/pc/draw/f_pc_draw_priority.o \ - $(BUILD_DIR)/asm/f/pc/f_pc_executor.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_deletor.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_draw_priority.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_executor.o \ $(BUILD_DIR)/asm/f/pc/f_pc_layer.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_leaf.o \ $(BUILD_DIR)/asm/f/pc/f_pc_leaf.o \ $(BUILD_DIR)/asm/f/pc/layer/f_pc_layer_iter.o \ $(BUILD_DIR)/asm/f/pc/layer/f_pc_layer_tag.o \ - $(BUILD_DIR)/asm/f/pc/f_pc_line.o \ - $(BUILD_DIR)/asm/f/pc/f_pc_load.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_line.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_load.o \ $(BUILD_DIR)/asm/f/pc/f_pc_manager.o \ - $(BUILD_DIR)/asm/f/pc/f_pc_method.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_method.o \ $(BUILD_DIR)/asm/f/pc/f_pc_node.o \ $(BUILD_DIR)/asm/f/pc/node/f_pc_node_req.o \ $(BUILD_DIR)/asm/f/pc/f_pc_priority.o \ - $(BUILD_DIR)/asm/f/pc/f_pc_profile.o \ - $(BUILD_DIR)/asm/f/pc/f_pc_searcher.o \ - $(BUILD_DIR)/asm/f/pc/line/f_pc_line_tag.o \ - $(BUILD_DIR)/asm/f/pc/line/f_pc_line_iter.o \ - $(BUILD_DIR)/asm/f/pc/method/f_pc_method_iter.o \ - $(BUILD_DIR)/asm/f/pc/method/f_pc_method_tag.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_profile.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_searcher.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_line_tag.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_line_iter.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_method_iter.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_method_tag.o \ $(BUILD_DIR)/asm/f/pc/f_pc_pause.o \ $(BUILD_DIR)/asm/f/pc/f_pc_draw.o \ $(BUILD_DIR)/asm/f/pc/fstcreate/f_pc_fstcreate_req.o \ @@ -243,17 +245,17 @@ TEXT_O_FILES := \ $(BUILD_DIR)/asm/SComponent/c/API/c_API_graphic.o \ $(BUILD_DIR)/asm/SComponent/c/cc/c_cc_d.o \ $(BUILD_DIR)/asm/SComponent/c/cc/c_cc_s.o \ - $(BUILD_DIR)/asm/SComponent/c/c_counter.o \ - $(BUILD_DIR)/asm/SComponent/c/c_list.o \ - $(BUILD_DIR)/asm/SComponent/c/list/c_list_iter.o \ - $(BUILD_DIR)/asm/SComponent/c/c_node.o \ - $(BUILD_DIR)/asm/SComponent/c/node/c_node_iter.o \ - $(BUILD_DIR)/asm/SComponent/c/c_tree.o \ - $(BUILD_DIR)/asm/SComponent/c/tree/c_tree_iter.o \ - $(BUILD_DIR)/asm/SComponent/c/c_phase.o \ + $(BUILD_DIR)/libs/SSystem/SComponent/c_counter.o \ + $(BUILD_DIR)/libs/SSystem/SComponent/c_list.o \ + $(BUILD_DIR)/libs/SSystem/SComponent/c_list_iter.o \ + $(BUILD_DIR)/libs/SSystem/SComponent/c_node.o \ + $(BUILD_DIR)/libs/SSystem/SComponent/c_node_iter.o \ + $(BUILD_DIR)/libs/SSystem/SComponent/c_tree.o \ + $(BUILD_DIR)/libs/SSystem/SComponent/c_tree_iter.o \ + $(BUILD_DIR)/libs/SSystem/SComponent/c_phase.o \ $(BUILD_DIR)/asm/SComponent/c/c_request.o \ - $(BUILD_DIR)/asm/SComponent/c/c_tag.o \ - $(BUILD_DIR)/asm/SComponent/c/tag/c_tag_iter.o \ + $(BUILD_DIR)/libs/SSystem/SComponent/c_tag.o \ + $(BUILD_DIR)/libs/SSystem/SComponent/c_tag_iter.o \ $(BUILD_DIR)/asm/SComponent/c/c_xyz.o \ $(BUILD_DIR)/asm/SComponent/c/c_sxyz.o \ $(BUILD_DIR)/asm/SComponent/c/c_math.o \ @@ -425,7 +427,6 @@ TEXT_O_FILES := \ $(BUILD_DIR)/asm/JKernel/JKRSolidHeap.o \ $(BUILD_DIR)/asm/JKernel/JKRAssertHeap.o \ $(BUILD_DIR)/libs/JSystem/JKernel/JKRDisposer.o \ - $(BUILD_DIR)/asm/JKernel/JKRDisposer.o \ $(BUILD_DIR)/asm/JKernel/JKRThread.o \ $(BUILD_DIR)/asm/JKernel/JKRAram.o \ $(BUILD_DIR)/asm/JKernel/JKRAramHeap.o \ diff --git a/src/f/f_pc/f_pc_create_req.cpp b/src/f/f_pc/f_pc_create_req.cpp index 4bf93c8658..93052366dc 100644 --- a/src/f/f_pc/f_pc_create_req.cpp +++ b/src/f/f_pc/f_pc_create_req.cpp @@ -1 +1,178 @@ -// ok + +#include "f/f_pc/f_pc_create_req.h" + +#include "SComponent/c_phase.h" +#include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_create_iter.h" +#include "f/f_pc/f_pc_layer.h" +#include "f/f_pc/f_pc_method.h" +#include "f/f_pc/f_pc_executor.h" +#include "f/f_pc/f_pc_deletor.h" + +extern "C" { + +bool fpcCtRq_isCreatingByID(create_tag *pTag, int *pId) +{ + create_request *pReq = (create_request *) (pTag->mpTagData); + return pReq->mBsPcId == *pId; +} + +bool fpcCtRq_IsCreatingByID(unsigned int id) +{ + return fpcCtIt_Judge((cNdIt_JudgeFunc) fpcCtRq_isCreatingByID, &id) != NULL; +} + +void fpcCtRq_CreateQTo(create_request *pReq) +{ + fpcCtTg_CreateQTo(pReq); + fpcLy_CreatedMesg(pReq->mpLayer); + fpcLy_CancelQTo(&pReq->mMtdTg); +} + +void fpcCtRq_ToCreateQ(create_request *pReq) +{ + fpcLy_CreatingMesg(pReq->mpLayer); + fpcLy_ToCancelQ(pReq->mpLayer, &pReq->mMtdTg); + fpcCtTg_ToCreateQ(pReq); +} + +extern void cMl_NS_free(void *pPtr); + +#if NON_MATCHING +bool fpcCtRq_Delete(create_request *pReq) +{ + fpcCtRq_CreateQTo(pReq); + if (pReq->mpCtRqMtd != NULL) { + // flow control + if (fpcMtd_Method(pReq->mpCtRqMtd->mpDelete, pReq) == 0) + return 0; + + if (pReq->mpRes) + pReq->mpRes->mpCtRq = NULL; + cMl_NS_free(pReq); + return 1; + } + + return 0; +} +#else +asm bool fpcCtRq_Delete(create_request *pReq) +{ + nofralloc +/* 80020BA0 0001DAE0 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80020BA4 0001DAE4 7C 08 02 A6 */ mflr r0 +/* 80020BA8 0001DAE8 90 01 00 14 */ stw r0, 0x14(r1) +/* 80020BAC 0001DAEC 93 E1 00 0C */ stw r31, 0xc(r1) +/* 80020BB0 0001DAF0 7C 7F 1B 78 */ mr r31, r3 +/* 80020BB4 0001DAF4 4B FF FF 6D */ bl fpcCtRq_CreateQTo +/* 80020BB8 0001DAF8 80 7F 00 34 */ lwz r3, 0x34(r31) +/* 80020BBC 0001DAFC 28 03 00 00 */ cmplwi r3, 0 +/* 80020BC0 0001DB00 41 82 00 20 */ beq lbl_80020BE0 +/* 80020BC4 0001DB04 80 63 00 08 */ lwz r3, 8(r3) +/* 80020BC8 0001DB08 7F E4 FB 78 */ mr r4, r31 +/* 80020BCC 0001DB0C 48 00 18 5D */ bl fpcMtd_Method +/* 80020BD0 0001DB10 2C 03 00 00 */ cmpwi r3, 0 +/* 80020BD4 0001DB14 40 82 00 0C */ bne lbl_80020BE0 +/* 80020BD8 0001DB18 38 60 00 00 */ li r3, 0 +/* 80020BDC 0001DB1C 48 00 00 24 */ b lbl_80020C00 +lbl_80020BE0: +/* 80020BE0 0001DB20 80 7F 00 40 */ lwz r3, 0x40(r31) +/* 80020BE4 0001DB24 28 03 00 00 */ cmplwi r3, 0 +/* 80020BE8 0001DB28 41 82 00 0C */ beq lbl_80020BF4 +/* 80020BEC 0001DB2C 38 00 00 00 */ li r0, 0 +/* 80020BF0 0001DB30 90 03 00 14 */ stw r0, 0x14(r3) +lbl_80020BF4: +/* 80020BF4 0001DB34 7F E3 FB 78 */ mr r3, r31 +/* 80020BF8 0001DB38 48 24 26 69 */ bl cMl_NS_free +/* 80020BFC 0001DB3C 38 60 00 01 */ li r3, 1 +lbl_80020C00: +/* 80020C00 0001DB40 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 80020C04 0001DB44 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80020C08 0001DB48 7C 08 03 A6 */ mtlr r0 +/* 80020C0C 0001DB4C 38 21 00 10 */ addi r1, r1, 0x10 +/* 80020C10 0001DB50 4E 80 00 20 */ blr +} +#endif + +bool fpcCtRq_Cancel(create_request *pReq) +{ + if (pReq != NULL && !pReq->mbIsCancelling) { + pReq->mbIsCancelling = true; + base_process_class *pProc = pReq->mpRes; + + if (pProc != NULL && !fpcDt_Delete(pProc)) + return false; + + if (pReq->mpCtRqMtd != NULL && !fpcMtd_Method(pReq->mpCtRqMtd->mpCancel, pReq)) + return false; + + return fpcCtRq_Delete(pReq); + } else { + return true; + } +} + +int fpcCtRq_IsDoing(create_request *pReq) +{ + if (pReq != NULL) + return pReq->mbIsCreating; + else + return false; +} + +static bool fpcCtRq_Do(create_request *pReq) +{ + int ret = cPhs_COMPLEATE_e; + + if (pReq->mpCtRqMtd != NULL) { + cPhs__Handler pHandler = pReq->mpCtRqMtd->mpHandler; + if (pHandler != NULL) { + pReq->mbIsCreating = true; + ret = pHandler(pReq); + pReq->mbIsCreating = false; + } + } + + switch (ret) { + case cPhs_COMPLEATE_e: { + int success = fpcEx_ToExecuteQ(pReq->mpRes); + if (success == 0) + return fpcCtRq_Cancel(pReq); + else + return fpcCtRq_Delete(pReq); + } + case 3: + case cPhs_ERROR_e: + return fpcCtRq_Cancel(pReq); + } + + return 1; +} + +void fpcCtRq_Handler(void) +{ + fpcCtIt_Method((cNdIt_MethodFunc) fpcCtRq_Do, NULL); +} + +extern void * cMl_NS_memalignB(int, unsigned long); +extern int fpcBs_MakeOfId(void); + +create_request * fpcCtRq_Create(layer_class *pLayer, unsigned long size, create_request_method_class *pMthd) +{ + create_request *pReq = (create_request *) cMl_NS_memalignB(-4, size); + + if (pReq != NULL) { + fpcCtTg_Init(pReq, pReq); + fpcMtdTg_Init(&pReq->mMtdTg, (process_method_tag_func) fpcCtRq_Cancel, pReq); + pReq->mpLayer = pLayer; + pReq->mpCtRqMtd = pMthd; + pReq->mBsPcId = fpcBs_MakeOfId(); + pReq->mpRes = NULL; + pReq->mbIsCancelling = false; + fpcCtRq_ToCreateQ(pReq); + } + + return pReq; +} + +}; diff --git a/src/f/f_pc/f_pc_create_tag.cpp b/src/f/f_pc/f_pc_create_tag.cpp index 4bf93c8658..56ec159d0a 100644 --- a/src/f/f_pc/f_pc_create_tag.cpp +++ b/src/f/f_pc/f_pc_create_tag.cpp @@ -1 +1,26 @@ -// ok + +#include "global.h" +#include "f/f_pc/f_pc_create_tag.h" + +// g_fpcCtTg_Queue +extern node_list_class lbl_803A3990; + +extern "C" { + +void fpcCtTg_ToCreateQ(create_tag_class *pTag) +{ + cTg_Addition(&lbl_803A3990, pTag); +} + +void fpcCtTg_CreateQTo(create_tag_class *pTag) +{ + cTg_SingleCut(pTag); +} + +int fpcCtTg_Init(create_tag *pTag, void *pUserData) +{ + cTg_Create(pTag, pUserData); + return 1; +} + +}; diff --git a/src/f/f_pc/f_pc_creator.cpp b/src/f/f_pc/f_pc_creator.cpp index 4bf93c8658..7b75f4cccc 100644 --- a/src/f/f_pc/f_pc_creator.cpp +++ b/src/f/f_pc/f_pc_creator.cpp @@ -1 +1,28 @@ -// ok + +#include "f/f_pc/f_pc_creator.h" +#include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_create_req.h" + +extern "C" { + +bool fpcCt_IsCreatingByID(unsigned int id) +{ + return fpcCtRq_IsCreatingByID(id); +} + +int fpcCt_IsDoing(base_process_class *pProc) +{ + return fpcCtRq_IsDoing(pProc->mpCtRq); +} + +void fpcCt_Abort(base_process_class *pProc) +{ + fpcCtRq_Cancel(pProc->mpCtRq); +} + +void fpcCt_Handler(void) +{ + fpcCtRq_Handler(); +} + +}; diff --git a/src/f/f_pc/f_pc_delete_tag.cpp b/src/f/f_pc/f_pc_delete_tag.cpp index 4bf93c8658..954eade357 100644 --- a/src/f/f_pc/f_pc_delete_tag.cpp +++ b/src/f/f_pc/f_pc_delete_tag.cpp @@ -1 +1,49 @@ -// ok + +#include "global.h" +#include "f/f_pc/f_pc_delete_tag.h" + +// g_fpcDtTg_Queue +extern node_list_class lbl_803A39A0; + +extern "C" { + +bool fpcDtTg_IsEmpty(delete_tag_class *pTag) +{ + return lbl_803A39A0.mSize == 0; +} + +void fpcDtTg_ToDeleteQ(delete_tag_class *pTag) +{ + pTag->mTimer = 1; + cTg_Addition(&lbl_803A39A0, pTag); +} + +void fpcDtTg_DeleteQTo(delete_tag_class *pTag) +{ + cTg_SingleCut(pTag); +} + +int fpcDtTg_Do(delete_tag_class *pTag, delete_tag_func pFunc) +{ + if (pTag->mTimer <= 0) { + fpcDtTg_DeleteQTo(pTag); + int ret = pFunc(pTag->mpTagData); + if (ret == 0) { + fpcDtTg_ToDeleteQ(pTag); + return 0; + } else { + return 1; + } + } else { + pTag->mTimer--; + return 0; + } +} + +int fpcDtTg_Init(delete_tag_class *pTag, void *pUserData) +{ + cTg_Create(pTag, pUserData); + return 1; +} + +}; diff --git a/src/f/f_pc/f_pc_deletor.cpp b/src/f/f_pc/f_pc_deletor.cpp index 4bf93c8658..90af7ed3ea 100644 --- a/src/f/f_pc/f_pc_deletor.cpp +++ b/src/f/f_pc/f_pc_deletor.cpp @@ -1 +1,23 @@ -// ok + +#include "f/f_pc/f_pc_creator.h" +#include "f/f_pc/f_pc_deletor.h" +#include "f/f_pc/f_pc_base.h" + +extern "C" { + +int fpcDt_Delete(base_process_class *pProc) +{ + if (pProc != NULL) { + if (fpcCt_IsDoing(pProc) == 1) + return 0; + + if (pProc->mInitState == 3) + return 0; + + return fpcDt_ToDeleteQ(pProc); + } else { + return 1; + } +} + +}; diff --git a/src/f/f_pc/f_pc_draw_priority.cpp b/src/f/f_pc/f_pc_draw_priority.cpp index 4bf93c8658..b4e3dc73b5 100644 --- a/src/f/f_pc/f_pc_draw_priority.cpp +++ b/src/f/f_pc/f_pc_draw_priority.cpp @@ -1 +1,22 @@ -// ok + +#include "global.h" +#include "f/f_pc/f_pc_draw_priority.h" + +extern "C" { + +int fpcDwPi_Get(draw_priority_class *pDwPi) +{ + return pDwPi->mPriority; +} + +void fpcDwPi_Set(draw_priority_class *pDwPi, int p) +{ + pDwPi->mPriority = p; +} + +void fpcDwPi_Init(draw_priority_class *pDwPi, int p) +{ + fpcDwPi_Set(pDwPi, p); +} + +}; diff --git a/src/f/f_pc/f_pc_executor.cpp b/src/f/f_pc/f_pc_executor.cpp index 4bf93c8658..ff2e9ebbdf 100644 --- a/src/f/f_pc/f_pc_executor.cpp +++ b/src/f/f_pc/f_pc_executor.cpp @@ -1 +1,98 @@ -// ok + +#include "f/f_pc/f_pc_executor.h" +#include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_line_iter.h" +#include "f/f_pc/f_pc_layer_tag.h" +#include "f/f_pc/f_pc_layer.h" +#include "f/f_pc/f_pc_node.h" +#include "f/f_pc/f_pc_searcher.h" + +extern "C" { + +extern int fpcLyTg_ToQueue(layer_management_tag_class *pTag, u32 layerID, u16 listID, u16 listPrio); +extern int fpcLyTg_QueueTo(layer_management_tag_class *pTag); +extern int fpcLyIt_OnlyHere(layer_class *pLayer, cNdIt_MethodFunc pFunc, void *pUserData); +extern void * fpcLyIt_AllJudge(void *pFunc, void *pUserData); +extern int fpcPause_IsEnable(base_process_class *pProc, int); + +// g_fpcNd_type +extern int lbl_80450D40; + +base_process_class * fpcEx_Search(void *pFunc, void *pUserData) +{ + return (base_process_class *) fpcLyIt_AllJudge(pFunc, pUserData); +} + +base_process_class * fpcEx_SearchByID(u32 id) +{ + if (id + 2 <= 1) + return NULL; + + return fpcEx_Search(fpcSch_JudgeByID, &id);; +} + +bool fpcEx_IsExist(int id) +{ + return fpcEx_SearchByID(id) != NULL; +} + +int fpcEx_Execute(base_process_class *pProc) +{ + if (pProc->mInitState != 2 || fpcPause_IsEnable(pProc, 1) == 1) + return 0; + fpcBs_Execute(pProc); + // TODO: missing return? +} + +int fpcEx_ToLineQ(base_process_class *pProc) +{ + layer_class *pLayer = pProc->mLyTg.mpLayer; + base_process_class *pLayerPcNode = pLayer->mpPcNode; + + if (pLayer->mLayerID == 0 || cTg_IsUse(&pLayerPcNode->mLnTg) == true) { + int ret = fpcLnTg_ToQueue(&pProc->mLnTg, pProc->mPi.b.mListID); + if (ret == 0) { + fpcLyTg_QueueTo(&pProc->mLyTg); + return 0; + } + + pProc->mInitState = 2; + if (fpcBs_Is_JustOfType(lbl_80450D40, pProc->mSubType)) { + process_node_class *pNode = (process_node_class *) pProc; + fpcLyIt_OnlyHere(&pNode->mLayer, (cNdIt_MethodFunc) fpcEx_ToLineQ, pNode); + } + + return 1; + } + + return 0; +} + +int fpcEx_ExecuteQTo(base_process_class *pProc) +{ + int ret = fpcLyTg_QueueTo(&pProc->mLyTg); + if (ret == 1) { + pProc->mInitState = 3; + return 1; + } else { + return 0; + } +} + +int fpcEx_ToExecuteQ(base_process_class *pProc) +{ + int ret = fpcLyTg_ToQueue(&pProc->mLyTg, pProc->mPi.b.mLayer, pProc->mPi.b.mListID, pProc->mPi.b.mListPrio); + if (ret == 1) { + fpcEx_ToLineQ(pProc); + return 1; + } else { + return 0; + } +} + +void fpcEx_Handler(cNdIt_MethodFunc pFunc) +{ + return fpcLnIt_Queue(pFunc); +} + +}; diff --git a/src/f/f_pc/f_pc_leaf.cpp b/src/f/f_pc/f_pc_leaf.cpp index 4bf93c8658..c3be4a4563 100644 --- a/src/f/f_pc/f_pc_leaf.cpp +++ b/src/f/f_pc/f_pc_leaf.cpp @@ -1 +1,26 @@ -// ok + +#include "f/f_pc/f_pc_leaf.h" + +extern "C" { + +int fpcLf_GetPriority(leafdraw_class *pLeaf) +{ + return fpcDwPi_Get(&pLeaf->mDwPi); +} + +int fpcLf_DrawMethod(leafdraw_method_class *pMthd, void *pUserData) +{ + return fpcMtd_Method(pMthd->mpDrawFunc, pUserData); +} + +#if 0 +int fpcLf_Draw(leafdraw_class *pLeaf) +{ + int ret = 0; + if (pLeaf->mbUnk0 == 0) + ret = fpcLf_DrawMethod(pLeaf->mpDrawMtd, pLeaf); + return ret; +} +#endif + +}; diff --git a/src/f/f_pc/f_pc_line.cpp b/src/f/f_pc/f_pc_line.cpp index 4bf93c8658..7771e47516 100644 --- a/src/f/f_pc/f_pc_line.cpp +++ b/src/f/f_pc/f_pc_line.cpp @@ -1 +1,18 @@ -// ok + +#include "global.h" +#include "SComponent/c_list.h" + +// l_fpcLn_Line +extern node_list_class lbl_803F4CF0[16]; + +extern "C" { + +void fpcLn_Create(void) +{ + int i = ARRAY_SIZE(lbl_803F4CF0); + node_list_class *pLine = lbl_803F4CF0; + while (i-- > 0) + cLs_Create(pLine++); +} + +}; diff --git a/src/f/f_pc/f_pc_line_iter.cpp b/src/f/f_pc/f_pc_line_iter.cpp index 4bf93c8658..984ef68179 100644 --- a/src/f/f_pc/f_pc_line_iter.cpp +++ b/src/f/f_pc/f_pc_line_iter.cpp @@ -1 +1,32 @@ -// ok + +#include "f/f_pc/f_pc_layer.h" +#include "f/f_pc/f_pc_base.h" +#include "SComponent/c_tag_iter.h" +#include "SComponent/c_tree_iter.h" + +// g_fpcLn_Queue +extern node_lists_tree_class lbl_804505D8; + +extern "C" { + +static int fpcLnIt_MethodCall(create_tag_class *pTag, method_filter *pFilter) +{ + layer_class *pLayer = ((base_process_class *) pTag->mpTagData)->mLyTg.mpLayer; + layer_class *pCurLayer = fpcLy_CurrentLayer(); + + fpcLy_SetCurrentLayer(pLayer); + int ret = cTgIt_MethodCall(pTag, pFilter); + fpcLy_SetCurrentLayer(pCurLayer); + + return ret; +} + +void fpcLnIt_Queue(cNdIt_MethodFunc pFunc) +{ + method_filter filter; + filter.mpMethodFunc = pFunc; + filter.mpUserData = NULL; + cTrIt_Method(&lbl_804505D8, (cNdIt_MethodFunc) fpcLnIt_MethodCall, &filter); +} + +}; diff --git a/src/f/f_pc/f_pc_line_tag.cpp b/src/f/f_pc/f_pc_line_tag.cpp index 4bf93c8658..f42449ca7b 100644 --- a/src/f/f_pc/f_pc_line_tag.cpp +++ b/src/f/f_pc/f_pc_line_tag.cpp @@ -1 +1,44 @@ -// ok + +#include "f/f_pc/f_pc_line_tag.h" + +// g_fpcLn_Queue +extern node_lists_tree_class lbl_804505D8; + +extern "C" { + +int fpcLnTg_Move(line_tag *pLineTag, int newLineListID) +{ + if (pLineTag->mLineListID != newLineListID) { + fpcLnTg_QueueTo(pLineTag); + return fpcLnTg_ToQueue(pLineTag, newLineListID); + } + + return 1; +} + +void fpcLnTg_QueueTo(line_tag *pLineTag) +{ + cTg_SingleCutFromTree(pLineTag); + pLineTag->mLineListID = -1; +} + +int fpcLnTg_ToQueue(line_tag *pLineTag, int lineListID) +{ + int ret = cTg_AdditionToTree(&lbl_804505D8, lineListID, pLineTag); + + if (ret) { + pLineTag->mLineListID = lineListID; + return 1; + } else { + return 0; + } +} + +void fpcLnTg_Init(line_tag *pLineTag, void *pData) +{ + cTg_Create(pLineTag, pData); + pLineTag->mLineListID = -1; +} + +}; + diff --git a/src/f/f_pc/f_pc_load.cpp b/src/f/f_pc/f_pc_load.cpp index 4bf93c8658..6afb58e1fb 100644 --- a/src/f/f_pc/f_pc_load.cpp +++ b/src/f/f_pc/f_pc_load.cpp @@ -1 +1,42 @@ -// ok + +#include "SComponent/c_phase.h" +#include "f/f_pc/f_pc_load.h" + +extern "C" { + +extern int cDyl_IsLinked(short procName); +extern int cDyl_Unlink(short procName); +extern int cDyl_LinkASync(short procName); + +bool fpcLd_Use(u16 procName) +{ + if (fpcLd_IsLoaded(procName) == true && fpcLd_Load(procName) == cPhs_COMPLEATE_e) + return true; + return false; +} + +int fpcLd_IsLoaded(u16 procName) +{ + return cDyl_IsLinked(procName); +} + +void fpcLd_Free(u16 procName) +{ + cDyl_Unlink(procName); +} + +int fpcLd_Load(u16 procName) +{ + int phase = cDyl_LinkASync(procName); + + switch (phase) { + case cPhs_COMPLEATE_e: + return cPhs_COMPLEATE_e; + case 0: + return 0; + default: + return cPhs_ERROR_e; + } +} + +}; diff --git a/src/f/f_pc/f_pc_method.cpp b/src/f/f_pc/f_pc_method.cpp index 4bf93c8658..3cf3634f10 100644 --- a/src/f/f_pc/f_pc_method.cpp +++ b/src/f/f_pc/f_pc_method.cpp @@ -1 +1,35 @@ -// ok + +#include "global.h" +#include "f/f_pc/f_pc_method.h" + +extern "C" { + +int fpcMtd_Method(process_method_func pFunc, void *pUserData) +{ + if (pFunc != NULL) + return pFunc(pUserData); + else + return 1; +} + +int fpcMtd_Execute(process_method_class *pMthd, void *pUserData) +{ + return fpcMtd_Method(pMthd->mpExecuteFunc, pUserData); +} + +int fpcMtd_IsDelete(process_method_class *pMthd, void *pUserData) +{ + return fpcMtd_Method(pMthd->mpIsDeleteFunc, pUserData); +} + +int fpcMtd_Delete(process_method_class *pMthd, void *pUserData) +{ + return fpcMtd_Method(pMthd->mpDeleteFunc, pUserData); +} + +int fpcMtd_Create(process_method_class *pMthd, void *pUserData) +{ + return fpcMtd_Method(pMthd->mpCreateFunc, pUserData); +} + +}; diff --git a/src/f/f_pc/f_pc_method_iter.cpp b/src/f/f_pc/f_pc_method_iter.cpp index 4bf93c8658..200a67fa45 100644 --- a/src/f/f_pc/f_pc_method_iter.cpp +++ b/src/f/f_pc/f_pc_method_iter.cpp @@ -1 +1,12 @@ -// ok + +#include "global.h" +#include "f/f_pc/f_pc_method_iter.h" + +extern "C" { + +void fpcMtdIt_Method(node_list_class *pList, cNdIt_MethodFunc pMethod) +{ + cLsIt_Method(pList, pMethod, NULL); +} + +}; diff --git a/src/f/f_pc/f_pc_method_tag.cpp b/src/f/f_pc/f_pc_method_tag.cpp index 4bf93c8658..880d1a6dbe 100644 --- a/src/f/f_pc/f_pc_method_tag.cpp +++ b/src/f/f_pc/f_pc_method_tag.cpp @@ -1 +1,32 @@ -// ok + +#include "f/f_pc/f_pc_method_tag.h" + +// g_fpcLn_Queue +extern node_lists_tree_class lbl_804505D8; + +extern "C" { + +void fpcMtdTg_Do(process_method_tag_class *pMthd) +{ + pMthd->mpFunc(pMthd->mpMthdData); +} + +void fpcMtdTg_ToMethodQ(node_list_class *pList, process_method_tag_class *pMthd) +{ + cTg_Addition(pList, pMthd); +} + +void fpcMtdTg_MethodQTo(process_method_tag_class *pMthd) +{ + cTg_SingleCut(pMthd); +} + +int fpcMtdTg_Init(process_method_tag_class *pMthd, process_method_tag_func pFunc, void *pMthdData) +{ + cTg_Create(pMthd, pMthd); + pMthd->mpFunc = pFunc; + pMthd->mpMthdData = pMthdData; + return 1; +} + +}; diff --git a/src/f/f_pc/f_pc_profile.cpp b/src/f/f_pc/f_pc_profile.cpp index 4bf93c8658..fb3f353342 100644 --- a/src/f/f_pc/f_pc_profile.cpp +++ b/src/f/f_pc/f_pc_profile.cpp @@ -1 +1,14 @@ -// ok + +#include "f/f_pc/f_pc_profile.h" + +// g_fpcPf_ProfileList_p +extern void ** lbl_80450D50; + +extern "C" { + +void * fpcPf_Get(s16 profileID) +{ + return lbl_80450D50[profileID]; +} + +}; diff --git a/src/f/f_pc/f_pc_searcher.cpp b/src/f/f_pc/f_pc_searcher.cpp index 4bf93c8658..4738b299dd 100644 --- a/src/f/f_pc/f_pc_searcher.cpp +++ b/src/f/f_pc/f_pc_searcher.cpp @@ -1 +1,23 @@ -// ok + +#include "f/f_pc/f_pc_searcher.h" +#include "f/f_pc/f_pc_base.h" + +extern "C" { + +void * fpcSch_JudgeForPName(base_process_class *pProc, void *pUserData) +{ + short pname = *(short*)pUserData; + if (pProc->mProcName == pname) + return pProc; + return NULL; +} + +void * fpcSch_JudgeByID(base_process_class *pProc, void *pUserData) +{ + int id = *(int*)pUserData; + if (pProc->mBsPcId == id) + return pProc; + return NULL; +} + +}; diff --git a/tools/.gitignore b/tools/.gitignore index e5c234b0ce..702752f9fc 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -1,3 +1,4 @@ # Build artifacts *.exe elf2dol +vtable.lcf \ No newline at end of file diff --git a/tools/vtables.py b/tools/vtables.py new file mode 100644 index 0000000000..2212c456ac --- /dev/null +++ b/tools/vtables.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 + +BANNER = """ +# This script is will go through the frameworkF.map and extract +# all vtables and their location. This information can be used to +# place the compiler generated vtables in their correct place. +# - Julgodis, 2020 +""" + +def extract(): + file = open('frameworkF.map', 'r') + lines = file.readlines() + output = open('vtable.lcf', 'w') + + for line in lines: + data = [ x.strip() for x in line.strip().split(" ") ] + data = [ x for x in data if len(x) > 0 ] + if len(data) < 6 or len(data) > 7: + continue + + if not data[4].startswith("__vt"): + continue + + output.write("\"%s\" = %s;\n" % (data[4], "0x" + data[2])) + output.close() + +if __name__ == "__main__": + import sys + + print(BANNER) + print("...") + extract() + print("COMPLETE vtable.lcf") \ No newline at end of file