From b46e8978265e717f2ae0dc6f3793b7f694a982db Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Fri, 2 Feb 2024 20:34:16 -0500 Subject: [PATCH] Realmatch dComIfGp_event_runCheck inline dComIfGp_event_runCheck's return type being different from the inner inline runCheck's return type apparently causes the compiler to double up the g_dComIfG_gameInfo load in certain functions. And also fix dComIfGp_event_chkEventFlag which had the same issue. --- include/d/d_com_inf_game.h | 4 ++-- src/d/actor/d_a_agb.cpp | 8 +++----- src/d/actor/d_a_npc_kamome.cpp | 4 +--- src/d/actor/d_a_obj_zouK.cpp | 10 ++++------ src/d/actor/d_a_player_main.cpp | 12 +++--------- src/d/actor/d_a_player_npc.cpp | 4 +--- src/d/actor/d_a_rd.cpp | 4 +--- 7 files changed, 15 insertions(+), 31 deletions(-) diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index e89928406..dc4d48eee 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -2490,7 +2490,7 @@ inline void dComIfGp_clearMesgAnimeTagInfo() { * === EVENT === */ -inline BOOL dComIfGp_event_runCheck() { +inline bool dComIfGp_event_runCheck() { return g_dComIfG_gameInfo.play.getEvent().runCheck(); } @@ -2510,7 +2510,7 @@ inline void dComIfGp_event_offEventFlag(s16 flag) { g_dComIfG_gameInfo.play.getEvent().offEventFlag(flag); } -inline BOOL dComIfGp_event_chkEventFlag(s16 flag) { +inline u16 dComIfGp_event_chkEventFlag(s16 flag) { return g_dComIfG_gameInfo.play.getEvent().chkEventFlag(flag); } diff --git a/src/d/actor/d_a_agb.cpp b/src/d/actor/d_a_agb.cpp index 9bb53a1e2..ab1aac122 100644 --- a/src/d/actor/d_a_agb.cpp +++ b/src/d/actor/d_a_agb.cpp @@ -914,11 +914,9 @@ void daAgb_c::FlagsSend(u32 stage_type) { if (dKyw_gbwind_use_check()) { mFlags.field_0xb_6 = 1; s16 r3; - // Fakematch: using the dComIfGp_event_runCheck inline breaks the match - // if (dComIfGp_event_runCheck() && (dComIfGp_evmng_startCheck("TACT_WINDOW2_SHIP") || dComIfGp_evmng_startCheck("TACT_WINDOW2"))) { - if (g_dComIfG_gameInfo.play.getEvent().runCheck() && - (dComIfGp_evmng_startCheck("TACT_WINDOW2_SHIP") || dComIfGp_evmng_startCheck("TACT_WINDOW2"))) - { + if (dComIfGp_event_runCheck() && + (dComIfGp_evmng_startCheck("TACT_WINDOW2_SHIP") || dComIfGp_evmng_startCheck("TACT_WINDOW2")) + ) { r3 = field_0x658; } else { cXyz* wind_vec = dKyw_get_wind_vec(); diff --git a/src/d/actor/d_a_npc_kamome.cpp b/src/d/actor/d_a_npc_kamome.cpp index 316309657..bca8d27fd 100644 --- a/src/d/actor/d_a_npc_kamome.cpp +++ b/src/d/actor/d_a_npc_kamome.cpp @@ -957,9 +957,7 @@ BOOL daNpc_kam_c::eventProc() { } int staffId = dComIfGp_evmng_getMyStaffId(l_staff_name); - // The dComIfGp_event_runCheck inline breaks the codegen here. - // if (dComIfGp_event_runCheck() && !checkCommandTalk()) { - if (g_dComIfG_gameInfo.play.getEvent().runCheck() && !checkCommandTalk()) { + if (dComIfGp_event_runCheck() && !checkCommandTalk()) { if (staffId != -1) { int actIdx = dComIfGp_evmng_getMyActIdx(staffId, cut_name_tbl, ARRAY_SIZE(cut_name_tbl), 1, 0); if (actIdx == -1) { diff --git a/src/d/actor/d_a_obj_zouK.cpp b/src/d/actor/d_a_obj_zouK.cpp index b8b9dfb61..010b17f95 100644 --- a/src/d/actor/d_a_obj_zouK.cpp +++ b/src/d/actor/d_a_obj_zouK.cpp @@ -215,20 +215,18 @@ BOOL daObjZouk::Act_c::jokai_demo() { /* 000012F0-00001510 .text _execute__Q29daObjZouk5Act_cFv */ bool daObjZouk::Act_c::_execute() { - fopAc_ac_c* actor = this; set_mtx(); texture_scroll(); fopAcM_rollPlayerCrash(this, 288.0f, 0x0D); if (!jokai_demo()) play_stop_joint_anime(); if (param_get_arg0() == 0) { - dBgS* bgsp = dComIfG_Bgsp(); if (dComIfGp_event_runCheck()) { if (mBgBefore != NULL && mBgAfter != NULL) { if (mBgAfter->ChkUsed()) - bgsp->Release(mBgAfter); + dComIfG_Bgsp()->Release(mBgAfter); if (!mBgBefore->ChkUsed()) { - bgsp->Regist(mBgBefore, actor); + dComIfG_Bgsp()->Regist(mBgBefore, this); mBgBefore->SetCrrFunc(NULL); mBgMode = 0; } @@ -239,8 +237,8 @@ bool daObjZouk::Act_c::_execute() { } else { if (mBgMode == 0 && dComIfGs_isCollect(0, 1) && mBgBefore != NULL && mBgAfter != NULL) { if (mBgBefore->ChkUsed()) - bgsp->Release(mBgBefore); - bgsp->Regist(mBgAfter, actor); + dComIfG_Bgsp()->Release(mBgBefore); + dComIfG_Bgsp()->Regist(mBgAfter, this); mBgAfter->SetCrrFunc(NULL); mBgMode = 1; } diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index fa0d304ed..988a34bab 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -3141,13 +3141,9 @@ BOOL daPy_lk_c::execute() { offNoResetFlg1(daPyFlg1_EQUIP_DRAGON_SHIELD); } - // Using the dComIfGp_event_runCheck inline breaks the match - // if (dComIfGp_event_runCheck()) { - if (g_dComIfG_gameInfo.play.getEvent().runCheck()) { + if (dComIfGp_event_runCheck()) { mStaffIdx = dComIfGp_evmng_getMyStaffId("Link", this); - // Using the dComIfGp_event_chkEventFlag inline breaks the match - // if (mEvtInfo.checkCommandDoor() && !dComIfGp_event_chkEventFlag(0x4) && mHeldItemType == 0x101) { - if (mEvtInfo.checkCommandDoor() && !g_dComIfG_gameInfo.play.getEvent().chkEventFlag(0x4) && mHeldItemType == 0x101) { + if (mEvtInfo.checkCommandDoor() && !dComIfGp_event_chkEventFlag(0x4) && mHeldItemType == 0x101) { fopAc_ac_c* equipActor = mActorKeepEquip.getActor(); if (equipActor) { s16 angle = shape_angle.y + 0x8000; @@ -3573,9 +3569,7 @@ BOOL daPy_lk_c::execute() { offNoResetFlg1((daPy_FLG1)(daPyFlg1_NPC_CALL_COMMAND | daPyFlg1_VINE_CATCH)); - // Using the dComIfGp_event_runCheck inline breaks the match - // if (dComIfGp_event_runCheck() || checkNoControll()) { - if (g_dComIfG_gameInfo.play.getEvent().runCheck() || checkNoControll()) { + if (dComIfGp_event_runCheck() || checkNoControll()) { dComIfGp_setDoStatus(0); dComIfGp_setRStatus(0); } else { diff --git a/src/d/actor/d_a_player_npc.cpp b/src/d/actor/d_a_player_npc.cpp index 208ca12a6..4168db90e 100644 --- a/src/d/actor/d_a_player_npc.cpp +++ b/src/d/actor/d_a_player_npc.cpp @@ -159,9 +159,7 @@ BOOL daPy_npc_c::initialRestartOption(s8 option, int save) { /* 8015ABD8-8015AC74 .text checkNowPosMove__10daPy_npc_cFPCc */ BOOL daPy_npc_c::checkNowPosMove(const char* pName) { - // Using the dComIfGp_event_runCheck inline makes the codegen not match. - // if (!dComIfGp_event_runCheck()) { - if (!g_dComIfG_gameInfo.play.getEvent().runCheck()) { + if (!dComIfGp_event_runCheck()) { return TRUE; } if (mEvtInfo.checkCommandTalk()) { diff --git a/src/d/actor/d_a_rd.cpp b/src/d/actor/d_a_rd.cpp index 05af4fe3d..b923cf639 100644 --- a/src/d/actor/d_a_rd.cpp +++ b/src/d/actor/d_a_rd.cpp @@ -1048,9 +1048,7 @@ void daRd_c::modeCryWait() { onIkari(); setBtkAnm(3); } - // The dComIfGp_event_runCheck inline breaks the codegen here. - // if (dComIfGp_event_runCheck()) { - if (g_dComIfG_gameInfo.play.getEvent().runCheck()) { + if (dComIfGp_event_runCheck()) { mTimer1 = 60; mTimer2 = 45; } else if (isAnm(AnmPrm_WALK)) {