From 0a2500257bf01f6b361a280ac08f4cfb80b90cdd Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 10 Nov 2023 22:48:05 -0800 Subject: [PATCH] f_ap_game --- configure.py | 2 +- include/f_ap/f_ap_game.h | 48 ++++++++++++++++++++++++++---- src/f_ap/f_ap_game.cpp | 64 ++++++++++++++++++++++++++++++++++++++-- 3 files changed, 106 insertions(+), 8 deletions(-) diff --git a/configure.py b/configure.py index e0ec0a0d5..d83bacf49 100644 --- a/configure.py +++ b/configure.py @@ -274,7 +274,7 @@ config.libs = [ Object(Matching, "c/c_dylink.cpp"), # f_ap - Object(NonMatching, "f_ap/f_ap_game.cpp"), + Object(Matching, "f_ap/f_ap_game.cpp"), # f_op Object(Matching, "f_op/f_op_actor.cpp", extra_cflags=['-pragma "nosyminline on"']), diff --git a/include/f_ap/f_ap_game.h b/include/f_ap/f_ap_game.h index 77a68a77e..d060519ce 100644 --- a/include/f_ap/f_ap_game.h +++ b/include/f_ap/f_ap_game.h @@ -2,31 +2,69 @@ #define F_AP_GAME_H #include "JSystem/JUtility/TColor.h" +#include "m_Do/m_Do_hostIO.h" void fapGm_After(); void fapGm_Create(); void fapGm_Execute(); -class fapGm_HIO_c { +class fapGm_HIO_c : public JORReflexible { public: fapGm_HIO_c(); virtual ~fapGm_HIO_c(); - /* 0x04 */ u8 field_0x04[0x06 - 0x04]; + /* 0x04 */ u8 mChildID; + /* 0x05 */ u8 field_0x05; /* 0x06 */ u8 mDisplayMeter; - /* 0x07 */ u8 field_0x07[0x0C - 0x07]; + /* 0x07 */ u8 field_0x07; + /* 0x08 */ u8 field_0x08; + /* 0x09 */ u8 field_0x09; + /* 0x0A */ u8 field_0x0a; + /* 0x0B */ u8 field_0x0b; /* 0x0C */ f32 field_0x0c; - /* 0x10 */ u8 field_0x10[0x24 - 0x10]; + /* 0x10 */ u8 field_0x10; + /* 0x11 */ u8 field_0x11; + /* 0x12 */ u8 field_0x12; + /* 0x13 */ u8 field_0x13; + /* 0x14 */ u8 field_0x14; + /* 0x15 */ u8 field_0x15; + /* 0x16 */ u8 field_0x16; + /* 0x17 */ u8 field_0x17; + /* 0x18 */ u8 field_0x18; + /* 0x19 */ s8 field_0x19; + /* 0x1A */ u8 field_0x1a; + /* 0x1B */ u8 field_0x1b; + /* 0x1C */ u8 field_0x1c; + /* 0x1D */ u8 field_0x1d; + /* 0x1E */ u8 field_0x1e; + /* 0x1F */ u8 field_0x1f; + /* 0x20 */ JUtility::TColor field_0x20; /* 0x24 */ f32 mTriggerThreshLo; /* 0x28 */ f32 mTriggerThreshHi; /* 0x2C */ u16 field_0x2c; /* 0x2E */ u16 field_0x2e; - /* 0x30 */ u8 field_0x30[0x4C - 0x30]; + /* 0x30 */ u8 field_0x30; + /* 0x31 */ u8 field_0x31; + /* 0x32 */ u8 field_0x32; + /* 0x33 */ u8 field_0x33; + /* 0x34 */ u8 field_0x34; + /* 0x35 */ u8 field_0x35; + /* 0x36 */ u8 field_0x36; + /* 0x37 */ u8 field_0x37; + /* 0x38 */ u8 field_0x38; + /* 0x39 */ u8 field_0x39; + /* 0x3A */ u8 field_0x3a; + /* 0x3B */ u8 field_0x3b; + /* 0x3C */ JUtility::TColor field_0x3c; + /* 0x40 */ JUtility::TColor field_0x40; + /* 0x44 */ JUtility::TColor field_0x44; + /* 0x48 */ JUtility::TColor field_0x48; /* 0x4C */ u16 field_0x4c; /* 0x4E */ u16 field_0x4e; /* 0x50 */ u16 field_0x50; /* 0x52 */ u16 field_0x52; /* 0x54 */ u16 field_0x54; + /* 0x56 */ u8 field_0x56; }; // Size: 0x58 extern fapGm_HIO_c g_HIO; diff --git a/src/f_ap/f_ap_game.cpp b/src/f_ap/f_ap_game.cpp index 9615822c6..eea5b846b 100644 --- a/src/f_ap/f_ap_game.cpp +++ b/src/f_ap/f_ap_game.cpp @@ -10,11 +10,70 @@ #include "f_op/f_op_draw_tag.h" #include "f_pc/f_pc_manager.h" #include "SSystem/SComponent/c_counter.h" +#include "m_Do/m_Do_main.h" #include "dolphin/types.h" +fapGm_HIO_c g_HIO; + /* 8002306C-800231BC .text __ct__11fapGm_HIO_cFv */ fapGm_HIO_c::fapGm_HIO_c() { - /* Nonmatching */ + field_0x05 = 1; + + if (mDoMain::developmentMode) { + mDisplayMeter = true; + field_0x07 = 1; + } else { + mDisplayMeter = false; + field_0x07 = 0; + } + + field_0x09 = 1; + field_0x0a = 1; + field_0x0c = 0.96f; + field_0x10 = 0; + field_0x11 = 0; + field_0x12 = 8; + field_0x13 = 8; + field_0x14 = 10; + field_0x15 = 0xc; + field_0x16 = 10; + field_0x17 = 8; + field_0x18 = 8; + field_0x19 = -1; + field_0x1a = 0; + field_0x1b = 1; + field_0x1c = 0; + field_0x2c = 0x280; + field_0x2e = 0x1e0; + field_0x30 = 0; + field_0x20.r = 0xff; + field_0x20.g = 0xff; + field_0x20.b = 0xff; + field_0x20.a = 0xff; + mTriggerThreshLo = 0.9f; + mTriggerThreshHi = 0.6f; + field_0x3c.r = 0xff; + field_0x3c.g = 0x96; + field_0x3c.b = 0; + field_0x3c.a = 0xff; + field_0x40.r = 0xff; + field_0x40.g = 0x78; + field_0x40.b = 0; + field_0x40.a = 0xff; + field_0x44.r = 0; + field_0x44.g = 0; + field_0x44.b = 0; + field_0x44.a = 0xff; + field_0x48.r = 0; + field_0x48.g = 0; + field_0x48.b = 0; + field_0x48.a = 0xff; + field_0x4c = 0; + field_0x4e = 10; + field_0x54 = 0x1b; + field_0x50 = 0; + field_0x52 = 0; + field_0x56 = 0x82; } /* 800231BC-800231E4 .text fapGm_After__Fv */ @@ -38,7 +97,8 @@ void fapGm_Create() { fopCamM_Init(); fopDwTg_CreateQueue(); fopScnM_CreateReq(5, 0x7FFF, 0, 0); - // HIO + + g_HIO.mChildID = mDoHIO_root.mDoHIO_createChild("ゲームシステム", &g_HIO); } /* 80023288-800232D0 .text __dt__11fapGm_HIO_cFv */