diff --git a/include/game/gamework_data.h b/include/game/gamework_data.h index 7b1ed78b..35303b96 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -4,6 +4,9 @@ #include "dolphin.h" #include "game/flag.h" +//HACK: to prevent prototype errors +extern void HuPadRumbleAllStop(void); + typedef struct player_config { s16 character; s16 pad_idx; @@ -175,16 +178,34 @@ static inline s32 GWRumbleGet(void) return GWGameStat.rumble; } +static inline void GWRumbleSet(s32 value) +{ + GWGameStat.rumble = value; + if(value == 0) { + HuPadRumbleAllStop(); + } +} + static inline s32 GWMGExplainGet(void) { return GWSystem.explain_mg; } +static inline void GWMGExplainSet(s32 value) +{ + GWSystem.explain_mg = value; +} + static inline s32 GWMGShowComGet(void) { return GWSystem.show_com_mg; } +static inline void GWMGShowComSet(s32 value) +{ + GWSystem.show_com_mg = value; +} + static inline s32 GWMGListGet(void) { if (GWSystem.mg_list == 3) { @@ -193,6 +214,11 @@ static inline s32 GWMGListGet(void) return GWSystem.mg_list; } +static inline void GWMGListSet(s32 value) +{ + GWSystem.mg_list = value; +} + static inline s32 GWMessSpeedGet(void) { if (GWSystem.mess_speed == 3) { @@ -201,10 +227,33 @@ static inline s32 GWMessSpeedGet(void) return GWSystem.mess_speed; } +static inline void GWMessSpeedSet(s32 value) +{ + GWSystem.mess_speed = value; + switch(value) { + case 0: + GWSystem.mess_delay = 16; + break; + + case 2: + GWSystem.mess_delay = 48; + break; + + default: + GWSystem.mess_delay = 32; + break; + } +} + +static inline void GWSaveModeSet(s32 value) +{ + GWSystem.save_mode = value; +} + static inline s32 GWSaveModeGet(void) { if (GWSystem.save_mode == 3) { - GWSystem.save_mode = 1; + GWSaveModeSet(1); } return GWSystem.save_mode; } diff --git a/src/REL/option/rumble.c b/src/REL/option/rumble.c index 72a3169b..2b21ac52 100755 --- a/src/REL/option/rumble.c +++ b/src/REL/option/rumble.c @@ -129,14 +129,13 @@ static void fn_1_32F0(omObjData *arg0) { fn_1_39E0(temp_r31->unk00, 1, 1); temp_r31->unk20 = 1; temp_r31->unk28 = 0; - GWGameStat.rumble = 1; + GWRumbleSet(1); arg0->unk10 = 3; } else if (fn_1_584(4) != 0 && temp_r31->unk20 != 0) { fn_1_39E0(temp_r31->unk00, 0, 1); temp_r31->unk20 = 0; temp_r31->unk28 = 0; - GWGameStat.rumble = 0; - HuPadRumbleAllStop(); + GWRumbleSet(0); arg0->unk10 = 3; } } @@ -201,7 +200,7 @@ static omObjData *fn_1_38BC(void) { temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 2)); Hu3DModelAttrSet(temp_r31->model[0], 0x40000002); - if (GWGameStat.rumble != 0) { + if (GWRumbleGet()) { Hu3DMotionTimeSet(temp_r31->model[0], 60.0f); } else { Hu3DMotionTimeSet(temp_r31->model[0], 0.0f); @@ -319,7 +318,7 @@ static omObjData *fn_1_3F28(void) { temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 11)); - if (GWGameStat.rumble != 0) { + if (GWRumbleGet()) { Hu3DModelAttrReset(temp_r31->model[0], 1); } else { Hu3DModelAttrSet(temp_r31->model[0], 1); diff --git a/src/REL/option/scene.c b/src/REL/option/scene.c index 8a24add2..e8cf097b 100755 --- a/src/REL/option/scene.c +++ b/src/REL/option/scene.c @@ -197,7 +197,7 @@ static void fn_1_6E8(void) { } SLCommonSet(); if (SLSave() == 0) { - GWSystem.save_mode = 1; + GWSaveModeSet(1); } WipeCreate(2, 0, 0x14); while (WipeStatGet() != 0) { diff --git a/src/REL/resultDll/main.c b/src/REL/resultDll/main.c index 644809bb..5eac033d 100644 --- a/src/REL/resultDll/main.c +++ b/src/REL/resultDll/main.c @@ -998,7 +998,7 @@ void fn_1_461C(void) HuPrcVSleep(); } if(GWSaveModeGet() == 2) { - GWSystem.save_mode = 1; + GWSaveModeSet(1); } if(GWPartyGet() == 1) { GWGameStat.party_continue = 1; @@ -1011,7 +1011,7 @@ void fn_1_461C(void) if(SLSave()) { saveExecF = 1; } else { - GWSystem.save_mode = 1; + GWSaveModeSet(1); } WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); while(WipeStatGet()) { diff --git a/src/game/board/fortune.c b/src/game/board/fortune.c index a7097baa..1382dbce 100644 --- a/src/game/board/fortune.c +++ b/src/game/board/fortune.c @@ -154,25 +154,24 @@ static void FortuneMain(void) while(fortunePlatformObj) { HuPrcVSleep(); } - if(GWPlayer[GWSystem.player_curr].com) { - if((int)GWSystem.show_com_mg == 0) { - HuPrcSleep(60); - for(i=0; i<4; i++) { - s32 bit11 = GWPlayer[i].team_backup; - GWPlayer[i].team = bit11; - GWPlayerCfg[i].group = bit11; - } - ConfigComFortune(); - FortunePostMG(); - BoardMusStartBoard(); - ExecComFortuneWin(); - return; + if(GWPlayer[GWSystem.player_curr].com && !GWMGShowComGet()) { + HuPrcSleep(60); + for(i=0; i<4; i++) { + s32 bit11 = GWPlayer[i].team_backup; + GWPlayer[i].team = bit11; + GWPlayerCfg[i].group = bit11; } + ConfigComFortune(); + FortunePostMG(); + BoardMusStartBoard(); + ExecComFortuneWin(); + return; + } else { + GWMGAvailSet(444); + GWSystem.mg_next = 43; + _SetFlag(0x10005); + BoardNextOvlSet(OVL_M444); } - GWMGAvailSet(444); - GWSystem.mg_next = 43; - _SetFlag(0x10005); - BoardNextOvlSet(OVL_M444); } static void FortunePostMG(void) diff --git a/src/game/board/main.c b/src/game/board/main.c index e0d550e3..54fd6cf2 100644 --- a/src/game/board/main.c +++ b/src/game/board/main.c @@ -341,7 +341,7 @@ void BoardStoryConfigSet(s32 mg_list, s32 diff_story) GWSystem.team = 0; GWSystem.diff_story = diff_story; GWSystem.bonus_star = 0; - GWSystem.mg_list = mg_list; + GWMGListSet(mg_list); GWPlayer[0].handicap = 0; GWPlayer[1].handicap = 0; GWPlayer[2].handicap = 0; @@ -365,7 +365,7 @@ void BoardPartyConfigSet(s32 team, s32 bonus_star, s32 mg_list, s32 max_turn, s3 GWSystem.team = team; GWSystem.diff_story = 0; GWSystem.bonus_star = bonus_star; - GWSystem.mg_list = mg_list; + GWMGListSet(mg_list); GWSystem.max_turn = max_turn; memset(GWPlayer, 0, 4*sizeof(PlayerState)); GWPlayer[0].handicap = p1_handicap; @@ -613,27 +613,12 @@ s32 BoardStartCheck(void) static void CreateBoard(void) { s32 guest_status; - s32 mess_speed; GWSystem.mg_next = -1; if(!GWGameStat.field10E_bit5 && GWMGListGet() == 2) { - GWSystem.mg_list = 0; - } - mess_speed = GWMessSpeedGet(); - GWSystem.mess_speed = mess_speed; - switch(mess_speed) { - case 0: - GWSystem.mess_delay = 16; - break; - - case 2: - GWSystem.mess_delay = 48; - break; - - default: - GWSystem.mess_delay = 32; - break; + GWMGListSet(0); } + GWMessSpeedSet(GWMessSpeedGet()); if(GWMGExplainGet()) { _SetFlag(FLAG_ID_MAKE(0, 11)); } else { diff --git a/src/game/board/pause.c b/src/game/board/pause.c index d4718ff5..a3b6a10d 100755 --- a/src/game/board/pause.c +++ b/src/game/board/pause.c @@ -483,8 +483,6 @@ static void PauseConfigObjFunc(omObjData *arg0) { ConfigWork *temp_r31; s16 temp_r28; s32 var_r29; - s32 var_r27; - s32 var_r26; temp_r31 = OM_GET_WORK_PTR(arg0, ConfigWork); if (temp_r31->unk00_field0 != 0 || BoardIsKill()) { @@ -508,15 +506,13 @@ static void PauseConfigObjFunc(omObjData *arg0) { break; case 1: if (UpdatePauseBox(arg0, temp_r31, 1) != 0) { - var_r27 = boxState[1]; - GWSystem.explain_mg = var_r27; + GWMGExplainSet(boxState[1]); } UpdatePauseText(cursorPos); break; case 2: if (UpdatePauseBox(arg0, temp_r31, 2) != 0) { - var_r26 = boxState[2]; - GWSystem.show_com_mg = var_r26; + GWMGShowComSet(boxState[2]); } UpdatePauseText(cursorPos); break; @@ -524,13 +520,13 @@ static void PauseConfigObjFunc(omObjData *arg0) { if (UpdatePauseBoxExt(arg0, temp_r31, 3) != 0) { switch (boxState[3]) { case 0: - GWSystem.mg_list = 1; + GWMGListSet(1); break; case 1: - GWSystem.mg_list = 0; + GWMGListSet(0); break; case 2: - GWSystem.mg_list = 2; + GWMGListSet(2); break; } } @@ -538,11 +534,7 @@ static void PauseConfigObjFunc(omObjData *arg0) { break; case 4: if (UpdatePauseBox(arg0, temp_r31, 4) != 0) { - var_r29 = boxState[4]; - GWGameStat.rumble = var_r29; - if (var_r29 == 0) { - HuPadRumbleAllStop(); - } + GWRumbleSet(boxState[4]); } UpdatePauseText(cursorPos); break; @@ -550,16 +542,13 @@ static void PauseConfigObjFunc(omObjData *arg0) { if (UpdatePauseBoxExt(arg0, temp_r31, 5) != 0) { switch (boxState[5]) { case 0: - GWSystem.mess_speed = 2; - GWSystem.mess_delay = 48; + GWMessSpeedSet(2); break; case 1: - GWSystem.mess_speed = 1; - GWSystem.mess_delay = 32; + GWMessSpeedSet(1); break; case 2: - GWSystem.mess_speed = 0; - GWSystem.mess_delay = 16; + GWMessSpeedSet(0); break; } } @@ -573,13 +562,13 @@ static void PauseConfigObjFunc(omObjData *arg0) { if (UpdatePauseBoxExt(arg0, temp_r31, 6) != 0) { switch (boxState[6]) { case 0: - GWSystem.save_mode = 1; + GWSaveModeSet(1); break; case 1: - GWSystem.save_mode = 0; + GWSaveModeSet(0); break; case 2: - GWSystem.save_mode = 2; + GWSaveModeSet(2); break; } } diff --git a/src/game/gamework.c b/src/game/gamework.c index 552ca588..e6207992 100644 --- a/src/game/gamework.c +++ b/src/game/gamework.c @@ -36,12 +36,11 @@ static inline void InitPlayerConfig(void) static inline void ResetBoardSettings(void) { - GWGameStat.rumble = 1; - GWSystem.explain_mg = 1; - GWSystem.show_com_mg = 1; - GWSystem.mess_speed = 1; - GWSystem.mess_delay = 32; - GWSystem.save_mode = 0; + GWRumbleSet(1); + GWMGExplainSet(1); + GWMGShowComSet(1); + GWMessSpeedSet(1); + GWSaveModeSet(0); } void GWInit(void) diff --git a/src/game/objsub.c b/src/game/objsub.c index a3dde048..19e0b390 100644 --- a/src/game/objsub.c +++ b/src/game/objsub.c @@ -1210,9 +1210,8 @@ void omGameSysInit(Process *objman) { } void omVibrate(s16 player, s16 duration, s16 off, s16 on) { - s32 rumble = GWGameStat.rumble; - if (rumble != 0 && GWPlayerCfg[player].iscom == 0) { + if (GWRumbleGet() != 0 && GWPlayerCfg[player].iscom == 0) { HuPadRumbleSet(GWPlayerCfg[player].pad_idx, duration, off, on); } }