diff --git a/Makefile b/Makefile index c06c95362f..cf323456f7 100644 --- a/Makefile +++ b/Makefile @@ -111,6 +111,9 @@ $(ELF): $(O_FILES) $(LDSCRIPT) $(BUILD_DIR)/%.o: %.s $(AS) $(ASFLAGS) -o $@ $< +$(BUILD_DIR)/%.o: %.c + $(CC) $(CFLAGS) -c -o $@ $< + $(BUILD_DIR)/%.o: %.cpp $(CC) $(CFLAGS) -c -o $@ $< # TODO: See if this is necessary after actually adding some C code diff --git a/asm/f/pc/create/f_pc_create_iter.s b/asm/f/pc/create/f_pc_create_iter.s deleted file mode 100644 index 5719633325..0000000000 --- a/asm/f/pc/create/f_pc_create_iter.s +++ /dev/null @@ -1,86 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 800209c8 - - -.global fpcCtIt_Method -fpcCtIt_Method: -/* 800209C8 0001D908 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800209CC 0001D90C 7C 08 02 A6 */ mflr r0 -/* 800209D0 0001D910 90 01 00 14 */ stw r0, 0x14(r1) -/* 800209D4 0001D914 90 61 00 08 */ stw r3, 8(r1) -/* 800209D8 0001D918 90 81 00 0C */ stw r4, 0xc(r1) -/* 800209DC 0001D91C 3C 60 80 3A */ lis r3, lbl_803A3990@ha -/* 800209E0 0001D920 38 63 39 90 */ addi r3, r3, lbl_803A3990@l -/* 800209E4 0001D924 3C 80 80 26 */ lis r4, cTgIt_MethodCall@ha -/* 800209E8 0001D928 38 84 6A 7C */ addi r4, r4, cTgIt_MethodCall@l -/* 800209EC 0001D92C 38 A1 00 08 */ addi r5, r1, 8 -/* 800209F0 0001D930 48 24 56 71 */ bl cLsIt_Method -/* 800209F4 0001D934 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800209F8 0001D938 7C 08 03 A6 */ mtlr r0 -/* 800209FC 0001D93C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020A00 0001D940 4E 80 00 20 */ blr - -.global fpcCtIt_Judge -fpcCtIt_Judge: -/* 80020A04 0001D944 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020A08 0001D948 7C 08 02 A6 */ mflr r0 -/* 80020A0C 0001D94C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020A10 0001D950 90 61 00 08 */ stw r3, 8(r1) -/* 80020A14 0001D954 90 81 00 0C */ stw r4, 0xc(r1) -/* 80020A18 0001D958 3C 60 80 3A */ lis r3, lbl_803A3990@ha -/* 80020A1C 0001D95C 38 63 39 90 */ addi r3, r3, lbl_803A3990@l -.global cTgIt_JudgeFilter -/* 80020A20 0001D960 3C 80 80 26 */ lis r4, cTgIt_JudgeFilter@ha -.global cTgIt_JudgeFilter -/* 80020A24 0001D964 38 84 6A B0 */ addi r4, r4, cTgIt_JudgeFilter@l -/* 80020A28 0001D968 38 A1 00 08 */ addi r5, r1, 8 -/* 80020A2C 0001D96C 48 24 56 6D */ bl cLsIt_Judge -/* 80020A30 0001D970 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020A34 0001D974 7C 08 03 A6 */ mtlr r0 -/* 80020A38 0001D978 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020A3C 0001D97C 4E 80 00 20 */ blr -.global fpcCtIt_filter_JudgeInLayer -fpcCtIt_filter_JudgeInLayer: -/* 80020A40 0001D980 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020A44 0001D984 7C 08 02 A6 */ mflr r0 -/* 80020A48 0001D988 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020A4C 0001D98C 7C 85 23 78 */ mr r5, r4 -/* 80020A50 0001D990 80 83 00 0C */ lwz r4, 0xc(r3) -/* 80020A54 0001D994 80 64 00 44 */ lwz r3, 0x44(r4) -/* 80020A58 0001D998 80 63 00 0C */ lwz r3, 0xc(r3) -/* 80020A5C 0001D99C 80 05 00 00 */ lwz r0, 0(r5) -/* 80020A60 0001D9A0 7C 03 00 40 */ cmplw r3, r0 -/* 80020A64 0001D9A4 40 82 00 1C */ bne lbl_80020A80 -/* 80020A68 0001D9A8 80 64 00 40 */ lwz r3, 0x40(r4) -/* 80020A6C 0001D9AC 80 85 00 08 */ lwz r4, 8(r5) -/* 80020A70 0001D9B0 81 85 00 04 */ lwz r12, 4(r5) -/* 80020A74 0001D9B4 7D 89 03 A6 */ mtctr r12 -/* 80020A78 0001D9B8 4E 80 04 21 */ bctrl -/* 80020A7C 0001D9BC 48 00 00 08 */ b lbl_80020A84 -lbl_80020A80: -/* 80020A80 0001D9C0 38 60 00 00 */ li r3, 0 -lbl_80020A84: -/* 80020A84 0001D9C4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020A88 0001D9C8 7C 08 03 A6 */ mtlr r0 -/* 80020A8C 0001D9CC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80020A90 0001D9D0 4E 80 00 20 */ blr - -.global fpcCtIt_JudgeInLayer -fpcCtIt_JudgeInLayer: -/* 80020A94 0001D9D4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80020A98 0001D9D8 7C 08 02 A6 */ mflr r0 -/* 80020A9C 0001D9DC 90 01 00 24 */ stw r0, 0x24(r1) -/* 80020AA0 0001D9E0 90 61 00 08 */ stw r3, 8(r1) -/* 80020AA4 0001D9E4 90 81 00 0C */ stw r4, 0xc(r1) -/* 80020AA8 0001D9E8 90 A1 00 10 */ stw r5, 0x10(r1) -.global fpcCtIt_filter_JudgeInLayer -/* 80020AAC 0001D9EC 3C 60 80 02 */ lis r3, fpcCtIt_filter_JudgeInLayer@ha -.global fpcCtIt_filter_JudgeInLayer -/* 80020AB0 0001D9F0 38 63 0A 40 */ addi r3, r3, fpcCtIt_filter_JudgeInLayer@l -/* 80020AB4 0001D9F4 38 81 00 08 */ addi r4, r1, 8 -/* 80020AB8 0001D9F8 4B FF FF 4D */ bl fpcCtIt_Judge -/* 80020ABC 0001D9FC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80020AC0 0001DA00 7C 08 03 A6 */ mtlr r0 -/* 80020AC4 0001DA04 38 21 00 20 */ addi r1, r1, 0x20 -/* 80020AC8 0001DA08 4E 80 00 20 */ blr diff --git a/asm/f/pc/f_pc_base.s b/asm/f/pc/f_pc_base.s deleted file mode 100644 index 5b9cdbdc35..0000000000 --- a/asm/f/pc/f_pc_base.s +++ /dev/null @@ -1,268 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 8002064c - - -.global fpcBs_Is_JustOfType -fpcBs_Is_JustOfType: -/* 8002064C 0001D58C 7C 04 18 50 */ subf r0, r4, r3 -/* 80020650 0001D590 7C 00 00 34 */ cntlzw r0, r0 -/* 80020654 0001D594 54 03 D9 7E */ srwi r3, r0, 5 -/* 80020658 0001D598 4E 80 00 20 */ blr - -.global fpcBs_MakeOfType -fpcBs_MakeOfType: -/* 8002065C 0001D59C 88 0D 87 88 */ lbz r0, lbl_80450D08-_SDA_BASE_(r13) -/* 80020660 0001D5A0 7C 00 07 75 */ extsb. r0, r0 -/* 80020664 0001D5A4 40 82 00 14 */ bne lbl_80020678 -/* 80020668 0001D5A8 3C 00 09 13 */ lis r0, 0x913 -/* 8002066C 0001D5AC 90 0D 87 84 */ stw r0, lbl_80450D04-_SDA_BASE_(r13) -/* 80020670 0001D5B0 38 00 00 01 */ li r0, 1 -/* 80020674 0001D5B4 98 0D 87 88 */ stb r0, lbl_80450D08-_SDA_BASE_(r13) -lbl_80020678: -/* 80020678 0001D5B8 80 03 00 00 */ lwz r0, 0(r3) -/* 8002067C 0001D5BC 2C 00 00 00 */ cmpwi r0, 0 -/* 80020680 0001D5C0 40 82 00 14 */ bne lbl_80020694 -/* 80020684 0001D5C4 80 8D 87 84 */ lwz r4, lbl_80450D04-_SDA_BASE_(r13) -/* 80020688 0001D5C8 38 04 00 01 */ addi r0, r4, 1 -/* 8002068C 0001D5CC 90 0D 87 84 */ stw r0, lbl_80450D04-_SDA_BASE_(r13) -/* 80020690 0001D5D0 90 03 00 00 */ stw r0, 0(r3) -lbl_80020694: -/* 80020694 0001D5D4 80 63 00 00 */ lwz r3, 0(r3) -/* 80020698 0001D5D8 4E 80 00 20 */ blr - -.global fpcBs_MakeOfId -fpcBs_MakeOfId: -/* 8002069C 0001D5DC 88 0D 87 90 */ lbz r0, lbl_80450D10-_SDA_BASE_(r13) -/* 800206A0 0001D5E0 7C 00 07 75 */ extsb. r0, r0 -/* 800206A4 0001D5E4 40 82 00 10 */ bne lbl_800206B4 -/* 800206A8 0001D5E8 38 00 00 01 */ li r0, 1 -/* 800206AC 0001D5EC 90 0D 87 8C */ stw r0, lbl_80450D0C-_SDA_BASE_(r13) -/* 800206B0 0001D5F0 98 0D 87 90 */ stb r0, lbl_80450D10-_SDA_BASE_(r13) -lbl_800206B4: -/* 800206B4 0001D5F4 80 6D 87 8C */ lwz r3, lbl_80450D0C-_SDA_BASE_(r13) -/* 800206B8 0001D5F8 38 03 00 01 */ addi r0, r3, 1 -/* 800206BC 0001D5FC 90 0D 87 8C */ stw r0, lbl_80450D0C-_SDA_BASE_(r13) -/* 800206C0 0001D600 4E 80 00 20 */ blr - -.global fpcBs_Execute -fpcBs_Execute: -/* 800206C4 0001D604 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800206C8 0001D608 7C 08 02 A6 */ mflr r0 -/* 800206CC 0001D60C 90 01 00 14 */ stw r0, 0x14(r1) -/* 800206D0 0001D610 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800206D4 0001D614 93 C1 00 08 */ stw r30, 8(r1) -/* 800206D8 0001D618 7C 7F 1B 78 */ mr r31, r3 -/* 800206DC 0001D61C 48 00 10 19 */ bl fpcLy_CurrentLayer -/* 800206E0 0001D620 7C 7E 1B 78 */ mr r30, r3 -/* 800206E4 0001D624 80 7F 00 2C */ lwz r3, 0x2c(r31) -/* 800206E8 0001D628 48 00 10 05 */ bl fpcLy_SetCurrentLayer -/* 800206EC 0001D62C 80 7F 00 A8 */ lwz r3, 0xa8(r31) -/* 800206F0 0001D630 7F E4 FB 78 */ mr r4, r31 -/* 800206F4 0001D634 48 00 1D 6D */ bl fpcMtd_Execute -/* 800206F8 0001D638 7C 7F 1B 78 */ mr r31, r3 -/* 800206FC 0001D63C 7F C3 F3 78 */ mr r3, r30 -/* 80020700 0001D640 48 00 0F ED */ bl fpcLy_SetCurrentLayer -/* 80020704 0001D644 7F E3 FB 78 */ mr r3, r31 -/* 80020708 0001D648 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8002070C 0001D64C 83 C1 00 08 */ lwz r30, 8(r1) -/* 80020710 0001D650 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020714 0001D654 7C 08 03 A6 */ mtlr r0 -/* 80020718 0001D658 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002071C 0001D65C 4E 80 00 20 */ blr - -.global fpcBs_DeleteAppend -fpcBs_DeleteAppend: -/* 80020720 0001D660 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020724 0001D664 7C 08 02 A6 */ mflr r0 -/* 80020728 0001D668 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002072C 0001D66C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80020730 0001D670 7C 7F 1B 78 */ mr r31, r3 -/* 80020734 0001D674 80 63 00 AC */ lwz r3, 0xac(r3) -/* 80020738 0001D678 28 03 00 00 */ cmplwi r3, 0 -/* 8002073C 0001D67C 41 82 00 10 */ beq lbl_8002074C -/* 80020740 0001D680 48 24 2B 21 */ bl cMl_NS_free -/* 80020744 0001D684 38 00 00 00 */ li r0, 0 -/* 80020748 0001D688 90 1F 00 AC */ stw r0, 0xac(r31) -lbl_8002074C: -/* 8002074C 0001D68C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80020750 0001D690 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020754 0001D694 7C 08 03 A6 */ mtlr r0 -/* 80020758 0001D698 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002075C 0001D69C 4E 80 00 20 */ blr - -.global fpcBs_IsDelete -fpcBs_IsDelete: -/* 80020760 0001D6A0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020764 0001D6A4 7C 08 02 A6 */ mflr r0 -/* 80020768 0001D6A8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002076C 0001D6AC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80020770 0001D6B0 93 C1 00 08 */ stw r30, 8(r1) -/* 80020774 0001D6B4 7C 7F 1B 78 */ mr r31, r3 -/* 80020778 0001D6B8 48 00 0F 7D */ bl fpcLy_CurrentLayer -/* 8002077C 0001D6BC 7C 7E 1B 78 */ mr r30, r3 -/* 80020780 0001D6C0 80 7F 00 2C */ lwz r3, 0x2c(r31) -/* 80020784 0001D6C4 48 00 0F 69 */ bl fpcLy_SetCurrentLayer -/* 80020788 0001D6C8 80 7F 00 A8 */ lwz r3, 0xa8(r31) -/* 8002078C 0001D6CC 7F E4 FB 78 */ mr r4, r31 -/* 80020790 0001D6D0 48 00 1C F5 */ bl fpcMtd_IsDelete -/* 80020794 0001D6D4 7C 7F 1B 78 */ mr r31, r3 -/* 80020798 0001D6D8 7F C3 F3 78 */ mr r3, r30 -/* 8002079C 0001D6DC 48 00 0F 51 */ bl fpcLy_SetCurrentLayer -/* 800207A0 0001D6E0 7F E3 FB 78 */ mr r3, r31 -/* 800207A4 0001D6E4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800207A8 0001D6E8 83 C1 00 08 */ lwz r30, 8(r1) -/* 800207AC 0001D6EC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800207B0 0001D6F0 7C 08 03 A6 */ mtlr r0 -/* 800207B4 0001D6F4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800207B8 0001D6F8 4E 80 00 20 */ blr - -.global fpcBs_Delete -fpcBs_Delete: -/* 800207BC 0001D6FC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800207C0 0001D700 7C 08 02 A6 */ mflr r0 -/* 800207C4 0001D704 90 01 00 14 */ stw r0, 0x14(r1) -/* 800207C8 0001D708 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800207CC 0001D70C 93 C1 00 08 */ stw r30, 8(r1) -/* 800207D0 0001D710 7C 7E 1B 78 */ mr r30, r3 -/* 800207D4 0001D714 80 63 00 A8 */ lwz r3, 0xa8(r3) -/* 800207D8 0001D718 7F C4 F3 78 */ mr r4, r30 -/* 800207DC 0001D71C 48 00 1C CD */ bl fpcMtd_Delete -/* 800207E0 0001D720 7C 7F 1B 78 */ mr r31, r3 -/* 800207E4 0001D724 2C 1F 00 01 */ cmpwi r31, 1 -/* 800207E8 0001D728 40 82 00 1C */ bne lbl_80020804 -/* 800207EC 0001D72C 7F C3 F3 78 */ mr r3, r30 -/* 800207F0 0001D730 4B FF FF 31 */ bl fpcBs_DeleteAppend -/* 800207F4 0001D734 38 00 00 00 */ li r0, 0 -/* 800207F8 0001D738 90 1E 00 00 */ stw r0, 0(r30) -/* 800207FC 0001D73C 7F C3 F3 78 */ mr r3, r30 -/* 80020800 0001D740 48 24 2A 61 */ bl cMl_NS_free -lbl_80020804: -/* 80020804 0001D744 7F E3 FB 78 */ mr r3, r31 -/* 80020808 0001D748 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8002080C 0001D74C 83 C1 00 08 */ lwz r30, 8(r1) -/* 80020810 0001D750 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80020814 0001D754 7C 08 03 A6 */ mtlr r0 -/* 80020818 0001D758 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002081C 0001D75C 4E 80 00 20 */ blr - -.global fpcBs_Create -fpcBs_Create: -/* 80020820 0001D760 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80020824 0001D764 7C 08 02 A6 */ mflr r0 -/* 80020828 0001D768 90 01 00 24 */ stw r0, 0x24(r1) -/* 8002082C 0001D76C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80020830 0001D770 48 34 19 A1 */ bl _savegpr_26 -/* 80020834 0001D774 7C 7A 1B 78 */ mr r26, r3 -/* 80020838 0001D778 7C 9B 23 78 */ mr r27, r4 -/* 8002083C 0001D77C 7C BC 2B 78 */ mr r28, r5 -/* 80020840 0001D780 48 00 2D 25 */ bl fpcPf_Get -/* 80020844 0001D784 7C 7F 1B 78 */ mr r31, r3 -/* 80020848 0001D788 80 63 00 10 */ lwz r3, 0x10(r3) -/* 8002084C 0001D78C 80 1F 00 14 */ lwz r0, 0x14(r31) -/* 80020850 0001D790 7F A3 02 14 */ add r29, r3, r0 -/* 80020854 0001D794 38 60 FF FC */ li r3, -4 -/* 80020858 0001D798 7F A4 EB 78 */ mr r4, r29 -/* 8002085C 0001D79C 48 24 29 CD */ bl cMl_NS_memalignB -/* 80020860 0001D7A0 7C 7E 1B 79 */ or. r30, r3, r3 -/* 80020864 0001D7A4 40 82 00 0C */ bne lbl_80020870 -/* 80020868 0001D7A8 38 60 00 00 */ li r3, 0 -/* 8002086C 0001D7AC 48 00 00 98 */ b lbl_80020904 -lbl_80020870: -/* 80020870 0001D7B0 7F A4 EB 78 */ mr r4, r29 -/* 80020874 0001D7B4 48 25 14 39 */ bl sBs_ClearArea -/* 80020878 0001D7B8 38 7E 00 18 */ addi r3, r30, 0x18 -/* 8002087C 0001D7BC 80 9F 00 00 */ lwz r4, 0(r31) -/* 80020880 0001D7C0 7F C5 F3 78 */ mr r5, r30 -/* 80020884 0001D7C4 48 00 16 2D */ bl fpcLyTg_Init -/* 80020888 0001D7C8 38 7E 00 34 */ addi r3, r30, 0x34 -/* 8002088C 0001D7CC 7F C4 F3 78 */ mr r4, r30 -/* 80020890 0001D7D0 48 00 2D FD */ bl fpcLnTg_Init -/* 80020894 0001D7D4 38 7E 00 4C */ addi r3, r30, 0x4c -/* 80020898 0001D7D8 7F C4 F3 78 */ mr r4, r30 -/* 8002089C 0001D7DC 48 00 07 81 */ bl fpcDtTg_Init -/* 800208A0 0001D7E0 38 7E 00 68 */ addi r3, r30, 0x68 -/* 800208A4 0001D7E4 7F C4 F3 78 */ mr r4, r30 -/* 800208A8 0001D7E8 80 BF 00 00 */ lwz r5, 0(r31) -/* 800208AC 0001D7EC A0 DF 00 04 */ lhz r6, 4(r31) -/* 800208B0 0001D7F0 A0 FF 00 06 */ lhz r7, 6(r31) -/* 800208B4 0001D7F4 48 00 2C 09 */ bl fpcPi_Init -/* 800208B8 0001D7F8 38 00 00 00 */ li r0, 0 -/* 800208BC 0001D7FC 98 1E 00 0C */ stb r0, 0xc(r30) -/* 800208C0 0001D800 98 1E 00 0A */ stb r0, 0xa(r30) -/* 800208C4 0001D804 93 7E 00 04 */ stw r27, 4(r30) -/* 800208C8 0001D808 B3 5E 00 0E */ sth r26, 0xe(r30) -/* 800208CC 0001D80C 38 6D 87 80 */ addi r3, r13, lbl_80450D00-_SDA_BASE_ -/* 800208D0 0001D810 4B FF FD 8D */ bl fpcBs_MakeOfType -/* 800208D4 0001D814 90 7E 00 00 */ stw r3, 0(r30) -/* 800208D8 0001D818 A8 1F 00 08 */ lha r0, 8(r31) -/* 800208DC 0001D81C B0 1E 00 08 */ sth r0, 8(r30) -/* 800208E0 0001D820 7F C3 F3 78 */ mr r3, r30 -/* 800208E4 0001D824 48 00 30 65 */ bl fpcPause_Init -/* 800208E8 0001D828 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 800208EC 0001D82C 90 1E 00 A8 */ stw r0, 0xa8(r30) -/* 800208F0 0001D830 93 FE 00 10 */ stw r31, 0x10(r30) -/* 800208F4 0001D834 93 9E 00 AC */ stw r28, 0xac(r30) -/* 800208F8 0001D838 80 1F 00 18 */ lwz r0, 0x18(r31) -/* 800208FC 0001D83C 90 1E 00 B0 */ stw r0, 0xb0(r30) -/* 80020900 0001D840 7F C3 F3 78 */ mr r3, r30 -lbl_80020904: -/* 80020904 0001D844 39 61 00 20 */ addi r11, r1, 0x20 -/* 80020908 0001D848 48 34 19 15 */ bl _restgpr_26 -/* 8002090C 0001D84C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80020910 0001D850 7C 08 03 A6 */ mtlr r0 -/* 80020914 0001D854 38 21 00 20 */ addi r1, r1, 0x20 -/* 80020918 0001D858 4E 80 00 20 */ blr - -.global fpcBs_SubCreate -fpcBs_SubCreate: -/* 8002091C 0001D85C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80020920 0001D860 7C 08 02 A6 */ mflr r0 -/* 80020924 0001D864 90 01 00 14 */ stw r0, 0x14(r1) -/* 80020928 0001D868 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8002092C 0001D86C 7C 7F 1B 78 */ mr r31, r3 -/* 80020930 0001D870 80 63 00 A8 */ lwz r3, 0xa8(r3) -/* 80020934 0001D874 7F E4 FB 78 */ mr r4, r31 -/* 80020938 0001D878 48 00 1B 95 */ bl fpcMtd_Create -/* 8002093C 0001D87C 2C 03 00 03 */ cmpwi r3, 3 -/* 80020940 0001D880 41 82 00 58 */ beq lbl_80020998 -/* 80020944 0001D884 40 80 00 18 */ bge lbl_8002095C -/* 80020948 0001D888 2C 03 00 02 */ cmpwi r3, 2 -/* 8002094C 0001D88C 40 80 00 1C */ bge lbl_80020968 -/* 80020950 0001D890 2C 03 00 00 */ cmpwi r3, 0 -/* 80020954 0001D894 40 80 00 2C */ bge lbl_80020980 -/* 80020958 0001D898 48 00 00 50 */ b lbl_800209A8 -lbl_8002095C: -/* 8002095C 0001D89C 2C 03 00 05 */ cmpwi r3, 5 -/* 80020960 0001D8A0 41 82 00 48 */ beq lbl_800209A8 -/* 80020964 0001D8A4 40 80 00 44 */ bge lbl_800209A8 -lbl_80020968: -/* 80020968 0001D8A8 7F E3 FB 78 */ mr r3, r31 -/* 8002096C 0001D8AC 4B FF FD B5 */ bl fpcBs_DeleteAppend -/* 80020970 0001D8B0 38 00 00 02 */ li r0, 2 -/* 80020974 0001D8B4 98 1F 00 0D */ stb r0, 0xd(r31) -/* 80020978 0001D8B8 38 60 00 02 */ li r3, 2 -/* 8002097C 0001D8BC 48 00 00 38 */ b lbl_800209B4 -lbl_80020980: -/* 80020980 0001D8C0 38 00 00 01 */ li r0, 1 -/* 80020984 0001D8C4 98 1F 00 0C */ stb r0, 0xc(r31) -/* 80020988 0001D8C8 38 00 00 00 */ li r0, 0 -/* 8002098C 0001D8CC 98 1F 00 0D */ stb r0, 0xd(r31) -/* 80020990 0001D8D0 38 60 00 00 */ li r3, 0 -/* 80020994 0001D8D4 48 00 00 20 */ b lbl_800209B4 -lbl_80020998: -/* 80020998 0001D8D8 38 00 00 03 */ li r0, 3 -/* 8002099C 0001D8DC 98 1F 00 0D */ stb r0, 0xd(r31) -/* 800209A0 0001D8E0 38 60 00 03 */ li r3, 3 -/* 800209A4 0001D8E4 48 00 00 10 */ b lbl_800209B4 -lbl_800209A8: -/* 800209A8 0001D8E8 38 00 00 05 */ li r0, 5 -/* 800209AC 0001D8EC 98 1F 00 0D */ stb r0, 0xd(r31) -/* 800209B0 0001D8F0 38 60 00 05 */ li r3, 5 -lbl_800209B4: -/* 800209B4 0001D8F4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800209B8 0001D8F8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800209BC 0001D8FC 7C 08 03 A6 */ mtlr r0 -/* 800209C0 0001D900 38 21 00 10 */ addi r1, r1, 0x10 -/* 800209C4 0001D904 4E 80 00 20 */ blr - diff --git a/asm/f/pc/f_pc_deletor.s b/asm/f/pc/f_pc_deletor.s deleted file mode 100644 index 7a6a0f08c3..0000000000 --- a/asm/f/pc/f_pc_deletor.s +++ /dev/null @@ -1,189 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80021040 - - -.global fpcDt_IsComplete -fpcDt_IsComplete: -/* 80021040 0001DF80 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80021044 0001DF84 7C 08 02 A6 */ mflr r0 -/* 80021048 0001DF88 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002104C 0001DF8C 4B FF FE E5 */ bl fpcDtTg_IsEmpty -/* 80021050 0001DF90 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021054 0001DF94 7C 08 03 A6 */ mtlr r0 -/* 80021058 0001DF98 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002105C 0001DF9C 4E 80 00 20 */ blr -.global fpcDt_deleteMethod -fpcDt_deleteMethod: -/* 80021060 0001DFA0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80021064 0001DFA4 7C 08 02 A6 */ mflr r0 -/* 80021068 0001DFA8 90 01 00 24 */ stw r0, 0x24(r1) -/* 8002106C 0001DFAC 39 61 00 20 */ addi r11, r1, 0x20 -/* 80021070 0001DFB0 48 34 11 6D */ bl _savegpr_29 -/* 80021074 0001DFB4 7C 7D 1B 78 */ mr r29, r3 -/* 80021078 0001DFB8 83 E3 00 60 */ lwz r31, 0x60(r3) -/* 8002107C 0001DFBC AB C3 00 0E */ lha r30, 0xe(r3) -/* 80021080 0001DFC0 7F E3 FB 78 */ mr r3, r31 -/* 80021084 0001DFC4 48 00 06 69 */ bl fpcLy_SetCurrentLayer -/* 80021088 0001DFC8 38 7D 00 34 */ addi r3, r29, 0x34 -/* 8002108C 0001DFCC 48 00 25 75 */ bl fpcLnTg_QueueTo -/* 80021090 0001DFD0 7F A3 EB 78 */ mr r3, r29 -/* 80021094 0001DFD4 4B FF F7 29 */ bl fpcBs_Delete -/* 80021098 0001DFD8 2C 03 00 01 */ cmpwi r3, 1 -/* 8002109C 0001DFDC 40 82 00 1C */ bne lbl_800210B8 -/* 800210A0 0001DFE0 7F E3 FB 78 */ mr r3, r31 -/* 800210A4 0001DFE4 48 00 05 E5 */ bl fpcLy_DeletedMesg -/* 800210A8 0001DFE8 7F C3 F3 78 */ mr r3, r30 -/* 800210AC 0001DFEC 48 00 0F 81 */ bl fpcLd_Free -/* 800210B0 0001DFF0 38 60 00 01 */ li r3, 1 -/* 800210B4 0001DFF4 48 00 00 08 */ b lbl_800210BC -lbl_800210B8: -/* 800210B8 0001DFF8 38 60 00 00 */ li r3, 0 -lbl_800210BC: -/* 800210BC 0001DFFC 39 61 00 20 */ addi r11, r1, 0x20 -/* 800210C0 0001E000 48 34 11 69 */ bl _restgpr_29 -/* 800210C4 0001E004 80 01 00 24 */ lwz r0, 0x24(r1) -/* 800210C8 0001E008 7C 08 03 A6 */ mtlr r0 -/* 800210CC 0001E00C 38 21 00 20 */ addi r1, r1, 0x20 -/* 800210D0 0001E010 4E 80 00 20 */ blr - -.global fpcDt_Handler -fpcDt_Handler: -/* 800210D4 0001E014 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800210D8 0001E018 7C 08 02 A6 */ mflr r0 -/* 800210DC 0001E01C 90 01 00 14 */ stw r0, 0x14(r1) -/* 800210E0 0001E020 3C 60 80 3A */ lis r3, lbl_803A39A0@ha -/* 800210E4 0001E024 38 63 39 A0 */ addi r3, r3, lbl_803A39A0@l -.global fpcDtTg_Do -/* 800210E8 0001E028 3C 80 80 02 */ lis r4, fpcDtTg_Do@ha -.global fpcDtTg_Do -/* 800210EC 0001E02C 38 84 0F 9C */ addi r4, r4, fpcDtTg_Do@l -.global fpcDt_deleteMethod -/* 800210F0 0001E030 3C A0 80 02 */ lis r5, fpcDt_deleteMethod@ha -.global fpcDt_deleteMethod -/* 800210F4 0001E034 38 A5 10 60 */ addi r5, r5, fpcDt_deleteMethod@l -/* 800210F8 0001E038 48 24 4F 69 */ bl cLsIt_Method -/* 800210FC 0001E03C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021100 0001E040 7C 08 03 A6 */ mtlr r0 -/* 80021104 0001E044 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021108 0001E048 4E 80 00 20 */ blr - -.global fpcDt_ToQueue -fpcDt_ToQueue: -/* 8002110C 0001E04C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80021110 0001E050 7C 08 02 A6 */ mflr r0 -/* 80021114 0001E054 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021118 0001E058 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8002111C 0001E05C 7C 7F 1B 78 */ mr r31, r3 -/* 80021120 0001E060 88 03 00 0A */ lbz r0, 0xa(r3) -/* 80021124 0001E064 2C 00 00 01 */ cmpwi r0, 1 -/* 80021128 0001E068 41 82 00 48 */ beq lbl_80021170 -/* 8002112C 0001E06C 4B FF F6 35 */ bl fpcBs_IsDelete -/* 80021130 0001E070 2C 03 00 01 */ cmpwi r3, 1 -/* 80021134 0001E074 40 82 00 3C */ bne lbl_80021170 -/* 80021138 0001E078 38 7F 00 68 */ addi r3, r31, 0x68 -/* 8002113C 0001E07C 48 00 1F F5 */ bl fpcPi_IsInQueue -/* 80021140 0001E080 2C 03 00 01 */ cmpwi r3, 1 -/* 80021144 0001E084 40 82 00 0C */ bne lbl_80021150 -/* 80021148 0001E088 38 7F 00 68 */ addi r3, r31, 0x68 -/* 8002114C 0001E08C 48 00 21 1D */ bl fpcPi_Delete -lbl_80021150: -/* 80021150 0001E090 80 1F 00 2C */ lwz r0, 0x2c(r31) -/* 80021154 0001E094 90 1F 00 60 */ stw r0, 0x60(r31) -/* 80021158 0001E098 38 7F 00 4C */ addi r3, r31, 0x4c -/* 8002115C 0001E09C 4B FF FD ED */ bl fpcDtTg_ToDeleteQ -/* 80021160 0001E0A0 80 7F 00 2C */ lwz r3, 0x2c(r31) -/* 80021164 0001E0A4 48 00 05 15 */ bl fpcLy_DeletingMesg -/* 80021168 0001E0A8 38 60 00 01 */ li r3, 1 -/* 8002116C 0001E0AC 48 00 00 08 */ b lbl_80021174 -lbl_80021170: -/* 80021170 0001E0B0 38 60 00 00 */ li r3, 0 -lbl_80021174: -/* 80021174 0001E0B4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80021178 0001E0B8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002117C 0001E0BC 7C 08 03 A6 */ mtlr r0 -/* 80021180 0001E0C0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021184 0001E0C4 4E 80 00 20 */ blr - -.global fpcDt_ToDeleteQ -fpcDt_ToDeleteQ: -/* 80021188 0001E0C8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002118C 0001E0CC 7C 08 02 A6 */ mflr r0 -/* 80021190 0001E0D0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80021194 0001E0D4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80021198 0001E0D8 93 C1 00 08 */ stw r30, 8(r1) -/* 8002119C 0001E0DC 7C 7E 1B 78 */ mr r30, r3 -/* 800211A0 0001E0E0 88 03 00 0A */ lbz r0, 0xa(r3) -/* 800211A4 0001E0E4 2C 00 00 01 */ cmpwi r0, 1 -/* 800211A8 0001E0E8 40 82 00 0C */ bne lbl_800211B4 -/* 800211AC 0001E0EC 38 60 00 00 */ li r3, 0 -/* 800211B0 0001E0F0 48 00 00 DC */ b lbl_8002128C -lbl_800211B4: -/* 800211B4 0001E0F4 38 7E 00 4C */ addi r3, r30, 0x4c -/* 800211B8 0001E0F8 48 24 56 C9 */ bl cTg_IsUse -/* 800211BC 0001E0FC 2C 03 00 00 */ cmpwi r3, 0 -/* 800211C0 0001E100 41 82 00 0C */ beq lbl_800211CC -/* 800211C4 0001E104 38 60 00 01 */ li r3, 1 -/* 800211C8 0001E108 48 00 00 C4 */ b lbl_8002128C -lbl_800211CC: -/* 800211CC 0001E10C 80 6D 87 C0 */ lwz r3, lbl_80450D40-_SDA_BASE_(r13) -/* 800211D0 0001E110 80 9E 00 B4 */ lwz r4, 0xb4(r30) -/* 800211D4 0001E114 4B FF F4 79 */ bl fpcBs_Is_JustOfType -/* 800211D8 0001E118 2C 03 00 00 */ cmpwi r3, 0 -/* 800211DC 0001E11C 41 82 00 4C */ beq lbl_80021228 -/* 800211E0 0001E120 7F C3 F3 78 */ mr r3, r30 -/* 800211E4 0001E124 48 00 14 79 */ bl fpcNd_IsDeleteTiming -/* 800211E8 0001E128 2C 03 00 00 */ cmpwi r3, 0 -/* 800211EC 0001E12C 40 82 00 0C */ bne lbl_800211F8 -/* 800211F0 0001E130 38 60 00 00 */ li r3, 0 -/* 800211F4 0001E134 48 00 00 98 */ b lbl_8002128C -lbl_800211F8: -/* 800211F8 0001E138 3B FE 00 BC */ addi r31, r30, 0xbc -/* 800211FC 0001E13C 7F E3 FB 78 */ mr r3, r31 -/* 80021200 0001E140 48 00 06 9D */ bl fpcLy_Cancel -/* 80021204 0001E144 7F E3 FB 78 */ mr r3, r31 -/* 80021208 0001E148 3C 80 80 02 */ lis r4, fpcDt_ToDeleteQ@ha -/* 8002120C 0001E14C 38 84 11 88 */ addi r4, r4, fpcDt_ToDeleteQ@l -/* 80021210 0001E150 38 A0 00 00 */ li r5, 0 -/* 80021214 0001E154 48 00 09 AD */ bl fpcLyIt_OnlyHereLY -/* 80021218 0001E158 2C 03 00 00 */ cmpwi r3, 0 -/* 8002121C 0001E15C 40 82 00 0C */ bne lbl_80021228 -/* 80021220 0001E160 38 60 00 00 */ li r3, 0 -/* 80021224 0001E164 48 00 00 68 */ b lbl_8002128C -lbl_80021228: -/* 80021228 0001E168 7F C3 F3 78 */ mr r3, r30 -/* 8002122C 0001E16C 4B FF FE E1 */ bl fpcDt_ToQueue -/* 80021230 0001E170 2C 03 00 01 */ cmpwi r3, 1 -/* 80021234 0001E174 40 82 00 54 */ bne lbl_80021288 -/* 80021238 0001E178 80 7E 00 04 */ lwz r3, 4(r30) -/* 8002123C 0001E17C 48 00 01 61 */ bl fpcEx_IsExist -/* 80021240 0001E180 2C 03 00 01 */ cmpwi r3, 1 -/* 80021244 0001E184 40 82 00 1C */ bne lbl_80021260 -/* 80021248 0001E188 7F C3 F3 78 */ mr r3, r30 -/* 8002124C 0001E18C 48 00 02 79 */ bl fpcEx_ExecuteQTo -/* 80021250 0001E190 2C 03 00 00 */ cmpwi r3, 0 -/* 80021254 0001E194 40 82 00 24 */ bne lbl_80021278 -/* 80021258 0001E198 38 60 00 00 */ li r3, 0 -/* 8002125C 0001E19C 48 00 00 30 */ b lbl_8002128C -lbl_80021260: -/* 80021260 0001E1A0 7F C3 F3 78 */ mr r3, r30 -/* 80021264 0001E1A4 4B FF FC 89 */ bl fpcCt_Abort -/* 80021268 0001E1A8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002126C 0001E1AC 40 82 00 0C */ bne lbl_80021278 -/* 80021270 0001E1B0 38 60 00 00 */ li r3, 0 -/* 80021274 0001E1B4 48 00 00 18 */ b lbl_8002128C -lbl_80021278: -/* 80021278 0001E1B8 38 00 00 03 */ li r0, 3 -/* 8002127C 0001E1BC 98 1E 00 0C */ stb r0, 0xc(r30) -/* 80021280 0001E1C0 38 60 00 01 */ li r3, 1 -/* 80021284 0001E1C4 48 00 00 08 */ b lbl_8002128C -lbl_80021288: -/* 80021288 0001E1C8 38 60 00 00 */ li r3, 0 -lbl_8002128C: -/* 8002128C 0001E1CC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80021290 0001E1D0 83 C1 00 08 */ lwz r30, 8(r1) -/* 80021294 0001E1D4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021298 0001E1D8 7C 08 03 A6 */ mtlr r0 -/* 8002129C 0001E1DC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800212A0 0001E1E0 4E 80 00 20 */ blr - diff --git a/asm/f/pc/f_pc_draw.s b/asm/f/pc/f_pc_draw.s deleted file mode 100644 index d30a906c3c..0000000000 --- a/asm/f/pc/f_pc_draw.s +++ /dev/null @@ -1,75 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80023954 - - -.global fpcDw_Execute -fpcDw_Execute: -/* 80023954 00020894 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80023958 00020898 7C 08 02 A6 */ mflr r0 -/* 8002395C 0002089C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80023960 000208A0 39 61 00 20 */ addi r11, r1, 0x20 -/* 80023964 000208A4 48 33 E8 79 */ bl _savegpr_29 -/* 80023968 000208A8 7C 7D 1B 78 */ mr r29, r3 -/* 8002396C 000208AC 38 80 00 02 */ li r4, 2 -/* 80023970 000208B0 4B FF FE D5 */ bl fpcPause_IsEnable -/* 80023974 000208B4 2C 03 00 00 */ cmpwi r3, 0 -/* 80023978 000208B8 40 82 00 60 */ bne lbl_800239D8 -/* 8002397C 000208BC 4B FF DD 79 */ bl fpcLy_CurrentLayer -/* 80023980 000208C0 7C 7F 1B 78 */ mr r31, r3 -/* 80023984 000208C4 80 6D 87 B0 */ lwz r3, lbl_80450D30-_SDA_BASE_(r13) -/* 80023988 000208C8 80 9D 00 B4 */ lwz r4, 0xb4(r29) -/* 8002398C 000208CC 4B FF CC C1 */ bl fpcBs_Is_JustOfType -/* 80023990 000208D0 2C 03 00 00 */ cmpwi r3, 0 -/* 80023994 000208D4 41 82 00 10 */ beq lbl_800239A4 -/* 80023998 000208D8 80 7D 00 A8 */ lwz r3, 0xa8(r29) -/* 8002399C 000208DC 83 C3 00 10 */ lwz r30, 0x10(r3) -/* 800239A0 000208E0 48 00 00 0C */ b lbl_800239AC -lbl_800239A4: -/* 800239A4 000208E4 80 7D 00 A8 */ lwz r3, 0xa8(r29) -/* 800239A8 000208E8 83 C3 00 10 */ lwz r30, 0x10(r3) -lbl_800239AC: -/* 800239AC 000208EC 80 7D 00 2C */ lwz r3, 0x2c(r29) -/* 800239B0 000208F0 4B FF DD 3D */ bl fpcLy_SetCurrentLayer -/* 800239B4 000208F4 7F A3 EB 78 */ mr r3, r29 -/* 800239B8 000208F8 7F CC F3 78 */ mr r12, r30 -/* 800239BC 000208FC 7D 89 03 A6 */ mtctr r12 -/* 800239C0 00020900 4E 80 04 21 */ bctrl -/* 800239C4 00020904 7C 7E 1B 78 */ mr r30, r3 -/* 800239C8 00020908 7F E3 FB 78 */ mr r3, r31 -/* 800239CC 0002090C 4B FF DD 21 */ bl fpcLy_SetCurrentLayer -/* 800239D0 00020910 7F C3 F3 78 */ mr r3, r30 -/* 800239D4 00020914 48 00 00 08 */ b lbl_800239DC -lbl_800239D8: -/* 800239D8 00020918 38 60 00 00 */ li r3, 0 -lbl_800239DC: -/* 800239DC 0002091C 39 61 00 20 */ addi r11, r1, 0x20 -/* 800239E0 00020920 48 33 E8 49 */ bl _restgpr_29 -/* 800239E4 00020924 80 01 00 24 */ lwz r0, 0x24(r1) -/* 800239E8 00020928 7C 08 03 A6 */ mtlr r0 -/* 800239EC 0002092C 38 21 00 20 */ addi r1, r1, 0x20 -/* 800239F0 00020930 4E 80 00 20 */ blr - -.global fpcDw_Handler -fpcDw_Handler: -/* 800239F4 00020934 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800239F8 00020938 7C 08 02 A6 */ mflr r0 -/* 800239FC 0002093C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023A00 00020940 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80023A04 00020944 93 C1 00 08 */ stw r30, 8(r1) -/* 80023A08 00020948 7C 7E 1B 78 */ mr r30, r3 -/* 80023A0C 0002094C 7C 9F 23 78 */ mr r31, r4 -/* 80023A10 00020950 48 23 F8 E9 */ bl cAPIGph_BeforeOfDraw -/* 80023A14 00020954 7F E3 FB 78 */ mr r3, r31 -/* 80023A18 00020958 7F CC F3 78 */ mr r12, r30 -/* 80023A1C 0002095C 7D 89 03 A6 */ mtctr r12 -/* 80023A20 00020960 4E 80 04 21 */ bctrl -/* 80023A24 00020964 7C 7F 1B 78 */ mr r31, r3 -/* 80023A28 00020968 48 23 F9 01 */ bl cAPIGph_AfterOfDraw -/* 80023A2C 0002096C 7F E3 FB 78 */ mr r3, r31 -/* 80023A30 00020970 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80023A34 00020974 83 C1 00 08 */ lwz r30, 8(r1) -/* 80023A38 00020978 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023A3C 0002097C 7C 08 03 A6 */ mtlr r0 -/* 80023A40 00020980 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023A44 00020984 4E 80 00 20 */ blr diff --git a/asm/f/pc/f_pc_leaf.s b/asm/f/pc/f_pc_leaf.s deleted file mode 100644 index f6577a657f..0000000000 --- a/asm/f/pc/f_pc_leaf.s +++ /dev/null @@ -1,102 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80021a00 - -.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) -/* 80021A54 0001E994 7C 64 1B 78 */ mr r4, r3 -/* 80021A58 0001E998 38 60 00 00 */ li r3, 0 -/* 80021A5C 0001E99C 88 04 00 BC */ lbz r0, 0xbc(r4) -/* 80021A60 0001E9A0 7C 00 07 75 */ extsb. r0, r0 -/* 80021A64 0001E9A4 40 82 00 0C */ bne lbl_80021A70 -/* 80021A68 0001E9A8 80 64 00 B8 */ lwz r3, 0xb8(r4) -/* 80021A6C 0001E9AC 4B FF FF B9 */ bl fpcLf_DrawMethod -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 - -.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) -/* 80021A8C 0001E9CC 7C 64 1B 78 */ mr r4, r3 -/* 80021A90 0001E9D0 80 63 00 B8 */ lwz r3, 0xb8(r3) -/* 80021A94 0001E9D4 48 00 09 CD */ bl fpcMtd_Execute -/* 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 - -.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) -/* 80021AB4 0001E9F4 7C 64 1B 78 */ mr r4, r3 -/* 80021AB8 0001E9F8 80 63 00 B8 */ lwz r3, 0xb8(r3) -/* 80021ABC 0001E9FC 48 00 09 C9 */ bl fpcMtd_IsDelete -/* 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 - -.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) -/* 80021ADC 0001EA1C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80021AE0 0001EA20 7C 7F 1B 78 */ mr r31, r3 -/* 80021AE4 0001EA24 80 63 00 B8 */ lwz r3, 0xb8(r3) -/* 80021AE8 0001EA28 7F E4 FB 78 */ mr r4, r31 -/* 80021AEC 0001EA2C 48 00 09 BD */ bl fpcMtd_Delete -/* 80021AF0 0001EA30 2C 03 00 01 */ cmpwi r3, 1 -/* 80021AF4 0001EA34 40 82 00 0C */ bne lbl_80021B00 -/* 80021AF8 0001EA38 38 00 00 00 */ li r0, 0 -/* 80021AFC 0001EA3C 90 1F 00 B4 */ stw r0, 0xb4(r31) -lbl_80021B00: -/* 80021B00 0001EA40 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 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 - -.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) -/* 80021B20 0001EA60 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80021B24 0001EA64 93 C1 00 08 */ stw r30, 8(r1) -/* 80021B28 0001EA68 7C 7E 1B 78 */ mr r30, r3 -/* 80021B2C 0001EA6C 88 03 00 0C */ lbz r0, 0xc(r3) -/* 80021B30 0001EA70 7C 00 07 75 */ extsb. r0, r0 -/* 80021B34 0001EA74 40 82 00 30 */ bne lbl_80021B64 -/* 80021B38 0001EA78 83 FE 00 10 */ lwz r31, 0x10(r30) -/* 80021B3C 0001EA7C 80 1F 00 1C */ lwz r0, 0x1c(r31) -/* 80021B40 0001EA80 90 1E 00 B8 */ stw r0, 0xb8(r30) -/* 80021B44 0001EA84 38 6D 87 B0 */ addi r3, r13, lbl_80450D30-_SDA_BASE_ -/* 80021B48 0001EA88 4B FF EB 15 */ bl fpcBs_MakeOfType -/* 80021B4C 0001EA8C 90 7E 00 B4 */ stw r3, 0xb4(r30) -/* 80021B50 0001EA90 38 7E 00 BE */ addi r3, r30, 0xbe -/* 80021B54 0001EA94 A8 9F 00 20 */ lha r4, 0x20(r31) -/* 80021B58 0001EA98 4B FF F7 C1 */ bl fpcDwPi_Init -/* 80021B5C 0001EA9C 38 00 00 00 */ li r0, 0 -/* 80021B60 0001EAA0 98 1E 00 BC */ stb r0, 0xbc(r30) -lbl_80021B64: -/* 80021B64 0001EAA4 80 7E 00 B8 */ lwz r3, 0xb8(r30) -/* 80021B68 0001EAA8 7F C4 F3 78 */ mr r4, r30 -/* 80021B6C 0001EAAC 48 00 09 61 */ bl fpcMtd_Create -/* 80021B70 0001EAB0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80021B74 0001EAB4 83 C1 00 08 */ lwz r30, 8(r1) -/* 80021B78 0001EAB8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80021B7C 0001EABC 7C 08 03 A6 */ mtlr r0 -/* 80021B80 0001EAC0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80021B84 0001EAC4 4E 80 00 20 */ blr - diff --git a/asm/f/pc/f_pc_manager.s b/asm/f/pc/f_pc_manager.s deleted file mode 100644 index ac9f2a0d31..0000000000 --- a/asm/f/pc/f_pc_manager.s +++ /dev/null @@ -1,279 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 800220a0 - - -.global fpcM_Draw -fpcM_Draw: -/* 800220A0 0001EFE0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800220A4 0001EFE4 7C 08 02 A6 */ mflr r0 -/* 800220A8 0001EFE8 90 01 00 14 */ stw r0, 0x14(r1) -/* 800220AC 0001EFEC 48 00 18 A9 */ bl fpcDw_Execute -/* 800220B0 0001EFF0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800220B4 0001EFF4 7C 08 03 A6 */ mtlr r0 -/* 800220B8 0001EFF8 38 21 00 10 */ addi r1, r1, 0x10 -/* 800220BC 0001EFFC 4E 80 00 20 */ blr -.global fpcM_DrawIterater -fpcM_DrawIterater: -/* 800220C0 0001F000 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800220C4 0001F004 7C 08 02 A6 */ mflr r0 -/* 800220C8 0001F008 90 01 00 14 */ stw r0, 0x14(r1) -/* 800220CC 0001F00C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800220D0 0001F010 7C 7F 1B 78 */ mr r31, r3 -/* 800220D4 0001F014 4B FF F6 09 */ bl fpcLy_RootLayer -/* 800220D8 0001F018 7F E4 FB 78 */ mr r4, r31 -/* 800220DC 0001F01C 38 A0 00 00 */ li r5, 0 -/* 800220E0 0001F020 4B FF FA A9 */ bl fpcLyIt_OnlyHere -/* 800220E4 0001F024 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800220E8 0001F028 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800220EC 0001F02C 7C 08 03 A6 */ mtlr r0 -/* 800220F0 0001F030 38 21 00 10 */ addi r1, r1, 0x10 -/* 800220F4 0001F034 4E 80 00 20 */ blr -.global fpcM_Execute -fpcM_Execute: -/* 800220F8 0001F038 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800220FC 0001F03C 7C 08 02 A6 */ mflr r0 -/* 80022100 0001F040 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022104 0001F044 4B FF F2 C1 */ bl fpcEx_Execute -/* 80022108 0001F048 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002210C 0001F04C 7C 08 03 A6 */ mtlr r0 -/* 80022110 0001F050 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022114 0001F054 4E 80 00 20 */ blr - -.global fpcM_Delete -fpcM_Delete: -/* 80022118 0001F058 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002211C 0001F05C 7C 08 02 A6 */ mflr r0 -/* 80022120 0001F060 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022124 0001F064 4B FF F1 81 */ bl fpcDt_Delete -/* 80022128 0001F068 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002212C 0001F06C 7C 08 03 A6 */ mtlr r0 -/* 80022130 0001F070 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022134 0001F074 4E 80 00 20 */ blr - -.global fpcM_IsCreating -fpcM_IsCreating: -/* 80022138 0001F078 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002213C 0001F07C 7C 08 02 A6 */ mflr r0 -/* 80022140 0001F080 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022144 0001F084 4B FF ED 65 */ bl fpcCt_IsCreatingByID -/* 80022148 0001F088 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002214C 0001F08C 7C 08 03 A6 */ mtlr r0 -/* 80022150 0001F090 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022154 0001F094 4E 80 00 20 */ blr - -.global fpcM_Management -fpcM_Management: -/* 80022158 0001F098 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002215C 0001F09C 7C 08 02 A6 */ mflr r0 -/* 80022160 0001F0A0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022164 0001F0A4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80022168 0001F0A8 93 C1 00 08 */ stw r30, 8(r1) -/* 8002216C 0001F0AC 7C 7E 1B 78 */ mr r30, r3 -/* 80022170 0001F0B0 7C 9F 23 78 */ mr r31, r4 -/* 80022174 0001F0B4 48 24 EC D9 */ bl MtxInit -/* 80022178 0001F0B8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 8002217C 0001F0BC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 80022180 0001F0C0 3C 63 00 02 */ addis r3, r3, 2 -/* 80022184 0001F0C4 38 63 C0 F4 */ addi r3, r3, -16140 -/* 80022188 0001F0C8 48 03 3E F9 */ bl dDlst_peekZ_c_NS_peekData -/* 8002218C 0001F0CC 48 07 B6 05 */ bl dShutdownErrorMsg_c_NS_execute -/* 80022190 0001F0D0 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80022194 0001F0D4 40 82 01 0C */ bne lbl_800222A0 -/* 80022198 0001F0D8 88 0D 87 B9 */ lbz r0, lbl_80450D39-_SDA_BASE_(r13) -/* 8002219C 0001F0DC 7C 00 07 75 */ extsb. r0, r0 -/* 800221A0 0001F0E0 40 82 00 14 */ bne lbl_800221B4 -/* 800221A4 0001F0E4 38 00 00 00 */ li r0, 0 -/* 800221A8 0001F0E8 98 0D 87 B8 */ stb r0, lbl_80450D38-_SDA_BASE_(r13) -/* 800221AC 0001F0EC 38 00 00 01 */ li r0, 1 -/* 800221B0 0001F0F0 98 0D 87 B9 */ stb r0, lbl_80450D39-_SDA_BASE_(r13) -lbl_800221B4: -/* 800221B4 0001F0F4 48 07 B1 A1 */ bl dDvdErrorMsg_c_NS_execute -/* 800221B8 0001F0F8 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 800221BC 0001F0FC 40 82 00 AC */ bne lbl_80022268 -/* 800221C0 0001F100 88 0D 87 B8 */ lbz r0, lbl_80450D38-_SDA_BASE_(r13) -/* 800221C4 0001F104 28 00 00 00 */ cmplwi r0, 0 -/* 800221C8 0001F108 41 82 00 1C */ beq lbl_800221E4 -/* 800221CC 0001F10C 48 01 06 F1 */ bl startTime__11dLib_time_cFv -/* 800221D0 0001F110 80 6D 85 E0 */ lwz r3, lbl_80450B60-_SDA_BASE_(r13) -/* 800221D4 0001F114 38 80 00 00 */ li r4, 0 -/* 800221D8 0001F118 48 28 84 D9 */ bl Z2SoundMgr_NS_pauseAllGameSound -/* 800221DC 0001F11C 38 00 00 00 */ li r0, 0 -/* 800221E0 0001F120 98 0D 87 B8 */ stb r0, lbl_80450D38-_SDA_BASE_(r13) -lbl_800221E4: -/* 800221E4 0001F124 48 24 10 E5 */ bl cAPIGph_Painter -/* 800221E8 0001F128 88 6D 89 44 */ lbz r3, lbl_80450EC4-_SDA_BASE_(r13) -/* 800221EC 0001F12C 54 60 07 FF */ clrlwi. r0, r3, 0x1f -/* 800221F0 0001F130 40 82 00 0C */ bne lbl_800221FC -/* 800221F4 0001F134 4B FF EE E1 */ bl fpcDt_Handler -/* 800221F8 0001F138 48 00 00 0C */ b lbl_80022204 -lbl_800221FC: -/* 800221FC 0001F13C 54 60 06 3C */ rlwinm r0, r3, 0, 0x18, 0x1e -/* 80022200 0001F140 98 0D 89 44 */ stb r0, lbl_80450EC4-_SDA_BASE_(r13) -lbl_80022204: -/* 80022204 0001F144 48 00 12 25 */ bl fpcPi_Handler -/* 80022208 0001F148 4B FF ED 09 */ bl fpcCt_Handler -/* 8002220C 0001F14C 28 1E 00 00 */ cmplwi r30, 0 -/* 80022210 0001F150 41 82 00 10 */ beq lbl_80022220 -/* 80022214 0001F154 7F CC F3 78 */ mr r12, r30 -/* 80022218 0001F158 7D 89 03 A6 */ mtctr r12 -/* 8002221C 0001F15C 4E 80 04 21 */ bctrl -lbl_80022220: -.global fpcM_Execute -/* 80022220 0001F160 3C 60 80 02 */ lis r3, fpcM_Execute@ha -.global fpcM_Execute -/* 80022224 0001F164 38 63 20 F8 */ addi r3, r3, fpcM_Execute@l -/* 80022228 0001F168 4B FF F3 41 */ bl fpcEx_Handler -.global fpcM_DrawIterater -/* 8002222C 0001F16C 3C 60 80 02 */ lis r3, fpcM_DrawIterater@ha -.global fpcM_DrawIterater -/* 80022230 0001F170 38 63 20 C0 */ addi r3, r3, fpcM_DrawIterater@l -/* 80022234 0001F174 3C 80 80 02 */ lis r4, fpcM_Draw@ha -/* 80022238 0001F178 38 84 20 A0 */ addi r4, r4, fpcM_Draw@l -/* 8002223C 0001F17C 48 00 17 B9 */ bl fpcDw_Handler -/* 80022240 0001F180 28 1F 00 00 */ cmplwi r31, 0 -/* 80022244 0001F184 41 82 00 10 */ beq lbl_80022254 -/* 80022248 0001F188 7F EC FB 78 */ mr r12, r31 -/* 8002224C 0001F18C 7D 89 03 A6 */ mtctr r12 -/* 80022250 0001F190 4E 80 04 21 */ bctrl -lbl_80022254: -/* 80022254 0001F194 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 80022258 0001F198 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 8002225C 0001F19C 38 63 0F 38 */ addi r3, r3, 0xf38 -/* 80022260 0001F1A0 48 00 A8 65 */ bl dComIfG_play_c_NS_drawSimpleModel -/* 80022264 0001F1A4 48 00 00 3C */ b lbl_800222A0 -lbl_80022268: -/* 80022268 0001F1A8 88 0D 87 B8 */ lbz r0, lbl_80450D38-_SDA_BASE_(r13) -/* 8002226C 0001F1AC 28 00 00 00 */ cmplwi r0, 0 -/* 80022270 0001F1B0 40 82 00 30 */ bne lbl_800222A0 -/* 80022274 0001F1B4 48 01 06 0D */ bl stopTime__11dLib_time_cFv -/* 80022278 0001F1B8 80 6D 85 E0 */ lwz r3, lbl_80450B60-_SDA_BASE_(r13) -/* 8002227C 0001F1BC 38 80 00 01 */ li r4, 1 -/* 80022280 0001F1C0 48 28 84 31 */ bl Z2SoundMgr_NS_pauseAllGameSound -/* 80022284 0001F1C4 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha -/* 80022288 0001F1C8 80 83 D2 D8 */ lwz r4, lbl_803DD2D8@l(r3) -/* 8002228C 0001F1CC 38 64 00 68 */ addi r3, r4, 0x68 -/* 80022290 0001F1D0 A8 84 00 7C */ lha r4, 0x7c(r4) -/* 80022294 0001F1D4 48 2B F6 B5 */ bl stopPatternedRumble__Q210JUTGamePad7CRumbleFs -/* 80022298 0001F1D8 38 00 00 01 */ li r0, 1 -/* 8002229C 0001F1DC 98 0D 87 B8 */ stb r0, lbl_80450D38-_SDA_BASE_(r13) -lbl_800222A0: -/* 800222A0 0001F1E0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800222A4 0001F1E4 83 C1 00 08 */ lwz r30, 8(r1) -/* 800222A8 0001F1E8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800222AC 0001F1EC 7C 08 03 A6 */ mtlr r0 -/* 800222B0 0001F1F0 38 21 00 10 */ addi r1, r1, 0x10 -/* 800222B4 0001F1F4 4E 80 00 20 */ blr - -.global fpcM_Init -fpcM_Init: -/* 800222B8 0001F1F8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800222BC 0001F1FC 7C 08 02 A6 */ mflr r0 -/* 800222C0 0001F200 90 01 00 14 */ stw r0, 0x14(r1) -/* 800222C4 0001F204 3C 60 80 3F */ lis r3, lbl_803F4DB0@ha -/* 800222C8 0001F208 38 63 4D B0 */ addi r3, r3, lbl_803F4DB0@l -/* 800222CC 0001F20C 38 80 00 00 */ li r4, 0 -/* 800222D0 0001F210 3C A0 80 3F */ lis r5, lbl_803F4DDC@ha -/* 800222D4 0001F214 38 A5 4D DC */ addi r5, r5, lbl_803F4DDC@l -/* 800222D8 0001F218 38 C0 00 0A */ li r6, 0xa -/* 800222DC 0001F21C 4B FF F5 ED */ bl fpcLy_Create -/* 800222E0 0001F220 4B FF FC 85 */ bl fpcLn_Create -/* 800222E4 0001F224 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800222E8 0001F228 7C 08 03 A6 */ mtlr r0 -/* 800222EC 0001F22C 38 21 00 10 */ addi r1, r1, 0x10 -/* 800222F0 0001F230 4E 80 00 20 */ blr - -.global fpcM_FastCreate -fpcM_FastCreate: -/* 800222F4 0001F234 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800222F8 0001F238 7C 08 02 A6 */ mflr r0 -/* 800222FC 0001F23C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80022300 0001F240 39 61 00 20 */ addi r11, r1, 0x20 -/* 80022304 0001F244 48 33 FE D5 */ bl _savegpr_28 -/* 80022308 0001F248 7C 7C 1B 78 */ mr r28, r3 -/* 8002230C 0001F24C 7C 9D 23 78 */ mr r29, r4 -/* 80022310 0001F250 7C BE 2B 78 */ mr r30, r5 -/* 80022314 0001F254 7C DF 33 78 */ mr r31, r6 -/* 80022318 0001F258 4B FF F3 DD */ bl fpcLy_CurrentLayer -/* 8002231C 0001F25C 7F 84 E3 78 */ mr r4, r28 -/* 80022320 0001F260 7F A5 EB 78 */ mr r5, r29 -/* 80022324 0001F264 7F C6 F3 78 */ mr r6, r30 -/* 80022328 0001F268 7F E7 FB 78 */ mr r7, r31 -/* 8002232C 0001F26C 48 00 17 75 */ bl fpcFCtRq_Request -/* 80022330 0001F270 39 61 00 20 */ addi r11, r1, 0x20 -/* 80022334 0001F274 48 33 FE F1 */ bl _restgpr_28 -/* 80022338 0001F278 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8002233C 0001F27C 7C 08 03 A6 */ mtlr r0 -/* 80022340 0001F280 38 21 00 20 */ addi r1, r1, 0x20 -/* 80022344 0001F284 4E 80 00 20 */ blr - -.global fpcM_IsPause -fpcM_IsPause: -/* 80022348 0001F288 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002234C 0001F28C 7C 08 02 A6 */ mflr r0 -/* 80022350 0001F290 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022354 0001F294 54 84 06 3E */ clrlwi r4, r4, 0x18 -/* 80022358 0001F298 48 00 14 ED */ bl fpcPause_IsEnable -/* 8002235C 0001F29C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022360 0001F2A0 7C 08 03 A6 */ mtlr r0 -/* 80022364 0001F2A4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022368 0001F2A8 4E 80 00 20 */ blr - -.global fpcM_PauseEnable -fpcM_PauseEnable: -/* 8002236C 0001F2AC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022370 0001F2B0 7C 08 02 A6 */ mflr r0 -/* 80022374 0001F2B4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022378 0001F2B8 54 84 06 3E */ clrlwi r4, r4, 0x18 -/* 8002237C 0001F2BC 48 00 14 ED */ bl fpcPause_Enable -/* 80022380 0001F2C0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022384 0001F2C4 7C 08 03 A6 */ mtlr r0 -/* 80022388 0001F2C8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002238C 0001F2CC 4E 80 00 20 */ blr - -.global fpcM_PauseDisable -fpcM_PauseDisable: -/* 80022390 0001F2D0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022394 0001F2D4 7C 08 02 A6 */ mflr r0 -/* 80022398 0001F2D8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002239C 0001F2DC 54 84 06 3E */ clrlwi r4, r4, 0x18 -/* 800223A0 0001F2E0 48 00 15 35 */ bl fpcPause_Disable -/* 800223A4 0001F2E4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800223A8 0001F2E8 7C 08 03 A6 */ mtlr r0 -/* 800223AC 0001F2EC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800223B0 0001F2F0 4E 80 00 20 */ blr - -.global fpcM_JudgeInLayer -fpcM_JudgeInLayer: -/* 800223B4 0001F2F4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800223B8 0001F2F8 7C 08 02 A6 */ mflr r0 -/* 800223BC 0001F2FC 90 01 00 24 */ stw r0, 0x24(r1) -/* 800223C0 0001F300 39 61 00 20 */ addi r11, r1, 0x20 -/* 800223C4 0001F304 48 33 FE 15 */ bl _savegpr_28 -/* 800223C8 0001F308 7C 7C 1B 78 */ mr r28, r3 -/* 800223CC 0001F30C 7C 9D 23 78 */ mr r29, r4 -/* 800223D0 0001F310 7C BE 2B 78 */ mr r30, r5 -/* 800223D4 0001F314 4B FF F3 79 */ bl fpcLy_Layer -/* 800223D8 0001F318 7C 7F 1B 79 */ or. r31, r3, r3 -/* 800223DC 0001F31C 41 82 00 30 */ beq lbl_8002240C -/* 800223E0 0001F320 7F 83 E3 78 */ mr r3, r28 -/* 800223E4 0001F324 7F A4 EB 78 */ mr r4, r29 -/* 800223E8 0001F328 7F C5 F3 78 */ mr r5, r30 -/* 800223EC 0001F32C 4B FF E6 A9 */ bl fpcCtIt_JudgeInLayer -/* 800223F0 0001F330 28 03 00 00 */ cmplwi r3, 0 -/* 800223F4 0001F334 40 82 00 1C */ bne lbl_80022410 -/* 800223F8 0001F338 7F E3 FB 78 */ mr r3, r31 -/* 800223FC 0001F33C 7F A4 EB 78 */ mr r4, r29 -/* 80022400 0001F340 7F C5 F3 78 */ mr r5, r30 -/* 80022404 0001F344 4B FF F8 25 */ bl fpcLyIt_Judge -/* 80022408 0001F348 48 00 00 08 */ b lbl_80022410 -lbl_8002240C: -/* 8002240C 0001F34C 38 60 00 00 */ li r3, 0 -lbl_80022410: -/* 80022410 0001F350 39 61 00 20 */ addi r11, r1, 0x20 -/* 80022414 0001F354 48 33 FE 11 */ bl _restgpr_28 -/* 80022418 0001F358 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8002241C 0001F35C 7C 08 03 A6 */ mtlr r0 -/* 80022420 0001F360 38 21 00 20 */ addi r1, r1, 0x20 -/* 80022424 0001F364 4E 80 00 20 */ blr - diff --git a/asm/f/pc/f_pc_node.s b/asm/f/pc/f_pc_node.s deleted file mode 100644 index 5fa2629d38..0000000000 --- a/asm/f/pc/f_pc_node.s +++ /dev/null @@ -1,204 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 800224f0 - - -.global fpcNd_DrawMethod -fpcNd_DrawMethod: -/* 800224F0 0001F430 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800224F4 0001F434 7C 08 02 A6 */ mflr r0 -/* 800224F8 0001F438 90 01 00 14 */ stw r0, 0x14(r1) -/* 800224FC 0001F43C 80 63 00 10 */ lwz r3, 0x10(r3) -/* 80022500 0001F440 4B FF FF 29 */ bl fpcMtd_Method -/* 80022504 0001F444 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022508 0001F448 7C 08 03 A6 */ mtlr r0 -/* 8002250C 0001F44C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022510 0001F450 4E 80 00 20 */ blr -/* 80022514 0001F454 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80022518 0001F458 7C 08 02 A6 */ mflr r0 -/* 8002251C 0001F45C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80022520 0001F460 39 61 00 20 */ addi r11, r1, 0x20 -/* 80022524 0001F464 48 33 FC B9 */ bl _savegpr_29 -/* 80022528 0001F468 7C 7D 1B 78 */ mr r29, r3 -/* 8002252C 0001F46C 3B E0 00 00 */ li r31, 0 -/* 80022530 0001F470 88 03 01 A8 */ lbz r0, 0x1a8(r3) -/* 80022534 0001F474 7C 00 07 75 */ extsb. r0, r0 -/* 80022538 0001F478 40 82 00 2C */ bne lbl_80022564 -/* 8002253C 0001F47C 4B FF F1 B9 */ bl fpcLy_CurrentLayer -/* 80022540 0001F480 7C 7E 1B 78 */ mr r30, r3 -/* 80022544 0001F484 38 7D 00 BC */ addi r3, r29, 0xbc -/* 80022548 0001F488 4B FF F1 A5 */ bl fpcLy_SetCurrentLayer -/* 8002254C 0001F48C 80 7D 00 B8 */ lwz r3, 0xb8(r29) -/* 80022550 0001F490 7F A4 EB 78 */ mr r4, r29 -/* 80022554 0001F494 4B FF FF 9D */ bl fpcNd_DrawMethod -/* 80022558 0001F498 7C 7F 1B 78 */ mr r31, r3 -/* 8002255C 0001F49C 7F C3 F3 78 */ mr r3, r30 -/* 80022560 0001F4A0 4B FF F1 8D */ bl fpcLy_SetCurrentLayer -lbl_80022564: -/* 80022564 0001F4A4 7F E3 FB 78 */ mr r3, r31 -/* 80022568 0001F4A8 39 61 00 20 */ addi r11, r1, 0x20 -/* 8002256C 0001F4AC 48 33 FC BD */ bl _restgpr_29 -/* 80022570 0001F4B0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80022574 0001F4B4 7C 08 03 A6 */ mtlr r0 -/* 80022578 0001F4B8 38 21 00 20 */ addi r1, r1, 0x20 -/* 8002257C 0001F4BC 4E 80 00 20 */ blr -/* 80022580 0001F4C0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022584 0001F4C4 7C 08 02 A6 */ mflr r0 -/* 80022588 0001F4C8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002258C 0001F4CC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80022590 0001F4D0 93 C1 00 08 */ stw r30, 8(r1) -/* 80022594 0001F4D4 7C 7F 1B 78 */ mr r31, r3 -/* 80022598 0001F4D8 4B FF F1 5D */ bl fpcLy_CurrentLayer -/* 8002259C 0001F4DC 7C 7E 1B 78 */ mr r30, r3 -/* 800225A0 0001F4E0 38 7F 00 BC */ addi r3, r31, 0xbc -/* 800225A4 0001F4E4 4B FF F1 49 */ bl fpcLy_SetCurrentLayer -/* 800225A8 0001F4E8 80 7F 00 B8 */ lwz r3, 0xb8(r31) -/* 800225AC 0001F4EC 7F E4 FB 78 */ mr r4, r31 -/* 800225B0 0001F4F0 4B FF FE B1 */ bl fpcMtd_Execute -/* 800225B4 0001F4F4 7C 7F 1B 78 */ mr r31, r3 -/* 800225B8 0001F4F8 7F C3 F3 78 */ mr r3, r30 -/* 800225BC 0001F4FC 4B FF F1 31 */ bl fpcLy_SetCurrentLayer -/* 800225C0 0001F500 7F E3 FB 78 */ mr r3, r31 -/* 800225C4 0001F504 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800225C8 0001F508 83 C1 00 08 */ lwz r30, 8(r1) -/* 800225CC 0001F50C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800225D0 0001F510 7C 08 03 A6 */ mtlr r0 -/* 800225D4 0001F514 38 21 00 10 */ addi r1, r1, 0x10 -/* 800225D8 0001F518 4E 80 00 20 */ blr - -.global fpcNd_IsCreatingFromUnder -fpcNd_IsCreatingFromUnder: -/* 800225DC 0001F51C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800225E0 0001F520 7C 08 02 A6 */ mflr r0 -/* 800225E4 0001F524 90 01 00 14 */ stw r0, 0x14(r1) -/* 800225E8 0001F528 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800225EC 0001F52C 93 C1 00 08 */ stw r30, 8(r1) -/* 800225F0 0001F530 7C 7E 1B 79 */ or. r30, r3, r3 -/* 800225F4 0001F534 41 82 00 4C */ beq lbl_80022640 -/* 800225F8 0001F538 80 6D 87 C0 */ lwz r3, lbl_80450D40-_SDA_BASE_(r13) -/* 800225FC 0001F53C 80 9E 00 B4 */ lwz r4, 0xb4(r30) -/* 80022600 0001F540 4B FF E0 4D */ bl fpcBs_Is_JustOfType -/* 80022604 0001F544 2C 03 00 00 */ cmpwi r3, 0 -/* 80022608 0001F548 41 82 00 38 */ beq lbl_80022640 -/* 8002260C 0001F54C 3B FE 00 BC */ addi r31, r30, 0xbc -/* 80022610 0001F550 7F E3 FB 78 */ mr r3, r31 -/* 80022614 0001F554 4B FF F0 8D */ bl fpcLy_IsCreatingMesg -/* 80022618 0001F558 2C 03 00 00 */ cmpwi r3, 0 -/* 8002261C 0001F55C 40 82 00 1C */ bne lbl_80022638 -/* 80022620 0001F560 7F E3 FB 78 */ mr r3, r31 -/* 80022624 0001F564 3C 80 80 02 */ lis r4, fpcNd_IsCreatingFromUnder@ha -/* 80022628 0001F568 38 84 25 DC */ addi r4, r4, fpcNd_IsCreatingFromUnder@l -/* 8002262C 0001F56C 38 A0 00 00 */ li r5, 0 -/* 80022630 0001F570 4B FF F5 F9 */ bl fpcLyIt_Judge -/* 80022634 0001F574 48 00 00 10 */ b lbl_80022644 -lbl_80022638: -/* 80022638 0001F578 7F C3 F3 78 */ mr r3, r30 -/* 8002263C 0001F57C 48 00 00 08 */ b lbl_80022644 -lbl_80022640: -/* 80022640 0001F580 38 60 00 00 */ li r3, 0 -lbl_80022644: -/* 80022644 0001F584 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80022648 0001F588 83 C1 00 08 */ lwz r30, 8(r1) -/* 8002264C 0001F58C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022650 0001F590 7C 08 03 A6 */ mtlr r0 -/* 80022654 0001F594 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022658 0001F598 4E 80 00 20 */ blr - -.global fpcNd_IsDeleteTiming -fpcNd_IsDeleteTiming: -/* 8002265C 0001F59C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022660 0001F5A0 7C 08 02 A6 */ mflr r0 -/* 80022664 0001F5A4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022668 0001F5A8 80 0D 80 60 */ lwz r0, lbl_804505E0-_SDA_BASE_(r13) -/* 8002266C 0001F5AC 2C 00 00 01 */ cmpwi r0, 1 -/* 80022670 0001F5B0 40 82 00 18 */ bne lbl_80022688 -/* 80022674 0001F5B4 4B FF FF 69 */ bl fpcNd_IsCreatingFromUnder -/* 80022678 0001F5B8 28 03 00 00 */ cmplwi r3, 0 -/* 8002267C 0001F5BC 41 82 00 0C */ beq lbl_80022688 -/* 80022680 0001F5C0 38 60 00 00 */ li r3, 0 -/* 80022684 0001F5C4 48 00 00 08 */ b lbl_8002268C -lbl_80022688: -/* 80022688 0001F5C8 38 60 00 01 */ li r3, 1 -lbl_8002268C: -/* 8002268C 0001F5CC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022690 0001F5D0 7C 08 03 A6 */ mtlr r0 -/* 80022694 0001F5D4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022698 0001F5D8 4E 80 00 20 */ blr -/* 8002269C 0001F5DC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800226A0 0001F5E0 7C 08 02 A6 */ mflr r0 -/* 800226A4 0001F5E4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800226A8 0001F5E8 7C 64 1B 78 */ mr r4, r3 -/* 800226AC 0001F5EC 80 63 00 B8 */ lwz r3, 0xb8(r3) -/* 800226B0 0001F5F0 4B FF FD D5 */ bl fpcMtd_IsDelete -/* 800226B4 0001F5F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800226B8 0001F5F8 7C 08 03 A6 */ mtlr r0 -/* 800226BC 0001F5FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800226C0 0001F600 4E 80 00 20 */ blr -/* 800226C4 0001F604 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800226C8 0001F608 7C 08 02 A6 */ mflr r0 -/* 800226CC 0001F60C 90 01 00 14 */ stw r0, 0x14(r1) -/* 800226D0 0001F610 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800226D4 0001F614 7C 7F 1B 78 */ mr r31, r3 -/* 800226D8 0001F618 38 7F 00 BC */ addi r3, r31, 0xbc -/* 800226DC 0001F61C 4B FF EF 89 */ bl fpcLy_IsDeletingMesg -/* 800226E0 0001F620 2C 03 00 00 */ cmpwi r3, 0 -/* 800226E4 0001F624 40 82 00 2C */ bne lbl_80022710 -/* 800226E8 0001F628 80 7F 00 B8 */ lwz r3, 0xb8(r31) -/* 800226EC 0001F62C 7F E4 FB 78 */ mr r4, r31 -/* 800226F0 0001F630 4B FF FD B9 */ bl fpcMtd_Delete -/* 800226F4 0001F634 2C 03 00 01 */ cmpwi r3, 1 -/* 800226F8 0001F638 40 82 00 18 */ bne lbl_80022710 -/* 800226FC 0001F63C 38 00 00 00 */ li r0, 0 -/* 80022700 0001F640 90 1F 00 B4 */ stw r0, 0xb4(r31) -/* 80022704 0001F644 38 7F 00 BC */ addi r3, r31, 0xbc -/* 80022708 0001F648 4B FF F0 E1 */ bl fpcLy_Delete -/* 8002270C 0001F64C 48 00 00 08 */ b lbl_80022714 -lbl_80022710: -/* 80022710 0001F650 38 60 00 00 */ li r3, 0 -lbl_80022714: -/* 80022714 0001F654 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80022718 0001F658 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002271C 0001F65C 7C 08 03 A6 */ mtlr r0 -/* 80022720 0001F660 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022724 0001F664 4E 80 00 20 */ blr -/* 80022728 0001F668 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002272C 0001F66C 7C 08 02 A6 */ mflr r0 -/* 80022730 0001F670 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022734 0001F674 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80022738 0001F678 93 C1 00 08 */ stw r30, 8(r1) -/* 8002273C 0001F67C 7C 7F 1B 78 */ mr r31, r3 -/* 80022740 0001F680 88 03 00 0C */ lbz r0, 0xc(r3) -/* 80022744 0001F684 7C 00 07 75 */ extsb. r0, r0 -/* 80022748 0001F688 40 82 00 38 */ bne lbl_80022780 -/* 8002274C 0001F68C 83 DF 00 10 */ lwz r30, 0x10(r31) -/* 80022750 0001F690 38 6D 87 C0 */ addi r3, r13, lbl_80450D40-_SDA_BASE_ -/* 80022754 0001F694 4B FF DF 09 */ bl fpcBs_MakeOfType -/* 80022758 0001F698 90 7F 00 B4 */ stw r3, 0xb4(r31) -/* 8002275C 0001F69C 80 1E 00 1C */ lwz r0, 0x1c(r30) -/* 80022760 0001F6A0 90 1F 00 B8 */ stw r0, 0xb8(r31) -/* 80022764 0001F6A4 38 7F 00 BC */ addi r3, r31, 0xbc -/* 80022768 0001F6A8 7F E4 FB 78 */ mr r4, r31 -/* 8002276C 0001F6AC 38 BF 00 E8 */ addi r5, r31, 0xe8 -/* 80022770 0001F6B0 38 C0 00 10 */ li r6, 0x10 -/* 80022774 0001F6B4 4B FF F1 55 */ bl fpcLy_Create -/* 80022778 0001F6B8 38 00 00 00 */ li r0, 0 -/* 8002277C 0001F6BC 98 1F 01 A8 */ stb r0, 0x1a8(r31) -lbl_80022780: -/* 80022780 0001F6C0 4B FF EF 75 */ bl fpcLy_CurrentLayer -/* 80022784 0001F6C4 7C 7E 1B 78 */ mr r30, r3 -/* 80022788 0001F6C8 38 7F 00 BC */ addi r3, r31, 0xbc -/* 8002278C 0001F6CC 4B FF EF 61 */ bl fpcLy_SetCurrentLayer -/* 80022790 0001F6D0 80 7F 00 B8 */ lwz r3, 0xb8(r31) -/* 80022794 0001F6D4 7F E4 FB 78 */ mr r4, r31 -/* 80022798 0001F6D8 4B FF FD 35 */ bl fpcMtd_Create -/* 8002279C 0001F6DC 7C 7F 1B 78 */ mr r31, r3 -/* 800227A0 0001F6E0 7F C3 F3 78 */ mr r3, r30 -/* 800227A4 0001F6E4 4B FF EF 49 */ bl fpcLy_SetCurrentLayer -/* 800227A8 0001F6E8 7F E3 FB 78 */ mr r3, r31 -/* 800227AC 0001F6EC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800227B0 0001F6F0 83 C1 00 08 */ lwz r30, 8(r1) -/* 800227B4 0001F6F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800227B8 0001F6F8 7C 08 03 A6 */ mtlr r0 -/* 800227BC 0001F6FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800227C0 0001F700 4E 80 00 20 */ blr - diff --git a/asm/f/pc/fstcreate/f_pc_fstcreate_req.s b/asm/f/pc/fstcreate/f_pc_fstcreate_req.s deleted file mode 100644 index c5620b38ac..0000000000 --- a/asm/f/pc/fstcreate/f_pc_fstcreate_req.s +++ /dev/null @@ -1,88 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80023a48 - - -/* 80023A48 00020988 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023A4C 0002098C 7C 08 02 A6 */ mflr r0 -/* 80023A50 00020990 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023A54 00020994 7C 64 1B 78 */ mr r4, r3 -/* 80023A58 00020998 81 83 00 48 */ lwz r12, 0x48(r3) -/* 80023A5C 0002099C 28 0C 00 00 */ cmplwi r12, 0 -/* 80023A60 000209A0 41 82 00 24 */ beq lbl_80023A84 -/* 80023A64 000209A4 80 64 00 40 */ lwz r3, 0x40(r4) -/* 80023A68 000209A8 80 84 00 4C */ lwz r4, 0x4c(r4) -/* 80023A6C 000209AC 7D 89 03 A6 */ mtctr r12 -/* 80023A70 000209B0 4E 80 04 21 */ bctrl -/* 80023A74 000209B4 2C 03 00 00 */ cmpwi r3, 0 -/* 80023A78 000209B8 40 82 00 0C */ bne lbl_80023A84 -/* 80023A7C 000209BC 38 60 00 03 */ li r3, 3 -/* 80023A80 000209C0 48 00 00 08 */ b lbl_80023A88 -lbl_80023A84: -/* 80023A84 000209C4 38 60 00 04 */ li r3, 4 -lbl_80023A88: -/* 80023A88 000209C8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023A8C 000209CC 7C 08 03 A6 */ mtlr r0 -/* 80023A90 000209D0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023A94 000209D4 4E 80 00 20 */ blr -/* 80023A98 000209D8 38 60 00 01 */ li r3, 1 -/* 80023A9C 000209DC 4E 80 00 20 */ blr - -.global fpcFCtRq_Request -fpcFCtRq_Request: -/* 80023AA0 000209E0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80023AA4 000209E4 7C 08 02 A6 */ mflr r0 -/* 80023AA8 000209E8 90 01 00 24 */ stw r0, 0x24(r1) -/* 80023AAC 000209EC 39 61 00 20 */ addi r11, r1, 0x20 -/* 80023AB0 000209F0 48 33 E7 21 */ bl _savegpr_26 -/* 80023AB4 000209F4 7C 7A 1B 78 */ mr r26, r3 -/* 80023AB8 000209F8 7C 9B 23 78 */ mr r27, r4 -/* 80023ABC 000209FC 7C BC 2B 78 */ mr r28, r5 -/* 80023AC0 00020A00 7C DD 33 78 */ mr r29, r6 -/* 80023AC4 00020A04 7C FE 3B 78 */ mr r30, r7 -/* 80023AC8 00020A08 7F 63 DB 78 */ mr r3, r27 -/* 80023ACC 00020A0C 4B FF E4 ED */ bl fpcLd_Use -/* 80023AD0 00020A10 2C 03 00 00 */ cmpwi r3, 0 -/* 80023AD4 00020A14 40 82 00 0C */ bne lbl_80023AE0 -/* 80023AD8 00020A18 38 60 00 00 */ li r3, 0 -/* 80023ADC 00020A1C 48 00 00 7C */ b lbl_80023B58 -lbl_80023AE0: -/* 80023AE0 00020A20 7F 43 D3 78 */ mr r3, r26 -/* 80023AE4 00020A24 38 80 00 50 */ li r4, 0x50 -/* 80023AE8 00020A28 3C A0 80 3A */ lis r5, lbl_803A3AE0@ha -/* 80023AEC 00020A2C 38 A5 3A E0 */ addi r5, r5, lbl_803A3AE0@l -/* 80023AF0 00020A30 4B FF D2 C1 */ bl fpcCtRq_Create -/* 80023AF4 00020A34 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80023AF8 00020A38 41 82 00 5C */ beq lbl_80023B54 -/* 80023AFC 00020A3C 7F 43 D3 78 */ mr r3, r26 -/* 80023B00 00020A40 4B FF DB ED */ bl fpcLy_SetCurrentLayer -/* 80023B04 00020A44 4B FF CB 99 */ bl fpcBs_MakeOfId -/* 80023B08 00020A48 7C 64 1B 78 */ mr r4, r3 -/* 80023B0C 00020A4C 7F 63 DB 78 */ mr r3, r27 -/* 80023B10 00020A50 7F C5 F3 78 */ mr r5, r30 -/* 80023B14 00020A54 4B FF CD 0D */ bl fpcBs_Create -/* 80023B18 00020A58 7C 7E 1B 79 */ or. r30, r3, r3 -/* 80023B1C 00020A5C 41 82 00 30 */ beq lbl_80023B4C -/* 80023B20 00020A60 93 FE 00 14 */ stw r31, 0x14(r30) -/* 80023B24 00020A64 93 DF 00 40 */ stw r30, 0x40(r31) -/* 80023B28 00020A68 80 1E 00 04 */ lwz r0, 4(r30) -/* 80023B2C 00020A6C 90 1F 00 3C */ stw r0, 0x3c(r31) -/* 80023B30 00020A70 4B FF CD ED */ bl fpcBs_SubCreate -/* 80023B34 00020A74 2C 03 00 02 */ cmpwi r3, 2 -/* 80023B38 00020A78 40 82 00 14 */ bne lbl_80023B4C -/* 80023B3C 00020A7C 93 9F 00 48 */ stw r28, 0x48(r31) -/* 80023B40 00020A80 93 BF 00 4C */ stw r29, 0x4c(r31) -/* 80023B44 00020A84 7F C3 F3 78 */ mr r3, r30 -/* 80023B48 00020A88 48 00 00 10 */ b lbl_80023B58 -lbl_80023B4C: -/* 80023B4C 00020A8C 7F E3 FB 78 */ mr r3, r31 -/* 80023B50 00020A90 4B FF D0 C5 */ bl fpcCtRq_Cancel -lbl_80023B54: -/* 80023B54 00020A94 38 60 00 00 */ li r3, 0 -lbl_80023B58: -/* 80023B58 00020A98 39 61 00 20 */ addi r11, r1, 0x20 -/* 80023B5C 00020A9C 48 33 E6 C1 */ bl _restgpr_26 -/* 80023B60 00020AA0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80023B64 00020AA4 7C 08 03 A6 */ mtlr r0 -/* 80023B68 00020AA8 38 21 00 20 */ addi r1, r1, 0x20 -/* 80023B6C 00020AAC 4E 80 00 20 */ blr diff --git a/asm/f/pc/node/f_pc_node_req.s b/asm/f/pc/node/f_pc_node_req.s deleted file mode 100644 index 4049d51d85..0000000000 --- a/asm/f/pc/node/f_pc_node_req.s +++ /dev/null @@ -1,714 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 800227c4 - - -.global fpcNdRq_RequestQTo -fpcNdRq_RequestQTo: -/* 800227C4 0001F704 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800227C8 0001F708 7C 08 02 A6 */ mflr r0 -/* 800227CC 0001F70C 90 01 00 14 */ stw r0, 0x14(r1) -/* 800227D0 0001F710 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800227D4 0001F714 7C 7F 1B 78 */ mr r31, r3 -/* 800227D8 0001F718 80 63 00 50 */ lwz r3, 0x50(r3) -/* 800227DC 0001F71C 4B FF EE E9 */ bl fpcLy_CreatedMesg -/* 800227E0 0001F720 38 7F 00 14 */ addi r3, r31, 0x14 -/* 800227E4 0001F724 4B FF ED A5 */ bl fpcLy_CancelQTo -/* 800227E8 0001F728 7F E3 FB 78 */ mr r3, r31 -/* 800227EC 0001F72C 48 24 41 B9 */ bl cTg_SingleCut -/* 800227F0 0001F730 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800227F4 0001F734 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800227F8 0001F738 7C 08 03 A6 */ mtlr r0 -/* 800227FC 0001F73C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022800 0001F740 4E 80 00 20 */ blr - -.global fpcNdRq_ToRequestQ -fpcNdRq_ToRequestQ: -/* 80022804 0001F744 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022808 0001F748 7C 08 02 A6 */ mflr r0 -/* 8002280C 0001F74C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022810 0001F750 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80022814 0001F754 7C 7F 1B 78 */ mr r31, r3 -/* 80022818 0001F758 3C 60 80 3A */ lis r3, lbl_803A3A38@ha -/* 8002281C 0001F75C 38 63 3A 38 */ addi r3, r3, lbl_803A3A38@l -/* 80022820 0001F760 7F E4 FB 78 */ mr r4, r31 -/* 80022824 0001F764 48 24 41 C1 */ bl cTg_Addition -/* 80022828 0001F768 80 7F 00 50 */ lwz r3, 0x50(r31) -/* 8002282C 0001F76C 38 9F 00 14 */ addi r4, r31, 0x14 -/* 80022830 0001F770 4B FF ED 79 */ bl fpcLy_ToCancelQ -/* 80022834 0001F774 80 7F 00 50 */ lwz r3, 0x50(r31) -/* 80022838 0001F778 4B FF EE 7D */ bl fpcLy_CreatingMesg -/* 8002283C 0001F77C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80022840 0001F780 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022844 0001F784 7C 08 03 A6 */ mtlr r0 -/* 80022848 0001F788 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002284C 0001F78C 4E 80 00 20 */ blr -/* 80022850 0001F790 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022854 0001F794 7C 08 02 A6 */ mflr r0 -/* 80022858 0001F798 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002285C 0001F79C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80022860 0001F7A0 7C 7F 1B 78 */ mr r31, r3 -/* 80022864 0001F7A4 80 63 00 54 */ lwz r3, 0x54(r3) -/* 80022868 0001F7A8 4B FF E2 81 */ bl fpcCtRq_IsCreatingByID -/* 8002286C 0001F7AC 2C 03 00 01 */ cmpwi r3, 1 -/* 80022870 0001F7B0 40 82 00 0C */ bne lbl_8002287C -/* 80022874 0001F7B4 38 60 00 00 */ li r3, 0 -/* 80022878 0001F7B8 48 00 00 1C */ b lbl_80022894 -lbl_8002287C: -/* 8002287C 0001F7BC 80 7F 00 54 */ lwz r3, 0x54(r31) -/* 80022880 0001F7C0 4B FF EB 1D */ bl fpcEx_IsExist -/* 80022884 0001F7C4 38 03 FF FF */ addi r0, r3, -1 -/* 80022888 0001F7C8 30 00 FF FF */ addic r0, r0, -1 -/* 8002288C 0001F7CC 7C 60 01 10 */ subfe r3, r0, r0 -/* 80022890 0001F7D0 38 63 00 03 */ addi r3, r3, 3 -lbl_80022894: -/* 80022894 0001F7D4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80022898 0001F7D8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002289C 0001F7DC 7C 08 03 A6 */ mtlr r0 -/* 800228A0 0001F7E0 38 21 00 10 */ addi r1, r1, 0x10 -/* 800228A4 0001F7E4 4E 80 00 20 */ blr -/* 800228A8 0001F7E8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800228AC 0001F7EC 7C 08 02 A6 */ mflr r0 -/* 800228B0 0001F7F0 90 01 00 14 */ stw r0, 0x14(r1) -/* 800228B4 0001F7F4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800228B8 0001F7F8 7C 7F 1B 78 */ mr r31, r3 -/* 800228BC 0001F7FC 80 63 00 50 */ lwz r3, 0x50(r3) -/* 800228C0 0001F800 A8 9F 00 58 */ lha r4, 0x58(r31) -/* 800228C4 0001F804 80 BF 00 3C */ lwz r5, 0x3c(r31) -/* 800228C8 0001F808 80 A5 00 0C */ lwz r5, 0xc(r5) -/* 800228CC 0001F80C 7F E6 FB 78 */ mr r6, r31 -/* 800228D0 0001F810 80 FF 00 5C */ lwz r7, 0x5c(r31) -/* 800228D4 0001F814 48 00 14 C1 */ bl fpcSCtRq_Request -/* 800228D8 0001F818 90 7F 00 54 */ stw r3, 0x54(r31) -/* 800228DC 0001F81C 80 1F 00 54 */ lwz r0, 0x54(r31) -/* 800228E0 0001F820 20 00 FF FF */ subfic r0, r0, -1 -/* 800228E4 0001F824 7C 00 00 34 */ cntlzw r0, r0 -/* 800228E8 0001F828 54 03 D9 7E */ srwi r3, r0, 5 -/* 800228EC 0001F82C 38 63 00 02 */ addi r3, r3, 2 -/* 800228F0 0001F830 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800228F4 0001F834 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800228F8 0001F838 7C 08 03 A6 */ mtlr r0 -/* 800228FC 0001F83C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022900 0001F840 4E 80 00 20 */ blr -/* 80022904 0001F844 38 60 00 02 */ li r3, 2 -/* 80022908 0001F848 4E 80 00 20 */ blr -/* 8002290C 0001F84C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022910 0001F850 7C 08 02 A6 */ mflr r0 -/* 80022914 0001F854 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022918 0001F858 4B FF E7 29 */ bl fpcDt_IsComplete -/* 8002291C 0001F85C 30 03 FF FF */ addic r0, r3, -1 -/* 80022920 0001F860 7C 60 01 10 */ subfe r3, r0, r0 -/* 80022924 0001F864 38 00 00 02 */ li r0, 2 -/* 80022928 0001F868 7C 03 18 78 */ andc r3, r0, r3 -/* 8002292C 0001F86C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022930 0001F870 7C 08 03 A6 */ mtlr r0 -/* 80022934 0001F874 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022938 0001F878 4E 80 00 20 */ blr -/* 8002293C 0001F87C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022940 0001F880 7C 08 02 A6 */ mflr r0 -/* 80022944 0001F884 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022948 0001F888 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8002294C 0001F88C 7C 7F 1B 78 */ mr r31, r3 -/* 80022950 0001F890 80 63 00 48 */ lwz r3, 0x48(r3) -/* 80022954 0001F894 28 03 00 00 */ cmplwi r3, 0 -/* 80022958 0001F898 41 82 00 20 */ beq lbl_80022978 -/* 8002295C 0001F89C 4B FF E9 49 */ bl fpcDt_Delete -/* 80022960 0001F8A0 2C 03 00 00 */ cmpwi r3, 0 -/* 80022964 0001F8A4 40 82 00 0C */ bne lbl_80022970 -/* 80022968 0001F8A8 38 60 00 00 */ li r3, 0 -/* 8002296C 0001F8AC 48 00 00 10 */ b lbl_8002297C -lbl_80022970: -/* 80022970 0001F8B0 38 00 00 00 */ li r0, 0 -/* 80022974 0001F8B4 90 1F 00 48 */ stw r0, 0x48(r31) -lbl_80022978: -/* 80022978 0001F8B8 38 60 00 02 */ li r3, 2 -lbl_8002297C: -/* 8002297C 0001F8BC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80022980 0001F8C0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022984 0001F8C4 7C 08 03 A6 */ mtlr r0 -/* 80022988 0001F8C8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002298C 0001F8CC 4E 80 00 20 */ blr - -.global fpcNdRq_DoPhase -fpcNdRq_DoPhase: -/* 80022990 0001F8D0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022994 0001F8D4 7C 08 02 A6 */ mflr r0 -/* 80022998 0001F8D8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002299C 0001F8DC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800229A0 0001F8E0 7C 7F 1B 78 */ mr r31, r3 -/* 800229A4 0001F8E4 38 7F 00 30 */ addi r3, r31, 0x30 -/* 800229A8 0001F8E8 80 9F 00 38 */ lwz r4, 0x38(r31) -/* 800229AC 0001F8EC 7F E5 FB 78 */ mr r5, r31 -/* 800229B0 0001F8F0 48 24 3D FD */ bl cPhs_Handler -/* 800229B4 0001F8F4 2C 03 00 02 */ cmpwi r3, 2 -/* 800229B8 0001F8F8 40 82 00 0C */ bne lbl_800229C4 -/* 800229BC 0001F8FC 7F E3 FB 78 */ mr r3, r31 -/* 800229C0 0001F900 4B FF FF D1 */ bl fpcNdRq_DoPhase -lbl_800229C4: -/* 800229C4 0001F904 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800229C8 0001F908 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800229CC 0001F90C 7C 08 03 A6 */ mtlr r0 -/* 800229D0 0001F910 38 21 00 10 */ addi r1, r1, 0x10 -/* 800229D4 0001F914 4E 80 00 20 */ blr - -.global fpcNdRq_Execute -fpcNdRq_Execute: -/* 800229D8 0001F918 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800229DC 0001F91C 7C 08 02 A6 */ mflr r0 -/* 800229E0 0001F920 90 01 00 14 */ stw r0, 0x14(r1) -/* 800229E4 0001F924 4B FF FF AD */ bl fpcNdRq_DoPhase -/* 800229E8 0001F928 2C 03 00 03 */ cmpwi r3, 3 -/* 800229EC 0001F92C 41 82 00 3C */ beq lbl_80022A28 -/* 800229F0 0001F930 40 80 00 18 */ bge lbl_80022A08 -/* 800229F4 0001F934 2C 03 00 02 */ cmpwi r3, 2 -/* 800229F8 0001F938 40 80 00 34 */ bge lbl_80022A2C -/* 800229FC 0001F93C 2C 03 00 00 */ cmpwi r3, 0 -/* 80022A00 0001F940 40 80 00 18 */ bge lbl_80022A18 -/* 80022A04 0001F944 48 00 00 28 */ b lbl_80022A2C -lbl_80022A08: -/* 80022A08 0001F948 2C 03 00 05 */ cmpwi r3, 5 -/* 80022A0C 0001F94C 41 82 00 1C */ beq lbl_80022A28 -/* 80022A10 0001F950 40 80 00 1C */ bge lbl_80022A2C -/* 80022A14 0001F954 48 00 00 0C */ b lbl_80022A20 -lbl_80022A18: -/* 80022A18 0001F958 38 60 00 00 */ li r3, 0 -/* 80022A1C 0001F95C 48 00 00 10 */ b lbl_80022A2C -lbl_80022A20: -/* 80022A20 0001F960 38 60 00 02 */ li r3, 2 -/* 80022A24 0001F964 48 00 00 08 */ b lbl_80022A2C -lbl_80022A28: -/* 80022A28 0001F968 38 60 00 03 */ li r3, 3 -lbl_80022A2C: -/* 80022A2C 0001F96C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022A30 0001F970 7C 08 03 A6 */ mtlr r0 -/* 80022A34 0001F974 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022A38 0001F978 4E 80 00 20 */ blr - -.global fpcNdRq_Delete -fpcNdRq_Delete: -/* 80022A3C 0001F97C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022A40 0001F980 7C 08 02 A6 */ mflr r0 -/* 80022A44 0001F984 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022A48 0001F988 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80022A4C 0001F98C 7C 7F 1B 78 */ mr r31, r3 -/* 80022A50 0001F990 4B FF FD 75 */ bl fpcNdRq_RequestQTo -/* 80022A54 0001F994 80 7F 00 3C */ lwz r3, 0x3c(r31) -/* 80022A58 0001F998 28 03 00 00 */ cmplwi r3, 0 -/* 80022A5C 0001F99C 41 82 00 28 */ beq lbl_80022A84 -/* 80022A60 0001F9A0 80 63 00 08 */ lwz r3, 8(r3) -/* 80022A64 0001F9A4 28 03 00 00 */ cmplwi r3, 0 -/* 80022A68 0001F9A8 41 82 00 1C */ beq lbl_80022A84 -/* 80022A6C 0001F9AC 7F E4 FB 78 */ mr r4, r31 -/* 80022A70 0001F9B0 4B FF F9 B9 */ bl fpcMtd_Method -/* 80022A74 0001F9B4 2C 03 00 00 */ cmpwi r3, 0 -/* 80022A78 0001F9B8 40 82 00 0C */ bne lbl_80022A84 -/* 80022A7C 0001F9BC 38 60 00 00 */ li r3, 0 -/* 80022A80 0001F9C0 48 00 00 10 */ b lbl_80022A90 -lbl_80022A84: -/* 80022A84 0001F9C4 7F E3 FB 78 */ mr r3, r31 -/* 80022A88 0001F9C8 48 24 07 D9 */ bl cMl_NS_free -/* 80022A8C 0001F9CC 38 60 00 01 */ li r3, 1 -lbl_80022A90: -/* 80022A90 0001F9D0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80022A94 0001F9D4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022A98 0001F9D8 7C 08 03 A6 */ mtlr r0 -/* 80022A9C 0001F9DC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022AA0 0001F9E0 4E 80 00 20 */ blr - -.global fpcNdRq_Cancel -fpcNdRq_Cancel: -/* 80022AA4 0001F9E4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022AA8 0001F9E8 7C 08 02 A6 */ mflr r0 -/* 80022AAC 0001F9EC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022AB0 0001F9F0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80022AB4 0001F9F4 7C 7F 1B 78 */ mr r31, r3 -/* 80022AB8 0001F9F8 80 63 00 3C */ lwz r3, 0x3c(r3) -/* 80022ABC 0001F9FC 28 03 00 00 */ cmplwi r3, 0 -/* 80022AC0 0001FA00 41 82 00 20 */ beq lbl_80022AE0 -/* 80022AC4 0001FA04 80 63 00 04 */ lwz r3, 4(r3) -/* 80022AC8 0001FA08 7F E4 FB 78 */ mr r4, r31 -/* 80022ACC 0001FA0C 4B FF F9 5D */ bl fpcMtd_Method -/* 80022AD0 0001FA10 2C 03 00 00 */ cmpwi r3, 0 -/* 80022AD4 0001FA14 40 82 00 0C */ bne lbl_80022AE0 -/* 80022AD8 0001FA18 38 60 00 00 */ li r3, 0 -/* 80022ADC 0001FA1C 48 00 00 0C */ b lbl_80022AE8 -lbl_80022AE0: -/* 80022AE0 0001FA20 7F E3 FB 78 */ mr r3, r31 -/* 80022AE4 0001FA24 4B FF FF 59 */ bl fpcNdRq_Delete -lbl_80022AE8: -/* 80022AE8 0001FA28 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80022AEC 0001FA2C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022AF0 0001FA30 7C 08 03 A6 */ mtlr r0 -/* 80022AF4 0001FA34 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022AF8 0001FA38 4E 80 00 20 */ blr - -.global fpcNdRq_Handler -fpcNdRq_Handler: -/* 80022AFC 0001FA3C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022B00 0001FA40 7C 08 02 A6 */ mflr r0 -/* 80022B04 0001FA44 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022B08 0001FA48 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80022B0C 0001FA4C 93 C1 00 08 */ stw r30, 8(r1) -/* 80022B10 0001FA50 3C 60 80 3A */ lis r3, lbl_803A3A38@ha -/* 80022B14 0001FA54 83 E3 3A 38 */ lwz r31, lbl_803A3A38@l(r3) -/* 80022B18 0001FA58 48 00 00 A8 */ b lbl_80022BC0 -lbl_80022B1C: -/* 80022B1C 0001FA5C 83 DF 00 0C */ lwz r30, 0xc(r31) -/* 80022B20 0001FA60 7F C3 F3 78 */ mr r3, r30 -/* 80022B24 0001FA64 80 9E 00 3C */ lwz r4, 0x3c(r30) -/* 80022B28 0001FA68 81 84 00 00 */ lwz r12, 0(r4) -/* 80022B2C 0001FA6C 7D 89 03 A6 */ mtctr r12 -/* 80022B30 0001FA70 4E 80 04 21 */ bctrl -/* 80022B34 0001FA74 2C 03 00 04 */ cmpwi r3, 4 -/* 80022B38 0001FA78 41 82 00 48 */ beq lbl_80022B80 -/* 80022B3C 0001FA7C 40 80 00 10 */ bge lbl_80022B4C -/* 80022B40 0001FA80 2C 03 00 03 */ cmpwi r3, 3 -/* 80022B44 0001FA84 40 80 00 10 */ bge lbl_80022B54 -/* 80022B48 0001FA88 48 00 00 64 */ b lbl_80022BAC -lbl_80022B4C: -/* 80022B4C 0001FA8C 2C 03 00 06 */ cmpwi r3, 6 -/* 80022B50 0001FA90 40 80 00 5C */ bge lbl_80022BAC -lbl_80022B54: -/* 80022B54 0001FA94 28 1F 00 00 */ cmplwi r31, 0 -/* 80022B58 0001FA98 41 82 00 0C */ beq lbl_80022B64 -/* 80022B5C 0001FA9C 83 FF 00 08 */ lwz r31, 8(r31) -/* 80022B60 0001FAA0 48 00 00 08 */ b lbl_80022B68 -lbl_80022B64: -/* 80022B64 0001FAA4 3B E0 00 00 */ li r31, 0 -lbl_80022B68: -/* 80022B68 0001FAA8 7F C3 F3 78 */ mr r3, r30 -/* 80022B6C 0001FAAC 4B FF FF 39 */ bl fpcNdRq_Cancel -/* 80022B70 0001FAB0 2C 03 00 00 */ cmpwi r3, 0 -/* 80022B74 0001FAB4 40 82 00 4C */ bne lbl_80022BC0 -/* 80022B78 0001FAB8 38 60 00 00 */ li r3, 0 -/* 80022B7C 0001FABC 48 00 00 50 */ b lbl_80022BCC -lbl_80022B80: -/* 80022B80 0001FAC0 28 1F 00 00 */ cmplwi r31, 0 -/* 80022B84 0001FAC4 41 82 00 0C */ beq lbl_80022B90 -/* 80022B88 0001FAC8 83 FF 00 08 */ lwz r31, 8(r31) -/* 80022B8C 0001FACC 48 00 00 08 */ b lbl_80022B94 -lbl_80022B90: -/* 80022B90 0001FAD0 3B E0 00 00 */ li r31, 0 -lbl_80022B94: -/* 80022B94 0001FAD4 7F C3 F3 78 */ mr r3, r30 -/* 80022B98 0001FAD8 4B FF FE A5 */ bl fpcNdRq_Delete -/* 80022B9C 0001FADC 2C 03 00 00 */ cmpwi r3, 0 -/* 80022BA0 0001FAE0 40 82 00 20 */ bne lbl_80022BC0 -/* 80022BA4 0001FAE4 38 60 00 00 */ li r3, 0 -/* 80022BA8 0001FAE8 48 00 00 24 */ b lbl_80022BCC -lbl_80022BAC: -/* 80022BAC 0001FAEC 28 1F 00 00 */ cmplwi r31, 0 -/* 80022BB0 0001FAF0 41 82 00 0C */ beq lbl_80022BBC -/* 80022BB4 0001FAF4 83 FF 00 08 */ lwz r31, 8(r31) -/* 80022BB8 0001FAF8 48 00 00 08 */ b lbl_80022BC0 -lbl_80022BBC: -/* 80022BBC 0001FAFC 3B E0 00 00 */ li r31, 0 -lbl_80022BC0: -/* 80022BC0 0001FB00 28 1F 00 00 */ cmplwi r31, 0 -/* 80022BC4 0001FB04 40 82 FF 58 */ bne lbl_80022B1C -/* 80022BC8 0001FB08 38 60 00 01 */ li r3, 1 -lbl_80022BCC: -/* 80022BCC 0001FB0C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80022BD0 0001FB10 83 C1 00 08 */ lwz r30, 8(r1) -/* 80022BD4 0001FB14 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022BD8 0001FB18 7C 08 03 A6 */ mtlr r0 -/* 80022BDC 0001FB1C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022BE0 0001FB20 4E 80 00 20 */ blr - -.global fpcNdRq_IsPossibleTarget -fpcNdRq_IsPossibleTarget: -/* 80022BE4 0001FB24 80 83 00 04 */ lwz r4, 4(r3) -/* 80022BE8 0001FB28 3C 60 80 3A */ lis r3, lbl_803A3A38@ha -/* 80022BEC 0001FB2C 38 63 3A 38 */ addi r3, r3, lbl_803A3A38@l -/* 80022BF0 0001FB30 80 63 00 00 */ lwz r3, 0(r3) -/* 80022BF4 0001FB34 48 00 00 4C */ b lbl_80022C40 -lbl_80022BF8: -/* 80022BF8 0001FB38 80 A3 00 0C */ lwz r5, 0xc(r3) -/* 80022BFC 0001FB3C 80 05 00 40 */ lwz r0, 0x40(r5) -/* 80022C00 0001FB40 2C 00 00 02 */ cmpwi r0, 2 -/* 80022C04 0001FB44 41 82 00 14 */ beq lbl_80022C18 -/* 80022C08 0001FB48 2C 00 00 04 */ cmpwi r0, 4 -/* 80022C0C 0001FB4C 41 82 00 0C */ beq lbl_80022C18 -/* 80022C10 0001FB50 2C 00 00 01 */ cmpwi r0, 1 -/* 80022C14 0001FB54 40 82 00 18 */ bne lbl_80022C2C -lbl_80022C18: -/* 80022C18 0001FB58 80 05 00 4C */ lwz r0, 0x4c(r5) -/* 80022C1C 0001FB5C 7C 00 20 40 */ cmplw r0, r4 -/* 80022C20 0001FB60 40 82 00 0C */ bne lbl_80022C2C -/* 80022C24 0001FB64 38 60 00 00 */ li r3, 0 -/* 80022C28 0001FB68 4E 80 00 20 */ blr -lbl_80022C2C: -/* 80022C2C 0001FB6C 28 03 00 00 */ cmplwi r3, 0 -/* 80022C30 0001FB70 41 82 00 0C */ beq lbl_80022C3C -/* 80022C34 0001FB74 80 63 00 08 */ lwz r3, 8(r3) -/* 80022C38 0001FB78 48 00 00 08 */ b lbl_80022C40 -lbl_80022C3C: -/* 80022C3C 0001FB7C 38 60 00 00 */ li r3, 0 -lbl_80022C40: -/* 80022C40 0001FB80 28 03 00 00 */ cmplwi r3, 0 -/* 80022C44 0001FB84 40 82 FF B4 */ bne lbl_80022BF8 -/* 80022C48 0001FB88 38 60 00 01 */ li r3, 1 -/* 80022C4C 0001FB8C 4E 80 00 20 */ blr - -.global fpcNdRq_IsIng -fpcNdRq_IsIng: -/* 80022C50 0001FB90 80 A3 00 04 */ lwz r5, 4(r3) -/* 80022C54 0001FB94 3C 60 80 3A */ lis r3, lbl_803A3A38@ha -/* 80022C58 0001FB98 80 83 3A 38 */ lwz r4, lbl_803A3A38@l(r3) -/* 80022C5C 0001FB9C 48 00 00 30 */ b lbl_80022C8C -lbl_80022C60: -/* 80022C60 0001FBA0 80 64 00 0C */ lwz r3, 0xc(r4) -/* 80022C64 0001FBA4 80 03 00 54 */ lwz r0, 0x54(r3) -/* 80022C68 0001FBA8 7C 00 28 40 */ cmplw r0, r5 -/* 80022C6C 0001FBAC 40 82 00 0C */ bne lbl_80022C78 -/* 80022C70 0001FBB0 38 60 00 01 */ li r3, 1 -/* 80022C74 0001FBB4 4E 80 00 20 */ blr -lbl_80022C78: -/* 80022C78 0001FBB8 28 04 00 00 */ cmplwi r4, 0 -/* 80022C7C 0001FBBC 41 82 00 0C */ beq lbl_80022C88 -/* 80022C80 0001FBC0 80 84 00 08 */ lwz r4, 8(r4) -/* 80022C84 0001FBC4 48 00 00 08 */ b lbl_80022C8C -lbl_80022C88: -/* 80022C88 0001FBC8 38 80 00 00 */ li r4, 0 -lbl_80022C8C: -/* 80022C8C 0001FBCC 28 04 00 00 */ cmplwi r4, 0 -/* 80022C90 0001FBD0 40 82 FF D0 */ bne lbl_80022C60 -/* 80022C94 0001FBD4 38 60 00 00 */ li r3, 0 -/* 80022C98 0001FBD8 4E 80 00 20 */ blr - -.global fpcNdRq_Create -fpcNdRq_Create: -/* 80022C9C 0001FBDC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022CA0 0001FBE0 7C 08 02 A6 */ mflr r0 -/* 80022CA4 0001FBE4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022CA8 0001FBE8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80022CAC 0001FBEC 93 C1 00 08 */ stw r30, 8(r1) -/* 80022CB0 0001FBF0 7C 7E 1B 78 */ mr r30, r3 -/* 80022CB4 0001FBF4 38 60 FF FC */ li r3, -4 -/* 80022CB8 0001FBF8 7F C4 F3 78 */ mr r4, r30 -/* 80022CBC 0001FBFC 48 24 05 6D */ bl cMl_NS_memalignB -/* 80022CC0 0001FC00 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80022CC4 0001FC04 41 82 01 34 */ beq lbl_80022DF8 -/* 80022CC8 0001FC08 88 0D 87 CC */ lbz r0, lbl_80450D4C-_SDA_BASE_(r13) -/* 80022CCC 0001FC0C 7C 00 07 75 */ extsb. r0, r0 -/* 80022CD0 0001FC10 40 82 00 14 */ bne lbl_80022CE4 -/* 80022CD4 0001FC14 38 00 00 00 */ li r0, 0 -/* 80022CD8 0001FC18 90 0D 87 C8 */ stw r0, lbl_80450D48-_SDA_BASE_(r13) -/* 80022CDC 0001FC1C 38 00 00 01 */ li r0, 1 -/* 80022CE0 0001FC20 98 0D 87 CC */ stb r0, lbl_80450D4C-_SDA_BASE_(r13) -lbl_80022CE4: -/* 80022CE4 0001FC24 7F E3 FB 78 */ mr r3, r31 -/* 80022CE8 0001FC28 7F C4 F3 78 */ mr r4, r30 -/* 80022CEC 0001FC2C 48 24 EF C1 */ bl sBs_ClearArea -/* 80022CF0 0001FC30 38 BF FF FC */ addi r5, r31, -4 -/* 80022CF4 0001FC34 3C 60 80 3A */ lis r3, lbl_803A3A44@ha -/* 80022CF8 0001FC38 38 63 3A 44 */ addi r3, r3, lbl_803A3A44@l -/* 80022CFC 0001FC3C 38 83 FF FC */ addi r4, r3, -4 -/* 80022D00 0001FC40 38 00 00 02 */ li r0, 2 -/* 80022D04 0001FC44 7C 09 03 A6 */ mtctr r0 -lbl_80022D08: -/* 80022D08 0001FC48 80 64 00 04 */ lwz r3, 4(r4) -/* 80022D0C 0001FC4C 84 04 00 08 */ lwzu r0, 8(r4) -/* 80022D10 0001FC50 90 65 00 04 */ stw r3, 4(r5) -/* 80022D14 0001FC54 94 05 00 08 */ stwu r0, 8(r5) -/* 80022D18 0001FC58 42 00 FF F0 */ bdnz lbl_80022D08 -/* 80022D1C 0001FC5C 80 04 00 04 */ lwz r0, 4(r4) -/* 80022D20 0001FC60 90 05 00 04 */ stw r0, 4(r5) -/* 80022D24 0001FC64 3C 60 80 3A */ lis r3, lbl_803A3A44@ha -/* 80022D28 0001FC68 38 63 3A 44 */ addi r3, r3, lbl_803A3A44@l -/* 80022D2C 0001FC6C 38 BF 00 10 */ addi r5, r31, 0x10 -/* 80022D30 0001FC70 38 83 00 10 */ addi r4, r3, 0x10 -/* 80022D34 0001FC74 38 00 00 03 */ li r0, 3 -/* 80022D38 0001FC78 7C 09 03 A6 */ mtctr r0 -lbl_80022D3C: -/* 80022D3C 0001FC7C 80 64 00 04 */ lwz r3, 4(r4) -/* 80022D40 0001FC80 84 04 00 08 */ lwzu r0, 8(r4) -/* 80022D44 0001FC84 90 65 00 04 */ stw r3, 4(r5) -/* 80022D48 0001FC88 94 05 00 08 */ stwu r0, 8(r5) -/* 80022D4C 0001FC8C 42 00 FF F0 */ bdnz lbl_80022D3C -/* 80022D50 0001FC90 80 04 00 04 */ lwz r0, 4(r4) -/* 80022D54 0001FC94 90 05 00 04 */ stw r0, 4(r5) -/* 80022D58 0001FC98 3C 60 80 3A */ lis r3, lbl_803A3A44@ha -/* 80022D5C 0001FC9C 38 83 3A 44 */ addi r4, r3, lbl_803A3A44@l -/* 80022D60 0001FCA0 80 64 00 30 */ lwz r3, 0x30(r4) -/* 80022D64 0001FCA4 80 04 00 34 */ lwz r0, 0x34(r4) -/* 80022D68 0001FCA8 90 7F 00 30 */ stw r3, 0x30(r31) -/* 80022D6C 0001FCAC 90 1F 00 34 */ stw r0, 0x34(r31) -/* 80022D70 0001FCB0 80 04 00 38 */ lwz r0, 0x38(r4) -/* 80022D74 0001FCB4 90 1F 00 38 */ stw r0, 0x38(r31) -/* 80022D78 0001FCB8 80 04 00 3C */ lwz r0, 0x3c(r4) -/* 80022D7C 0001FCBC 90 1F 00 3C */ stw r0, 0x3c(r31) -/* 80022D80 0001FCC0 80 04 00 40 */ lwz r0, 0x40(r4) -/* 80022D84 0001FCC4 90 1F 00 40 */ stw r0, 0x40(r31) -/* 80022D88 0001FCC8 80 04 00 44 */ lwz r0, 0x44(r4) -/* 80022D8C 0001FCCC 90 1F 00 44 */ stw r0, 0x44(r31) -/* 80022D90 0001FCD0 80 64 00 48 */ lwz r3, 0x48(r4) -/* 80022D94 0001FCD4 80 04 00 4C */ lwz r0, 0x4c(r4) -/* 80022D98 0001FCD8 90 7F 00 48 */ stw r3, 0x48(r31) -/* 80022D9C 0001FCDC 90 1F 00 4C */ stw r0, 0x4c(r31) -/* 80022DA0 0001FCE0 80 04 00 50 */ lwz r0, 0x50(r4) -/* 80022DA4 0001FCE4 90 1F 00 50 */ stw r0, 0x50(r31) -/* 80022DA8 0001FCE8 80 04 00 54 */ lwz r0, 0x54(r4) -/* 80022DAC 0001FCEC 90 1F 00 54 */ stw r0, 0x54(r31) -/* 80022DB0 0001FCF0 A8 04 00 58 */ lha r0, 0x58(r4) -/* 80022DB4 0001FCF4 B0 1F 00 58 */ sth r0, 0x58(r31) -/* 80022DB8 0001FCF8 80 04 00 5C */ lwz r0, 0x5c(r4) -/* 80022DBC 0001FCFC 90 1F 00 5C */ stw r0, 0x5c(r31) -/* 80022DC0 0001FD00 A8 04 00 60 */ lha r0, 0x60(r4) -/* 80022DC4 0001FD04 B0 1F 00 60 */ sth r0, 0x60(r31) -/* 80022DC8 0001FD08 7F E3 FB 78 */ mr r3, r31 -/* 80022DCC 0001FD0C 7F E4 FB 78 */ mr r4, r31 -/* 80022DD0 0001FD10 48 24 3C 65 */ bl cTg_Create -/* 80022DD4 0001FD14 38 7F 00 14 */ addi r3, r31, 0x14 -/* 80022DD8 0001FD18 3C 80 80 02 */ lis r4, fpcNdRq_Cancel@ha -/* 80022DDC 0001FD1C 38 84 2A A4 */ addi r4, r4, fpcNdRq_Cancel@l -/* 80022DE0 0001FD20 7F E5 FB 78 */ mr r5, r31 -/* 80022DE4 0001FD24 48 00 0A 15 */ bl fpcMtdTg_Init -/* 80022DE8 0001FD28 80 6D 87 C8 */ lwz r3, lbl_80450D48-_SDA_BASE_(r13) -/* 80022DEC 0001FD2C 38 03 00 01 */ addi r0, r3, 1 -/* 80022DF0 0001FD30 90 0D 87 C8 */ stw r0, lbl_80450D48-_SDA_BASE_(r13) -/* 80022DF4 0001FD34 90 7F 00 44 */ stw r3, 0x44(r31) -lbl_80022DF8: -/* 80022DF8 0001FD38 7F E3 FB 78 */ mr r3, r31 -/* 80022DFC 0001FD3C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80022E00 0001FD40 83 C1 00 08 */ lwz r30, 8(r1) -/* 80022E04 0001FD44 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022E08 0001FD48 7C 08 03 A6 */ mtlr r0 -/* 80022E0C 0001FD4C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022E10 0001FD50 4E 80 00 20 */ blr - -.global fpcNdRq_ChangeNode -fpcNdRq_ChangeNode: -/* 80022E14 0001FD54 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80022E18 0001FD58 7C 08 02 A6 */ mflr r0 -/* 80022E1C 0001FD5C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80022E20 0001FD60 39 61 00 20 */ addi r11, r1, 0x20 -/* 80022E24 0001FD64 48 33 F3 B5 */ bl _savegpr_28 -/* 80022E28 0001FD68 7C 7C 1B 78 */ mr r28, r3 -/* 80022E2C 0001FD6C 7C 9D 23 78 */ mr r29, r4 -/* 80022E30 0001FD70 7C BE 2B 78 */ mr r30, r5 -/* 80022E34 0001FD74 7C DF 33 78 */ mr r31, r6 -/* 80022E38 0001FD78 7F A3 EB 78 */ mr r3, r29 -/* 80022E3C 0001FD7C 4B FF FD A9 */ bl fpcNdRq_IsPossibleTarget -/* 80022E40 0001FD80 2C 03 00 01 */ cmpwi r3, 1 -/* 80022E44 0001FD84 40 82 00 50 */ bne lbl_80022E94 -/* 80022E48 0001FD88 7F A3 EB 78 */ mr r3, r29 -/* 80022E4C 0001FD8C 4B FF FE 05 */ bl fpcNdRq_IsIng -/* 80022E50 0001FD90 2C 03 00 00 */ cmpwi r3, 0 -/* 80022E54 0001FD94 40 82 00 40 */ bne lbl_80022E94 -/* 80022E58 0001FD98 7F 83 E3 78 */ mr r3, r28 -/* 80022E5C 0001FD9C 4B FF FE 41 */ bl fpcNdRq_Create -/* 80022E60 0001FDA0 28 03 00 00 */ cmplwi r3, 0 -/* 80022E64 0001FDA4 41 82 00 34 */ beq lbl_80022E98 -/* 80022E68 0001FDA8 3C 80 80 3A */ lis r4, lbl_803A3AA8@ha -/* 80022E6C 0001FDAC 38 04 3A A8 */ addi r0, r4, lbl_803A3AA8@l -/* 80022E70 0001FDB0 90 03 00 38 */ stw r0, 0x38(r3) -/* 80022E74 0001FDB4 93 A3 00 48 */ stw r29, 0x48(r3) -/* 80022E78 0001FDB8 80 1D 00 04 */ lwz r0, 4(r29) -/* 80022E7C 0001FDBC 90 03 00 4C */ stw r0, 0x4c(r3) -/* 80022E80 0001FDC0 80 1D 00 2C */ lwz r0, 0x2c(r29) -/* 80022E84 0001FDC4 90 03 00 50 */ stw r0, 0x50(r3) -/* 80022E88 0001FDC8 B3 C3 00 58 */ sth r30, 0x58(r3) -/* 80022E8C 0001FDCC 93 E3 00 5C */ stw r31, 0x5c(r3) -/* 80022E90 0001FDD0 48 00 00 08 */ b lbl_80022E98 -lbl_80022E94: -/* 80022E94 0001FDD4 38 60 00 00 */ li r3, 0 -lbl_80022E98: -/* 80022E98 0001FDD8 39 61 00 20 */ addi r11, r1, 0x20 -/* 80022E9C 0001FDDC 48 33 F3 89 */ bl _restgpr_28 -/* 80022EA0 0001FDE0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80022EA4 0001FDE4 7C 08 03 A6 */ mtlr r0 -/* 80022EA8 0001FDE8 38 21 00 20 */ addi r1, r1, 0x20 -/* 80022EAC 0001FDEC 4E 80 00 20 */ blr - -.global fpcNdRq_DeleteNode -fpcNdRq_DeleteNode: -/* 80022EB0 0001FDF0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80022EB4 0001FDF4 7C 08 02 A6 */ mflr r0 -/* 80022EB8 0001FDF8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80022EBC 0001FDFC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80022EC0 0001FE00 93 C1 00 08 */ stw r30, 8(r1) -/* 80022EC4 0001FE04 7C 7E 1B 78 */ mr r30, r3 -/* 80022EC8 0001FE08 7C 9F 23 78 */ mr r31, r4 -/* 80022ECC 0001FE0C 7F E3 FB 78 */ mr r3, r31 -/* 80022ED0 0001FE10 4B FF FD 15 */ bl fpcNdRq_IsPossibleTarget -/* 80022ED4 0001FE14 2C 03 00 01 */ cmpwi r3, 1 -/* 80022ED8 0001FE18 40 82 00 48 */ bne lbl_80022F20 -/* 80022EDC 0001FE1C 7F E3 FB 78 */ mr r3, r31 -/* 80022EE0 0001FE20 4B FF FD 71 */ bl fpcNdRq_IsIng -/* 80022EE4 0001FE24 2C 03 00 00 */ cmpwi r3, 0 -/* 80022EE8 0001FE28 40 82 00 38 */ bne lbl_80022F20 -/* 80022EEC 0001FE2C 7F C3 F3 78 */ mr r3, r30 -/* 80022EF0 0001FE30 4B FF FD AD */ bl fpcNdRq_Create -/* 80022EF4 0001FE34 28 03 00 00 */ cmplwi r3, 0 -/* 80022EF8 0001FE38 41 82 00 2C */ beq lbl_80022F24 -/* 80022EFC 0001FE3C 3C 80 80 3A */ lis r4, lbl_803A3AC0@ha -/* 80022F00 0001FE40 38 04 3A C0 */ addi r0, r4, lbl_803A3AC0@l -/* 80022F04 0001FE44 90 03 00 38 */ stw r0, 0x38(r3) -/* 80022F08 0001FE48 93 E3 00 48 */ stw r31, 0x48(r3) -/* 80022F0C 0001FE4C 80 1F 00 04 */ lwz r0, 4(r31) -/* 80022F10 0001FE50 90 03 00 4C */ stw r0, 0x4c(r3) -/* 80022F14 0001FE54 80 1F 00 2C */ lwz r0, 0x2c(r31) -/* 80022F18 0001FE58 90 03 00 50 */ stw r0, 0x50(r3) -/* 80022F1C 0001FE5C 48 00 00 08 */ b lbl_80022F24 -lbl_80022F20: -/* 80022F20 0001FE60 38 60 00 00 */ li r3, 0 -lbl_80022F24: -/* 80022F24 0001FE64 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80022F28 0001FE68 83 C1 00 08 */ lwz r30, 8(r1) -/* 80022F2C 0001FE6C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80022F30 0001FE70 7C 08 03 A6 */ mtlr r0 -/* 80022F34 0001FE74 38 21 00 10 */ addi r1, r1, 0x10 -/* 80022F38 0001FE78 4E 80 00 20 */ blr - -.global fpcNdRq_CreateNode -fpcNdRq_CreateNode: -/* 80022F3C 0001FE7C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80022F40 0001FE80 7C 08 02 A6 */ mflr r0 -/* 80022F44 0001FE84 90 01 00 24 */ stw r0, 0x24(r1) -/* 80022F48 0001FE88 39 61 00 20 */ addi r11, r1, 0x20 -/* 80022F4C 0001FE8C 48 33 F2 8D */ bl _savegpr_28 -/* 80022F50 0001FE90 7C 7C 1B 78 */ mr r28, r3 -/* 80022F54 0001FE94 7C 9D 23 78 */ mr r29, r4 -/* 80022F58 0001FE98 7C BE 2B 78 */ mr r30, r5 -/* 80022F5C 0001FE9C 4B FF E7 99 */ bl fpcLy_CurrentLayer -/* 80022F60 0001FEA0 7C 7F 1B 78 */ mr r31, r3 -/* 80022F64 0001FEA4 80 03 00 0C */ lwz r0, 0xc(r3) -/* 80022F68 0001FEA8 28 00 00 00 */ cmplwi r0, 0 -/* 80022F6C 0001FEAC 41 82 00 1C */ beq lbl_80022F88 -/* 80022F70 0001FEB0 80 7F 00 18 */ lwz r3, 0x18(r31) -/* 80022F74 0001FEB4 4B FF FC 71 */ bl fpcNdRq_IsPossibleTarget -/* 80022F78 0001FEB8 2C 03 00 00 */ cmpwi r3, 0 -/* 80022F7C 0001FEBC 40 82 00 0C */ bne lbl_80022F88 -/* 80022F80 0001FEC0 38 60 00 00 */ li r3, 0 -/* 80022F84 0001FEC4 48 00 00 4C */ b lbl_80022FD0 -lbl_80022F88: -/* 80022F88 0001FEC8 7F 83 E3 78 */ mr r3, r28 -/* 80022F8C 0001FECC 4B FF FD 11 */ bl fpcNdRq_Create -/* 80022F90 0001FED0 28 03 00 00 */ cmplwi r3, 0 -/* 80022F94 0001FED4 41 82 00 3C */ beq lbl_80022FD0 -/* 80022F98 0001FED8 3C 80 80 3A */ lis r4, lbl_803A3AD0@ha -/* 80022F9C 0001FEDC 38 04 3A D0 */ addi r0, r4, lbl_803A3AD0@l -/* 80022FA0 0001FEE0 90 03 00 38 */ stw r0, 0x38(r3) -/* 80022FA4 0001FEE4 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 80022FA8 0001FEE8 28 00 00 00 */ cmplwi r0, 0 -/* 80022FAC 0001FEEC 41 82 00 18 */ beq lbl_80022FC4 -/* 80022FB0 0001FEF0 80 1F 00 18 */ lwz r0, 0x18(r31) -/* 80022FB4 0001FEF4 90 03 00 48 */ stw r0, 0x48(r3) -/* 80022FB8 0001FEF8 80 9F 00 18 */ lwz r4, 0x18(r31) -/* 80022FBC 0001FEFC 80 04 00 04 */ lwz r0, 4(r4) -/* 80022FC0 0001FF00 90 03 00 4C */ stw r0, 0x4c(r3) -lbl_80022FC4: -/* 80022FC4 0001FF04 93 E3 00 50 */ stw r31, 0x50(r3) -/* 80022FC8 0001FF08 B3 A3 00 58 */ sth r29, 0x58(r3) -/* 80022FCC 0001FF0C 93 C3 00 5C */ stw r30, 0x5c(r3) -lbl_80022FD0: -/* 80022FD0 0001FF10 39 61 00 20 */ addi r11, r1, 0x20 -/* 80022FD4 0001FF14 48 33 F2 51 */ bl _restgpr_28 -/* 80022FD8 0001FF18 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80022FDC 0001FF1C 7C 08 03 A6 */ mtlr r0 -/* 80022FE0 0001FF20 38 21 00 20 */ addi r1, r1, 0x20 -/* 80022FE4 0001FF24 4E 80 00 20 */ blr - -.global fpcNdRq_Request -fpcNdRq_Request: -/* 80022FE8 0001FF28 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80022FEC 0001FF2C 7C 08 02 A6 */ mflr r0 -/* 80022FF0 0001FF30 90 01 00 24 */ stw r0, 0x24(r1) -/* 80022FF4 0001FF34 39 61 00 20 */ addi r11, r1, 0x20 -/* 80022FF8 0001FF38 48 33 F1 E5 */ bl _savegpr_29 -/* 80022FFC 0001FF3C 7C 9D 23 78 */ mr r29, r4 -/* 80023000 0001FF40 7D 1E 43 78 */ mr r30, r8 -/* 80023004 0001FF44 2C 1D 00 02 */ cmpwi r29, 2 -/* 80023008 0001FF48 41 82 00 48 */ beq lbl_80023050 -/* 8002300C 0001FF4C 40 80 00 14 */ bge lbl_80023020 -/* 80023010 0001FF50 2C 1D 00 00 */ cmpwi r29, 0 -/* 80023014 0001FF54 41 82 00 18 */ beq lbl_8002302C -/* 80023018 0001FF58 40 80 00 28 */ bge lbl_80023040 -/* 8002301C 0001FF5C 48 00 00 48 */ b lbl_80023064 -lbl_80023020: -/* 80023020 0001FF60 2C 1D 00 04 */ cmpwi r29, 4 -/* 80023024 0001FF64 41 82 00 40 */ beq lbl_80023064 -/* 80023028 0001FF68 48 00 00 3C */ b lbl_80023064 -lbl_8002302C: -/* 8002302C 0001FF6C 7C C4 33 78 */ mr r4, r6 -/* 80023030 0001FF70 7C E5 3B 78 */ mr r5, r7 -/* 80023034 0001FF74 4B FF FF 09 */ bl fpcNdRq_CreateNode -/* 80023038 0001FF78 7C 7F 1B 78 */ mr r31, r3 -/* 8002303C 0001FF7C 48 00 00 28 */ b lbl_80023064 -lbl_80023040: -/* 80023040 0001FF80 7C A4 2B 78 */ mr r4, r5 -/* 80023044 0001FF84 4B FF FE 6D */ bl fpcNdRq_DeleteNode -/* 80023048 0001FF88 7C 7F 1B 78 */ mr r31, r3 -/* 8002304C 0001FF8C 48 00 00 18 */ b lbl_80023064 -lbl_80023050: -/* 80023050 0001FF90 7C A4 2B 78 */ mr r4, r5 -/* 80023054 0001FF94 7C C5 33 78 */ mr r5, r6 -/* 80023058 0001FF98 7C E6 3B 78 */ mr r6, r7 -/* 8002305C 0001FF9C 4B FF FD B9 */ bl fpcNdRq_ChangeNode -/* 80023060 0001FFA0 7C 7F 1B 78 */ mr r31, r3 -lbl_80023064: -/* 80023064 0001FFA4 28 1F 00 00 */ cmplwi r31, 0 -/* 80023068 0001FFA8 41 82 00 14 */ beq lbl_8002307C -/* 8002306C 0001FFAC 93 BF 00 40 */ stw r29, 0x40(r31) -/* 80023070 0001FFB0 93 DF 00 3C */ stw r30, 0x3c(r31) -/* 80023074 0001FFB4 7F E3 FB 78 */ mr r3, r31 -/* 80023078 0001FFB8 4B FF F7 8D */ bl fpcNdRq_ToRequestQ -lbl_8002307C: -/* 8002307C 0001FFBC 7F E3 FB 78 */ mr r3, r31 -/* 80023080 0001FFC0 39 61 00 20 */ addi r11, r1, 0x20 -/* 80023084 0001FFC4 48 33 F1 A5 */ bl _restgpr_29 -/* 80023088 0001FFC8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8002308C 0001FFCC 7C 08 03 A6 */ mtlr r0 -/* 80023090 0001FFD0 38 21 00 20 */ addi r1, r1, 0x20 -/* 80023094 0001FFD4 4E 80 00 20 */ blr - -.global fpcNdRq_ReChangeNode -fpcNdRq_ReChangeNode: -/* 80023098 0001FFD8 3C C0 80 3A */ lis r6, lbl_803A3A38@ha -/* 8002309C 0001FFDC 38 C6 3A 38 */ addi r6, r6, lbl_803A3A38@l -/* 800230A0 0001FFE0 80 C6 00 00 */ lwz r6, 0(r6) -/* 800230A4 0001FFE4 48 00 00 5C */ b lbl_80023100 -lbl_800230A8: -/* 800230A8 0001FFE8 80 E6 00 0C */ lwz r7, 0xc(r6) -/* 800230AC 0001FFEC 80 07 00 40 */ lwz r0, 0x40(r7) -/* 800230B0 0001FFF0 2C 00 00 02 */ cmpwi r0, 2 -/* 800230B4 0001FFF4 40 82 00 38 */ bne lbl_800230EC -/* 800230B8 0001FFF8 80 07 00 44 */ lwz r0, 0x44(r7) -/* 800230BC 0001FFFC 7C 00 18 40 */ cmplw r0, r3 -/* 800230C0 00020000 40 82 00 2C */ bne lbl_800230EC -/* 800230C4 00020004 80 67 00 54 */ lwz r3, 0x54(r7) -/* 800230C8 00020008 3C 03 00 01 */ addis r0, r3, 1 -/* 800230CC 0002000C 28 00 FF FE */ cmplwi r0, 0xfffe -/* 800230D0 00020010 40 82 00 14 */ bne lbl_800230E4 -/* 800230D4 00020014 B0 87 00 58 */ sth r4, 0x58(r7) -/* 800230D8 00020018 90 A7 00 5C */ stw r5, 0x5c(r7) -/* 800230DC 0002001C 38 60 00 01 */ li r3, 1 -/* 800230E0 00020020 4E 80 00 20 */ blr -lbl_800230E4: -/* 800230E4 00020024 38 60 00 00 */ li r3, 0 -/* 800230E8 00020028 4E 80 00 20 */ blr -lbl_800230EC: -/* 800230EC 0002002C 28 06 00 00 */ cmplwi r6, 0 -/* 800230F0 00020030 41 82 00 0C */ beq lbl_800230FC -/* 800230F4 00020034 80 C6 00 08 */ lwz r6, 8(r6) -/* 800230F8 00020038 48 00 00 08 */ b lbl_80023100 -lbl_800230FC: -/* 800230FC 0002003C 38 C0 00 00 */ li r6, 0 -lbl_80023100: -/* 80023100 00020040 28 06 00 00 */ cmplwi r6, 0 -/* 80023104 00020044 40 82 FF A4 */ bne lbl_800230A8 -/* 80023108 00020048 38 60 00 00 */ li r3, 0 -/* 8002310C 0002004C 4E 80 00 20 */ blr - -.global fpcNdRq_ReRequest -fpcNdRq_ReRequest: -/* 80023110 00020050 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023114 00020054 7C 08 02 A6 */ mflr r0 -/* 80023118 00020058 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002311C 0002005C 4B FF FF 7D */ bl fpcNdRq_ReChangeNode -/* 80023120 00020060 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023124 00020064 7C 08 03 A6 */ mtlr r0 -/* 80023128 00020068 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002312C 0002006C 4E 80 00 20 */ blr - diff --git a/asm/f/pc/stdcreate/f_pc_stdcreate_req.s b/asm/f/pc/stdcreate/f_pc_stdcreate_req.s deleted file mode 100644 index fae547f42e..0000000000 --- a/asm/f/pc/stdcreate/f_pc_stdcreate_req.s +++ /dev/null @@ -1,203 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80023b70 - - -/* 80023B70 00020AB0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023B74 00020AB4 7C 08 02 A6 */ mflr r0 -/* 80023B78 00020AB8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023B7C 00020ABC A8 63 00 50 */ lha r3, 0x50(r3) -/* 80023B80 00020AC0 4B FF E4 D1 */ bl fpcLd_Load -/* 80023B84 00020AC4 2C 03 00 04 */ cmpwi r3, 4 -/* 80023B88 00020AC8 41 82 00 20 */ beq lbl_80023BA8 -/* 80023B8C 00020ACC 40 80 00 24 */ bge lbl_80023BB0 -/* 80023B90 00020AD0 2C 03 00 00 */ cmpwi r3, 0 -/* 80023B94 00020AD4 41 82 00 0C */ beq lbl_80023BA0 -/* 80023B98 00020AD8 48 00 00 18 */ b lbl_80023BB0 -/* 80023B9C 00020ADC 48 00 00 14 */ b lbl_80023BB0 -lbl_80023BA0: -/* 80023BA0 00020AE0 38 60 00 00 */ li r3, 0 -/* 80023BA4 00020AE4 48 00 00 10 */ b lbl_80023BB4 -lbl_80023BA8: -/* 80023BA8 00020AE8 38 60 00 02 */ li r3, 2 -/* 80023BAC 00020AEC 48 00 00 08 */ b lbl_80023BB4 -lbl_80023BB0: -/* 80023BB0 00020AF0 38 60 00 05 */ li r3, 5 -lbl_80023BB4: -/* 80023BB4 00020AF4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023BB8 00020AF8 7C 08 03 A6 */ mtlr r0 -/* 80023BBC 00020AFC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023BC0 00020B00 4E 80 00 20 */ blr -/* 80023BC4 00020B04 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023BC8 00020B08 7C 08 02 A6 */ mflr r0 -/* 80023BCC 00020B0C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023BD0 00020B10 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80023BD4 00020B14 7C 7F 1B 78 */ mr r31, r3 -/* 80023BD8 00020B18 80 63 00 44 */ lwz r3, 0x44(r3) -/* 80023BDC 00020B1C 4B FF DB 11 */ bl fpcLy_SetCurrentLayer -/* 80023BE0 00020B20 A8 7F 00 50 */ lha r3, 0x50(r31) -/* 80023BE4 00020B24 80 9F 00 3C */ lwz r4, 0x3c(r31) -/* 80023BE8 00020B28 80 BF 00 54 */ lwz r5, 0x54(r31) -/* 80023BEC 00020B2C 4B FF CC 35 */ bl fpcBs_Create -/* 80023BF0 00020B30 90 7F 00 40 */ stw r3, 0x40(r31) -/* 80023BF4 00020B34 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 80023BF8 00020B38 28 03 00 00 */ cmplwi r3, 0 -/* 80023BFC 00020B3C 40 82 00 14 */ bne lbl_80023C10 -/* 80023C00 00020B40 A8 7F 00 50 */ lha r3, 0x50(r31) -/* 80023C04 00020B44 4B FF E4 29 */ bl fpcLd_Free -/* 80023C08 00020B48 38 60 00 05 */ li r3, 5 -/* 80023C0C 00020B4C 48 00 00 0C */ b lbl_80023C18 -lbl_80023C10: -/* 80023C10 00020B50 93 E3 00 14 */ stw r31, 0x14(r3) -/* 80023C14 00020B54 38 60 00 02 */ li r3, 2 -lbl_80023C18: -/* 80023C18 00020B58 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80023C1C 00020B5C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023C20 00020B60 7C 08 03 A6 */ mtlr r0 -/* 80023C24 00020B64 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023C28 00020B68 4E 80 00 20 */ blr -/* 80023C2C 00020B6C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023C30 00020B70 7C 08 02 A6 */ mflr r0 -/* 80023C34 00020B74 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023C38 00020B78 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80023C3C 00020B7C 7C 7F 1B 78 */ mr r31, r3 -/* 80023C40 00020B80 80 63 00 44 */ lwz r3, 0x44(r3) -/* 80023C44 00020B84 4B FF DA A9 */ bl fpcLy_SetCurrentLayer -/* 80023C48 00020B88 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 80023C4C 00020B8C 4B FF CC D1 */ bl fpcBs_SubCreate -/* 80023C50 00020B90 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80023C54 00020B94 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023C58 00020B98 7C 08 03 A6 */ mtlr r0 -/* 80023C5C 00020B9C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023C60 00020BA0 4E 80 00 20 */ blr -/* 80023C64 00020BA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023C68 00020BA8 7C 08 02 A6 */ mflr r0 -/* 80023C6C 00020BAC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023C70 00020BB0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80023C74 00020BB4 83 E3 00 40 */ lwz r31, 0x40(r3) -/* 80023C78 00020BB8 80 6D 87 C0 */ lwz r3, lbl_80450D40-_SDA_BASE_(r13) -/* 80023C7C 00020BBC 80 9F 00 B4 */ lwz r4, 0xb4(r31) -/* 80023C80 00020BC0 4B FF C9 CD */ bl fpcBs_Is_JustOfType -/* 80023C84 00020BC4 2C 03 00 01 */ cmpwi r3, 1 -/* 80023C88 00020BC8 40 82 00 1C */ bne lbl_80023CA4 -/* 80023C8C 00020BCC 38 7F 00 BC */ addi r3, r31, 0xbc -/* 80023C90 00020BD0 4B FF DA 11 */ bl fpcLy_IsCreatingMesg -/* 80023C94 00020BD4 2C 03 00 01 */ cmpwi r3, 1 -/* 80023C98 00020BD8 40 82 00 0C */ bne lbl_80023CA4 -/* 80023C9C 00020BDC 38 60 00 00 */ li r3, 0 -/* 80023CA0 00020BE0 48 00 00 08 */ b lbl_80023CA8 -lbl_80023CA4: -/* 80023CA4 00020BE4 38 60 00 02 */ li r3, 2 -lbl_80023CA8: -/* 80023CA8 00020BE8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80023CAC 00020BEC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023CB0 00020BF0 7C 08 03 A6 */ mtlr r0 -/* 80023CB4 00020BF4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023CB8 00020BF8 4E 80 00 20 */ blr -/* 80023CBC 00020BFC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023CC0 00020C00 7C 08 02 A6 */ mflr r0 -/* 80023CC4 00020C04 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023CC8 00020C08 7C 64 1B 78 */ mr r4, r3 -/* 80023CCC 00020C0C 81 83 00 58 */ lwz r12, 0x58(r3) -/* 80023CD0 00020C10 28 0C 00 00 */ cmplwi r12, 0 -/* 80023CD4 00020C14 41 82 00 24 */ beq lbl_80023CF8 -/* 80023CD8 00020C18 80 64 00 40 */ lwz r3, 0x40(r4) -/* 80023CDC 00020C1C 80 84 00 5C */ lwz r4, 0x5c(r4) -/* 80023CE0 00020C20 7D 89 03 A6 */ mtctr r12 -/* 80023CE4 00020C24 4E 80 04 21 */ bctrl -/* 80023CE8 00020C28 2C 03 00 00 */ cmpwi r3, 0 -/* 80023CEC 00020C2C 40 82 00 0C */ bne lbl_80023CF8 -/* 80023CF0 00020C30 38 60 00 00 */ li r3, 0 -/* 80023CF4 00020C34 48 00 00 08 */ b lbl_80023CFC -lbl_80023CF8: -/* 80023CF8 00020C38 38 60 00 02 */ li r3, 2 -lbl_80023CFC: -/* 80023CFC 00020C3C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023D00 00020C40 7C 08 03 A6 */ mtlr r0 -/* 80023D04 00020C44 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023D08 00020C48 4E 80 00 20 */ blr -/* 80023D0C 00020C4C 38 60 00 02 */ li r3, 2 -/* 80023D10 00020C50 4E 80 00 20 */ blr - -.global fpcSCtRq_Handler -fpcSCtRq_Handler: -/* 80023D14 00020C54 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80023D18 00020C58 7C 08 02 A6 */ mflr r0 -/* 80023D1C 00020C5C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80023D20 00020C60 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80023D24 00020C64 7C 7F 1B 78 */ mr r31, r3 -/* 80023D28 00020C68 38 7F 00 48 */ addi r3, r31, 0x48 -/* 80023D2C 00020C6C 7F E4 FB 78 */ mr r4, r31 -/* 80023D30 00020C70 48 24 29 A9 */ bl cPhs_Do -/* 80023D34 00020C74 2C 03 00 03 */ cmpwi r3, 3 -/* 80023D38 00020C78 41 82 00 38 */ beq lbl_80023D70 -/* 80023D3C 00020C7C 40 80 00 14 */ bge lbl_80023D50 -/* 80023D40 00020C80 2C 03 00 01 */ cmpwi r3, 1 -/* 80023D44 00020C84 41 82 00 2C */ beq lbl_80023D70 -/* 80023D48 00020C88 40 80 00 18 */ bge lbl_80023D60 -/* 80023D4C 00020C8C 48 00 00 24 */ b lbl_80023D70 -lbl_80023D50: -/* 80023D50 00020C90 2C 03 00 05 */ cmpwi r3, 5 -/* 80023D54 00020C94 41 82 00 1C */ beq lbl_80023D70 -/* 80023D58 00020C98 40 80 00 18 */ bge lbl_80023D70 -/* 80023D5C 00020C9C 48 00 00 10 */ b lbl_80023D6C -lbl_80023D60: -/* 80023D60 00020CA0 7F E3 FB 78 */ mr r3, r31 -/* 80023D64 00020CA4 4B FF FF B1 */ bl fpcSCtRq_Handler -/* 80023D68 00020CA8 48 00 00 08 */ b lbl_80023D70 -lbl_80023D6C: -/* 80023D6C 00020CAC 38 60 00 04 */ li r3, 4 -lbl_80023D70: -/* 80023D70 00020CB0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80023D74 00020CB4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80023D78 00020CB8 7C 08 03 A6 */ mtlr r0 -/* 80023D7C 00020CBC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80023D80 00020CC0 4E 80 00 20 */ blr -/* 80023D84 00020CC4 38 60 00 01 */ li r3, 1 -/* 80023D88 00020CC8 4E 80 00 20 */ blr -/* 80023D8C 00020CCC 38 60 00 01 */ li r3, 1 -/* 80023D90 00020CD0 4E 80 00 20 */ blr - -.global fpcSCtRq_Request -fpcSCtRq_Request: -/* 80023D94 00020CD4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80023D98 00020CD8 7C 08 02 A6 */ mflr r0 -/* 80023D9C 00020CDC 90 01 00 24 */ stw r0, 0x24(r1) -/* 80023DA0 00020CE0 39 61 00 20 */ addi r11, r1, 0x20 -/* 80023DA4 00020CE4 48 33 E4 31 */ bl _savegpr_27 -/* 80023DA8 00020CE8 7C 9B 23 78 */ mr r27, r4 -/* 80023DAC 00020CEC 7C BC 2B 78 */ mr r28, r5 -/* 80023DB0 00020CF0 7C DD 33 78 */ mr r29, r6 -/* 80023DB4 00020CF4 7C FE 3B 78 */ mr r30, r7 -/* 80023DB8 00020CF8 7F 60 07 34 */ extsh r0, r27 -/* 80023DBC 00020CFC 2C 00 7F FF */ cmpwi r0, 0x7fff -/* 80023DC0 00020D00 41 80 00 0C */ blt lbl_80023DCC -/* 80023DC4 00020D04 38 60 FF FF */ li r3, -1 -/* 80023DC8 00020D08 48 00 00 48 */ b lbl_80023E10 -lbl_80023DCC: -/* 80023DCC 00020D0C 38 80 00 60 */ li r4, 0x60 -/* 80023DD0 00020D10 3C A0 80 3A */ lis r5, lbl_803A3AF0@ha -/* 80023DD4 00020D14 38 A5 3A F0 */ addi r5, r5, lbl_803A3AF0@l -/* 80023DD8 00020D18 4B FF CF D9 */ bl fpcCtRq_Create -/* 80023DDC 00020D1C 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80023DE0 00020D20 40 82 00 0C */ bne lbl_80023DEC -/* 80023DE4 00020D24 38 60 FF FF */ li r3, -1 -/* 80023DE8 00020D28 48 00 00 28 */ b lbl_80023E10 -lbl_80023DEC: -/* 80023DEC 00020D2C 38 7F 00 48 */ addi r3, r31, 0x48 -/* 80023DF0 00020D30 3C 80 80 3A */ lis r4, lbl_803A3AFC@ha -/* 80023DF4 00020D34 38 84 3A FC */ addi r4, r4, lbl_803A3AFC@l -/* 80023DF8 00020D38 48 24 28 39 */ bl cPhs_Set -/* 80023DFC 00020D3C B3 7F 00 50 */ sth r27, 0x50(r31) -/* 80023E00 00020D40 93 9F 00 58 */ stw r28, 0x58(r31) -/* 80023E04 00020D44 93 BF 00 5C */ stw r29, 0x5c(r31) -/* 80023E08 00020D48 93 DF 00 54 */ stw r30, 0x54(r31) -/* 80023E0C 00020D4C 80 7F 00 3C */ lwz r3, 0x3c(r31) -lbl_80023E10: -/* 80023E10 00020D50 39 61 00 20 */ addi r11, r1, 0x20 -/* 80023E14 00020D54 48 33 E4 0D */ bl _restgpr_27 -/* 80023E18 00020D58 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80023E1C 00020D5C 7C 08 03 A6 */ mtlr r0 -/* 80023E20 00020D60 38 21 00 20 */ addi r1, r1, 0x20 -/* 80023E24 00020D64 4E 80 00 20 */ blr - diff --git a/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h b/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h index 6c29615b11..e6a0ee090f 100644 --- a/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h +++ b/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h @@ -23,6 +23,7 @@ public: void assign(); void checkResetCallback(OSTime unk); // todo: weird arg void update(); + void stopPatternedRumble() { this->rumble.stopPatternedRumble(this->pad_port); } static void checkResetSwitch(); static void clearForReset(); static JUTGamePad* getGamePad(s32 pad_index); diff --git a/include/SComponent/c_list.h b/include/SComponent/c_list.h index 65cc47f1a0..8069ed827b 100644 --- a/include/SComponent/c_list.h +++ b/include/SComponent/c_list.h @@ -4,11 +4,11 @@ #include "SComponent/c_node.h" -struct node_list_class { +typedef struct node_list_class { node_class* mpHead; node_class* mpTail; int mSize; -}; +} node_list_class; extern "C" { diff --git a/include/SComponent/c_list_iter.h b/include/SComponent/c_list_iter.h index 3898341e79..a2d0404cfb 100644 --- a/include/SComponent/c_list_iter.h +++ b/include/SComponent/c_list_iter.h @@ -4,6 +4,7 @@ #include "SComponent/c_list.h" #include "SComponent/c_node_iter.h" +#include "global.h" extern "C" { diff --git a/include/SComponent/c_node.h b/include/SComponent/c_node.h index dc3402dbfe..d2ac01d3b3 100644 --- a/include/SComponent/c_node.h +++ b/include/SComponent/c_node.h @@ -2,11 +2,13 @@ #ifndef SCOMPONENT_C_NODE_H #define SCOMPONENT_C_NODE_H -struct node_class { - node_class* mpPrevNode; +#include "global.h" + +typedef struct node_class { + struct node_class* mpPrevNode; void* mpData; - node_class* mpNextNode; -}; + struct node_class* mpNextNode; +} node_class; extern "C" { diff --git a/include/SComponent/c_phase.h b/include/SComponent/c_phase.h index 2c9e399071..c08ee5b9ee 100644 --- a/include/SComponent/c_phase.h +++ b/include/SComponent/c_phase.h @@ -12,10 +12,10 @@ enum cPhs__Step { cPhs_NEXT_e = 0x06, }; -struct request_of_phase_process_class { +typedef struct request_of_phase_process_class { cPhs__Handler* mpHandlerTable; int mPhaseStep; -}; +} request_of_phase_process_class; extern "C" { diff --git a/include/SComponent/c_tag.h b/include/SComponent/c_tag.h index 22c26c25c9..2e862bd22f 100644 --- a/include/SComponent/c_tag.h +++ b/include/SComponent/c_tag.h @@ -7,11 +7,11 @@ #include "SComponent/c_tree.h" #include "global.h" -struct create_tag_class { +typedef struct create_tag_class { node_class mpNode; void* mpTagData; s8 mbIsUse; -}; +} create_tag_class; extern "C" { diff --git a/include/SComponent/c_tag_iter.h b/include/SComponent/c_tag_iter.h index 022752458f..5fbe940b49 100644 --- a/include/SComponent/c_tag_iter.h +++ b/include/SComponent/c_tag_iter.h @@ -4,16 +4,17 @@ #include "SComponent/c_node_iter.h" #include "SComponent/c_tag.h" +#include "global.h" -struct method_filter { +typedef struct method_filter { cNdIt_MethodFunc mpMethodFunc; void* mpUserData; -}; +} method_filter; -struct judge_filter { +typedef struct judge_filter { cNdIt_JudgeFunc mpJudgeFunc; void* mpUserData; -}; +} judge_filter; extern "C" { diff --git a/include/SComponent/c_tree.h b/include/SComponent/c_tree.h index 8fb3ed7e49..a657f2ecf5 100644 --- a/include/SComponent/c_tree.h +++ b/include/SComponent/c_tree.h @@ -4,12 +4,11 @@ #include "SComponent/c_list.h" #include "SComponent/c_node.h" -#include "global.h" -struct node_lists_tree_class { +typedef struct node_lists_tree_class { node_list_class* mpLists; int mNumLists; -}; +} node_lists_tree_class; extern "C" { diff --git a/include/SComponent/c_tree_iter.h b/include/SComponent/c_tree_iter.h index 438a142474..0c33fb5d14 100644 --- a/include/SComponent/c_tree_iter.h +++ b/include/SComponent/c_tree_iter.h @@ -4,6 +4,7 @@ #include "SComponent/c_node_iter.h" #include "SComponent/c_tree.h" +#include "global.h" extern "C" { diff --git a/include/SComponent/c_xyz.h b/include/SComponent/c_xyz.h new file mode 100644 index 0000000000..469a351129 --- /dev/null +++ b/include/SComponent/c_xyz.h @@ -0,0 +1,8 @@ +#ifndef __C_XYZ_H_ +#define __C_XYZ_H_ + +#include "global.h" + +class cXyz : public Vec {}; + +#endif \ No newline at end of file diff --git a/include/d/d_drawlist/d_drawlist.h b/include/d/d_drawlist/d_drawlist.h index 88b7bee0be..f9a50937f9 100644 --- a/include/d/d_drawlist/d_drawlist.h +++ b/include/d/d_drawlist/d_drawlist.h @@ -11,6 +11,10 @@ public: private: }; +class dDlst_peekZ_c { + u8 unk[4]; +}; // actual size unknown!!! + class dDlst_list_c { public: static u32 mWipeColor; @@ -18,8 +22,10 @@ public: static u32 mWipeRate; static u32 mWipeSpeed; -private: - u8 unk[0x161A0]; -}; + // private: + /* 0x00000 */ u8 unk[0x16180]; + /* 0x16180 */ dDlst_peekZ_c dlstPeekZ; + /* 0x16184 */ u8 unk_0x16194[0x1C]; +}; // Size: 0x161A0 -#endif D_DRAWLIST_H_ \ No newline at end of file +#endif D_DRAWLIST_H_ diff --git a/include/d/d_lib/d_lib.h b/include/d/d_lib/d_lib.h index 4394e4725f..fa426d0d31 100644 --- a/include/d/d_lib/d_lib.h +++ b/include/d/d_lib/d_lib.h @@ -1,4 +1,5 @@ #include "JSystem/JKernel/JKRAramArchive/JKRAramArchive.h" +#include "SComponent/c_xyz.h" #include "global.h" struct STControl_vtable { @@ -67,12 +68,6 @@ u32 dLib_getEventSwitchNo(int param_1); struct fopAc_ac_c; -struct cXyz { - f32 x; - f32 y; - f32 z; -}; - bool dLib_checkActorInRectangle(fopAc_ac_c* param_1, fopAc_ac_c* param_2, cXyz const* param_3, cXyz const* param_4); @@ -81,6 +76,6 @@ u32 dLib_getExpandSizeFromAramArchive(JKRAramArchive* param_1, char const* param class dLib_time_c { public: s64 getTime(void); - void stopTime(void); - void startTime(void); + static void stopTime(void); + static void startTime(void); }; \ No newline at end of file diff --git a/include/d/d_save/d_save/d_save.h b/include/d/d_save/d_save/d_save.h index 0263a3863e..255d310e7b 100644 --- a/include/d/d_save/d_save/d_save.h +++ b/include/d/d_save/d_save/d_save.h @@ -1,6 +1,7 @@ #ifndef __D_SAVE_H_ #define __D_SAVE_H_ +#include "SComponent/c_xyz.h" #include "dolphin/types.h" #include "global.h" @@ -375,12 +376,6 @@ private: u8 padding[3]; }; -// move to SComponent later -class cXyz { -public: - float x, y, z; -}; - class dSv_horse_place_c { public: void init(void); diff --git a/include/f/f_pc/asm/80020A40.s b/include/f/f_pc/asm/80020A40.s new file mode 100644 index 0000000000..ca2845d7d1 --- /dev/null +++ b/include/f/f_pc/asm/80020A40.s @@ -0,0 +1,23 @@ +/* 80020A40 0001D980 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80020A44 0001D984 7C 08 02 A6 */ mflr r0 +/* 80020A48 0001D988 90 01 00 14 */ stw r0, 0x14(r1) +/* 80020A4C 0001D98C 7C 85 23 78 */ mr r5, r4 +/* 80020A50 0001D990 80 83 00 0C */ lwz r4, 0xc(r3) +/* 80020A54 0001D994 80 64 00 44 */ lwz r3, 0x44(r4) +/* 80020A58 0001D998 80 63 00 0C */ lwz r3, 0xc(r3) +/* 80020A5C 0001D99C 80 05 00 00 */ lwz r0, 0(r5) +/* 80020A60 0001D9A0 7C 03 00 40 */ cmplw r3, r0 +/* 80020A64 0001D9A4 40 82 00 1C */ bne lbl_80020A80 +/* 80020A68 0001D9A8 80 64 00 40 */ lwz r3, 0x40(r4) +/* 80020A6C 0001D9AC 80 85 00 08 */ lwz r4, 8(r5) +/* 80020A70 0001D9B0 81 85 00 04 */ lwz r12, 4(r5) +/* 80020A74 0001D9B4 7D 89 03 A6 */ mtctr r12 +/* 80020A78 0001D9B8 4E 80 04 21 */ bctrl +/* 80020A7C 0001D9BC 48 00 00 08 */ b lbl_80020A84 +lbl_80020A80: +/* 80020A80 0001D9C0 38 60 00 00 */ li r3, 0 +lbl_80020A84: +/* 80020A84 0001D9C4 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80020A88 0001D9C8 7C 08 03 A6 */ mtlr r0 +/* 80020A8C 0001D9CC 38 21 00 10 */ addi r1, r1, 0x10 +/* 80020A90 0001D9D0 4E 80 00 20 */ blr diff --git a/include/f/f_pc/asm/80023844.s b/include/f/f_pc/asm/80023844.s new file mode 100644 index 0000000000..b6399ea3e3 --- /dev/null +++ b/include/f/f_pc/asm/80023844.s @@ -0,0 +1,9 @@ +/* 80023844 00020784 54 84 06 3E */ clrlwi r4, r4, 0x18 +/* 80023848 00020788 88 03 00 0B */ lbz r0, 0xb(r3) +/* 8002384C 0002078C 7C 80 00 38 */ and r0, r4, r0 +/* 80023850 00020790 7C 64 00 50 */ subf r3, r4, r0 +/* 80023854 00020794 30 03 FF FF */ addic r0, r3, -1 +/* 80023858 00020798 7C 00 19 10 */ subfe r0, r0, r3 +/* 8002385C 0002079C 7C 00 00 34 */ cntlzw r0, r0 +/* 80023860 000207A0 54 03 D9 7E */ srwi r3, r0, 5 +/* 80023864 000207A4 4E 80 00 20 */ blr \ 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 index c1d93676ca..5e07fe6bf8 100644 --- a/include/f/f_pc/f_pc_base.h +++ b/include/f/f_pc/f_pc_base.h @@ -3,40 +3,49 @@ #define F_PC_BASE_H #include "SComponent/c_tag.h" +#include "global.h" +// #include "f/f_pc/f_pc_method.h" #include "f/f_pc/f_pc_delete_tag.h" #include "f/f_pc/f_pc_layer_tag.h" #include "f/f_pc/f_pc_line_tag.h" #include "f/f_pc/f_pc_priority.h" -#include "global.h" +#include "f/f_pc/f_pc_profile.h" struct create_request; struct profile_method_class; -struct base_process_class { +typedef struct base_process_class { u32 mBsType; u32 mBsPcId; s16 mProcName; - u8 mUnk0; + s8 mUnk0; u8 mPauseFlag; s8 mInitState; u8 mUnk2; s16 mBsTypeId; - void* mpProf; - create_request* mpCtRq; + process_profile_definition* mpProf; + struct create_request* mpCtRq; layer_management_tag_class mLyTg; line_tag mLnTg; delete_tag_class mDtTg; process_priority_class mPi; - profile_method_class* mpPcMtd; + process_method_class* mpPcMtd; void* mpUserData; u32 mParameters; u32 mSubType; -}; +} base_process_class; extern "C" { -int fpcBs_Is_JustOfType(int a, int b); -int fpcBs_Execute(base_process_class* pProc); +BOOL fpcBs_Is_JustOfType(s32 pType1, s32 pType2); +s32 fpcBs_MakeOfType(s32* pType); +s32 fpcBs_MakeOfId(void); +s32 fpcBs_Execute(base_process_class* pProc); +void fpcBs_DeleteAppend(base_process_class* pProc); +s32 fpcBs_IsDelete(base_process_class* pProc); +s32 fpcBs_Delete(base_process_class* pProc); +base_process_class* fpcBs_Create(s16 pProcTypeID, u32 pProcID, void* pData); +s32 fpcBs_SubCreate(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 index 7a767d7236..cd8a93c68c 100644 --- a/include/f/f_pc/f_pc_create_iter.h +++ b/include/f/f_pc/f_pc_create_iter.h @@ -2,12 +2,33 @@ #ifndef F_PC_CREATE_ITER_H #define F_PC_CREATE_ITER_H -#include "SComponent/c_node_iter.h" +#include "SComponent/c_list_iter.h" +#include "SComponent/c_tag_iter.h" +#include "f/f_pc/f_pc_create_tag.h" +#include "global.h" + +typedef struct node_method_data { + cNdIt_MethodFunc mFunc; + void* mpUserData; +} node_method_data; + +typedef struct node_judge_data { + cNdIt_JudgeFunc mFunc; + void* mpUserData; +} node_judge_data; + +typedef struct fpcCtIt_jilprm_c { + u32 mUnk0; + cNdIt_JudgeFunc mFunc; + void* mpUserData; +} fpcCtIt_jilprm_c; extern "C" { -int fpcCtIt_Method(cNdIt_MethodFunc pJudge, void* pUserData); +s32 fpcCtIt_Method(cNdIt_MethodFunc pJudge, void* pUserData); void* fpcCtIt_Judge(cNdIt_JudgeFunc pJudge, void* pUserData); +void* fpcCtIt_filter_JudgeInLayer(create_tag*, fpcCtIt_jilprm_c*); +void* fpcCtIt_JudgeInLayer(u32 pUnk0, cNdIt_JudgeFunc pFunc, 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 index a30e4c31c1..b81bcb6a34 100644 --- a/include/f/f_pc/f_pc_create_req.h +++ b/include/f/f_pc/f_pc_create_req.h @@ -5,41 +5,42 @@ #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_layer.h" #include "f/f_pc/f_pc_method.h" #include "f/f_pc/f_pc_method_tag.h" #include "global.h" struct base_process_class; -struct layer_class; -struct create_request_method_class { +typedef struct create_request_method_class { cPhs__Handler mpHandler; process_method_func mpCancel; process_method_func mpDelete; -}; +} create_request_method_class; -struct create_request : public create_tag { +typedef struct create_request { + create_tag mBase; s8 mbIsCreating; s8 mbIsCancelling; process_method_tag_class mMtdTg; create_request_method_class* mpCtRqMtd; void* mpUnk1; - int mBsPcId; - base_process_class* mpRes; + s32 mBsPcId; + struct base_process_class* mpRes; layer_class* mpLayer; -}; +} create_request; // Size: 0x48 extern "C" { -bool fpcCtRq_isCreatingByID(create_tag* pTag, int* pId); -bool fpcCtRq_IsCreatingByID(unsigned int id); +BOOL fpcCtRq_isCreatingByID(create_tag* pTag, s32* pId); +BOOL fpcCtRq_IsCreatingByID(u32 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); +BOOL fpcCtRq_Delete(create_request* pReq); +BOOL fpcCtRq_Cancel(create_request* pReq); +s32 fpcCtRq_IsDoing(create_request* pReq); void fpcCtRq_Handler(void); -create_request* fpcCtRq_Create(layer_class* pLayer, unsigned long size, +create_request* fpcCtRq_Create(layer_class* pLayer, u32 size, create_request_method_class* pCtRqMtd); }; diff --git a/include/f/f_pc/f_pc_create_tag.h b/include/f/f_pc/f_pc_create_tag.h index 3163c767c8..2ecedad582 100644 --- a/include/f/f_pc/f_pc_create_tag.h +++ b/include/f/f_pc/f_pc_create_tag.h @@ -5,13 +5,15 @@ #include "SComponent/c_tag.h" #include "global.h" -struct create_tag : public create_tag_class {}; +typedef struct create_tag { + create_tag_class mBase; +} create_tag; extern "C" { void fpcCtTg_ToCreateQ(create_tag_class* pTag); void fpcCtTg_CreateQTo(create_tag_class* pTag); -int fpcCtTg_Init(create_tag* pTag, void* pUserData); +s32 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 index 276b2e0ccd..4f57c584e9 100644 --- a/include/f/f_pc/f_pc_creator.h +++ b/include/f/f_pc/f_pc_creator.h @@ -8,9 +8,9 @@ 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); +BOOL fpcCt_IsCreatingByID(u32 id); +s32 fpcCt_IsDoing(struct base_process_class* pProc); +BOOL fpcCt_Abort(struct base_process_class* pProc); void fpcCt_Handler(void); }; diff --git a/include/f/f_pc/f_pc_delete_tag.h b/include/f/f_pc/f_pc_delete_tag.h index 72ccb5341b..51ce151c64 100644 --- a/include/f/f_pc/f_pc_delete_tag.h +++ b/include/f/f_pc/f_pc_delete_tag.h @@ -3,24 +3,24 @@ #define F_PC_DELETE_TAG_H #include "SComponent/c_tag.h" +#include "f/f_pc/f_pc_layer.h" #include "global.h" -struct layer_class; +typedef s32 (*delete_tag_func)(void*); -typedef int (*delete_tag_func)(void*); - -struct delete_tag_class : public create_tag_class { +typedef struct delete_tag_class { + create_tag_class mBase; layer_class* mpLayer; s16 mTimer; -}; +} delete_tag_class; extern "C" { -bool fpcDtTg_IsEmpty(delete_tag_class* pTag); +BOOL fpcDtTg_IsEmpty(void); 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); +s32 fpcDtTg_Do(delete_tag_class* pTag, delete_tag_func pFunc); +s32 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 index 9e22a82d35..f87d884847 100644 --- a/include/f/f_pc/f_pc_deletor.h +++ b/include/f/f_pc/f_pc_deletor.h @@ -2,17 +2,17 @@ #ifndef F_PC_DELETOR_H #define F_PC_DELETOR_H -#include "global.h" +#include "f/f_pc/f_pc_base.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); +BOOL fpcDt_IsComplete(void); +s32 fpcDt_ToDeleteQ(base_process_class* pProc); +s32 fpcDt_ToQueue(base_process_class* pProc); void fpcDt_Handler(void); -int fpcDt_Delete(base_process_class* pProc); +s32 fpcDt_Delete(base_process_class* pProc); }; #endif diff --git a/include/f/f_pc/f_pc_draw.h b/include/f/f_pc/f_pc_draw.h new file mode 100644 index 0000000000..603f69ea9b --- /dev/null +++ b/include/f/f_pc/f_pc_draw.h @@ -0,0 +1,16 @@ +#ifndef F_PC_DRAW_H +#define F_PC_DRAW_H + +#include "SComponent/c_node_iter.h" +#include "f/f_pc/f_pc_base.h" +#include "global.h" + +typedef s32 (*cNdIt_MethodFuncFunc)(cNdIt_MethodFunc); + +extern "C" { + +s32 fpcDw_Execute(base_process_class* pProc); +s32 fpcDw_Handler(cNdIt_MethodFuncFunc param_1, cNdIt_MethodFunc param_2); +}; + +#endif \ No newline at end of file diff --git a/include/f/f_pc/f_pc_draw_priority.h b/include/f/f_pc/f_pc_draw_priority.h index 914231e85f..dcdfe189aa 100644 --- a/include/f/f_pc/f_pc_draw_priority.h +++ b/include/f/f_pc/f_pc_draw_priority.h @@ -2,15 +2,17 @@ #ifndef F_PC_DRAW_PRIORITY_H #define F_PC_DRAW_PRIORITY_H -struct draw_priority_class { - short mPriority; -}; +#include "global.h" + +typedef struct draw_priority_class { + s16 mPriority; +} draw_priority_class; 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); +s32 fpcDwPi_Get(draw_priority_class* pDwPi); +void fpcDwPi_Set(draw_priority_class* pDwPi, s32 p); +void fpcDwPi_Init(draw_priority_class* pDwPi, s32 p); }; #endif diff --git a/include/f/f_pc/f_pc_executor.h b/include/f/f_pc/f_pc_executor.h index c7fcb5a27e..839b155061 100644 --- a/include/f/f_pc/f_pc_executor.h +++ b/include/f/f_pc/f_pc_executor.h @@ -3,14 +3,17 @@ #define F_PC_EXECUTOR_H #include "SComponent/c_node_iter.h" - -struct base_process_class; +#include "f/f_pc/f_pc_base.h" extern "C" { -int fpcEx_ToLineQ(base_process_class* pProc); -int fpcEx_ExecuteQTo(base_process_class* pProc); -int fpcEx_ToExecuteQ(base_process_class* pProc); +base_process_class* fpcEx_Search(void* pFunc, void* pUserData); +base_process_class* fpcEx_SearchByID(u32 id); +BOOL fpcEx_IsExist(s32 id); +s32 fpcEx_ToLineQ(base_process_class* pProc); +s32 fpcEx_ExecuteQTo(base_process_class* pProc); +s32 fpcEx_Execute(base_process_class* pProc); +s32 fpcEx_ToExecuteQ(base_process_class* pProc); void fpcEx_Handler(cNdIt_MethodFunc pFunc); }; diff --git a/include/f/f_pc/f_pc_fstcreate_req.h b/include/f/f_pc/f_pc_fstcreate_req.h new file mode 100644 index 0000000000..adadb40e34 --- /dev/null +++ b/include/f/f_pc/f_pc_fstcreate_req.h @@ -0,0 +1,26 @@ +#ifndef F_PC_FSTCREATE_REQ_H +#define F_PC_FSTCREATE_REQ_H + +#include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_create_req.h" +#include "f/f_pc/f_pc_layer.h" +#include "global.h" + +typedef s32 (*fstCreateFunc)(void*, void*); + +typedef struct fast_create_request { + /* 0x00 */ create_request mBase; + /* 0x48 */ fstCreateFunc mpFastCreateFunc; + /* 0x4C */ void* mpFastCreateData; +} fast_create_request; // Size: 0x50 + +extern "C" { + +s32 fpcFCtRq_Do(fast_create_request* pFstCreateReq); +s32 fpcFCtRq_Delete(fast_create_request*); +base_process_class* fpcFCtRq_Request(layer_class* pLayer, s16 pProcTypeID, + fstCreateFunc pFastCreateFunc, void* pFastCreateData, + void* pData); +}; + +#endif \ No newline at end of file diff --git a/include/f/f_pc/f_pc_layer.h b/include/f/f_pc/f_pc_layer.h index a1d16459e3..2a89c7ad03 100644 --- a/include/f/f_pc/f_pc_layer.h +++ b/include/f/f_pc/f_pc_layer.h @@ -8,49 +8,50 @@ #include "global.h" struct process_method_tag_class; -struct process_node_class; +typedef struct process_node_class process_node_class; -struct layer_class { - node_class mNode; // generates different asm for struct copy if using inheritance +typedef struct layer_class { + node_class mNode; u32 mLayerID; node_lists_tree_class mNodeListTree; process_node_class* mpPcNode; node_list_class mCancelList; - s32 mCreatingCount : 16; // for some reason, the compiler only optimized these into a single - // word load/store instead of 2 halfword load/store, but only if they - // are written like this - s32 mDeletingCount : 16; -}; + struct { + s16 mCreatingCount; + s16 mDeletingCount; + } counts; +} layer_class; 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); +layer_class* fpcLy_Layer(u32 id); +layer_class* fpcLy_Search(u32 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); -bool fpcLy_IsCreatingMesg(layer_class* pLayer); -bool fpcLy_IsDeletingMesg(layer_class* pLayer); +BOOL fpcLy_IsCreatingMesg(layer_class* pLayer); +BOOL fpcLy_IsDeletingMesg(layer_class* pLayer); -int fpcLy_IntoQueue(layer_class* pLayer, int treeListIdx, create_tag_class* pTag, int idx); -int fpcLy_ToQueue(layer_class* pLayer, int treeListIdx, create_tag_class* pTag); -int fpcLy_QueueTo(layer_class* pLayer, create_tag_class* pTag); +s32 fpcLy_IntoQueue(layer_class* pLayer, s32 treeListIdx, create_tag_class* pTag, s32 idx); +s32 fpcLy_ToQueue(layer_class* pLayer, s32 treeListIdx, create_tag_class* pTag); +s32 fpcLy_QueueTo(layer_class* pLayer, create_tag_class* pTag); void fpcLy_Cancel(layer_class* pLayer); -bool fpcLy_CancelMethod(process_method_tag_class* pLayer); +BOOL fpcLy_CancelMethod(struct process_method_tag_class* pLayer); -void fpcLy_CancelQTo(process_method_tag_class* pMthd); -int fpcLy_ToCancelQ(layer_class* pLayer, process_method_tag_class* pMthd); +void fpcLy_CancelQTo(struct process_method_tag_class* pMthd); +s32 fpcLy_ToCancelQ(layer_class* pLayer, struct process_method_tag_class* pMthd); -void fpcLy_Create(layer_class* pLayer, process_node_class* pPcNode, node_list_class* pLists, - int listNum); -int fpcLy_Delete(layer_class* pLayer); +void fpcLy_Create(layer_class* pLayer, struct process_node_class* pPcNode, node_list_class* pLists, + s32 listNum); + +s32 fpcLy_Delete(layer_class* pLayer); }; #endif diff --git a/include/f/f_pc/f_pc_layer_iter.h b/include/f/f_pc/f_pc_layer_iter.h index 99cbe2cdc9..ecf06d31db 100644 --- a/include/f/f_pc/f_pc_layer_iter.h +++ b/include/f/f_pc/f_pc_layer_iter.h @@ -5,17 +5,17 @@ #include "f/f_pc/f_pc_layer.h" #include "global.h" -struct layer_iter { +typedef struct layer_iter { void* mpFunc; void* mpUserData; -}; +} layer_iter; extern "C" { -int fpcLyIt_OnlyHere(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData); -int fpcLyIt_OnlyHereLY(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData); +s32 fpcLyIt_OnlyHere(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData); +s32 fpcLyIt_OnlyHereLY(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData); void* fpcLyIt_Judge(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData); void* fpcLyIt_AllJudge(cNdIt_MethodFunc pFunc, void* pUserData); -} +}; -#endif \ No newline at end of file +#endif diff --git a/include/f/f_pc/f_pc_layer_tag.h b/include/f/f_pc/f_pc_layer_tag.h index 33f7414190..df60904152 100644 --- a/include/f/f_pc/f_pc_layer_tag.h +++ b/include/f/f_pc/f_pc_layer_tag.h @@ -3,16 +3,15 @@ #define F_PC_LAYER_TAG_H #include "SComponent/c_tag.h" +#include "f/f_pc/f_pc_layer.h" #include "global.h" -struct layer_class; - -struct layer_management_tag_class { +typedef struct layer_management_tag_class { create_tag_class mCreateTag; layer_class* mpLayer; u16 mNodeListID; u16 mNodeListIdx; -}; +} layer_management_tag_class; extern "C" { @@ -20,6 +19,6 @@ s32 fpcLyTg_QueueTo(layer_management_tag_class* pTag); s32 fpcLyTg_ToQueue(layer_management_tag_class* pTag, u32 layerID, u16 listID, u16 listPrio); s32 fpcLyTg_Move(layer_management_tag_class*, u32, u16, u16); s32 fpcLyTg_Init(layer_management_tag_class*, u32, void*); -} +}; #endif diff --git a/include/f/f_pc/f_pc_leaf.h b/include/f/f_pc/f_pc_leaf.h index 94b92e4190..717ced9db0 100644 --- a/include/f/f_pc/f_pc_leaf.h +++ b/include/f/f_pc/f_pc_leaf.h @@ -5,23 +5,38 @@ #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" +#include "global.h" -struct leafdraw_method_class : public process_method_class { +typedef struct leafdraw_method_class { + process_method_class mBase; process_method_func mpDrawFunc; -}; +} leafdraw_method_class; -struct leafdraw_class : public base_process_class { +typedef struct leafdraw_class { + base_process_class mBase; leafdraw_method_class* mpDrawMtd; - u8 mbUnk0; + s8 mbUnk0; u8 mbUnk1; draw_priority_class mDwPi; -}; +} leafdraw_class; + +typedef struct leaf_process_profile_definition { + process_profile_definition mBase; + leafdraw_method_class* mLfDrwMth; + s16 unk20; + u8 unk22[2]; + s32 unk24; +} leaf_process_profile_definition; extern "C" { -int fpcLf_GetPriority(leafdraw_class* pLeaf); -int fpcLf_DrawMethod(leafdraw_method_class* pMthd, void* pUserData); -int fpcLf_Draw(leafdraw_class* pMthd); +s32 fpcLf_GetPriority(leafdraw_class* pLeaf); +s32 fpcLf_DrawMethod(leafdraw_method_class* pMthd, void* pUserData); +s32 fpcLf_Draw(leafdraw_class* pMthd); +s32 fpcLf_Execute(leafdraw_class* pLeaf); +s32 fpcLf_IsDelete(leafdraw_class* pLeaf); +s32 fpcLf_Delete(leafdraw_class* pLeaf); +s32 fpcLf_Create(leafdraw_class* pLeaf); }; #endif diff --git a/include/f/f_pc/f_pc_line.h b/include/f/f_pc/f_pc_line.h new file mode 100644 index 0000000000..e1f3a59cc9 --- /dev/null +++ b/include/f/f_pc/f_pc_line.h @@ -0,0 +1,9 @@ +#ifndef F_PC_LINE_H +#define F_PC_LINE_H + +extern "C" { + +void fpcLn_Create(void); +}; + +#endif \ No newline at end of file diff --git a/include/f/f_pc/f_pc_line_tag.h b/include/f/f_pc/f_pc_line_tag.h index ef4614de62..df229b0ab1 100644 --- a/include/f/f_pc/f_pc_line_tag.h +++ b/include/f/f_pc/f_pc_line_tag.h @@ -3,16 +3,18 @@ #define F_PC_LINE_TAG_H #include "SComponent/c_tag.h" +#include "global.h" -struct line_tag : public create_tag_class { - int mLineListID; -}; +typedef struct line_tag { + create_tag_class mBase; + s32 mLineListID; +} line_tag; extern "C" { -int fpcLnTg_Move(line_tag* pLineTag, int newLineListID); +s32 fpcLnTg_Move(line_tag* pLineTag, s32 newLineListID); void fpcLnTg_QueueTo(line_tag* pLineTag); -int fpcLnTg_ToQueue(line_tag* pLineTag, int lineListID); +s32 fpcLnTg_ToQueue(line_tag* pLineTag, s32 lineListID); void fpcLnTg_Init(line_tag* pLineTag, void* pData); }; diff --git a/include/f/f_pc/f_pc_load.h b/include/f/f_pc/f_pc_load.h index 62e04f7c7c..156b18251d 100644 --- a/include/f/f_pc/f_pc_load.h +++ b/include/f/f_pc/f_pc_load.h @@ -6,10 +6,10 @@ extern "C" { -bool fpcLd_Use(u16 procName); -int fpcLd_IsLoaded(u16 procName); +BOOL fpcLd_Use(u16 procName); +s32 fpcLd_IsLoaded(u16 procName); void fpcLd_Free(u16 procName); -int fpcLd_Load(u16 procName); +s32 fpcLd_Load(u16 procName); }; #endif diff --git a/include/f/f_pc/f_pc_manager.h b/include/f/f_pc/f_pc_manager.h new file mode 100644 index 0000000000..54ee0a14ee --- /dev/null +++ b/include/f/f_pc/f_pc_manager.h @@ -0,0 +1,30 @@ +#ifndef F_PC_MANAGER_H +#define F_PC_MANAGER_H + +#include "SComponent/c_node_iter.h" +#include "SComponent/c_tag.h" +#include "d/d_com/d_com_inf_game/d_com_inf_game.h" +#include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_node_req.h" +#include "global.h" + +extern "C" { + +typedef s32 (*FastCreateReqFunc)(void*); + +void fpcM_Draw(void* pProc); +s32 fpcM_DrawIterater(cNdIt_MethodFunc pFunc); +void fpcM_Execute(void* pProc); +void fpcM_Delete(void* pProc); +BOOL fpcM_IsCreating(u32 pID); +// void fpcM_Management(unk_func pFunc1, unk_func pFunc2); +void fpcM_Init(void); +base_process_class* fpcM_FastCreate(s16 pProcTypeID, FastCreateReqFunc param_2, void* param_3, + void* pData); +s32 fpcM_IsPause(void* pProc, u8 param_2); +void fpcM_PauseEnable(void* pProc, u8 param_2); +void fpcM_PauseDisable(void* pProc, u8 param_2); +void* fpcM_JudgeInLayer(u32 pLayerID, cNdIt_MethodFunc pFunc, void* pUserData); +}; + +#endif \ No newline at end of file diff --git a/include/f/f_pc/f_pc_method.h b/include/f/f_pc/f_pc_method.h index ec2f4c90b0..9eccf4e79b 100644 --- a/include/f/f_pc/f_pc_method.h +++ b/include/f/f_pc/f_pc_method.h @@ -2,22 +2,24 @@ #ifndef F_PC_METHOD_H #define F_PC_METHOD_H -typedef int (*process_method_func)(void*); +#include "global.h" -struct process_method_class { +typedef s32 (*process_method_func)(void*); + +typedef struct process_method_class { process_method_func mpCreateFunc; process_method_func mpDeleteFunc; process_method_func mpExecuteFunc; process_method_func mpIsDeleteFunc; -}; +} process_method_class; 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); +s32 fpcMtd_Method(process_method_func pFunc, void* pUserData); +s32 fpcMtd_Execute(process_method_class* pMthd, void* pUserData); +s32 fpcMtd_IsDelete(process_method_class* pMthd, void* pUserData); +s32 fpcMtd_Delete(process_method_class* pMthd, void* pUserData); +s32 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 index 8fa13a3c48..50543bb8f5 100644 --- a/include/f/f_pc/f_pc_method_iter.h +++ b/include/f/f_pc/f_pc_method_iter.h @@ -3,6 +3,7 @@ #define F_PC_METHOD_ITER_H #include "SComponent/c_list_iter.h" +#include "global.h" extern "C" { diff --git a/include/f/f_pc/f_pc_method_tag.h b/include/f/f_pc/f_pc_method_tag.h index 61d927b606..7104329c83 100644 --- a/include/f/f_pc/f_pc_method_tag.h +++ b/include/f/f_pc/f_pc_method_tag.h @@ -3,20 +3,22 @@ #define F_PC_METHOD_TAG_H #include "SComponent/c_tag.h" +#include "global.h" -typedef int (*process_method_tag_func)(void*); +typedef s32 (*process_method_tag_func)(void*); -struct process_method_tag_class : public create_tag_class { +typedef struct process_method_tag_class { + create_tag_class mCreateTag; process_method_tag_func mpFunc; void* mpMthdData; -}; +} process_method_tag_class; extern "C" { -int fpcMtdTg_Do(process_method_tag_class* pMthd); -int fpcMtdTg_ToMethodQ(node_list_class* pList, process_method_tag_class* pMthd); +s32 fpcMtdTg_Do(process_method_tag_class* pMthd); +s32 fpcMtdTg_ToMethodQ(node_list_class* pList, process_method_tag_class* pMthd); void fpcMtdTg_MethodQTo(process_method_tag_class* pMthd); -int fpcMtdTg_Init(process_method_tag_class* pMthd, process_method_tag_func pFunc, void* pMthdData); +s32 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 index c2cfac60fa..6f63e3ac15 100644 --- a/include/f/f_pc/f_pc_node.h +++ b/include/f/f_pc/f_pc_node.h @@ -6,17 +6,37 @@ #include "f/f_pc/f_pc_layer.h" #include "f/f_pc/f_pc_method.h" -struct process_node_class : public base_process_class { - process_method_class* mpNodeMtd; +typedef struct nodedraw_method_class { + process_method_class mBase; + process_method_func mNodedrawFunc; +} nodedraw_method_class; + +typedef struct process_node_class { + base_process_class mBase; + nodedraw_method_class* mpNodeMtd; layer_class mLayer; node_list_class mLayerNodeLists[16]; - u8 mUnk0; -}; + s8 mUnk0; +} process_node_class; + +typedef struct node_process_profile_definition { + process_profile_definition mBase; + nodedraw_method_class* mNDrwMthCls; + s16 unk20; + u8 unk22[2]; + s32 unk24; +} node_process_profile_definition; extern "C" { -int fpcNd_Create(process_node_class* pNode); -bool fpcNd_IsDeleteTiming(void); +s32 fpcNd_DrawMethod(nodedraw_method_class* pNodeMethod, void* pData); +s32 fpcNd_Draw(process_node_class* pProcNode); +s32 fpcNd_Execute(process_node_class* pProcNode); +void* fpcNd_IsCreatingFromUnder(process_node_class* pProcNode); +s32 fpcNd_IsDeleteTiming(process_node_class* pProcNode); +s32 fpcNd_IsDelete(process_node_class* pProcNode); +s32 fpcNd_Delete(process_node_class* pProcNode); +s32 fpcNd_Create(process_node_class* pProcNode); }; #endif diff --git a/include/f/f_pc/f_pc_node_req.h b/include/f/f_pc/f_pc_node_req.h new file mode 100644 index 0000000000..c4710a9247 --- /dev/null +++ b/include/f/f_pc/f_pc_node_req.h @@ -0,0 +1,72 @@ +#ifndef F_PC_NODE_REQ_H +#define F_PC_NODE_REQ_H + +#include "SComponent/c_phase.h" +#include "f/f_pc/f_pc_method.h" +#include "f/f_pc/f_pc_method_tag.h" +#include "f/f_pc/f_pc_node.h" +#include "global.h" + +typedef struct node_create_request_method_class { + process_method_func mpExecuteFunc; + process_method_func mpCancelFunc; + process_method_func mpUnkFunc; + process_method_func mpPostMethodFunc; +} node_create_request_method_class; +// needed to match struct copy +typedef struct unk_process_node_class { + process_node_class* mpNodeProc; + u32 mProcId; +} unk_process_node_class; + +typedef struct node_create_request { + create_tag_class mCreateTag; + process_method_tag_class mProcMthCls; + request_of_phase_process_class mReqPhsProc; + cPhs__Handler* mpPhsHandler; + node_create_request_method_class* mpNodeCrReqMthCls; + s32 mParameter; + s32 mRequestId; + unk_process_node_class mNodeProc; + layer_class* mpLayerClass; + u32 mCreatingID; + s16 mProcName; + void* mpUserData; + s16 unk_0x60; + +} node_create_request; // Size: 0x64 + +typedef struct request_node_class { + node_class mBase; + node_create_request* mNodeCrReq; +} request_node_class; + +extern "C" { + +void fpcNdRq_RequestQTo(node_create_request* pNodeCreateReq); +void fpcNdRq_ToRequestQ(node_create_request* pNodeCreateReq); +s32 fpcNdRq_phase_IsCreated(node_create_request* pNodeCreateReq); +s32 fpcNdRq_phase_Create(node_create_request* pNodeCreateReq); +s32 fpcNdRq_phase_IsDeleteTiming(node_create_request* pNodeCreateReq); +s32 fpcNdRq_phase_IsDeleted(node_create_request* pNodeCreateReq); +s32 fpcNdRq_phase_Delete(node_create_request* pNodeCreateReq); +s32 fpcNdRq_DoPhase(node_create_request* pNodeCreateReq); +s32 fpcNdRq_Execute(node_create_request* pNodeCreateReq); +s32 fpcNdRq_Delete(node_create_request* pNodeCreateReq); +s32 fpcNdRq_Cancel(node_create_request* pNodeCreateReq); +s32 fpcNdRq_Handler(void); +s32 fpcNdRq_IsPossibleTarget(struct process_node_class* pProcNode); +s32 fpcNdRq_IsIng(struct process_node_class* pProcNode); +node_create_request* fpcNdRq_Create(s32 pRequestSize); +node_create_request* fpcNdRq_ChangeNode(u32 pRequestSize, struct process_node_class* pProcNode, + s16 param_3, void* param_4); +node_create_request* fpcNdRq_DeleteNode(u32 pRequestSize, struct process_node_class* pProcNode); +node_create_request* fpcNdRq_CreateNode(u32 pRequestSize, s16 param_2, void* param_3); +node_create_request* +fpcNdRq_Request(u32 param_1, s32 param_2, struct process_node_class* param_3, s16 param_4, + void* param_5, node_create_request_method_class* pNodeCreateRequestMethodClass); +s32 fpcNdRq_ReChangeNode(u32 pRequestId, s16 param_2, void* param_3); +s32 fpcNdRq_ReRequest(u32 pRequestId, s16 param_2, void* param_3); +}; + +#endif \ No newline at end of file diff --git a/include/f/f_pc/f_pc_pause.h b/include/f/f_pc/f_pc_pause.h index 09a47a84f0..2d22e3de84 100644 --- a/include/f/f_pc/f_pc_pause.h +++ b/include/f/f_pc/f_pc_pause.h @@ -1,15 +1,16 @@ +#ifndef F_PC_PAUSE +#define F_PC_PAUSE -#ifndef F_PC_PAUSE_H -#define F_PC_PAUSE_H - +#include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_node.h" #include "global.h" extern "C" { -bool fpcPause_IsEnable(void* pProcess, u8 flag); -int fpcPause_Enable(void* pProcess, u8 flag); -int fpcPause_Disable(void* pProcess, u32 flag); -void fpcPause_Init(void* pProcess); +s32 fpcPause_IsEnable(void* pProc, u8 expected); +s32 fpcPause_Enable(void* pProc, u8 pauseMask); +s32 fpcPause_Disable(void* pProc, u8 pauseMask); +void fpcPause_Init(void* pProc); }; #endif diff --git a/include/f/f_pc/f_pc_pause/asm/func_80023844.s b/include/f/f_pc/f_pc_pause/asm/func_80023844.s deleted file mode 100644 index c479981966..0000000000 --- a/include/f/f_pc/f_pc_pause/asm/func_80023844.s +++ /dev/null @@ -1,9 +0,0 @@ -/* 80023844 00020784 54 84 06 3E */ clrlwi r4, r4, 0x18 -/* 80023848 00020788 88 03 00 0B */ lbz r0, 0xb(r3) -/* 8002384C 0002078C 7C 80 00 38 */ and r0,r4,r0 -/* 80023850 00020790 7C 64 00 50 */ subf r3,r4,r0 -/* 80023854 00020794 30 03 FF FF */ addic r0,r3,-1 -/* 80023858 00020798 7C 00 19 10 */ subfe r0,r0,r3 -/* 8002385C 0002079C 7C 00 00 34 */ cntlzw r0,r0 -/* 80023860 000207A0 54 03 D9 7E */ srwi r3,r0,5 -/* 80023864 000207A4 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/f/f_pc/f_pc_priority.h b/include/f/f_pc/f_pc_priority.h index 530e979090..f1093404ab 100644 --- a/include/f/f_pc/f_pc_priority.h +++ b/include/f/f_pc/f_pc_priority.h @@ -4,33 +4,31 @@ #include "SComponent/c_tag.h" #include "f/f_pc/f_pc_method_tag.h" -#include "global.h" -struct process_priority_queue_info { +typedef struct process_priority_queue_info { u32 mLayer; u16 mListID; u16 mListPrio; -}; +} process_priority_queue_info; -struct process_priority_class : public create_tag_class { +typedef struct process_priority_class { + create_tag_class mBase; process_method_tag_class mMtdTag; process_priority_queue_info mInfoQ; process_priority_queue_info mInfoCurr; -}; +} process_priority_class; extern "C" { -int fpcPi_IsInQueue(process_priority_class* pPi); -int fpcPi_QueueTo(process_priority_class* pPi); -int fpcPi_ToQueue(process_priority_class* pPi); +s32 fpcPi_IsInQueue(process_priority_class* pPi); +s32 fpcPi_QueueTo(process_priority_class* pPi); +s32 fpcPi_ToQueue(process_priority_class* pPi); process_priority_class* fpcPi_GetFromQueue(void); -int fpcPi_Delete(process_priority_class* pPi); -int fpcPi_IsNormal(unsigned int layer, unsigned short listID, unsigned short priority); -int fpcPi_Change(process_priority_class* pPi, unsigned int layer, unsigned short listID, - unsigned short priority); -int fpcPi_Handler(void); -int fpcPi_Init(process_priority_class* pPi, void* pUserData, unsigned int layer, - unsigned short listID, unsigned short priority); +s32 fpcPi_Delete(process_priority_class* pPi); +s32 fpcPi_IsNormal(u32 layer, u16 listID, u16 priority); +s32 fpcPi_Change(process_priority_class* pPi, u32 layer, u16 listID, u16 priority); +s32 fpcPi_Handler(void); +s32 fpcPi_Init(process_priority_class* pPi, void* pUserData, u32 layer, u16 listID, u16 priority); }; #endif diff --git a/include/f/f_pc/f_pc_profile.h b/include/f/f_pc/f_pc_profile.h index 9283a803c4..f7fdb7c4ef 100644 --- a/include/f/f_pc/f_pc_profile.h +++ b/include/f/f_pc/f_pc_profile.h @@ -2,11 +2,26 @@ #ifndef F_PC_PROFILE_H #define F_PC_PROFILE_H +#include "f/f_pc/f_pc_method.h" #include "global.h" +struct nodedraw_method_class; + +typedef struct process_profile_definition { + s32 mLayerID; + u16 mListID; + u16 mListPrio; + s16 mProcName; + s16 unkA; // probably padding + struct process_method_class* mpPcMtd; + s32 mSize; + s32 mSizeOther; + s32 mParameters; +} process_profile_definition; + extern "C" { -void* fpcPf_Get(s16 profileID); +process_profile_definition* 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 index bdefebe4c2..3191c2156e 100644 --- a/include/f/f_pc/f_pc_searcher.h +++ b/include/f/f_pc/f_pc_searcher.h @@ -2,10 +2,9 @@ #ifndef F_PC_SEARCHER_H #define F_PC_SEARCHER_H +#include "f/f_pc/f_pc_base.h" #include "global.h" -struct base_process_class; - extern "C" { void* fpcSch_JudgeForPName(base_process_class* pProc, void* pUserData); diff --git a/include/f/f_pc/f_pc_stdcreate_req.h b/include/f/f_pc/f_pc_stdcreate_req.h new file mode 100644 index 0000000000..d6255219d6 --- /dev/null +++ b/include/f/f_pc/f_pc_stdcreate_req.h @@ -0,0 +1,33 @@ +#ifndef F_PC_STDCREATE_H +#define F_PC_STDCREATE_H + +#include "f/f_pc/f_pc_create_req.h" +#include "f/f_pc/f_pc_layer.h" +#include "global.h" + +typedef s32 (*stdCreateFunc)(void*, void*); + +typedef struct standard_create_request_class { + /* 0x00 */ create_request mBase; + /* 0x48 */ request_of_phase_process_class unk_0x48; + /* 0x50 */ s16 mLoadID; + /* 0x54 */ void* unk_0x54; + /* 0x58 */ stdCreateFunc unk_0x58; + /* 0x5C */ void* unk_0x5C; +} standard_create_request_class; + +extern "C" { + +s32 fpcSCtRq_phase_CreateProcess(standard_create_request_class* pStdCreateReq); +s32 fpcSCtRq_phase_SubCreateProcess(standard_create_request_class* pStdCreateReq); +s32 fpcSCtRq_phase_IsComplete(standard_create_request_class* pStdCreateReq); +s32 fpcSCtRq_phase_PostMethod(standard_create_request_class* pStdCreateReq); +s32 fpcSCtRq_phase_Done(standard_create_request_class*); +s32 fpcSCtRq_Handler(standard_create_request_class* pStdCreateReq); +s32 fpcSCtRq_Delete(standard_create_request_class*); +s32 fpcSCtRq_Cancel(standard_create_request_class*); +s32 fpcSCtRq_Request(layer_class* param_1, s16 param_2, stdCreateFunc param_3, void* param_4, + void* param_5); +}; + +#endif \ No newline at end of file diff --git a/include/functions.h b/include/functions.h index 28adc9ba63..e5cfc5abdc 100644 --- a/include/functions.h +++ b/include/functions.h @@ -277,12 +277,42 @@ void ARQInit(void); void DCStoreRangeNoSync(void); void __RAS_OSDisableInterrupts_begin(void); u8 dComIfGs_getBottleMax(void); +class CRumble; +void JUTGamePad_NS_CRumble_NS_stopPatternedRumble(CRumble*, s16); +void dLib_time_c_NS_stopTime(void); +void dLib_time_c_NS_startTime(void); +class dComIfG_play_c; +void dComIfG_play_c_NS_drawSimpleModel(dComIfG_play_c*); +void cAPIGph_Painter(void); +bool dDvdErrorMsg_c_NS_execute(void); +bool dShutdownErrorMsg_c_NS_execute(void); +class dDlst_peekZ_c; +void dDlst_peekZ_c_NS_peekData(dDlst_peekZ_c*); +void MtxInit(void); void mDoDvdErr_ThdCleanup(void); void initiate__6JUTXfbFUsUsP7JKRHeapl(void); void common_init__6JUTXfbFl(void); } +// DVD +class DVDFileInfo; +extern "C" { +s32 DVDOpen(const char*, u8[48]); +s32 DVDClose(u8[48]); +void DVDReadPrio(void); +void DVDGetCurrentDiskID(void); +s32 DVDFastOpen(long, u8[48]); +int DVDGetCommandBlockStatus(u8[48]); +s32 DVDReadAsyncPrio(u8[48], void*, long, long, void (*)(long, DVDFileInfo*), long); +void DVDConvertPathToEntrynum(void); + +void DVDChangeDir(void); +void DVDCloseDir(void); +void DVDOpenDir(void); +void DVDReadDir(void); +} + class mDoCPd_c; extern "C" { void cAPICPad_recalibrate(void); @@ -398,12 +428,6 @@ void VISetBlack(s32); void VIFlush(void); } -extern "C" { -void VIWaitForRetrace(void); -void VISetBlack(s32); -void VIFlush(void); -} - extern "C" { void JUTReport__FiiPCce(int, int, const char*, ...); void JUTReportConsole(const char*); @@ -449,6 +473,8 @@ void Z2SeqMgr_NS_resetBattleBgmParams(void); void JAISoundID_X1_(void); void func_803621A8(void); void moveVolume__18JAISoundParamsMoveFfUl(void); +class Z2SoundMgr; +void Z2SoundMgr_NS_pauseAllGameSound(Z2SoundMgr*, bool); } // Z2LinkMgr extern "C" { @@ -2018,7 +2044,6 @@ void daAlink_c_NS_checkBoomerangCatchAction(void); void daAlink_c_NS_procGrassWhistleWaitInit(void); void daAlink_c_NS_procWolfChainReadyInit(void); void daAlink_c_NS_checkHorseGetOffAndSetDoStatus(void); -void fpcM_IsCreating(void); void func_800D0B60(void); void func_800F6EFC(void); void func_801446D4(void); diff --git a/include/global.h b/include/global.h index 1b1eb70fee..ce61a31439 100644 --- a/include/global.h +++ b/include/global.h @@ -13,4 +13,10 @@ struct Vec { #include "os/OS.h" #include "variables.h" -#endif \ No newline at end of file +// hack to make functions that return comparisons as int match +extern int __cntlzw(unsigned int); +inline BOOL checkEqual(s32 a, s32 b) { + return (u32)__cntlzw(a - b) >> 5; +} + +#endif diff --git a/include/m_Do/m_Do_controller_pad/m_Do_controller_pad.h b/include/m_Do/m_Do_controller_pad/m_Do_controller_pad.h new file mode 100644 index 0000000000..9ee81f57c5 --- /dev/null +++ b/include/m_Do/m_Do_controller_pad/m_Do_controller_pad.h @@ -0,0 +1,7 @@ +#ifndef __M_DO_CONTROLLER_PAD_H_ +#define __M_DO_CONTROLLER_PAD_H_ + +#include "JSystem/JUtility/JUTGamePad/JUTGamePad.h" +extern JUTGamePad* lbl_803DD2D8[4]; // m_Do_controller_pad::mDoCPd_c::m_gamePad + +#endif \ No newline at end of file diff --git a/include/variables.h b/include/variables.h index ec9b960eba..58c0a2d0db 100644 --- a/include/variables.h +++ b/include/variables.h @@ -49,7 +49,6 @@ extern u8 lbl_80450B24; extern u8 lbl_80450B1C; extern u8 lbl_80450580; extern u8 lbl_80450B1A; -extern u8 lbl_803DD2D8; extern u8 lbl_80450B18; extern u8 lbl_803D32E0; extern u8 lbl_80450BBC; diff --git a/ldscript.lcf b/ldscript.lcf index 0391b509f8..4d4eaabac3 100644 --- a/ldscript.lcf +++ b/ldscript.lcf @@ -1314,6 +1314,36 @@ run__7JKRAramFv getAlinkArcName__9daAlink_cFv calc__16daAlink_matAnm_cCFP11J3DMaterial getResetData__6mDoRstFv +fpcNd_DrawMethod +fpcNd_Draw +fpcNd_Execute +fpcNd_IsDelete +fpcNd_Delete +fpcNd_Create +fpcNd_IsCreatingFromUnder +fpcNdRq_phase_IsCreated +fpcNdRq_phase_Create +fpcNdRq_phase_IsDeleteTiming +fpcNdRq_phase_IsDeleted +fpcNdRq_phase_Delete +fpcSCtRq_phase_Load +fpcSCtRq_phase_CreateProcess +fpcSCtRq_phase_SubCreateProcess +fpcSCtRq_phase_IsComplete +fpcSCtRq_phase_PostMethod +fpcSCtRq_phase_Done +fpcSCtRq_Handler +fpcSCtRq_Delete +fpcSCtRq_Request +fpcSCtRq_Cancel +fpcFCtRq_Do +fpcFCtRq_Delete +fpcFCtRq_Request +fpcLf_Draw +fpcLf_Execute +fpcLf_IsDelete +fpcLf_Delete +fpcLf_Create func_8007400C func_80073D08 func_80073A08 diff --git a/obj_files.mk b/obj_files.mk index 6f392953e3..b67fdf7ec7 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -50,27 +50,25 @@ TEXT_O_FILES := \ $(BUILD_DIR)/asm/f/op/draw/f_op_draw_iter.o \ $(BUILD_DIR)/asm/f/op/draw/f_op_draw_tag.o \ $(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)/src/f/f_pc/f_pc_base.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_create_iter.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)/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)/src/f/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)/src/f/f_pc/f_pc_layer_iter.o \ $(BUILD_DIR)/src/f/f_pc/f_pc_layer_tag.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)/src/f/f_pc/f_pc_manager.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)/src/f/f_pc/f_pc_node.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_node_req.o \ $(BUILD_DIR)/src/f/f_pc/f_pc_priority.o \ $(BUILD_DIR)/src/f/f_pc/f_pc_profile.o \ $(BUILD_DIR)/src/f/f_pc/f_pc_searcher.o \ @@ -79,9 +77,9 @@ TEXT_O_FILES := \ $(BUILD_DIR)/src/f/f_pc/f_pc_method_iter.o \ $(BUILD_DIR)/src/f/f_pc/f_pc_method_tag.o \ $(BUILD_DIR)/src/f/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 \ - $(BUILD_DIR)/asm/f/pc/stdcreate/f_pc_stdcreate_req.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_draw.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_fstcreate_req.o \ + $(BUILD_DIR)/src/f/f_pc/f_pc_stdcreate_req.o \ $(BUILD_DIR)/asm/d/d_stage.o \ $(BUILD_DIR)/asm/d/d_map.o \ $(BUILD_DIR)/src/d/d_com/d_com_inf_game.o \ @@ -652,4 +650,4 @@ SDATA2_O_FILES := \ $(BUILD_DIR)/asm/sdata2.o SBSS2_O_FILES := \ - $(BUILD_DIR)/asm/sbss2.o \ No newline at end of file + $(BUILD_DIR)/asm/sbss2.o diff --git a/src/d/d_a/d_a_alink.cpp b/src/d/d_a/d_a_alink.cpp index 8b809e51f5..67c220071e 100644 --- a/src/d/d_a/d_a_alink.cpp +++ b/src/d/d_a/d_a_alink.cpp @@ -3,6 +3,7 @@ #include "SComponent/c_phase.h" #include "Z2AudioLib/Z2SeMgr/Z2SeMgr.h" #include "Z2AudioLib/Z2SeqMgr/Z2SeqMgr.h" +#include "f/f_pc/f_pc_manager.h" #include "f/f_pc/f_pc_searcher.h" u32 daAlink_c::getE3Zhint(void) { diff --git a/src/f/f_pc/f_pc_base.cpp b/src/f/f_pc/f_pc_base.cpp index 4bf93c8658..163dd4b9b3 100644 --- a/src/f/f_pc/f_pc_base.cpp +++ b/src/f/f_pc/f_pc_base.cpp @@ -1 +1,136 @@ -// ok +#include "f/f_pc/f_pc_base.h" +#include "SComponent/c_phase.h" +#include "dolphin/types.h" +#include "f/f_pc/f_pc_delete_tag.h" +#include "f/f_pc/f_pc_layer.h" +#include "f/f_pc/f_pc_layer_tag.h" +#include "f/f_pc/f_pc_line_tag.h" +#include "f/f_pc/f_pc_method.h" +#include "f/f_pc/f_pc_pause.h" +#include "f/f_pc/f_pc_priority.h" +#include "f/f_pc/f_pc_profile.h" + +extern s32 lbl_80450D04; // f_pc_base::t_type +extern s8 lbl_80450D08; +extern s32 lbl_80450D0C; // f_pc_base::process_id +extern s8 lbl_80450D10; +extern s32 lbl_80450D00; // f_pc_base::g_fpcBs_type + +extern "C" { + +extern void cMl_NS_free(void* pPtr); +extern void* cMl_NS_memalignB(s32 pAlign, s32 pSize); +extern void sBs_ClearArea(void* pPtr, s32 pSize); + +BOOL fpcBs_Is_JustOfType(s32 pType1, s32 pType2) { + return checkEqual(pType1, pType2); +} + +s32 fpcBs_MakeOfType(s32* pType) { + if (lbl_80450D08 == 0) { + lbl_80450D04 = 0x9130000; + lbl_80450D08 = 1; + } + if (*pType == 0) { + *pType = ++lbl_80450D04; + } + return *pType; +} + +s32 fpcBs_MakeOfId(void) { + if (lbl_80450D10 == 0) { + lbl_80450D0C = 1; + lbl_80450D10 = 1; + } + return lbl_80450D0C++; +} + +s32 fpcBs_Execute(base_process_class* pProc) { + s32 result; + layer_class* savedLayer = fpcLy_CurrentLayer(); + fpcLy_SetCurrentLayer(pProc->mLyTg.mpLayer); + result = fpcMtd_Execute(pProc->mpPcMtd, pProc); + fpcLy_SetCurrentLayer(savedLayer); + return result; +} + +void fpcBs_DeleteAppend(base_process_class* pProc) { + if (pProc->mpUserData != NULL) { + cMl_NS_free(pProc->mpUserData); + pProc->mpUserData = NULL; + } +} + +s32 fpcBs_IsDelete(base_process_class* pProc) { + s32 result; + layer_class* savedLayer = fpcLy_CurrentLayer(); + fpcLy_SetCurrentLayer(pProc->mLyTg.mpLayer); + result = fpcMtd_IsDelete(pProc->mpPcMtd, pProc); + fpcLy_SetCurrentLayer(savedLayer); + return result; +} + +s32 fpcBs_Delete(base_process_class* pProc) { + s32 deleteResult = fpcMtd_Delete(pProc->mpPcMtd, pProc); + if (deleteResult == 1) { + fpcBs_DeleteAppend(pProc); + pProc->mBsType = 0; + cMl_NS_free(pProc); + } + return deleteResult; +} + +base_process_class* fpcBs_Create(s16 pProcTypeID, u32 pProcID, void* pData) { + process_profile_definition* procProfDef; + base_process_class* procClass; + s32 size; + + procProfDef = fpcPf_Get(pProcTypeID); + size = procProfDef->mSize + procProfDef->mSizeOther; + procClass = (base_process_class*)cMl_NS_memalignB(-4, size); + if (procClass == NULL) { + return NULL; + } else { + sBs_ClearArea(procClass, size); + fpcLyTg_Init(&procClass->mLyTg, procProfDef->mLayerID, procClass); + fpcLnTg_Init(&procClass->mLnTg, procClass); + fpcDtTg_Init(&procClass->mDtTg, procClass); + fpcPi_Init(&procClass->mPi, procClass, procProfDef->mLayerID, procProfDef->mListID, + procProfDef->mListPrio); + procClass->mInitState = 0; + procClass->mUnk0 = 0; + procClass->mBsPcId = pProcID; + procClass->mBsTypeId = pProcTypeID; + procClass->mBsType = fpcBs_MakeOfType(&lbl_80450D00); + procClass->mProcName = procProfDef->mProcName; + fpcPause_Init(procClass); + procClass->mpPcMtd = procProfDef->mpPcMtd; + procClass->mpProf = procProfDef; + procClass->mpUserData = pData; + procClass->mParameters = procProfDef->mParameters; + return procClass; + } +} + +s32 fpcBs_SubCreate(base_process_class* pProc) { + switch (fpcMtd_Create(pProc->mpPcMtd, pProc)) { + case 2: + case cPhs_COMPLEATE_e: + fpcBs_DeleteAppend(pProc); + pProc->mUnk2 = 2; + return 2; + case cPhs_ZERO_e: + case 1: + pProc->mInitState = 1; + pProc->mUnk2 = 0; + return cPhs_ZERO_e; + case 3: + pProc->mUnk2 = 3; + return 3; + case cPhs_ERROR_e: + default: + pProc->mUnk2 = 5; + return cPhs_ERROR_e; + } +} +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_create_iter.cpp b/src/f/f_pc/f_pc_create_iter.cpp index 4bf93c8658..b04c7f7cf2 100644 --- a/src/f/f_pc/f_pc_create_iter.cpp +++ b/src/f/f_pc/f_pc_create_iter.cpp @@ -1 +1,32 @@ -// ok +#include "f/f_pc/f_pc_create_iter.h" + +// g_fpcCtTg_Queue +extern node_list_class lbl_803A3990; + +extern "C" { + +s32 fpcCtIt_Method(cNdIt_MethodFunc pJudge, void* pUserData) { + node_method_data iter; + iter.mFunc = pJudge; + iter.mpUserData = pUserData; + return cLsIt_Method(&lbl_803A3990, (cNdIt_MethodFunc)cTgIt_MethodCall, &iter); +} + +void* fpcCtIt_Judge(cNdIt_JudgeFunc pJudge, void* pUserData) { + node_judge_data iter; + iter.mFunc = pJudge; + iter.mpUserData = pUserData; + return cLsIt_Judge(&lbl_803A3990, (cNdIt_JudgeFunc)cTgIt_JudgeFilter, &iter); +} +asm void* fpcCtIt_filter_JudgeInLayer(create_tag*, fpcCtIt_jilprm_c*) { + nofralloc +#include "f/f_pc/asm/80020A40.s" +} +void* fpcCtIt_JudgeInLayer(u32 pUnk0, cNdIt_JudgeFunc pFunc, void* pUserData) { + fpcCtIt_jilprm_c data; + data.mUnk0 = pUnk0; + data.mFunc = pFunc; + data.mpUserData = pUserData; + return fpcCtIt_Judge((cNdIt_JudgeFunc)fpcCtIt_filter_JudgeInLayer, &data); +} +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_create_req.cpp b/src/f/f_pc/f_pc_create_req.cpp index dc13bf0ab7..f19c48416c 100644 --- a/src/f/f_pc/f_pc_create_req.cpp +++ b/src/f/f_pc/f_pc_create_req.cpp @@ -1,9 +1,9 @@ - -#include "f/f_pc/f_pc_create_req.h" +#include "dolphin/types.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_create_req.h" #include "f/f_pc/f_pc_deletor.h" #include "f/f_pc/f_pc_executor.h" #include "f/f_pc/f_pc_layer.h" @@ -11,17 +11,17 @@ extern "C" { -bool fpcCtRq_isCreatingByID(create_tag* pTag, int* pId) { - create_request* pReq = (create_request*)(pTag->mpTagData); - return pReq->mBsPcId == *pId; +BOOL fpcCtRq_isCreatingByID(create_tag* pTag, s32* pId) { + create_request* pReq = (create_request*)(pTag->mBase.mpTagData); + return checkEqual(*pId, pReq->mBsPcId); } -bool fpcCtRq_IsCreatingByID(unsigned int id) { - return fpcCtIt_Judge((cNdIt_JudgeFunc)fpcCtRq_isCreatingByID, &id) != NULL; +BOOL fpcCtRq_IsCreatingByID(u32 id) { + return fpcCtIt_Judge((cNdIt_JudgeFunc)fpcCtRq_isCreatingByID, &id) != NULL ? 1 : 0; } void fpcCtRq_CreateQTo(create_request* pReq) { - fpcCtTg_CreateQTo(pReq); + fpcCtTg_CreateQTo(&pReq->mBase.mBase); fpcLy_CreatedMesg(pReq->mpLayer); fpcLy_CancelQTo(&pReq->mMtdTg); } @@ -29,73 +29,64 @@ void fpcCtRq_CreateQTo(create_request* pReq) { void fpcCtRq_ToCreateQ(create_request* pReq) { fpcLy_CreatingMesg(pReq->mpLayer); fpcLy_ToCancelQ(pReq->mpLayer, &pReq->mMtdTg); - fpcCtTg_ToCreateQ(pReq); + fpcCtTg_ToCreateQ(&pReq->mBase.mBase); } extern void cMl_NS_free(void* pPtr); -#if NON_MATCHING -bool fpcCtRq_Delete(create_request* pReq) { +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) + if (pReq->mpCtRqMtd != NULL && fpcMtd_Method(pReq->mpCtRqMtd->mpDelete, pReq) == 0) { + return 0; + } else { + if (pReq->mpRes) { pReq->mpRes->mpCtRq = NULL; + } cMl_NS_free(pReq); return 1; } - - return 0; } -#else -asm bool fpcCtRq_Delete(create_request* pReq) { - nofralloc -#include "f/f_pc/f_pc_create_req/asm/func_80020BA0.s" -} -#endif -bool fpcCtRq_Cancel(create_request* pReq) { +BOOL fpcCtRq_Cancel(create_request* pReq) { + base_process_class* pProc; if (pReq != NULL && !pReq->mbIsCancelling) { - pReq->mbIsCancelling = true; - base_process_class* pProc = pReq->mpRes; + pReq->mbIsCancelling = TRUE; + pProc = pReq->mpRes; if (pProc != NULL && !fpcDt_Delete(pProc)) - return false; + return FALSE; if (pReq->mpCtRqMtd != NULL && !fpcMtd_Method(pReq->mpCtRqMtd->mpCancel, pReq)) - return false; + return FALSE; return fpcCtRq_Delete(pReq); } else { - return true; + return TRUE; } } -int fpcCtRq_IsDoing(create_request* pReq) { +s32 fpcCtRq_IsDoing(create_request* pReq) { if (pReq != NULL) return pReq->mbIsCreating; else - return false; + return FALSE; } -static bool fpcCtRq_Do(create_request* pReq) { - int ret = cPhs_COMPLEATE_e; +BOOL fpcCtRq_Do(create_request* pReq) { + s32 ret = cPhs_COMPLEATE_e; if (pReq->mpCtRqMtd != NULL) { cPhs__Handler pHandler = pReq->mpCtRqMtd->mpHandler; if (pHandler != NULL) { - pReq->mbIsCreating = true; + pReq->mbIsCreating = TRUE; ret = pHandler(pReq); - pReq->mbIsCreating = false; + pReq->mbIsCreating = FALSE; } } switch (ret) { case cPhs_COMPLEATE_e: { - int success = fpcEx_ToExecuteQ(pReq->mpRes); + s32 success = fpcEx_ToExecuteQ(pReq->mpRes); if (success == 0) return fpcCtRq_Cancel(pReq); else @@ -113,24 +104,22 @@ void fpcCtRq_Handler(void) { fpcCtIt_Method((cNdIt_MethodFunc)fpcCtRq_Do, NULL); } -extern void* cMl_NS_memalignB(int, unsigned long); -extern int fpcBs_MakeOfId(void); +extern void* cMl_NS_memalignB(s32, u32); -create_request* fpcCtRq_Create(layer_class* pLayer, unsigned long size, - create_request_method_class* pMthd) { +create_request* fpcCtRq_Create(layer_class* pLayer, u32 size, create_request_method_class* pMthd) { create_request* pReq = (create_request*)cMl_NS_memalignB(-4, size); if (pReq != NULL) { - fpcCtTg_Init(pReq, pReq); + fpcCtTg_Init(&pReq->mBase, 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; + pReq->mbIsCancelling = FALSE; fpcCtRq_ToCreateQ(pReq); } return pReq; } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_create_tag.cpp b/src/f/f_pc/f_pc_create_tag.cpp index f8fe89be2d..a369dc65a4 100644 --- a/src/f/f_pc/f_pc_create_tag.cpp +++ b/src/f/f_pc/f_pc_create_tag.cpp @@ -1,6 +1,5 @@ #include "f/f_pc/f_pc_create_tag.h" -#include "global.h" // g_fpcCtTg_Queue extern node_list_class lbl_803A3990; @@ -15,8 +14,8 @@ void fpcCtTg_CreateQTo(create_tag_class* pTag) { cTg_SingleCut(pTag); } -int fpcCtTg_Init(create_tag* pTag, void* pUserData) { - cTg_Create(pTag, pUserData); +s32 fpcCtTg_Init(create_tag* pTag, void* pUserData) { + cTg_Create(&pTag->mBase, pUserData); return 1; } -}; +} diff --git a/src/f/f_pc/f_pc_creator.cpp b/src/f/f_pc/f_pc_creator.cpp index 8721faa620..fd18f79bec 100644 --- a/src/f/f_pc/f_pc_creator.cpp +++ b/src/f/f_pc/f_pc_creator.cpp @@ -1,23 +1,24 @@ #include "f/f_pc/f_pc_creator.h" +#include "dolphin/types.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) { +BOOL fpcCt_IsCreatingByID(u32 id) { return fpcCtRq_IsCreatingByID(id); } -int fpcCt_IsDoing(base_process_class* pProc) { +s32 fpcCt_IsDoing(base_process_class* pProc) { return fpcCtRq_IsDoing(pProc->mpCtRq); } -void fpcCt_Abort(base_process_class* pProc) { - fpcCtRq_Cancel(pProc->mpCtRq); +BOOL fpcCt_Abort(base_process_class* pProc) { + return fpcCtRq_Cancel(pProc->mpCtRq); } void fpcCt_Handler(void) { fpcCtRq_Handler(); } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_delete_tag.cpp b/src/f/f_pc/f_pc_delete_tag.cpp index ca523ebec9..979131efe2 100644 --- a/src/f/f_pc/f_pc_delete_tag.cpp +++ b/src/f/f_pc/f_pc_delete_tag.cpp @@ -1,29 +1,29 @@ - #include "f/f_pc/f_pc_delete_tag.h" -#include "global.h" +#include "dolphin/types.h" // g_fpcDtTg_Queue extern node_list_class lbl_803A39A0; extern "C" { -bool fpcDtTg_IsEmpty(delete_tag_class* pTag) { - return lbl_803A39A0.mSize == 0; +BOOL fpcDtTg_IsEmpty(void) { + return checkEqual(lbl_803A39A0.mSize, 0); } void fpcDtTg_ToDeleteQ(delete_tag_class* pTag) { pTag->mTimer = 1; - cTg_Addition(&lbl_803A39A0, pTag); + cTg_Addition(&lbl_803A39A0, &pTag->mBase); } void fpcDtTg_DeleteQTo(delete_tag_class* pTag) { - cTg_SingleCut(pTag); + cTg_SingleCut(&pTag->mBase); } -int fpcDtTg_Do(delete_tag_class* pTag, delete_tag_func pFunc) { +s32 fpcDtTg_Do(delete_tag_class* pTag, delete_tag_func pFunc) { if (pTag->mTimer <= 0) { + s32 ret; fpcDtTg_DeleteQTo(pTag); - int ret = pFunc(pTag->mpTagData); + ret = pFunc(pTag->mBase.mpTagData); if (ret == 0) { fpcDtTg_ToDeleteQ(pTag); return 0; @@ -36,8 +36,8 @@ int fpcDtTg_Do(delete_tag_class* pTag, delete_tag_func pFunc) { } } -int fpcDtTg_Init(delete_tag_class* pTag, void* pUserData) { - cTg_Create(pTag, pUserData); +s32 fpcDtTg_Init(delete_tag_class* pTag, void* pUserData) { + cTg_Create(&pTag->mBase, pUserData); return 1; } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_deletor.cpp b/src/f/f_pc/f_pc_deletor.cpp index 742d9b253a..9c2a731746 100644 --- a/src/f/f_pc/f_pc_deletor.cpp +++ b/src/f/f_pc/f_pc_deletor.cpp @@ -1,11 +1,103 @@ #include "f/f_pc/f_pc_deletor.h" +#include "SComponent/c_list_iter.h" #include "f/f_pc/f_pc_base.h" #include "f/f_pc/f_pc_creator.h" +#include "f/f_pc/f_pc_executor.h" +#include "f/f_pc/f_pc_layer.h" +#include "f/f_pc/f_pc_layer_iter.h" +#include "f/f_pc/f_pc_node.h" + +// g_fpcDtTg_Queue +extern node_list_class lbl_803A39A0; +// g_fpcNd_type +extern s32 lbl_80450D40; extern "C" { -int fpcDt_Delete(base_process_class* pProc) { +BOOL fpcLd_Use(s16 procName); +s32 fpcLd_IsLoaded(s16 procName); +void fpcLd_Free(s16 procName); +s32 fpcLd_Load(s16 procName); + +BOOL fpcDt_IsComplete() { + return fpcDtTg_IsEmpty(); +} + +s32 fpcDt_deleteMethod(base_process_class* pProc) { + layer_class* layer = pProc->mDtTg.mpLayer; + s16 typeID = pProc->mBsTypeId; + + fpcLy_SetCurrentLayer(layer); + fpcLnTg_QueueTo(&pProc->mLnTg); + if (fpcBs_Delete(pProc) == 1) { + fpcLy_DeletedMesg(layer); + fpcLd_Free(typeID); + return 1; + } else { + return 0; + } +} + +void fpcDt_Handler(void) { + cLsIt_Method(&lbl_803A39A0, (cNdIt_MethodFunc)fpcDtTg_Do, fpcDt_deleteMethod); +} + +s32 fpcDt_ToQueue(base_process_class* pProc) { + if (pProc->mUnk0 != 1 && fpcBs_IsDelete(pProc) == 1) { + if (fpcPi_IsInQueue(&pProc->mPi) == 1) { + fpcPi_Delete(&pProc->mPi); + } + pProc->mDtTg.mpLayer = pProc->mLyTg.mpLayer; + fpcDtTg_ToDeleteQ(&pProc->mDtTg); + fpcLy_DeletingMesg(pProc->mLyTg.mpLayer); + return 1; + } else { + return 0; + } +} + +s32 fpcDt_ToDeleteQ(base_process_class* pProc) { + if (pProc->mUnk0 == 1) { + return 0; + } else { + if (cTg_IsUse(&pProc->mDtTg.mBase) != 0) { + return 1; + } else { + if (fpcBs_Is_JustOfType(lbl_80450D40, pProc->mSubType) != 0) { + process_node_class* procNode = (process_node_class*)pProc; + if (fpcNd_IsDeleteTiming(procNode) == 0) { + return 0; + } else { + layer_class* layer = &procNode->mLayer; + fpcLy_Cancel(layer); + if (fpcLyIt_OnlyHereLY(layer, (cNdIt_MethodFunc)fpcDt_ToDeleteQ, NULL) == 0) { + return 0; + } + } + } + if (fpcDt_ToQueue(pProc) == 1) { + // return type has to be BOOL + if (fpcEx_IsExist(pProc->mBsPcId) == 1) { + if (fpcEx_ExecuteQTo(pProc) == 0) { + return 0; + } + } else { + // return type is wrong, has to be BOOL + if (fpcCt_Abort(pProc) == 0) { + return 0; + } + } + pProc->mInitState = 3; + return 1; + } else { + return 0; + } + } + } +} + +s32 fpcDt_Delete(base_process_class* pProc) { if (pProc != NULL) { if (fpcCt_IsDoing(pProc) == 1) return 0; @@ -18,4 +110,4 @@ int fpcDt_Delete(base_process_class* pProc) { return 1; } } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_draw.cpp b/src/f/f_pc/f_pc_draw.cpp index 4bf93c8658..bd7b084154 100644 --- a/src/f/f_pc/f_pc_draw.cpp +++ b/src/f/f_pc/f_pc_draw.cpp @@ -1 +1,42 @@ -// ok +#include "f/f_pc/f_pc_draw.h" +#include "f/f_pc/f_pc_layer.h" +#include "f/f_pc/f_pc_pause.h" + +// f_pc_leaf::g_fpcLf_type +extern s32 lbl_80450D30; + +typedef s32 (*cNdIt_MethodFuncFunc)(cNdIt_MethodFunc); + +extern "C" { + +extern void cAPIGph_AfterOfDraw(void); +extern void cAPIGph_BeforeOfDraw(void); + +s32 fpcDw_Execute(base_process_class* pProc) { + if (!fpcPause_IsEnable(pProc, 2)) { + layer_class* curLay; + s32 ret; + process_method_func func; + curLay = fpcLy_CurrentLayer(); + if (fpcBs_Is_JustOfType(lbl_80450D30, pProc->mSubType)) { + func = ((nodedraw_method_class*)pProc->mpPcMtd)->mNodedrawFunc; + } else { + func = ((nodedraw_method_class*)pProc->mpPcMtd)->mNodedrawFunc; + } + fpcLy_SetCurrentLayer(pProc->mLyTg.mpLayer); + ret = func(pProc); + fpcLy_SetCurrentLayer(curLay); + return ret; + } else { + return 0; + } +} + +s32 fpcDw_Handler(cNdIt_MethodFuncFunc param_1, cNdIt_MethodFunc param_2) { + s32 ret; + cAPIGph_BeforeOfDraw(); + ret = param_1(param_2); + cAPIGph_AfterOfDraw(); + return ret; +} +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_draw_priority.cpp b/src/f/f_pc/f_pc_draw_priority.cpp index da77275f43..1019bc7495 100644 --- a/src/f/f_pc/f_pc_draw_priority.cpp +++ b/src/f/f_pc/f_pc_draw_priority.cpp @@ -1,18 +1,16 @@ - #include "f/f_pc/f_pc_draw_priority.h" -#include "global.h" extern "C" { -int fpcDwPi_Get(draw_priority_class* pDwPi) { +s32 fpcDwPi_Get(draw_priority_class* pDwPi) { return pDwPi->mPriority; } -void fpcDwPi_Set(draw_priority_class* pDwPi, int p) { +void fpcDwPi_Set(draw_priority_class* pDwPi, s32 p) { pDwPi->mPriority = p; } -void fpcDwPi_Init(draw_priority_class* pDwPi, int p) { +void fpcDwPi_Init(draw_priority_class* pDwPi, s32 p) { fpcDwPi_Set(pDwPi, p); } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_executor.cpp b/src/f/f_pc/f_pc_executor.cpp index 5c38b966c4..872cf2143a 100644 --- a/src/f/f_pc/f_pc_executor.cpp +++ b/src/f/f_pc/f_pc_executor.cpp @@ -1,4 +1,3 @@ - #include "f/f_pc/f_pc_executor.h" #include "f/f_pc/f_pc_base.h" #include "f/f_pc/f_pc_layer.h" @@ -8,12 +7,12 @@ #include "f/f_pc/f_pc_node.h" #include "f/f_pc/f_pc_searcher.h" +// g_fpcNd_type +extern s32 lbl_80450D40; + extern "C" { -extern int fpcPause_IsEnable(base_process_class* pProc, int); - -// g_fpcNd_type -extern int lbl_80450D40; +extern s32 fpcPause_IsEnable(base_process_class* pProc, s32); base_process_class* fpcEx_Search(void* pFunc, void* pUserData) { return (base_process_class*)fpcLyIt_AllJudge((cNdIt_MethodFunc)pFunc, pUserData); @@ -27,23 +26,22 @@ base_process_class* fpcEx_SearchByID(u32 id) { ; } -bool fpcEx_IsExist(int id) { - return fpcEx_SearchByID(id) != NULL; +BOOL fpcEx_IsExist(s32 id) { + return fpcEx_SearchByID(id) != NULL ? 1 : 0; } -int fpcEx_Execute(base_process_class* pProc) { +s32 fpcEx_Execute(base_process_class* pProc) { if (pProc->mInitState != 2 || fpcPause_IsEnable(pProc, 1) == 1) return 0; - fpcBs_Execute(pProc); - // TODO: missing return? + return fpcBs_Execute(pProc); } -int fpcEx_ToLineQ(base_process_class* pProc) { +s32 fpcEx_ToLineQ(base_process_class* pProc) { layer_class* pLayer = pProc->mLyTg.mpLayer; - base_process_class* pLayerPcNode = pLayer->mpPcNode; + base_process_class* pLayerPcNode = &pLayer->mpPcNode->mBase; - if (pLayer->mLayerID == 0 || cTg_IsUse(&pLayerPcNode->mLnTg) == true) { - int ret = fpcLnTg_ToQueue(&pProc->mLnTg, pProc->mPi.mInfoCurr.mListID); + if (pLayer->mLayerID == 0 || cTg_IsUse(&pLayerPcNode->mLnTg.mBase) == TRUE) { + s32 ret = fpcLnTg_ToQueue(&pProc->mLnTg, pProc->mPi.mInfoCurr.mListID); if (ret == 0) { fpcLyTg_QueueTo(&pProc->mLyTg); return 0; @@ -61,8 +59,8 @@ int fpcEx_ToLineQ(base_process_class* pProc) { return 0; } -int fpcEx_ExecuteQTo(base_process_class* pProc) { - int ret = fpcLyTg_QueueTo(&pProc->mLyTg); +s32 fpcEx_ExecuteQTo(base_process_class* pProc) { + s32 ret = fpcLyTg_QueueTo(&pProc->mLyTg); if (ret == 1) { pProc->mInitState = 3; return 1; @@ -71,8 +69,8 @@ int fpcEx_ExecuteQTo(base_process_class* pProc) { } } -int fpcEx_ToExecuteQ(base_process_class* pProc) { - int ret = fpcLyTg_ToQueue(&pProc->mLyTg, pProc->mPi.mInfoCurr.mLayer, +s32 fpcEx_ToExecuteQ(base_process_class* pProc) { + s32 ret = fpcLyTg_ToQueue(&pProc->mLyTg, pProc->mPi.mInfoCurr.mLayer, pProc->mPi.mInfoCurr.mListID, pProc->mPi.mInfoCurr.mListPrio); if (ret == 1) { fpcEx_ToLineQ(pProc); @@ -83,6 +81,6 @@ int fpcEx_ToExecuteQ(base_process_class* pProc) { } void fpcEx_Handler(cNdIt_MethodFunc pFunc) { - return fpcLnIt_Queue(pFunc); + fpcLnIt_Queue(pFunc); } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_fstcreate_req.cpp b/src/f/f_pc/f_pc_fstcreate_req.cpp index 4bf93c8658..814919f049 100644 --- a/src/f/f_pc/f_pc_fstcreate_req.cpp +++ b/src/f/f_pc/f_pc_fstcreate_req.cpp @@ -1 +1,55 @@ -// ok +#include "f/f_pc/f_pc_fstcreate_req.h" +#include "dolphin/types.h" + +// f_pc_fstcreate_req::submethod$2214 +extern create_request_method_class lbl_803A3AE0; + +extern "C" { + +BOOL fpcLd_Use(s16 procName); +s32 fpcLd_IsLoaded(s16 procName); +void fpcLd_Free(s16 procName); +s32 fpcLd_Load(s16 procName); + +s32 fpcFCtRq_Do(fast_create_request* pFstCreateReq) { + if (pFstCreateReq->mpFastCreateFunc != NULL && + pFstCreateReq->mpFastCreateFunc(pFstCreateReq->mBase.mpRes, + pFstCreateReq->mpFastCreateData) == 0) { + return 3; + } else { + return 4; + } +} + +s32 fpcFCtRq_Delete(fast_create_request* ppFstCreateReq) { + return 1; +} + +base_process_class* fpcFCtRq_Request(layer_class* pLayer, s16 pProcTypeID, + fstCreateFunc pFastCreateFunc, void* pFastCreateData, + void* pData) { + if (!fpcLd_Use(pProcTypeID)) { + return NULL; + } else { + fast_create_request* request = + (fast_create_request*)fpcCtRq_Create(pLayer, 0x50, &lbl_803A3AE0); + if (request != NULL) { + base_process_class* proc; + fpcLy_SetCurrentLayer(pLayer); + proc = fpcBs_Create(pProcTypeID, fpcBs_MakeOfId(), pData); + if (proc != NULL) { + proc->mpCtRq = (struct create_request*)request; + request->mBase.mpRes = proc; + request->mBase.mBsPcId = proc->mBsPcId; + if (fpcBs_SubCreate(proc) == 2) { + request->mpFastCreateFunc = pFastCreateFunc; + request->mpFastCreateData = pFastCreateData; + return proc; + } + } + fpcCtRq_Cancel(&request->mBase); + } + return NULL; + } +} +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_layer.cpp b/src/f/f_pc/f_pc_layer.cpp index 3ac26bb0e5..0eee81c461 100644 --- a/src/f/f_pc/f_pc_layer.cpp +++ b/src/f/f_pc/f_pc_layer.cpp @@ -1,7 +1,7 @@ #include "f/f_pc/f_pc_layer.h" +#include "dolphin/types.h" #include "f/f_pc/f_pc_method_iter.h" #include "f/f_pc/f_pc_method_tag.h" -#include "global.h" // f_pc_layer::l_fpcLy_CurrLayer_p extern layer_class* lbl_80450D18; @@ -22,51 +22,51 @@ void fpcLy_CancelQTo(process_method_tag_class* pMthd) { fpcMtdTg_MethodQTo(pMthd); } -int fpcLy_ToCancelQ(layer_class* pLayer, process_method_tag_class* pMthd) { +s32 fpcLy_ToCancelQ(layer_class* pLayer, process_method_tag_class* pMthd) { return fpcMtdTg_ToMethodQ(&pLayer->mCancelList, pMthd); } -bool fpcLy_CancelMethod(process_method_tag_class* pLayer) { - return fpcMtdTg_Do(pLayer) == 1; +BOOL fpcLy_CancelMethod(process_method_tag_class* pLayer) { + return checkEqual(1, fpcMtdTg_Do(pLayer)); } -int fpcLy_IntoQueue(layer_class* pLayer, int treeListIdx, create_tag_class* pTag, int idx) { +s32 fpcLy_IntoQueue(layer_class* pLayer, s32 treeListIdx, create_tag_class* pTag, s32 idx) { return cTg_InsertToTree(&pLayer->mNodeListTree, treeListIdx, pTag, idx); } -int fpcLy_ToQueue(layer_class* pLayer, int treeListIdx, create_tag_class* pTag) { +s32 fpcLy_ToQueue(layer_class* pLayer, s32 treeListIdx, create_tag_class* pTag) { return cTg_AdditionToTree(&pLayer->mNodeListTree, treeListIdx, pTag); } -int fpcLy_QueueTo(layer_class* pLayer, create_tag_class* pTag) { +s32 fpcLy_QueueTo(layer_class* pLayer, create_tag_class* pTag) { return cTg_SingleCutFromTree(pTag); } -bool fpcLy_IsDeletingMesg(layer_class* pLayer) { - return pLayer->mDeletingCount > 0; +BOOL fpcLy_IsDeletingMesg(layer_class* pLayer) { + return pLayer->counts.mDeletingCount > 0; } void fpcLy_DeletingMesg(layer_class* pLayer) { - pLayer->mDeletingCount++; + pLayer->counts.mDeletingCount++; } void fpcLy_DeletedMesg(layer_class* pLayer) { - if (pLayer->mDeletingCount > 0) { - pLayer->mDeletingCount--; + if (pLayer->counts.mDeletingCount > 0) { + pLayer->counts.mDeletingCount--; } } -bool fpcLy_IsCreatingMesg(layer_class* pLayer) { - return pLayer->mCreatingCount > 0; +BOOL fpcLy_IsCreatingMesg(layer_class* pLayer) { + return pLayer->counts.mCreatingCount > 0; } void fpcLy_CreatingMesg(layer_class* pLayer) { - pLayer->mCreatingCount++; + pLayer->counts.mCreatingCount++; } void fpcLy_CreatedMesg(layer_class* pLayer) { - if (pLayer->mCreatingCount > 0) { - pLayer->mCreatingCount--; + if (pLayer->counts.mCreatingCount > 0) { + pLayer->counts.mCreatingCount--; } } @@ -82,7 +82,7 @@ layer_class* fpcLy_CurrentLayer(void) { return lbl_80450D18; } -layer_class* fpcLy_Search(unsigned int id) { +layer_class* fpcLy_Search(u32 id) { layer_class* iVar1 = fpcLy_RootLayer(); while (iVar1 != NULL) { if (iVar1->mLayerID == id) { @@ -93,7 +93,7 @@ layer_class* fpcLy_Search(unsigned int id) { return NULL; } -layer_class* fpcLy_Layer(unsigned int id) { +layer_class* fpcLy_Layer(u32 id) { if (id == 0 || fpcLy_RootLayer()->mLayerID == id) { return fpcLy_RootLayer(); } else if (id == ~2 || fpcLy_CurrentLayer()->mLayerID == id) { @@ -104,12 +104,12 @@ layer_class* fpcLy_Layer(unsigned int id) { } void fpcLy_Regist(layer_class* pLayer) { - cLs_Addition(&lbl_803A39DC, &pLayer->mNode); + cLs_Addition(&lbl_803A39DC, (node_class*)pLayer); } -int fpcLy_Delete(layer_class* pLayer) { +s32 fpcLy_Delete(layer_class* pLayer) { if (pLayer->mNodeListTree.mpLists->mSize == 0 && pLayer->mCancelList.mSize == 0) { - cLs_SingleCut(&pLayer->mNode); + cLs_SingleCut((node_class*)pLayer); *pLayer = lbl_803A39B0; return 1; } else { @@ -122,9 +122,9 @@ void fpcLy_Cancel(layer_class* pLayer) { } void fpcLy_Create(layer_class* pLayer, process_node_class* pPcNode, node_list_class* pLists, - int listNum) { + s32 listNum) { void* pvVar1; - int iVar2; + s32 iVar2; if (lbl_80450D20 == 0) { lbl_80450D1C = 0x1; // IsInitOfLayerList @@ -135,7 +135,7 @@ void fpcLy_Create(layer_class* pLayer, process_node_class* pPcNode, node_list_cl lbl_80450D28 = 1; } *pLayer = lbl_803A39B0; - cNd_Create(&pLayer->mNode, NULL); + cNd_Create((node_class*)pLayer, NULL); pLayer->mLayerID = lbl_80450D24++; pLayer->mpPcNode = pPcNode; if (lbl_80450D1C == 0x1) { diff --git a/src/f/f_pc/f_pc_layer_iter.cpp b/src/f/f_pc/f_pc_layer_iter.cpp index 34ce256bdf..8f395dfdd7 100644 --- a/src/f/f_pc/f_pc_layer_iter.cpp +++ b/src/f/f_pc/f_pc_layer_iter.cpp @@ -4,15 +4,15 @@ extern "C" { -int fpcLyIt_OnlyHere(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData) { +s32 fpcLyIt_OnlyHere(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData) { layer_iter lIter; lIter.mpFunc = pFunc; lIter.mpUserData = pUserData; return cTrIt_Method(&pLayer->mNodeListTree, (cNdIt_MethodFunc)cTgIt_MethodCall, &lIter); } -int fpcLyIt_OnlyHereLY(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData) { - int result; +s32 fpcLyIt_OnlyHereLY(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData) { + s32 result; layer_class* currentLayer = fpcLy_CurrentLayer(); fpcLy_SetCurrentLayer(pLayer); result = fpcLyIt_OnlyHere(pLayer, pFunc, pUserData); @@ -29,10 +29,11 @@ void* fpcLyIt_Judge(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData void* fpcLyIt_AllJudge(cNdIt_MethodFunc pFunc, void* pUserData) { layer_iter lIter; + layer_class* current; lIter.mpFunc = pFunc; lIter.mpUserData = pUserData; - layer_class* current = fpcLy_RootLayer(); + current = fpcLy_RootLayer(); while (current != NULL) { void* result = cTrIt_Judge(¤t->mNodeListTree, (cNdIt_JudgeFunc)cTgIt_JudgeFilter, &lIter); diff --git a/src/f/f_pc/f_pc_layer_tag.cpp b/src/f/f_pc/f_pc_layer_tag.cpp index 12ab45000c..083b5d055e 100644 --- a/src/f/f_pc/f_pc_layer_tag.cpp +++ b/src/f/f_pc/f_pc_layer_tag.cpp @@ -1,6 +1,6 @@ #include "f/f_pc/f_pc_layer_tag.h" +#include "dolphin/types.h" #include "f/f_pc/f_pc_layer.h" -#include "global.h" // f_pc_layer_tag::crear extern layer_management_tag_class lbl_803A3A00; @@ -16,7 +16,7 @@ s32 fpcLyTg_ToQueue(layer_management_tag_class* pTag, u32 layerID, u16 listID, u pTag->mpLayer = fpcLy_Layer(layerID); } if (layerID == -1 || layerID == -3) { - int tmp = fpcLy_ToQueue(pTag->mpLayer, listID, &pTag->mCreateTag); + s32 tmp = fpcLy_ToQueue(pTag->mpLayer, listID, &pTag->mCreateTag); if (tmp != 0x0) { pTag->mNodeListID = listID; pTag->mNodeListIdx = tmp - 1; @@ -55,9 +55,10 @@ s32 fpcLyTg_Move(layer_management_tag_class* pTag, u32 layerID, u16 listID, u16 } s32 fpcLyTg_Init(layer_management_tag_class* pTag, u32 param2, void* param3) { + layer_class* layer; *pTag = lbl_803A3A00; cTg_Create(&pTag->mCreateTag, param3); - layer_class* layer = fpcLy_Layer(param2); + layer = fpcLy_Layer(param2); if (layer != NULL) { pTag->mpLayer = layer; return 1; diff --git a/src/f/f_pc/f_pc_leaf.cpp b/src/f/f_pc/f_pc_leaf.cpp index 9bd786806d..76d89d000c 100644 --- a/src/f/f_pc/f_pc_leaf.cpp +++ b/src/f/f_pc/f_pc_leaf.cpp @@ -1,23 +1,51 @@ - #include "f/f_pc/f_pc_leaf.h" +#include "dolphin/types.h" + +// f_pc_leaf::g_fpcLf_type +extern s32 lbl_80450D30; extern "C" { -int fpcLf_GetPriority(leafdraw_class* pLeaf) { +s32 fpcLf_GetPriority(leafdraw_class* pLeaf) { return fpcDwPi_Get(&pLeaf->mDwPi); } -int fpcLf_DrawMethod(leafdraw_method_class* pMthd, void* pUserData) { +s32 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; +s32 fpcLf_Draw(leafdraw_class* pLeaf) { + s32 ret = 0; if (pLeaf->mbUnk0 == 0) ret = fpcLf_DrawMethod(pLeaf->mpDrawMtd, pLeaf); return ret; } -#endif -}; + +s32 fpcLf_Execute(leafdraw_class* pLeaf) { + return fpcMtd_Execute(&pLeaf->mpDrawMtd->mBase, pLeaf); +} + +s32 fpcLf_IsDelete(leafdraw_class* pLeaf) { + return fpcMtd_IsDelete(&pLeaf->mpDrawMtd->mBase, pLeaf); +} + +s32 fpcLf_Delete(leafdraw_class* pLeaf) { + s32 ret = fpcMtd_Delete(&pLeaf->mpDrawMtd->mBase, pLeaf); + if (ret == 1) { + pLeaf->mBase.mSubType = 0; + } + return ret; +} + +s32 fpcLf_Create(leafdraw_class* pLeaf) { + leaf_process_profile_definition* profDef; + if (pLeaf->mBase.mInitState == 0) { + profDef = (leaf_process_profile_definition*)pLeaf->mBase.mpProf; + pLeaf->mpDrawMtd = profDef->mLfDrwMth; + pLeaf->mBase.mSubType = fpcBs_MakeOfType(&lbl_80450D30); + fpcDwPi_Init(&pLeaf->mDwPi, profDef->unk20); + pLeaf->mbUnk0 = 0; + } + return fpcMtd_Create(&pLeaf->mpDrawMtd->mBase, pLeaf); +} +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_line.cpp b/src/f/f_pc/f_pc_line.cpp index 0ce97aadaa..74b7b7582b 100644 --- a/src/f/f_pc/f_pc_line.cpp +++ b/src/f/f_pc/f_pc_line.cpp @@ -8,9 +8,9 @@ extern node_list_class lbl_803F4CF0[16]; extern "C" { void fpcLn_Create(void) { - int i = ARRAY_SIZE(lbl_803F4CF0); + s32 i = ARRAY_SIZE(lbl_803F4CF0); node_list_class* pLine = lbl_803F4CF0; while (i-- > 0) cLs_Create(pLine++); } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_line_iter.cpp b/src/f/f_pc/f_pc_line_iter.cpp index 5df9a3fc85..b4af9e0039 100644 --- a/src/f/f_pc/f_pc_line_iter.cpp +++ b/src/f/f_pc/f_pc_line_iter.cpp @@ -9,12 +9,13 @@ extern node_lists_tree_class lbl_804505D8; extern "C" { -static int fpcLnIt_MethodCall(create_tag_class* pTag, method_filter* pFilter) { +static s32 fpcLnIt_MethodCall(create_tag_class* pTag, method_filter* pFilter) { layer_class* pLayer = ((base_process_class*)pTag->mpTagData)->mLyTg.mpLayer; layer_class* pCurLayer = fpcLy_CurrentLayer(); + s32 ret; fpcLy_SetCurrentLayer(pLayer); - int ret = cTgIt_MethodCall(pTag, pFilter); + ret = cTgIt_MethodCall(pTag, pFilter); fpcLy_SetCurrentLayer(pCurLayer); return ret; @@ -26,4 +27,4 @@ void fpcLnIt_Queue(cNdIt_MethodFunc pFunc) { filter.mpUserData = NULL; cTrIt_Method(&lbl_804505D8, (cNdIt_MethodFunc)fpcLnIt_MethodCall, &filter); } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_line_tag.cpp b/src/f/f_pc/f_pc_line_tag.cpp index f4f92bdadd..ec54ac436f 100644 --- a/src/f/f_pc/f_pc_line_tag.cpp +++ b/src/f/f_pc/f_pc_line_tag.cpp @@ -6,7 +6,7 @@ extern node_lists_tree_class lbl_804505D8; extern "C" { -int fpcLnTg_Move(line_tag* pLineTag, int newLineListID) { +s32 fpcLnTg_Move(line_tag* pLineTag, s32 newLineListID) { if (pLineTag->mLineListID != newLineListID) { fpcLnTg_QueueTo(pLineTag); return fpcLnTg_ToQueue(pLineTag, newLineListID); @@ -16,12 +16,12 @@ int fpcLnTg_Move(line_tag* pLineTag, int newLineListID) { } void fpcLnTg_QueueTo(line_tag* pLineTag) { - cTg_SingleCutFromTree(pLineTag); + cTg_SingleCutFromTree(&pLineTag->mBase); pLineTag->mLineListID = -1; } -int fpcLnTg_ToQueue(line_tag* pLineTag, int lineListID) { - int ret = cTg_AdditionToTree(&lbl_804505D8, lineListID, pLineTag); +s32 fpcLnTg_ToQueue(line_tag* pLineTag, s32 lineListID) { + s32 ret = cTg_AdditionToTree(&lbl_804505D8, lineListID, &pLineTag->mBase); if (ret) { pLineTag->mLineListID = lineListID; @@ -32,7 +32,7 @@ int fpcLnTg_ToQueue(line_tag* pLineTag, int lineListID) { } void fpcLnTg_Init(line_tag* pLineTag, void* pData) { - cTg_Create(pLineTag, pData); + cTg_Create(&pLineTag->mBase, pData); pLineTag->mLineListID = -1; } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_load.cpp b/src/f/f_pc/f_pc_load.cpp index 60fc5640d7..160a856233 100644 --- a/src/f/f_pc/f_pc_load.cpp +++ b/src/f/f_pc/f_pc_load.cpp @@ -1,20 +1,21 @@ #include "f/f_pc/f_pc_load.h" #include "SComponent/c_phase.h" +#include "dolphin/types.h" extern "C" { -extern int cDyl_IsLinked(short procName); -extern int cDyl_Unlink(short procName); -extern int cDyl_LinkASync(short procName); +extern s32 cDyl_IsLinked(s16 procName); +extern s32 cDyl_Unlink(s16 procName); +extern s32 cDyl_LinkASync(s16 procName); -bool fpcLd_Use(u16 procName) { - if (fpcLd_IsLoaded(procName) == true && fpcLd_Load(procName) == cPhs_COMPLEATE_e) - return true; - return false; +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) { +s32 fpcLd_IsLoaded(u16 procName) { return cDyl_IsLinked(procName); } @@ -22,8 +23,8 @@ void fpcLd_Free(u16 procName) { cDyl_Unlink(procName); } -int fpcLd_Load(u16 procName) { - int phase = cDyl_LinkASync(procName); +s32 fpcLd_Load(u16 procName) { + s32 phase = cDyl_LinkASync(procName); switch (phase) { case cPhs_COMPLEATE_e: @@ -34,4 +35,4 @@ int fpcLd_Load(u16 procName) { return cPhs_ERROR_e; } } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_manager.cpp b/src/f/f_pc/f_pc_manager.cpp index 4bf93c8658..f1e9e5c505 100644 --- a/src/f/f_pc/f_pc_manager.cpp +++ b/src/f/f_pc/f_pc_manager.cpp @@ -1 +1,132 @@ -// ok +#include "f/f_pc/f_pc_manager.h" +#include "SComponent/c_tag.h" +#include "d/d_com/d_com_inf_game/d_com_inf_game.h" +#include "d/d_lib/d_lib.h" +#include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_creator.h" +#include "f/f_pc/f_pc_delete_tag.h" +#include "f/f_pc/f_pc_deletor.h" +#include "f/f_pc/f_pc_executor.h" +#include "f/f_pc/f_pc_layer_iter.h" +#include "f/f_pc/f_pc_layer_tag.h" +#include "f/f_pc/f_pc_line.h" +#include "f/f_pc/f_pc_line_iter.h" +#include "f/f_pc/f_pc_line_tag.h" +#include "f/f_pc/f_pc_method.h" +#include "f/f_pc/f_pc_node_req.h" +#include "f/f_pc/f_pc_pause.h" +#include "f/f_pc/f_pc_priority.h" +#include "f/f_pc/f_pc_profile.h" +#include "global.h" +#include "m_Do/m_Do_controller_pad/m_Do_controller_pad.h" + +extern "C" { + +extern u8 lbl_80450D38; +extern s8 lbl_80450D39; +extern u8 lbl_80450EC4; +extern layer_class lbl_803F4DB0; // f_pc_manager::rootlayer$3716 +extern node_list_class lbl_803F4DDC; // f_pc_manager::queue$3717 + +extern void fpcDw_Execute(base_process_class* pProc); +extern void fpcDw_Handler(void*, void*); +extern base_process_class* fpcFCtRq_Request(layer_class* pLayer, s16 pProcTypeID, + FastCreateReqFunc param_3, void* param_4, void* pData); +extern void* fpcCtIt_JudgeInLayer(u32 pLayerID, cNdIt_MethodFunc pFunc, void* pUserData); + +void fpcM_Draw(void* pProc) { + fpcDw_Execute((base_process_class*)pProc); +} + +s32 fpcM_DrawIterater(cNdIt_MethodFunc pFunc) { + return fpcLyIt_OnlyHere(fpcLy_RootLayer(), pFunc, NULL); +} + +void fpcM_Execute(void* pProc) { + fpcEx_Execute((base_process_class*)pProc); +} + +void fpcM_Delete(void* pProc) { + fpcDt_Delete((base_process_class*)pProc); +} + +BOOL fpcM_IsCreating(u32 pID) { + return fpcCt_IsCreatingByID(pID); +} + +typedef void (*fpcM_ManagementFunc)(void); +void fpcM_Management(fpcM_ManagementFunc pFunc1, fpcM_ManagementFunc pFunc2) { + MtxInit(); + dDlst_peekZ_c_NS_peekData(&g_dComIfG_gameInfo.draw_list_list.dlstPeekZ); + if (!dShutdownErrorMsg_c_NS_execute()) { + if (lbl_80450D39 == 0) { + lbl_80450D38 = 0; + lbl_80450D39 = 1; + } + if (!dDvdErrorMsg_c_NS_execute()) { + if (lbl_80450D38 != 0) { + dLib_time_c::startTime(); + Z2SoundMgr_NS_pauseAllGameSound(lbl_80450B60, false); + lbl_80450D38 = 0; + } + cAPIGph_Painter(); + if ((lbl_80450EC4 & 1) == 0) { + fpcDt_Handler(); + } else { + lbl_80450EC4 &= ~1; + } + fpcPi_Handler(); + fpcCt_Handler(); + if (pFunc1 != NULL) { + pFunc1(); + } + fpcEx_Handler((cNdIt_MethodFunc)fpcM_Execute); + fpcDw_Handler((void*)fpcM_DrawIterater, fpcM_Draw); + if (pFunc2 != NULL) { + pFunc2(); + } + dComIfG_play_c_NS_drawSimpleModel(&g_dComIfG_gameInfo.play); + } else if (lbl_80450D38 == 0) { + dLib_time_c::stopTime(); + Z2SoundMgr_NS_pauseAllGameSound(lbl_80450B60, true); + lbl_803DD2D8[0]->stopPatternedRumble(); + lbl_80450D38 = 1; + } + } +} + +void fpcM_Init(void) { + fpcLy_Create(&lbl_803F4DB0, NULL, &lbl_803F4DDC, 10); + fpcLn_Create(); +} + +base_process_class* fpcM_FastCreate(s16 pProcTypeID, FastCreateReqFunc param_2, void* param_3, + void* pData) { + return fpcFCtRq_Request(fpcLy_CurrentLayer(), pProcTypeID, param_2, param_3, pData); +} + +s32 fpcM_IsPause(void* pProc, u8 param_2) { + return fpcPause_IsEnable((base_process_class*)pProc, param_2 & 0xFF); +} + +void fpcM_PauseEnable(void* pProc, u8 param_2) { + fpcPause_Enable((process_node_class*)pProc, param_2 & 0xFF); +} + +void fpcM_PauseDisable(void* pProc, u8 param_2) { + fpcPause_Disable((process_node_class*)pProc, param_2 & 0xFF); +} + +void* fpcM_JudgeInLayer(u32 pLayerID, cNdIt_MethodFunc pFunc, void* pUserData) { + layer_class* layer = fpcLy_Layer(pLayerID); + if (layer != NULL) { + void* ret = fpcCtIt_JudgeInLayer(pLayerID, pFunc, pUserData); + if (ret == NULL) { + ret = fpcLyIt_Judge(layer, pFunc, pUserData); + } + return ret; + } else { + return NULL; + } +} +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_method.cpp b/src/f/f_pc/f_pc_method.cpp index cc58c141a5..eaf0facdd6 100644 --- a/src/f/f_pc/f_pc_method.cpp +++ b/src/f/f_pc/f_pc_method.cpp @@ -1,29 +1,29 @@ #include "f/f_pc/f_pc_method.h" -#include "global.h" +#include "dolphin/types.h" extern "C" { -int fpcMtd_Method(process_method_func pFunc, void* pUserData) { +s32 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) { +s32 fpcMtd_Execute(process_method_class* pMthd, void* pUserData) { return fpcMtd_Method(pMthd->mpExecuteFunc, pUserData); } -int fpcMtd_IsDelete(process_method_class* pMthd, void* pUserData) { +s32 fpcMtd_IsDelete(process_method_class* pMthd, void* pUserData) { return fpcMtd_Method(pMthd->mpIsDeleteFunc, pUserData); } -int fpcMtd_Delete(process_method_class* pMthd, void* pUserData) { +s32 fpcMtd_Delete(process_method_class* pMthd, void* pUserData) { return fpcMtd_Method(pMthd->mpDeleteFunc, pUserData); } -int fpcMtd_Create(process_method_class* pMthd, void* pUserData) { +s32 fpcMtd_Create(process_method_class* pMthd, void* pUserData) { return fpcMtd_Method(pMthd->mpCreateFunc, pUserData); } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_method_iter.cpp b/src/f/f_pc/f_pc_method_iter.cpp index a848b177c0..a38b5256a6 100644 --- a/src/f/f_pc/f_pc_method_iter.cpp +++ b/src/f/f_pc/f_pc_method_iter.cpp @@ -1,10 +1,9 @@ - #include "f/f_pc/f_pc_method_iter.h" -#include "global.h" +#include "dolphin/types.h" extern "C" { void fpcMtdIt_Method(node_list_class* pList, cNdIt_MethodFunc pMethod) { cLsIt_Method(pList, pMethod, NULL); } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_method_tag.cpp b/src/f/f_pc/f_pc_method_tag.cpp index 70ef343051..777f0330a3 100644 --- a/src/f/f_pc/f_pc_method_tag.cpp +++ b/src/f/f_pc/f_pc_method_tag.cpp @@ -6,22 +6,22 @@ extern node_lists_tree_class lbl_804505D8; extern "C" { -int fpcMtdTg_Do(process_method_tag_class* pMthd) { +s32 fpcMtdTg_Do(process_method_tag_class* pMthd) { return pMthd->mpFunc(pMthd->mpMthdData); } -int fpcMtdTg_ToMethodQ(node_list_class* pList, process_method_tag_class* pMthd) { - return cTg_Addition(pList, pMthd); +s32 fpcMtdTg_ToMethodQ(node_list_class* pList, process_method_tag_class* pMthd) { + return cTg_Addition(pList, &pMthd->mCreateTag); } void fpcMtdTg_MethodQTo(process_method_tag_class* pMthd) { - cTg_SingleCut(pMthd); + cTg_SingleCut(&pMthd->mCreateTag); } -int fpcMtdTg_Init(process_method_tag_class* pMthd, process_method_tag_func pFunc, void* pMthdData) { - cTg_Create(pMthd, pMthd); +s32 fpcMtdTg_Init(process_method_tag_class* pMthd, process_method_tag_func pFunc, void* pMthdData) { + cTg_Create(&pMthd->mCreateTag, pMthd); pMthd->mpFunc = pFunc; pMthd->mpMthdData = pMthdData; return 1; } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_node.cpp b/src/f/f_pc/f_pc_node.cpp index 4bf93c8658..7b4e748a62 100644 --- a/src/f/f_pc/f_pc_node.cpp +++ b/src/f/f_pc/f_pc_node.cpp @@ -1 +1,94 @@ -// ok +#include "f/f_pc/f_pc_node.h" +#include "dolphin/types.h" +#include "f/f_pc/f_pc_layer_iter.h" + +// g_fpcNd_type +extern s32 lbl_80450D40; +// f_pc_node::g_fpcNd_IsCheckOfDeleteTiming +extern s32 lbl_804505E0; + +extern "C" { + +s32 fpcNd_DrawMethod(nodedraw_method_class* pNodeMethod, void* pData) { + return fpcMtd_Method(pNodeMethod->mNodedrawFunc, pData); +} + +s32 fpcNd_Draw(process_node_class* pProcNode) { + s32 uVar2 = 0x0; + if (pProcNode->mUnk0 == 0) { + layer_class* uVar1 = fpcLy_CurrentLayer(); + fpcLy_SetCurrentLayer(&pProcNode->mLayer); + uVar2 = fpcNd_DrawMethod(pProcNode->mpNodeMtd, pProcNode); + fpcLy_SetCurrentLayer(uVar1); + } + return uVar2; +} + +s32 fpcNd_Execute(process_node_class* pProcNode) { + s32 ret; + layer_class* uVar1 = fpcLy_CurrentLayer(); + fpcLy_SetCurrentLayer(&pProcNode->mLayer); + ret = fpcMtd_Execute(&pProcNode->mpNodeMtd->mBase, pProcNode); + fpcLy_SetCurrentLayer(uVar1); + return ret; +} + +void* fpcNd_IsCreatingFromUnder(process_node_class* pProcNode) { + layer_class* layer; + if (pProcNode != NULL && + fpcBs_Is_JustOfType(lbl_80450D40, pProcNode->mBase.mSubType) != FALSE) { + layer = &pProcNode->mLayer; + if (fpcLy_IsCreatingMesg(layer) == 0x0) { + return (process_node_class*)fpcLyIt_Judge( + layer, (cNdIt_MethodFunc)fpcNd_IsCreatingFromUnder, NULL); + } else { + return pProcNode; + } + } else { + return NULL; + } +} + +s32 fpcNd_IsDeleteTiming(process_node_class* pProcNode) { + if (lbl_804505E0 == 0x1 && fpcNd_IsCreatingFromUnder(pProcNode) != NULL) { + return 0; + } else { + return 1; + } +} + +s32 fpcNd_IsDelete(process_node_class* pProcNode) { + return fpcMtd_IsDelete(&pProcNode->mpNodeMtd->mBase, pProcNode); +} + +s32 fpcNd_Delete(process_node_class* pProcNode) { + if ((fpcLy_IsDeletingMesg(&pProcNode->mLayer) == 0x0) && + fpcMtd_Delete(&pProcNode->mpNodeMtd->mBase, pProcNode) == 0x1) { + pProcNode->mBase.mSubType = 0x0; + return fpcLy_Delete(&pProcNode->mLayer); + } else { + return 0; + } +} + +s32 fpcNd_Create(process_node_class* pProcNode1) { + // this cast looks like a fake match, but it doesn't match without the cast, naive approach + // swaps r31 and r30 most likely it gets casted to another unknown struct + process_node_class* pProcNode = (process_node_class*)pProcNode1; + layer_class* uVar2; + s32 uVar3; + if (pProcNode->mBase.mInitState == 0) { + node_process_profile_definition* pProcProfileDef = + (node_process_profile_definition*)pProcNode->mBase.mpProf; + pProcNode->mBase.mSubType = fpcBs_MakeOfType(&lbl_80450D40); + pProcNode->mpNodeMtd = pProcProfileDef->mNDrwMthCls; + fpcLy_Create(&pProcNode->mLayer, pProcNode, pProcNode->mLayerNodeLists, 0x10); + pProcNode->mUnk0 = 0; + } + uVar2 = fpcLy_CurrentLayer(); + fpcLy_SetCurrentLayer(&pProcNode->mLayer); + uVar3 = fpcMtd_Create(&pProcNode->mpNodeMtd->mBase, pProcNode); + fpcLy_SetCurrentLayer(uVar2); + return uVar3; +} +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_node_req.cpp b/src/f/f_pc/f_pc_node_req.cpp index 4bf93c8658..38473e4431 100644 --- a/src/f/f_pc/f_pc_node_req.cpp +++ b/src/f/f_pc/f_pc_node_req.cpp @@ -1 +1,309 @@ -// ok +#include "f/f_pc/f_pc_node_req.h" +#include "dolphin/types.h" +#include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_create_req.h" +#include "f/f_pc/f_pc_creator.h" +#include "f/f_pc/f_pc_deletor.h" +#include "f/f_pc/f_pc_executor.h" +#include "f/f_pc/f_pc_layer.h" + +// f_pc_node_req::l_fpcNdRq_Queue +extern node_list_class lbl_803A3A38; +// f_pc_node_req::clear$2359 +extern node_create_request lbl_803A3A44; +// f_pc_node_req::methods$2376 +extern cPhs__Handler lbl_803A3AA8[6]; +// f_pc_node_req::methods$2386 +extern cPhs__Handler lbl_803A3AC0[4]; +// f_pc_node_req::methods$2397 +extern cPhs__Handler lbl_803A3AD0[4]; +// f_pc_node_req::request_id$2360 +extern s32 lbl_80450D48; +extern s8 lbl_80450D4C; + +extern "C" { + +extern void cMl_NS_free(void*); +extern s32 fpcSCtRq_Request(layer_class*, s16, process_method_func, void*, void*); +extern void sBs_ClearArea(void* pPtr, s32 pSize); +extern void* cMl_NS_memalignB(s32 pAlign, s32 pSize); + +void fpcNdRq_RequestQTo(node_create_request* pNodeCreateReq) { + fpcLy_CreatedMesg(pNodeCreateReq->mpLayerClass); + fpcLy_CancelQTo(&pNodeCreateReq->mProcMthCls); + cTg_SingleCut(&pNodeCreateReq->mCreateTag); +} + +void fpcNdRq_ToRequestQ(node_create_request* pNodeCreateReq) { + cTg_Addition(&lbl_803A3A38, &pNodeCreateReq->mCreateTag); + fpcLy_ToCancelQ(pNodeCreateReq->mpLayerClass, &pNodeCreateReq->mProcMthCls); + fpcLy_CreatingMesg(pNodeCreateReq->mpLayerClass); +} + +s32 fpcNdRq_phase_IsCreated(node_create_request* pNodeCreateReq) { + if (fpcCtRq_IsCreatingByID(pNodeCreateReq->mCreatingID) == TRUE) { + return cPhs_ZERO_e; + } else { + return fpcEx_IsExist(pNodeCreateReq->mCreatingID) == TRUE ? 2 : 3; + } +} + +s32 fpcNdRq_phase_Create(node_create_request* pNodeCreateReq) { + pNodeCreateReq->mCreatingID = + fpcSCtRq_Request(pNodeCreateReq->mpLayerClass, pNodeCreateReq->mProcName, + pNodeCreateReq->mpNodeCrReqMthCls->mpPostMethodFunc, pNodeCreateReq, + pNodeCreateReq->mpUserData); + return pNodeCreateReq->mCreatingID == -1 ? 3 : 2; +} + +s32 fpcNdRq_phase_IsDeleteTiming(node_create_request* pNodeCreateReq) { + return 2; +} + +s32 fpcNdRq_phase_IsDeleted(node_create_request* pNodeCreateReq) { + return fpcDt_IsComplete() == 0 ? cPhs_ZERO_e : 2; +} + +s32 fpcNdRq_phase_Delete(node_create_request* pNodeCreateReq) { + if (pNodeCreateReq->mNodeProc.mpNodeProc != NULL) { + if (fpcDt_Delete(&pNodeCreateReq->mNodeProc.mpNodeProc->mBase) == 0) { + return cPhs_ZERO_e; + } + pNodeCreateReq->mNodeProc.mpNodeProc = NULL; + } + return 2; +} + +s32 fpcNdRq_DoPhase(node_create_request* pNodeCreateReq) { + s32 result = + cPhs_Handler(&pNodeCreateReq->mReqPhsProc, pNodeCreateReq->mpPhsHandler, pNodeCreateReq); + if (result == 0x2) { + return fpcNdRq_DoPhase(pNodeCreateReq); + } + return result; +} + +s32 fpcNdRq_Execute(node_create_request* pNodeCreateReq) { + s32 result = fpcNdRq_DoPhase(pNodeCreateReq); + switch (result) { + case 0: + case 1: + return 0; + case 4: + return 2; + case 5: + case 3: + return 3; + default: + return result; + } +} + +s32 fpcNdRq_Delete(node_create_request* pNodeCreateReq) { + fpcNdRq_RequestQTo(pNodeCreateReq); + if (pNodeCreateReq->mpNodeCrReqMthCls != NULL && + pNodeCreateReq->mpNodeCrReqMthCls->mpUnkFunc != NULL && + fpcMtd_Method(pNodeCreateReq->mpNodeCrReqMthCls->mpUnkFunc, pNodeCreateReq) == 0) { + return 0; + } + cMl_NS_free(pNodeCreateReq); + return 1; +} + +s32 fpcNdRq_Cancel(node_create_request* pNodeCreateReq) { + if (pNodeCreateReq->mpNodeCrReqMthCls != NULL && + fpcMtd_Method(pNodeCreateReq->mpNodeCrReqMthCls->mpCancelFunc, pNodeCreateReq) == 0) { + return 0; + } + return fpcNdRq_Delete(pNodeCreateReq); +} + +#define NODE_GET_NEXT(pNode) (pNode ? pNode->mpNextNode : NULL) +s32 fpcNdRq_Handler(void) { + node_class* currentNode = lbl_803A3A38.mpHead; + while (currentNode != NULL) { + node_create_request* req = ((request_node_class*)currentNode)->mNodeCrReq; + switch (req->mpNodeCrReqMthCls->mpExecuteFunc(req)) { + case 3: + case 5: + currentNode = NODE_GET_NEXT(currentNode); + if (fpcNdRq_Cancel(req) == 0) { + return 0; + } + break; + case 4: + currentNode = NODE_GET_NEXT(currentNode); + if (fpcNdRq_Delete(req) == 0) { + return 0; + } + break; + default: + currentNode = NODE_GET_NEXT(currentNode); + break; + } + } + return 1; +} + +s32 fpcNdRq_IsPossibleTarget(process_node_class* pProcNode) { + s32 bsPcId = pProcNode->mBase.mBsPcId; + request_node_class* currentNode; + node_create_request* currentNdCr; + currentNode = (request_node_class*)lbl_803A3A38.mpHead; + while (currentNode != NULL) { + currentNdCr = currentNode->mNodeCrReq; + if ((currentNdCr->mParameter == 2 || currentNdCr->mParameter == 4 || + currentNdCr->mParameter == 1) && + currentNdCr->mNodeProc.mProcId == bsPcId) { + return 0; + } + currentNode = (request_node_class*)NODE_GET_NEXT((¤tNode->mBase)); + } + return 1; +} + +s32 fpcNdRq_IsIng(process_node_class* pProcNode) { + request_node_class* currentNode; + node_create_request* currentNodeReq; + s32 bsPcId = pProcNode->mBase.mBsPcId; + currentNode = (request_node_class*)lbl_803A3A38.mpHead; + while (currentNode != NULL) { + currentNodeReq = currentNode->mNodeCrReq; + if (currentNodeReq->mCreatingID == bsPcId) { + return 1; + } + currentNode = (request_node_class*)NODE_GET_NEXT((¤tNode->mBase)); + } + return 0; +} + +node_create_request* fpcNdRq_Create(s32 pRequestSize) { + node_create_request* req = (node_create_request*)cMl_NS_memalignB(-4, pRequestSize); + if (req != NULL) { + if (lbl_80450D4C == 0) { + lbl_80450D48 = 0; + lbl_80450D4C = 1; + } + sBs_ClearArea(req, pRequestSize); + *req = lbl_803A3A44; + // req->mCreateTag = lbl_803A3A44.mCreateTag; + // req->mProcMthCls = lbl_803A3A44.mProcMthCls; + // req->mReqPhsProc = lbl_803A3A44.mReqPhsProc; + // req->mpPhsHandler = lbl_803A3A44.mpPhsHandler; + // req->mpNodeCrReqMthCls = lbl_803A3A44.mpNodeCrReqMthCls; + // req->mParameter = lbl_803A3A44.mParameter; + // req->mRequestId = lbl_803A3A44.mRequestId; + // req->mNodeProc = lbl_803A3A44.mNodeProc; + // req->mpLayerClass = lbl_803A3A44.mpLayerClass; + // req->mCreatingID = lbl_803A3A44.mCreatingID; + // req->mProcName = lbl_803A3A44.mProcName; + // req->mpUserData = lbl_803A3A44.mpUserData; + // req->unk_0x60 = lbl_803A3A44.unk_0x60; + cTg_Create(&req->mCreateTag, req); + fpcMtdTg_Init(&req->mProcMthCls, (process_method_tag_func)fpcNdRq_Cancel, req); + req->mRequestId = lbl_80450D48++; + } + return req; +} + +node_create_request* fpcNdRq_ChangeNode(u32 pRequestSize, process_node_class* pProcNode, + s16 param_3, void* param_4) { + if (fpcNdRq_IsPossibleTarget(pProcNode) == 1 && fpcNdRq_IsIng(pProcNode) == 0) { + node_create_request* req = fpcNdRq_Create(pRequestSize); + if (req != NULL) { + req->mpPhsHandler = lbl_803A3AA8; + req->mNodeProc.mpNodeProc = pProcNode; + req->mNodeProc.mProcId = pProcNode->mBase.mBsPcId; + req->mpLayerClass = pProcNode->mBase.mLyTg.mpLayer; + req->mProcName = param_3; + req->mpUserData = param_4; + } + return req; + } else { + return NULL; + } +} + +node_create_request* fpcNdRq_DeleteNode(u32 pRequestSize, process_node_class* pProcNode) { + if (fpcNdRq_IsPossibleTarget(pProcNode) == 1 && fpcNdRq_IsIng(pProcNode) == 0) { + node_create_request* req = fpcNdRq_Create(pRequestSize); + if (req != NULL) { + req->mpPhsHandler = lbl_803A3AC0; + req->mNodeProc.mpNodeProc = pProcNode; + req->mNodeProc.mProcId = pProcNode->mBase.mBsPcId; + req->mpLayerClass = pProcNode->mBase.mLyTg.mpLayer; + } + return req; + } else { + return NULL; + } +} + +node_create_request* fpcNdRq_CreateNode(u32 pRequestSize, s16 param_2, void* param_3) { + layer_class* layer = fpcLy_CurrentLayer(); + if (layer->mLayerID != 0 && fpcNdRq_IsPossibleTarget(layer->mpPcNode) == 0) { + return NULL; + } else { + node_create_request* req = fpcNdRq_Create(pRequestSize); + if (req != NULL) { + req->mpPhsHandler = lbl_803A3AD0; + if (layer->mLayerID != 0) { + req->mNodeProc.mpNodeProc = layer->mpPcNode; + req->mNodeProc.mProcId = layer->mpPcNode->mBase.mBsPcId; + } + req->mpLayerClass = layer; + req->mProcName = param_2; + req->mpUserData = param_3; + } + return req; + } +} + +node_create_request* +fpcNdRq_Request(u32 param_1, s32 param_2, process_node_class* param_3, s16 param_4, void* param_5, + node_create_request_method_class* pNodeCreateRequestMethodClass) { + node_create_request* req; + switch (param_2) { + case 0: + req = fpcNdRq_CreateNode(param_1, param_4, param_5); + break; + case 1: + req = fpcNdRq_DeleteNode(param_1, param_3); + break; + case 2: + req = fpcNdRq_ChangeNode(param_1, param_3, param_4, param_5); + break; + case 4: + break; + } + if (req != NULL) { + req->mParameter = param_2; + req->mpNodeCrReqMthCls = pNodeCreateRequestMethodClass; + fpcNdRq_ToRequestQ(req); + } + return req; +} + +s32 fpcNdRq_ReChangeNode(u32 pRequestId, s16 param_2, void* param_3) { + request_node_class* currentNode; + node_create_request* found; + currentNode = (request_node_class*)lbl_803A3A38.mpHead; + while (currentNode != NULL) { + found = currentNode->mNodeCrReq; + if (found->mParameter == 2 && found->mRequestId == pRequestId) { + if (found->mCreatingID == -2) { + found->mProcName = param_2; + found->mpUserData = param_3; + return 1; + } + return 0; + } + currentNode = (request_node_class*)NODE_GET_NEXT((¤tNode->mBase)); + } + return 0; +} + +s32 fpcNdRq_ReRequest(u32 pRequestId, s16 param_2, void* param_3) { + return fpcNdRq_ReChangeNode(pRequestId, param_2, param_3); +} +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_pause.cpp b/src/f/f_pc/f_pc_pause.cpp index 811403431a..ddcd36e1a6 100644 --- a/src/f/f_pc/f_pc_pause.cpp +++ b/src/f/f_pc/f_pc_pause.cpp @@ -4,25 +4,25 @@ #include "f/f_pc/f_pc_layer_iter.h" #include "f/f_pc/f_pc_node.h" +// f_pc_node::g_fpcNd_type +extern s32 lbl_80450D40; + extern "C" { -// f_pc_node::g_fpcNd_type -extern int lbl_80450D40; - -#if NON_MATCHING -bool fpcPause_IsEnable(void* pProcess, u8 flag) { +#ifdef NON_MATCHING +s32 fpcPause_IsEnable(void* pProcess, u8 flag) { base_process_class* pProc = (base_process_class*)pProcess; // extra addic/subfe? return (pProc->mPauseFlag & flag) == flag; } #else -asm bool fpcPause_IsEnable(void* pProcess, u8 flag) { +asm s32 fpcPause_IsEnable(void* pProcess, u8 flag) { nofralloc -#include "f/f_pc/f_pc_pause/asm/func_80023844.s" +#include "f/f_pc/asm/80023844.s" } #endif -int fpcPause_Enable(void* pProcess, u8 flag) { +s32 fpcPause_Enable(void* pProcess, u8 flag) { base_process_class* pProc = (base_process_class*)pProcess; pProc->mPauseFlag |= flag; @@ -33,15 +33,13 @@ int fpcPause_Enable(void* pProcess, u8 flag) { return 1; } -// According to symbols, they used u8 instead of u32, but I can't get a match with u8 here. This is -// the best I got... -int fpcPause_Disable(void* pProcess, u32 flag) { +s32 fpcPause_Disable(void* pProcess, u8 flag) { base_process_class* pProc = (base_process_class*)pProcess; pProc->mPauseFlag &= (0xFF - flag) & 0xFF; if (fpcBs_Is_JustOfType(lbl_80450D40, pProc->mSubType)) { process_node_class* pNode = (process_node_class*)pProc; - fpcLyIt_OnlyHere(&pNode->mLayer, (cNdIt_MethodFunc)fpcPause_Disable, (void*)(flag & 0xFF)); + fpcLyIt_OnlyHere(&pNode->mLayer, (cNdIt_MethodFunc)fpcPause_Disable, (void*)flag); } return 1; @@ -51,4 +49,4 @@ void fpcPause_Init(void* pProcess) { base_process_class* pProc = (base_process_class*)pProcess; pProc->mPauseFlag = 0; } -} +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_priority.cpp b/src/f/f_pc/f_pc_priority.cpp index 11f1674aa6..74849901f7 100644 --- a/src/f/f_pc/f_pc_priority.cpp +++ b/src/f/f_pc/f_pc_priority.cpp @@ -4,33 +4,33 @@ #include "f/f_pc/f_pc_layer.h" #include "f/f_pc/f_pc_layer_tag.h" -extern "C" { - // f_pc_priority::crear$2186 extern process_priority_queue_info lbl_804505E8; // f_pc_priority::l_fpcPi_Queue extern node_list_class lbl_803F4E58; -int fpcPi_IsInQueue(process_priority_class* pPi) { - return cTg_IsUse(pPi); +extern "C" { + +s32 fpcPi_IsInQueue(process_priority_class* pPi) { + return cTg_IsUse(&pPi->mBase); } -int fpcPi_QueueTo(process_priority_class* pPi) { - cTg_SingleCut(pPi); +s32 fpcPi_QueueTo(process_priority_class* pPi) { + cTg_SingleCut(&pPi->mBase); fpcLy_CancelQTo(&pPi->mMtdTag); return 1; } -int fpcPi_ToQueue(process_priority_class* pPi) { +s32 fpcPi_ToQueue(process_priority_class* pPi) { u32 layer = pPi->mInfoQ.mLayer; - if (cTg_Addition(&lbl_803F4E58, pPi)) { + if (cTg_Addition(&lbl_803F4E58, &pPi->mBase)) { if (layer != 0xFFFFFFFD) { layer_class* pLayer = fpcLy_Layer(layer); if (!fpcLy_ToCancelQ(pLayer, &pPi->mMtdTag)) { - cTg_SingleCut(pPi); + cTg_SingleCut(&pPi->mBase); return 0; } } @@ -45,7 +45,7 @@ process_priority_class* fpcPi_GetFromQueue(void) { process_priority_class* pPi = (process_priority_class*)cTg_GetFirst(&lbl_803F4E58); if (pPi != NULL) { - base_process_class* pProc = (base_process_class*)pPi->mpTagData; + base_process_class* pProc = (base_process_class*)pPi->mBase.mpTagData; process_priority_class* pProcPi = &pProc->mPi; fpcLy_CancelQTo(&pProcPi->mMtdTag); return pProcPi; @@ -54,23 +54,24 @@ process_priority_class* fpcPi_GetFromQueue(void) { return NULL; } -int fpcPi_Delete(process_priority_class* pPi) { +s32 fpcPi_Delete(process_priority_class* pPi) { fpcPi_QueueTo(pPi); - pPi->mInfoQ = lbl_804505E8; + pPi->mInfoQ.mLayer = lbl_804505E8.mLayer; + pPi->mInfoQ.mListID = lbl_804505E8.mListID; + pPi->mInfoQ.mListPrio = lbl_804505E8.mListPrio; return 1; } -int fpcPi_IsNormal(unsigned int layer, unsigned short listID, unsigned short priority) { +s32 fpcPi_IsNormal(u32 layer, u16 listID, u16 priority) { if ((layer < 0xFFFFFFFE) && (listID < 0xFFFE) && (priority < 0xFFFE)) return 1; return 0; } -int fpcPi_Change(process_priority_class* pPi, unsigned int layer, unsigned short listID, - unsigned short priority) { - base_process_class* pProc = (base_process_class*)pPi->mpTagData; - int changed = 0; +s32 fpcPi_Change(process_priority_class* pPi, u32 layer, u16 listID, u16 priority) { + base_process_class* pProc = (base_process_class*)pPi->mBase.mpTagData; + BOOL changed = 0; if (pProc->mInitState == 3) return 0; @@ -78,7 +79,9 @@ int fpcPi_Change(process_priority_class* pPi, unsigned int layer, unsigned short if (!fpcPi_IsNormal(layer, listID, priority)) return 0; - pPi->mInfoQ = pPi->mInfoCurr; + pPi->mInfoQ.mLayer = pPi->mInfoCurr.mLayer; + pPi->mInfoQ.mListID = pPi->mInfoCurr.mListID; + pPi->mInfoQ.mListPrio = pPi->mInfoCurr.mListPrio; if (layer != 0xFFFFFFFD && pPi->mInfoCurr.mLayer != layer) { pPi->mInfoQ.mLayer = layer; @@ -96,7 +99,9 @@ int fpcPi_Change(process_priority_class* pPi, unsigned int layer, unsigned short } if (pProc->mInitState == 0 || pProc->mInitState == 1) { - pPi->mInfoCurr = pPi->mInfoQ; + pPi->mInfoCurr.mLayer = pPi->mInfoQ.mLayer; + pPi->mInfoCurr.mListID = pPi->mInfoQ.mListID; + pPi->mInfoCurr.mListPrio = pPi->mInfoQ.mListPrio; return 1; } @@ -106,15 +111,18 @@ int fpcPi_Change(process_priority_class* pPi, unsigned int layer, unsigned short return 0; } -int fpcPi_Handler(void) { - while (process_priority_class* pPi = fpcPi_GetFromQueue()) { - base_process_class* pProc = (base_process_class*)pPi->mpTagData; +s32 fpcPi_Handler(void) { + process_priority_class* pPi; + while (pPi = fpcPi_GetFromQueue()) { + base_process_class* pProc = (base_process_class*)pPi->mBase.mpTagData; layer_management_tag_class* pLayerTag = &pProc->mLyTg; line_tag* pLineTag = &pProc->mLnTg; if (fpcLyTg_Move(pLayerTag, pPi->mInfoQ.mLayer, pPi->mInfoQ.mListID, pPi->mInfoQ.mListPrio) == 1) { fpcLnTg_Move(pLineTag, pPi->mInfoCurr.mListID); - pPi->mInfoCurr = pPi->mInfoQ; + pPi->mInfoCurr.mLayer = pPi->mInfoQ.mLayer; + pPi->mInfoCurr.mListID = pPi->mInfoQ.mListID; + pPi->mInfoCurr.mListPrio = pPi->mInfoQ.mListPrio; } else { return 0; } @@ -123,17 +131,19 @@ int fpcPi_Handler(void) { return 1; } -int fpcPi_Init(process_priority_class* pPi, void* pUserData, unsigned int layer, - unsigned short listID, unsigned short priority) { +s32 fpcPi_Init(process_priority_class* pPi, void* pUserData, u32 layer, u16 listID, u16 priority) { if (!fpcPi_IsNormal(layer, listID, priority)) return 0; pPi->mInfoQ.mLayer = layer; pPi->mInfoQ.mListID = listID; pPi->mInfoQ.mListPrio = priority; - pPi->mInfoCurr = pPi->mInfoQ; - cTg_Create(pPi, pUserData); + + pPi->mInfoCurr.mLayer = pPi->mInfoQ.mLayer; + pPi->mInfoCurr.mListID = pPi->mInfoQ.mListID; + pPi->mInfoCurr.mListPrio = pPi->mInfoQ.mListPrio; + cTg_Create(&pPi->mBase, pUserData); fpcMtdTg_Init(&pPi->mMtdTag, (process_method_tag_func)fpcPi_Delete, pPi); return 1; } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_profile.cpp b/src/f/f_pc/f_pc_profile.cpp index a9edc3bbc8..a7188e8e76 100644 --- a/src/f/f_pc/f_pc_profile.cpp +++ b/src/f/f_pc/f_pc_profile.cpp @@ -2,11 +2,11 @@ #include "f/f_pc/f_pc_profile.h" // g_fpcPf_ProfileList_p -extern void** lbl_80450D50; +extern process_profile_definition** lbl_80450D50; extern "C" { -void* fpcPf_Get(s16 profileID) { +process_profile_definition* fpcPf_Get(s16 profileID) { return lbl_80450D50[profileID]; } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_searcher.cpp b/src/f/f_pc/f_pc_searcher.cpp index 5bf058475d..9f0bc21cd1 100644 --- a/src/f/f_pc/f_pc_searcher.cpp +++ b/src/f/f_pc/f_pc_searcher.cpp @@ -5,16 +5,16 @@ extern "C" { void* fpcSch_JudgeForPName(base_process_class* pProc, void* pUserData) { - short pname = *(short*)pUserData; + s16 pname = *(s16*)pUserData; if (pProc->mProcName == pname) return pProc; return NULL; } void* fpcSch_JudgeByID(base_process_class* pProc, void* pUserData) { - int id = *(int*)pUserData; + s32 id = *(s32*)pUserData; if (pProc->mBsPcId == id) return pProc; return NULL; } -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_stdcreate_req.cpp b/src/f/f_pc/f_pc_stdcreate_req.cpp index 4bf93c8658..12df68987b 100644 --- a/src/f/f_pc/f_pc_stdcreate_req.cpp +++ b/src/f/f_pc/f_pc_stdcreate_req.cpp @@ -1 +1,113 @@ -// ok +#include "f/f_pc/f_pc_stdcreate_req.h" +#include "dolphin/types.h" +// #include "f/f_pc/f_pc_load.h" +#include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_node.h" + +// f_pc_node::g_fpcNd_type +extern s32 lbl_80450D40; +// f_pc_stdcreate_req::submethod$2261 +extern create_request_method_class lbl_803A3AF0; +// f_pc_stdcreate_req::method$2262 +extern cPhs__Handler lbl_803A3AFC[7]; + +extern "C" { + +extern s32 fpcLd_Load(s16); +extern s32 fpcLd_Free(s16); + +s32 fpcSCtRq_phase_Load(standard_create_request_class* pStdCreateReq) { + switch (fpcLd_Load(pStdCreateReq->mLoadID)) { + case 0: + return cPhs_ZERO_e; + case 4: + return 2; + case 5: + default: + return cPhs_ERROR_e; + } +} + +s32 fpcSCtRq_phase_CreateProcess(standard_create_request_class* pStdCreateReq) { + fpcLy_SetCurrentLayer(pStdCreateReq->mBase.mpLayer); + pStdCreateReq->mBase.mpRes = + fpcBs_Create(pStdCreateReq->mLoadID, pStdCreateReq->mBase.mBsPcId, pStdCreateReq->unk_0x54); + if (pStdCreateReq->mBase.mpRes == NULL) { + fpcLd_Free(pStdCreateReq->mLoadID); + return cPhs_ERROR_e; + } else { + pStdCreateReq->mBase.mpRes->mpCtRq = (struct create_request*)pStdCreateReq; + return 2; + } +} + +s32 fpcSCtRq_phase_SubCreateProcess(standard_create_request_class* pStdCreateReq) { + fpcLy_SetCurrentLayer(pStdCreateReq->mBase.mpLayer); + return fpcBs_SubCreate(pStdCreateReq->mBase.mpRes); +} + +s32 fpcSCtRq_phase_IsComplete(standard_create_request_class* pStdCreateReq) { + process_node_class* procNode = (process_node_class*)pStdCreateReq->mBase.mpRes; + if (fpcBs_Is_JustOfType(lbl_80450D40, procNode->mBase.mSubType) == 1) { + if (fpcLy_IsCreatingMesg(&procNode->mLayer) == 1) { + return cPhs_ZERO_e; + } + } + return 2; +} + +s32 fpcSCtRq_phase_PostMethod(standard_create_request_class* pStdCreateReq) { + if (pStdCreateReq->unk_0x58 != NULL && + pStdCreateReq->unk_0x58(pStdCreateReq->mBase.mpRes, pStdCreateReq->unk_0x5C) == 0) { + return cPhs_ZERO_e; + } else { + return 2; + } +} + +s32 fpcSCtRq_phase_Done(standard_create_request_class* pStdCreateReq) { + return 2; +} + +s32 fpcSCtRq_Handler(standard_create_request_class* pStdCreateReq) { + s32 result = cPhs_Do(&pStdCreateReq->unk_0x48, pStdCreateReq); + switch (result) { + case 2: + return fpcSCtRq_Handler(pStdCreateReq); + case 4: + return 4; + case 1: + case 5: + default: + return result; + } +} + +s32 fpcSCtRq_Delete(standard_create_request_class* pStdCreateReq) { + return 1; +} + +s32 fpcSCtRq_Cancel(standard_create_request_class* pStdCreateReq) { + return 1; +} + +s32 fpcSCtRq_Request(layer_class* param_1, s16 param_2, stdCreateFunc param_3, void* param_4, + void* param_5) { + if (param_2 >= 0x7FFF) { + return -1; + } else { + standard_create_request_class* request = + (standard_create_request_class*)fpcCtRq_Create(param_1, 0x60, &lbl_803A3AF0); + if (request == NULL) { + return -1; + } else { + cPhs_Set(&request->unk_0x48, lbl_803A3AFC); + request->mLoadID = param_2; + request->unk_0x58 = param_3; + request->unk_0x5C = param_4; + request->unk_0x54 = param_5; + return request->mBase.mBsPcId; + } + } +} +} \ No newline at end of file diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index 0966b178ca..ca4239e789 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -2,6 +2,7 @@ #include "d/d_com/d_com_inf_game/d_com_inf_game.h" #include "dvd/dvd.h" #include "global.h" +#include "m_Do/m_Do_controller_pad/m_Do_controller_pad.h" #include "m_Do/m_Do_reset/m_Do_reset.h" void version_check(void) {