From 63d4e517f7704548dce1b898f6872177d88a358e Mon Sep 17 00:00:00 2001 From: Pheenoh Date: Sat, 13 Feb 2021 15:23:18 -0500 Subject: [PATCH] split f_ap_game, fapGm_Execute ok, more changes to m_Do_main --- asm/f/ap/f_ap_game.s | 161 ------------------ .../JSystem/JUtility/JUTGamePad/JUTGamePad.h | 17 ++ include/SComponent/c_counter.h | 6 + include/f/f_ap_game/asm/func_80018944.s | 66 +++++++ include/f/f_ap_game/asm/func_80018A44.s | 10 ++ include/f/f_ap_game/asm/func_80018A6C.s | 15 ++ include/f/f_ap_game/asm/func_80018AA0.s | 16 ++ include/f/f_ap_game/asm/func_80018AE0.s | 19 +++ include/f/f_ap_game/asm/func_80018B28.s | 17 ++ include/f/f_ap_game/f_ap_game.h | 1 + include/f/f_pc/f_pc_manager.h | 3 +- include/variables.h | 2 +- ldscript.lcf | 1 + libs/SSystem/SComponent/c_counter.cpp | 1 + obj_files.mk | 2 +- src/f/f_ap_game.cpp | 80 ++++++++- src/f/f_pc/f_pc_manager.cpp | 1 - src/m_Do/m_Do_main.cpp | 70 ++++---- 18 files changed, 291 insertions(+), 197 deletions(-) delete mode 100644 asm/f/ap/f_ap_game.s create mode 100644 include/SComponent/c_counter.h create mode 100644 include/f/f_ap_game/asm/func_80018944.s create mode 100644 include/f/f_ap_game/asm/func_80018A44.s create mode 100644 include/f/f_ap_game/asm/func_80018A6C.s create mode 100644 include/f/f_ap_game/asm/func_80018AA0.s create mode 100644 include/f/f_ap_game/asm/func_80018AE0.s create mode 100644 include/f/f_ap_game/asm/func_80018B28.s create mode 100644 include/f/f_ap_game/f_ap_game.h diff --git a/asm/f/ap/f_ap_game.s b/asm/f/ap/f_ap_game.s deleted file mode 100644 index 8e404fadfc1..00000000000 --- a/asm/f/ap/f_ap_game.s +++ /dev/null @@ -1,161 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80018944 - - -.global fapGm_HIO_c -fapGm_HIO_c: -/* 80018944 00015884 3C 80 80 3A */ lis r4, lbl_803A35A0@ha -/* 80018948 00015888 38 04 35 A0 */ addi r0, r4, lbl_803A35A0@l -/* 8001894C 0001588C 90 03 00 00 */ stw r0, 0(r3) -/* 80018950 00015890 38 00 FF FF */ li r0, -1 -/* 80018954 00015894 90 03 00 08 */ stw r0, 8(r3) -/* 80018958 00015898 90 03 00 24 */ stw r0, 0x24(r3) -/* 8001895C 0001589C 90 03 00 28 */ stw r0, 0x28(r3) -/* 80018960 000158A0 90 03 00 2C */ stw r0, 0x2c(r3) -/* 80018964 000158A4 90 03 00 30 */ stw r0, 0x30(r3) -/* 80018968 000158A8 38 80 00 01 */ li r4, 1 -/* 8001896C 000158AC 98 83 00 14 */ stb r4, 0x14(r3) -/* 80018970 000158B0 88 0D 80 00 */ lbz r0, lbl_80450580-_SDA_BASE_(r13) -/* 80018974 000158B4 7C 00 07 75 */ extsb. r0, r0 -/* 80018978 000158B8 41 82 00 10 */ beq lbl_80018988 -/* 8001897C 000158BC 98 83 00 15 */ stb r4, 0x15(r3) -/* 80018980 000158C0 98 83 00 16 */ stb r4, 0x16(r3) -/* 80018984 000158C4 48 00 00 14 */ b lbl_80018998 -lbl_80018988: -/* 80018988 000158C8 38 00 00 00 */ li r0, 0 -/* 8001898C 000158CC 98 03 00 15 */ stb r0, 0x15(r3) -/* 80018990 000158D0 98 03 00 16 */ stb r0, 0x16(r3) -/* 80018994 000158D4 98 03 00 17 */ stb r0, 0x17(r3) -lbl_80018998: -/* 80018998 000158D8 38 00 00 01 */ li r0, 1 -/* 8001899C 000158DC 98 03 00 17 */ stb r0, 0x17(r3) -/* 800189A0 000158E0 98 03 00 18 */ stb r0, 0x18(r3) -/* 800189A4 000158E4 38 A0 00 00 */ li r5, 0 -/* 800189A8 000158E8 98 A3 00 19 */ stb r5, 0x19(r3) -/* 800189AC 000158EC 98 A3 00 1A */ stb r5, 0x1a(r3) -/* 800189B0 000158F0 38 80 00 FF */ li r4, 0xff -/* 800189B4 000158F4 98 83 00 08 */ stb r4, 8(r3) -/* 800189B8 000158F8 98 83 00 09 */ stb r4, 9(r3) -/* 800189BC 000158FC 98 83 00 0A */ stb r4, 0xa(r3) -/* 800189C0 00015900 98 83 00 0B */ stb r4, 0xb(r3) -/* 800189C4 00015904 C0 02 81 C0 */ lfs f0, lbl_80451BC0-_SDA2_BASE_(r2) -/* 800189C8 00015908 D0 03 00 0C */ stfs f0, 0xc(r3) -/* 800189CC 0001590C C0 02 81 C4 */ lfs f0, lbl_80451BC4-_SDA2_BASE_(r2) -/* 800189D0 00015910 D0 03 00 10 */ stfs f0, 0x10(r3) -/* 800189D4 00015914 98 83 00 24 */ stb r4, 0x24(r3) -/* 800189D8 00015918 38 00 00 96 */ li r0, 0x96 -/* 800189DC 0001591C 98 03 00 25 */ stb r0, 0x25(r3) -/* 800189E0 00015920 98 A3 00 26 */ stb r5, 0x26(r3) -/* 800189E4 00015924 98 83 00 27 */ stb r4, 0x27(r3) -/* 800189E8 00015928 98 83 00 28 */ stb r4, 0x28(r3) -/* 800189EC 0001592C 38 00 00 78 */ li r0, 0x78 -/* 800189F0 00015930 98 03 00 29 */ stb r0, 0x29(r3) -/* 800189F4 00015934 98 A3 00 2A */ stb r5, 0x2a(r3) -/* 800189F8 00015938 98 83 00 2B */ stb r4, 0x2b(r3) -/* 800189FC 0001593C 98 A3 00 2C */ stb r5, 0x2c(r3) -/* 80018A00 00015940 98 A3 00 2D */ stb r5, 0x2d(r3) -/* 80018A04 00015944 98 A3 00 2E */ stb r5, 0x2e(r3) -/* 80018A08 00015948 98 83 00 2F */ stb r4, 0x2f(r3) -/* 80018A0C 0001594C 98 A3 00 30 */ stb r5, 0x30(r3) -/* 80018A10 00015950 98 A3 00 31 */ stb r5, 0x31(r3) -/* 80018A14 00015954 98 A3 00 32 */ stb r5, 0x32(r3) -/* 80018A18 00015958 98 83 00 33 */ stb r4, 0x33(r3) -/* 80018A1C 0001595C B0 A3 00 34 */ sth r5, 0x34(r3) -/* 80018A20 00015960 38 00 00 0A */ li r0, 0xa -/* 80018A24 00015964 B0 03 00 36 */ sth r0, 0x36(r3) -/* 80018A28 00015968 38 00 00 1B */ li r0, 0x1b -/* 80018A2C 0001596C B0 03 00 3C */ sth r0, 0x3c(r3) -/* 80018A30 00015970 B0 A3 00 38 */ sth r5, 0x38(r3) -/* 80018A34 00015974 B0 A3 00 3A */ sth r5, 0x3a(r3) -/* 80018A38 00015978 38 00 00 82 */ li r0, 0x82 -/* 80018A3C 0001597C 98 03 00 3E */ stb r0, 0x3e(r3) -/* 80018A40 00015980 4E 80 00 20 */ blr -.global fapGm_After -fapGm_After: -/* 80018A44 00015984 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80018A48 00015988 7C 08 02 A6 */ mflr r0 -/* 80018A4C 0001598C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80018A50 00015990 48 00 63 C1 */ bl fopScnM_Management -/* 80018A54 00015994 48 00 5B FD */ bl fopOvlpM_Management -/* 80018A58 00015998 48 00 59 1D */ bl fopCamM_Management -/* 80018A5C 0001599C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80018A60 000159A0 7C 08 03 A6 */ mtlr r0 -/* 80018A64 000159A4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80018A68 000159A8 4E 80 00 20 */ blr - -.global fapGm_Execute -fapGm_Execute: -/* 80018A6C 000159AC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80018A70 000159B0 7C 08 02 A6 */ mflr r0 -/* 80018A74 000159B4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80018A78 000159B8 38 60 00 00 */ li r3, 0 -.global fapGm_After -/* 80018A7C 000159BC 3C 80 80 02 */ lis r4, fapGm_After@ha -.global fapGm_After -/* 80018A80 000159C0 38 84 8A 44 */ addi r4, r4, fapGm_After@l -/* 80018A84 000159C4 48 00 96 D5 */ bl fpcM_Management__FPFv_vPFv_v -/* 80018A88 000159C8 38 60 00 00 */ li r3, 0 -/* 80018A8C 000159CC 48 24 D3 91 */ bl cCt_Counter -/* 80018A90 000159D0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80018A94 000159D4 7C 08 03 A6 */ mtlr r0 -/* 80018A98 000159D8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80018A9C 000159DC 4E 80 00 20 */ blr - -.global fapGm_Create -fapGm_Create: -/* 80018AA0 000159E0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80018AA4 000159E4 7C 08 02 A6 */ mflr r0 -/* 80018AA8 000159E8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80018AAC 000159EC 48 00 98 0D */ bl fpcM_Init -/* 80018AB0 000159F0 48 00 63 81 */ bl fopScnM_Init -/* 80018AB4 000159F4 48 00 5C 35 */ bl fopOvlpM_Init -/* 80018AB8 000159F8 48 00 58 C1 */ bl fopCamM_Init -/* 80018ABC 000159FC 48 00 7A 5D */ bl fopDwTg_CreateQueue -/* 80018AC0 00015A00 38 00 FF FF */ li r0, -1 -/* 80018AC4 00015A04 3C 60 80 3F */ lis r3, g_HIO@ha -/* 80018AC8 00015A08 38 63 1B BC */ addi r3, r3, g_HIO@l -/* 80018ACC 00015A0C 98 03 00 04 */ stb r0, 4(r3) -/* 80018AD0 00015A10 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80018AD4 00015A14 7C 08 03 A6 */ mtlr r0 -/* 80018AD8 00015A18 38 21 00 10 */ addi r1, r1, 0x10 -/* 80018ADC 00015A1C 4E 80 00 20 */ blr -.global fapGm_HIO_c_NS_dtor -fapGm_HIO_c_NS_dtor: -/* 80018AE0 00015A20 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80018AE4 00015A24 7C 08 02 A6 */ mflr r0 -/* 80018AE8 00015A28 90 01 00 14 */ stw r0, 0x14(r1) -/* 80018AEC 00015A2C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80018AF0 00015A30 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80018AF4 00015A34 41 82 00 1C */ beq lbl_80018B10 -/* 80018AF8 00015A38 3C A0 80 3A */ lis r5, lbl_803A35A0@ha -/* 80018AFC 00015A3C 38 05 35 A0 */ addi r0, r5, lbl_803A35A0@l -/* 80018B00 00015A40 90 1F 00 00 */ stw r0, 0(r31) -/* 80018B04 00015A44 7C 80 07 35 */ extsh. r0, r4 -/* 80018B08 00015A48 40 81 00 08 */ ble lbl_80018B10 -/* 80018B0C 00015A4C 48 2B 62 31 */ bl __dl__FPv -lbl_80018B10: -/* 80018B10 00015A50 7F E3 FB 78 */ mr r3, r31 -/* 80018B14 00015A54 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80018B18 00015A58 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80018B1C 00015A5C 7C 08 03 A6 */ mtlr r0 -/* 80018B20 00015A60 38 21 00 10 */ addi r1, r1, 0x10 -/* 80018B24 00015A64 4E 80 00 20 */ blr -/* 80018B28 00015A68 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80018B2C 00015A6C 7C 08 02 A6 */ mflr r0 -/* 80018B30 00015A70 90 01 00 14 */ stw r0, 0x14(r1) -/* 80018B34 00015A74 3C 60 80 3F */ lis r3, g_HIO@ha -/* 80018B38 00015A78 38 63 1B BC */ addi r3, r3, g_HIO@l -/* 80018B3C 00015A7C 4B FF FE 09 */ bl fapGm_HIO_c -.global fapGm_HIO_c_NS_dtor -/* 80018B40 00015A80 3C 80 80 02 */ lis r4, fapGm_HIO_c_NS_dtor@ha -.global fapGm_HIO_c_NS_dtor -/* 80018B44 00015A84 38 84 8A E0 */ addi r4, r4, fapGm_HIO_c_NS_dtor@l -/* 80018B48 00015A88 3C A0 80 3F */ lis r5, lbl_803F1BB0@ha -/* 80018B4C 00015A8C 38 A5 1B B0 */ addi r5, r5, lbl_803F1BB0@l -/* 80018B50 00015A90 48 34 90 D5 */ bl func_80361C24 -/* 80018B54 00015A94 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80018B58 00015A98 7C 08 03 A6 */ mtlr r0 -/* 80018B5C 00015A9C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80018B60 00015AA0 4E 80 00 20 */ blr - diff --git a/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h b/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h index fd2aa35f7ea..a392f78c6c9 100644 --- a/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h +++ b/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h @@ -10,6 +10,23 @@ typedef u32 EStickMode; typedef u32 EWhichStick; +namespace CButton { +enum { + DPAD_LEFT = 0x0001, + DPAD_RIGHT = 0x0002, + DPAD_DOWN = 0x0004, + DPAD_UP = 0x0008, + Z = 0x0010, + R = 0x0020, + L = 0x0040, + A = 0x0100, + B = 0x0200, + X = 0x0400, + Y = 0x0800, + START = 0x1000, +}; +} + struct JUTGamePad : public JKRDisposer { public: // typedef u32 EPadPort; diff --git a/include/SComponent/c_counter.h b/include/SComponent/c_counter.h new file mode 100644 index 00000000000..6ea38105e6d --- /dev/null +++ b/include/SComponent/c_counter.h @@ -0,0 +1,6 @@ +#ifndef SCOMPONENT_C_COUNTER_H_ +#define SCOMPONENT_C_COUNTER_H_ + +void cCt_Counter(int resetCounter1); + +#endif \ No newline at end of file diff --git a/include/f/f_ap_game/asm/func_80018944.s b/include/f/f_ap_game/asm/func_80018944.s new file mode 100644 index 00000000000..6fc097db933 --- /dev/null +++ b/include/f/f_ap_game/asm/func_80018944.s @@ -0,0 +1,66 @@ +/* 80018944 00015884 3C 80 80 3A */ lis r4, lbl_803A35A0@ha +/* 80018948 00015888 38 04 35 A0 */ addi r0, r4, lbl_803A35A0@l +/* 8001894C 0001588C 90 03 00 00 */ stw r0, 0(r3) +/* 80018950 00015890 38 00 FF FF */ li r0, -1 +/* 80018954 00015894 90 03 00 08 */ stw r0, 8(r3) +/* 80018958 00015898 90 03 00 24 */ stw r0, 0x24(r3) +/* 8001895C 0001589C 90 03 00 28 */ stw r0, 0x28(r3) +/* 80018960 000158A0 90 03 00 2C */ stw r0, 0x2c(r3) +/* 80018964 000158A4 90 03 00 30 */ stw r0, 0x30(r3) +/* 80018968 000158A8 38 80 00 01 */ li r4, 1 +/* 8001896C 000158AC 98 83 00 14 */ stb r4, 0x14(r3) +/* 80018970 000158B0 88 0D 80 00 */ lbz r0, lbl_80450580-_SDA_BASE_(r13) +/* 80018974 000158B4 7C 00 07 75 */ extsb. r0, r0 +/* 80018978 000158B8 41 82 00 10 */ beq lbl_80018988 +/* 8001897C 000158BC 98 83 00 15 */ stb r4, 0x15(r3) +/* 80018980 000158C0 98 83 00 16 */ stb r4, 0x16(r3) +/* 80018984 000158C4 48 00 00 14 */ b lbl_80018998 +lbl_80018988: +/* 80018988 000158C8 38 00 00 00 */ li r0, 0 +/* 8001898C 000158CC 98 03 00 15 */ stb r0, 0x15(r3) +/* 80018990 000158D0 98 03 00 16 */ stb r0, 0x16(r3) +/* 80018994 000158D4 98 03 00 17 */ stb r0, 0x17(r3) +lbl_80018998: +/* 80018998 000158D8 38 00 00 01 */ li r0, 1 +/* 8001899C 000158DC 98 03 00 17 */ stb r0, 0x17(r3) +/* 800189A0 000158E0 98 03 00 18 */ stb r0, 0x18(r3) +/* 800189A4 000158E4 38 A0 00 00 */ li r5, 0 +/* 800189A8 000158E8 98 A3 00 19 */ stb r5, 0x19(r3) +/* 800189AC 000158EC 98 A3 00 1A */ stb r5, 0x1a(r3) +/* 800189B0 000158F0 38 80 00 FF */ li r4, 0xff +/* 800189B4 000158F4 98 83 00 08 */ stb r4, 8(r3) +/* 800189B8 000158F8 98 83 00 09 */ stb r4, 9(r3) +/* 800189BC 000158FC 98 83 00 0A */ stb r4, 0xa(r3) +/* 800189C0 00015900 98 83 00 0B */ stb r4, 0xb(r3) +/* 800189C4 00015904 C0 02 81 C0 */ lfs f0, lbl_80451BC0-_SDA2_BASE_(r2) +/* 800189C8 00015908 D0 03 00 0C */ stfs f0, 0xc(r3) +/* 800189CC 0001590C C0 02 81 C4 */ lfs f0, lbl_80451BC4-_SDA2_BASE_(r2) +/* 800189D0 00015910 D0 03 00 10 */ stfs f0, 0x10(r3) +/* 800189D4 00015914 98 83 00 24 */ stb r4, 0x24(r3) +/* 800189D8 00015918 38 00 00 96 */ li r0, 0x96 +/* 800189DC 0001591C 98 03 00 25 */ stb r0, 0x25(r3) +/* 800189E0 00015920 98 A3 00 26 */ stb r5, 0x26(r3) +/* 800189E4 00015924 98 83 00 27 */ stb r4, 0x27(r3) +/* 800189E8 00015928 98 83 00 28 */ stb r4, 0x28(r3) +/* 800189EC 0001592C 38 00 00 78 */ li r0, 0x78 +/* 800189F0 00015930 98 03 00 29 */ stb r0, 0x29(r3) +/* 800189F4 00015934 98 A3 00 2A */ stb r5, 0x2a(r3) +/* 800189F8 00015938 98 83 00 2B */ stb r4, 0x2b(r3) +/* 800189FC 0001593C 98 A3 00 2C */ stb r5, 0x2c(r3) +/* 80018A00 00015940 98 A3 00 2D */ stb r5, 0x2d(r3) +/* 80018A04 00015944 98 A3 00 2E */ stb r5, 0x2e(r3) +/* 80018A08 00015948 98 83 00 2F */ stb r4, 0x2f(r3) +/* 80018A0C 0001594C 98 A3 00 30 */ stb r5, 0x30(r3) +/* 80018A10 00015950 98 A3 00 31 */ stb r5, 0x31(r3) +/* 80018A14 00015954 98 A3 00 32 */ stb r5, 0x32(r3) +/* 80018A18 00015958 98 83 00 33 */ stb r4, 0x33(r3) +/* 80018A1C 0001595C B0 A3 00 34 */ sth r5, 0x34(r3) +/* 80018A20 00015960 38 00 00 0A */ li r0, 0xa +/* 80018A24 00015964 B0 03 00 36 */ sth r0, 0x36(r3) +/* 80018A28 00015968 38 00 00 1B */ li r0, 0x1b +/* 80018A2C 0001596C B0 03 00 3C */ sth r0, 0x3c(r3) +/* 80018A30 00015970 B0 A3 00 38 */ sth r5, 0x38(r3) +/* 80018A34 00015974 B0 A3 00 3A */ sth r5, 0x3a(r3) +/* 80018A38 00015978 38 00 00 82 */ li r0, 0x82 +/* 80018A3C 0001597C 98 03 00 3E */ stb r0, 0x3e(r3) +/* 80018A40 00015980 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/f/f_ap_game/asm/func_80018A44.s b/include/f/f_ap_game/asm/func_80018A44.s new file mode 100644 index 00000000000..62f3df067dc --- /dev/null +++ b/include/f/f_ap_game/asm/func_80018A44.s @@ -0,0 +1,10 @@ +/* 80018A44 00015984 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80018A48 00015988 7C 08 02 A6 */ mflr r0 +/* 80018A4C 0001598C 90 01 00 14 */ stw r0, 0x14(r1) +/* 80018A50 00015990 48 00 63 C1 */ bl fopScnM_Management +/* 80018A54 00015994 48 00 5B FD */ bl fopOvlpM_Management +/* 80018A58 00015998 48 00 59 1D */ bl fopCamM_Management +/* 80018A5C 0001599C 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80018A60 000159A0 7C 08 03 A6 */ mtlr r0 +/* 80018A64 000159A4 38 21 00 10 */ addi r1, r1, 0x10 +/* 80018A68 000159A8 4E 80 00 20 */ blr diff --git a/include/f/f_ap_game/asm/func_80018A6C.s b/include/f/f_ap_game/asm/func_80018A6C.s new file mode 100644 index 00000000000..32d776f0e9f --- /dev/null +++ b/include/f/f_ap_game/asm/func_80018A6C.s @@ -0,0 +1,15 @@ +/* 80018A6C 000159AC 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80018A70 000159B0 7C 08 02 A6 */ mflr r0 +/* 80018A74 000159B4 90 01 00 14 */ stw r0, 0x14(r1) +/* 80018A78 000159B8 38 60 00 00 */ li r3, 0 +/*.global fapGm_After*/ +/* 80018A7C 000159BC 3C 80 80 02 */ lis r4, fapGm_After@ha +/*.global fapGm_After*/ +/* 80018A80 000159C0 38 84 8A 44 */ addi r4, r4, fapGm_After@l +/* 80018A84 000159C4 48 00 96 D5 */ bl fpcM_Management__FPFv_vPFv_v +/* 80018A88 000159C8 38 60 00 00 */ li r3, 0 +/* 80018A8C 000159CC 48 24 D3 91 */ bl cCt_Counter +/* 80018A90 000159D0 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80018A94 000159D4 7C 08 03 A6 */ mtlr r0 +/* 80018A98 000159D8 38 21 00 10 */ addi r1, r1, 0x10 +/* 80018A9C 000159DC 4E 80 00 20 */ blr diff --git a/include/f/f_ap_game/asm/func_80018AA0.s b/include/f/f_ap_game/asm/func_80018AA0.s new file mode 100644 index 00000000000..dd0ea2676a6 --- /dev/null +++ b/include/f/f_ap_game/asm/func_80018AA0.s @@ -0,0 +1,16 @@ +/* 80018AA0 000159E0 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80018AA4 000159E4 7C 08 02 A6 */ mflr r0 +/* 80018AA8 000159E8 90 01 00 14 */ stw r0, 0x14(r1) +/* 80018AAC 000159EC 48 00 98 0D */ bl fpcM_Init +/* 80018AB0 000159F0 48 00 63 81 */ bl fopScnM_Init +/* 80018AB4 000159F4 48 00 5C 35 */ bl fopOvlpM_Init +/* 80018AB8 000159F8 48 00 58 C1 */ bl fopCamM_Init +/* 80018ABC 000159FC 48 00 7A 5D */ bl fopDwTg_CreateQueue +/* 80018AC0 00015A00 38 00 FF FF */ li r0, -1 +/* 80018AC4 00015A04 3C 60 80 3F */ lis r3, g_HIO@ha +/* 80018AC8 00015A08 38 63 1B BC */ addi r3, r3, g_HIO@l +/* 80018ACC 00015A0C 98 03 00 04 */ stb r0, 4(r3) +/* 80018AD0 00015A10 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80018AD4 00015A14 7C 08 03 A6 */ mtlr r0 +/* 80018AD8 00015A18 38 21 00 10 */ addi r1, r1, 0x10 +/* 80018ADC 00015A1C 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/f/f_ap_game/asm/func_80018AE0.s b/include/f/f_ap_game/asm/func_80018AE0.s new file mode 100644 index 00000000000..3bbbd4c6d73 --- /dev/null +++ b/include/f/f_ap_game/asm/func_80018AE0.s @@ -0,0 +1,19 @@ +/* 80018AE0 00015A20 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80018AE4 00015A24 7C 08 02 A6 */ mflr r0 +/* 80018AE8 00015A28 90 01 00 14 */ stw r0, 0x14(r1) +/* 80018AEC 00015A2C 93 E1 00 0C */ stw r31, 0xc(r1) +/* 80018AF0 00015A30 7C 7F 1B 79 */ or. r31, r3, r3 +/* 80018AF4 00015A34 41 82 00 1C */ beq lbl_80018B10 +/* 80018AF8 00015A38 3C A0 80 3A */ lis r5, lbl_803A35A0@ha +/* 80018AFC 00015A3C 38 05 35 A0 */ addi r0, r5, lbl_803A35A0@l +/* 80018B00 00015A40 90 1F 00 00 */ stw r0, 0(r31) +/* 80018B04 00015A44 7C 80 07 35 */ extsh. r0, r4 +/* 80018B08 00015A48 40 81 00 08 */ ble lbl_80018B10 +/* 80018B0C 00015A4C 48 2B 62 31 */ bl __dl__FPv +lbl_80018B10: +/* 80018B10 00015A50 7F E3 FB 78 */ mr r3, r31 +/* 80018B14 00015A54 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 80018B18 00015A58 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80018B1C 00015A5C 7C 08 03 A6 */ mtlr r0 +/* 80018B20 00015A60 38 21 00 10 */ addi r1, r1, 0x10 +/* 80018B24 00015A64 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/f/f_ap_game/asm/func_80018B28.s b/include/f/f_ap_game/asm/func_80018B28.s new file mode 100644 index 00000000000..cdcf44aed6f --- /dev/null +++ b/include/f/f_ap_game/asm/func_80018B28.s @@ -0,0 +1,17 @@ +/* 80018B28 00015A68 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80018B2C 00015A6C 7C 08 02 A6 */ mflr r0 +/* 80018B30 00015A70 90 01 00 14 */ stw r0, 0x14(r1) +/* 80018B34 00015A74 3C 60 80 3F */ lis r3, g_HIO@ha +/* 80018B38 00015A78 38 63 1B BC */ addi r3, r3, g_HIO@l +/* 80018B3C 00015A7C 4B FF FE 09 */ bl fapGm_HIO_c +/*.global fapGm_HIO_c_NS_dtor*/ +/* 80018B40 00015A80 3C 80 80 02 */ lis r4, fapGm_HIO_c_NS_dtor@ha +/*.global fapGm_HIO_c_NS_dtor*/ +/* 80018B44 00015A84 38 84 8A E0 */ addi r4, r4, fapGm_HIO_c_NS_dtor@l +/* 80018B48 00015A88 3C A0 80 3F */ lis r5, lbl_803F1BB0@ha +/* 80018B4C 00015A8C 38 A5 1B B0 */ addi r5, r5, lbl_803F1BB0@l +/* 80018B50 00015A90 48 34 90 D5 */ bl func_80361C24 +/* 80018B54 00015A94 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80018B58 00015A98 7C 08 03 A6 */ mtlr r0 +/* 80018B5C 00015A9C 38 21 00 10 */ addi r1, r1, 0x10 +/* 80018B60 00015AA0 4E 80 00 20 */ blr diff --git a/include/f/f_ap_game/f_ap_game.h b/include/f/f_ap_game/f_ap_game.h new file mode 100644 index 00000000000..2a0e0134ed0 --- /dev/null +++ b/include/f/f_ap_game/f_ap_game.h @@ -0,0 +1 @@ +// finishme \ No newline at end of file diff --git a/include/f/f_pc/f_pc_manager.h b/include/f/f_pc/f_pc_manager.h index 4fa33137dd5..eaa4f5642b5 100644 --- a/include/f/f_pc/f_pc_manager.h +++ b/include/f/f_pc/f_pc_manager.h @@ -11,6 +11,7 @@ extern "C" { typedef int (*FastCreateReqFunc)(void*); +typedef void (*fpcM_ManagementFunc)(void); inline u32 fpcM_GetID(const void* pProc) { return pProc != NULL ? ((base_process_class*)pProc)->mBsPcId : 0xFFFFFFFF; @@ -20,7 +21,7 @@ s32 fpcM_DrawIterater(cNdIt_MethodFunc pFunc); void fpcM_Execute(void* pProc); s32 fpcM_Delete(void* pProc); BOOL fpcM_IsCreating(u32 pID); -// void fpcM_Management(unk_func pFunc1, unk_func pFunc2); +void fpcM_Management(fpcM_ManagementFunc pFunc1, fpcM_ManagementFunc pFunc2); void fpcM_Init(void); base_process_class* fpcM_FastCreate(s16 pProcTypeID, FastCreateReqFunc param_2, void* param_3, void* pData); diff --git a/include/variables.h b/include/variables.h index e404673be33..87150c3ddc1 100644 --- a/include/variables.h +++ b/include/variables.h @@ -8,7 +8,7 @@ extern u8 lbl_80379235[16]; extern char lbl_80379234[0x64]; extern u32 _sRumbleSupported; extern u8 lbl_803A2EF4; -extern char lbl_803A2EE0[20]; +extern char lbl_803A2EE0[16]; extern u8 lbl_80450B19; struct g_HIO_struct; extern g_HIO_struct g_HIO; diff --git a/ldscript.lcf b/ldscript.lcf index f8ad35f3efc..b0936f51436 100644 --- a/ldscript.lcf +++ b/ldscript.lcf @@ -3374,6 +3374,7 @@ fopAcM_SetMax__FP10fopAc_ac_cfff fopAcM_SetMin__FP10fopAc_ac_cfff fopAcM_createChildFromOffset__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i fopAcM_SearchByName__FsPP10fopAc_ac_c +func_80018B28 } /* .init 80003100 - 80005600 diff --git a/libs/SSystem/SComponent/c_counter.cpp b/libs/SSystem/SComponent/c_counter.cpp index b18b2b74f32..ebbb90467c2 100644 --- a/libs/SSystem/SComponent/c_counter.cpp +++ b/libs/SSystem/SComponent/c_counter.cpp @@ -1,3 +1,4 @@ +#include "SComponent/c_counter.h" struct counter_class { int mCounter0; diff --git a/obj_files.mk b/obj_files.mk index b6864ac305c..e89e6aa7447 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -47,7 +47,7 @@ TEXT_O_FILES := \ $(BUILD_DIR)/asm/rodata/rodata_c_dylink.o \ $(BUILD_DIR)/asm/c/c_dylink.o \ $(BUILD_DIR)/asm/sdata2/f_ap_game.o \ - $(BUILD_DIR)/asm/f/ap/f_ap_game.o \ + $(BUILD_DIR)/src/f/f_ap_game.o \ $(BUILD_DIR)/asm/rodata/rodata_f_op_actor.o \ $(BUILD_DIR)/asm/sdata2/f_op_actor.o \ $(BUILD_DIR)/asm/f/op/f_op_actor.o \ diff --git a/src/f/f_ap_game.cpp b/src/f/f_ap_game.cpp index 4bf93c8658d..5a879dd48b2 100644 --- a/src/f/f_ap_game.cpp +++ b/src/f/f_ap_game.cpp @@ -1 +1,79 @@ -// ok +/* f_ap_game.cpp autogenerated by split.py v0.4 at 2021-02-13 20:07:21.300413 */ + +#include "global.h" +#include "f/f_pc/f_pc_manager.h" +#include "SComponent/c_counter.h" + +// additional symbols needed for f_ap_game.cpp +// autogenerated by split.py v0.4 at 2021-02-13 20:07:21.300465 +extern "C" { + void __dl__FPv(void); + // void cCt_Counter(void); + void fapGm_After(void); + void fapGm_Create(void); + void fapGm_Execute(void); + void fapGm_HIO_c(void); + void fapGm_HIO_c_NS_dtor(void); + void fopCamM_Init(void); + void fopCamM_Management(void); + void fopDwTg_CreateQueue(void); + void fopOvlpM_Init(void); + void fopOvlpM_Management(void); + void fopScnM_Init(void); + void fopScnM_Management(void); + void fpcM_Init(void); + //void fpcM_Management__FPFv_vPFv_v(void); + void func_80018B28(void); + void func_80361C24(void); +} + +// additional symbols needed for f_ap_game.cpp +// autogenerated by split.py v0.4 at 2021-02-13 20:07:21.300472 +extern u8 lbl_803A35A0; +extern u8 lbl_803F1BB0; +extern u8 lbl_80451BC0; +extern u8 lbl_80451BC4; + + +extern "C" { +// __ct__11fapGm_HIO_cFv +// fapGm_HIO_c::fapGm_HIO_c(void) +asm void fapGm_HIO_c(void) { + nofralloc + #include "f/f_ap_game/asm/func_80018944.s" +} + +// fapGm_After__Fv +// fapGm_After(void) +asm void fapGm_After(void) { + nofralloc + #include "f/f_ap_game/asm/func_80018A44.s" +} + +void fapGm_Execute(void) { + fpcM_Management(0,fapGm_After); + cCt_Counter(0); +} + +// fapGm_Create__Fv +// fapGm_Create(void) +asm void fapGm_Create(void) { + nofralloc + #include "f/f_ap_game/asm/func_80018AA0.s" +} + +// __dt__11fapGm_HIO_cFv +// fapGm_HIO_c::~fapGm_HIO_c(void) +asm void fapGm_HIO_c_NS_dtor(void) { + nofralloc + #include "f/f_ap_game/asm/func_80018AE0.s" +} + +// __sinit_f_ap_game_cpp +// +asm void func_80018B28(void) { + nofralloc + #include "f/f_ap_game/asm/func_80018B28.s" +} + +}; diff --git a/src/f/f_pc/f_pc_manager.cpp b/src/f/f_pc/f_pc_manager.cpp index e661a1a6a97..f0e946b8a66 100644 --- a/src/f/f_pc/f_pc_manager.cpp +++ b/src/f/f_pc/f_pc_manager.cpp @@ -60,7 +60,6 @@ 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.getdlstPeekZ()); diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index 0f0c9eecd3d..20987ed26d4 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -3,6 +3,7 @@ #include "JSystem/JKernel/JKRAramHeap/JKRAramHeap.h" #include "JSystem/JUtility/JUTAssert/JUTAssert.h" #include "JSystem/JUtility/JUTReport/JUTReport.h" +#include "JSystem/JUtility/JUTGamePad/JUTGamePad.h" #include "SComponent/c_API_controller_pad.h" #include "d/d_com/d_com_inf_game/d_com_inf_game.h" #include "dvd/dvd.h" @@ -264,7 +265,7 @@ asm void debugDisplay(void) { #endif #ifdef NONMATCHING -void Debug_console(u32 controller_no) { +void Debug_console(u32 controller_pad_no) { float tmp2; float tmp3; int tmp6; @@ -285,32 +286,32 @@ void Debug_console(u32 controller_no) { lbl_80450B30 = 1; } - u32 tmp5 = m_cpadInfo[controller_no].mPressedButtonFlags; + u32 tmp5 = m_cpadInfo[controller_pad_no].mPressedButtonFlags; - if ((m_cpadInfo[controller_no].mPressedButtonFlags & 0x10) && - !(m_cpadInfo[controller_no].mButtonFlags & 0xFFFFFFEF)) { + if ((m_cpadInfo[controller_pad_no].mPressedButtonFlags & 0x10) && + !(m_cpadInfo[controller_pad_no].mButtonFlags & ~0x10)) { lbl_804511B8->field_0x68 = !lbl_804511B8->field_0x68; JUTAssertion::setMessageCount(0); } if (lbl_804511B8->field_0x68) { - u32 tmp = m_cpadInfo[controller_no].mButtonFlags; + u32 tmp = m_cpadInfo[controller_pad_no].mButtonFlags; // if R and L are pressed - if ((tmp & 0x40 && tmp & 0x20) || - ((lbl_80451A08 > m_cpadInfo[controller_no].mTriggerLeft) && - (lbl_80451A08 > m_cpadInfo[controller_no].mTriggerRight))) { - tmp2 = m_cpadInfo[controller_no].mMainStickPosX; - tmp3 = m_cpadInfo[controller_no].mMainStickPosY; + if ((tmp & CButton::R && tmp & CButton::L) || + ((lbl_80451A08 > m_cpadInfo[controller_pad_no].mTriggerLeft) && + (lbl_80451A08 > m_cpadInfo[controller_pad_no].mTriggerRight))) { + tmp2 = m_cpadInfo[controller_pad_no].mMainStickPosX; + tmp3 = m_cpadInfo[controller_pad_no].mMainStickPosY; // if x buttons are pressed, clear the console - if (tmp & 0xC00 && tmp5 & 0x1000) { + if (tmp & (CButton::Y | CButton::START) && tmp5 & CButton::START) { lbl_804511B8->clear(); } - u32 tmp = m_cpadInfo[controller_no].mButtonFlags; + u32 tmp = m_cpadInfo[controller_pad_no].mButtonFlags; - if (!(tmp & 0xC00)) { + if (!(tmp & (CButton::Y | CButton::START))) { // subtract console scroll value from stick Y float tmp4 = lbl_80450B2C; lbl_80450B2C = tmp4 - tmp3; @@ -325,16 +326,16 @@ void Debug_console(u32 controller_no) { lbl_804511B8->scroll(tmp); } } else { - if (tmp & 0x400) { + if (tmp & CButton::X) { lbl_80450B2C += tmp2; } - if (tmp & 0x800) { + if (tmp & CButton::Y) { lbl_80450B2C -= tmp3; } } - if (tmp5 & 0x100) { + if (tmp5 & CButton::A) { lbl_804511B8->dumpToTerminal(0xFFFFFFFF); lbl_804511B8->field_0x58 = 3; } @@ -385,16 +386,21 @@ asm void Debug_console(u32) { #endif #ifdef NONMATCHING -void LOAD_COPYDATE(void*) { - DVDFileInfo file_info; +s32 LOAD_COPYDATE(void*) { + s32 status; + u8 buffer[32]; + u8 fileInfo[80]; + //DVDFileInfo fileInfo; - s32 dvd_status = DVDOpen("/str/Final/Release/COPYDATE", &file_info); - if (dvd_status) { - char buffer[32]; - DVDReadPrio(&file_info, buffer, 32, 0, 2); + status = DVDOpen("/str/Final/Release/COPYDATE", (DVDFileInfo*)&fileInfo); + + + if (status) { + DVDReadPrio((DVDFileInfo*)fileInfo, &buffer, 32, 0, 2); memcpy(lbl_803A2EE0, buffer, 17); - DVDClose(&file_info); + status = DVDClose((DVDFileInfo*)fileInfo); } + return status; } #else const char* lbl_80373C23 = "/str/Final/Release/COPYDATE"; @@ -447,10 +453,12 @@ void debug(void) { #ifdef NONMATCHING void main01(void) { HeapCheck* heaps = lbl_803D32E0; + mDoMch_Create(); mDoGph_Create(); create__8mDoCPd_cFv(); - mDoDVDThd_callback_c thread_callback; + + // mDoDVDThd_callback_c thread_callback; // JKRSolidHeap audio_heap; // Root Heap @@ -498,23 +506,23 @@ void main01(void) { // Command Heap heaps[7].setHeap(mDoExt_getCommandHeap()); - u8* systemConsole = lbl_804511B8; + JUTConsole* systemConsole = lbl_804511B8; if (heaps[7].getHeap()) { heaps[7].setHeapSize(heaps[7].getHeap()->getSize()); } - int unk = 0; + u32 unk = 0; if (lbl_80450580) { unk = 3; } - *(lbl_804511B8 + 0x58) = unk; - *(systemConsole + 0x40) = 0x20; - *(systemConsole + 0x44) = 0x2a; + systemConsole->field_0x58 = unk; + systemConsole->field_0x40 = 0x20; + systemConsole->field_0x44 = 0x2A; // lol - thread_callback.create((void* (*)(void*))LOAD_COPYDATE, 0); + mDoDVDThd_callback_c::create(LOAD_COPYDATE,0); fapGm_Create(); fopAcM_initManager(); lbl_80450B18 = 0; @@ -522,7 +530,7 @@ void main01(void) { // g_mDoAud_audioHeap - lbl_80450BBC = JKRSolidHeap_NS_create(0x14d800, JKRHeap::getCurrentHeap(), false); + lbl_80450BBC = JKRSolidHeap::create(0x14d800, JKRHeap::getCurrentHeap(), false); // main loop do {