diff --git a/include/f/f_ap_game/asm/func_80018B28.s b/include/f/f_ap_game/asm/func_80018B28.s index cdcf44aed6f..4c36fd7b27a 100644 --- a/include/f/f_ap_game/asm/func_80018B28.s +++ b/include/f/f_ap_game/asm/func_80018B28.s @@ -3,10 +3,8 @@ /* 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*/ +/* 80018B3C 00015A7C 4B FF FE 09 */ bl __ct__11fapGm_HIO_cFv /* 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 diff --git a/include/f/f_ap_game/f_ap_game.h b/include/f/f_ap_game/f_ap_game.h index 5376b5de256..5cff4cafdc1 100644 --- a/include/f/f_ap_game/f_ap_game.h +++ b/include/f/f_ap_game/f_ap_game.h @@ -1,8 +1,65 @@ #ifndef F_F_AP_GAME_H_ #define F_F_AP_GAME_H_ +#include "dolphin/types.h" + void fapGm_After(void); void fapGm_Execute(void); void fapGm_Create(void); +class fapGm_HIO_c { +public: + fapGm_HIO_c(void); + u32 vtable; + u8 field_0x4; + u8 field_0x5; + u8 field_0x6; + u8 field_0x7; + u8 field_0x8; + u8 field_0x9; + u8 field_0xa; + u8 field_0xb; + float field_0xc; + float field_0x10; + u8 field_0x14; + u8 field_0x15; + u8 field_0x16; + u8 field_0x17; + u8 field_0x18; + u8 field_0x19; + u8 field_0x1a; + u8 field_0x1b; + u8 field_0x1c; + u8 field_0x1d; + u8 field_0x1e; + u8 field_0x1f; + u8 field_0x20; + u8 field_0x21; + u8 field_0x22; + u8 field_0x23; + u8 field_0x24; + u8 field_0x25; + u8 field_0x26; + u8 field_0x27; + u8 field_0x28; + u8 field_0x29; + u8 field_0x2a; + u8 field_0x2b; + u8 field_0x2c; + u8 field_0x2d; + u8 field_0x2e; + u8 field_0x2f; + u8 field_0x30; + u8 field_0x31; + u8 field_0x32; + u8 field_0x33; + u16 field_0x34; + u16 field_0x36; + u16 field_0x38; + u16 field_0x3a; + u16 field_0x3c; + u8 field_0x3e; + u8 field_0x3f; +}; + #endif \ No newline at end of file diff --git a/src/f/f_ap_game.cpp b/src/f/f_ap_game.cpp index bc04c5c935d..c175a4ea754 100644 --- a/src/f/f_ap_game.cpp +++ b/src/f/f_ap_game.cpp @@ -21,6 +21,7 @@ void fopScnM_Init(void); void fpcM_Init(void); void func_80018B28(void); void func_80361C24(void); +void __ct__11fapGm_HIO_cFv(void); } // additional symbols needed for f_ap_game.cpp @@ -32,10 +33,56 @@ extern u8 lbl_80451BC4; // __ct__11fapGm_HIO_cFv // fapGm_HIO_c::fapGm_HIO_c(void) -asm void fapGm_HIO_c(void) { +#ifdef NONMATCHING +fapGm_HIO_c::fapGm_HIO_c(void) { + this->field_0x14 = 1; + if (!lbl_80450580) { + this->field_0x15 = 0; + this->field_0x16 = 0; + this->field_0x17 = 0; + } else { + this->field_0x15 = 1; + this->field_0x16 = 1; + } + this->field_0x17 = 1; + this->field_0x18 = 1; + this->field_0x19 = 0; + this->field_0x1a = 0; + this->field_0x8 = -1; + this->field_0x9 = -1; + this->field_0xa = -1; + this->field_0xb = -1; + this->field_0xc = lbl_80451BC0; + this->field_0x10 = lbl_80451BC4; + this->field_0x24 = -1; + this->field_0x25 = -0x6a; + this->field_0x26 = 0; + this->field_0x27 = -1; + this->field_0x28 = -1; + this->field_0x29 = 120; + this->field_0x2a = 0; + this->field_0x2b = -1; + this->field_0x2c = 0; + this->field_0x2d = 0; + this->field_0x2e = 0; + this->field_0x2f = -1; + this->field_0x30 = 0; + this->field_0x31 = 0; + this->field_0x32 = 0; + this->field_0x33 = -1; + this->field_0x34 = 0; + this->field_0x36 = 10; + this->field_0x3c = 0x1b; + this->field_0x38 = 0; + this->field_0x3a = 0; + this->field_0x3e = -0x7e; +} +#else +asm fapGm_HIO_c::fapGm_HIO_c(void) { nofralloc #include "f/f_ap_game/asm/func_80018944.s" } +#endif void fapGm_After(void) { fopScnM_Management();