Add more gamework setters

This commit is contained in:
gamemasterplc 2024-04-07 11:03:18 -05:00
parent 13e3527197
commit 70c811ea73
9 changed files with 95 additions and 76 deletions

View file

@ -4,6 +4,9 @@
#include "dolphin.h" #include "dolphin.h"
#include "game/flag.h" #include "game/flag.h"
//HACK: to prevent prototype errors
extern void HuPadRumbleAllStop(void);
typedef struct player_config { typedef struct player_config {
s16 character; s16 character;
s16 pad_idx; s16 pad_idx;
@ -175,16 +178,34 @@ static inline s32 GWRumbleGet(void)
return GWGameStat.rumble; return GWGameStat.rumble;
} }
static inline void GWRumbleSet(s32 value)
{
GWGameStat.rumble = value;
if(value == 0) {
HuPadRumbleAllStop();
}
}
static inline s32 GWMGExplainGet(void) static inline s32 GWMGExplainGet(void)
{ {
return GWSystem.explain_mg; return GWSystem.explain_mg;
} }
static inline void GWMGExplainSet(s32 value)
{
GWSystem.explain_mg = value;
}
static inline s32 GWMGShowComGet(void) static inline s32 GWMGShowComGet(void)
{ {
return GWSystem.show_com_mg; return GWSystem.show_com_mg;
} }
static inline void GWMGShowComSet(s32 value)
{
GWSystem.show_com_mg = value;
}
static inline s32 GWMGListGet(void) static inline s32 GWMGListGet(void)
{ {
if (GWSystem.mg_list == 3) { if (GWSystem.mg_list == 3) {
@ -193,6 +214,11 @@ static inline s32 GWMGListGet(void)
return GWSystem.mg_list; return GWSystem.mg_list;
} }
static inline void GWMGListSet(s32 value)
{
GWSystem.mg_list = value;
}
static inline s32 GWMessSpeedGet(void) static inline s32 GWMessSpeedGet(void)
{ {
if (GWSystem.mess_speed == 3) { if (GWSystem.mess_speed == 3) {
@ -201,10 +227,33 @@ static inline s32 GWMessSpeedGet(void)
return GWSystem.mess_speed; 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) static inline s32 GWSaveModeGet(void)
{ {
if (GWSystem.save_mode == 3) { if (GWSystem.save_mode == 3) {
GWSystem.save_mode = 1; GWSaveModeSet(1);
} }
return GWSystem.save_mode; return GWSystem.save_mode;
} }

View file

@ -129,14 +129,13 @@ static void fn_1_32F0(omObjData *arg0) {
fn_1_39E0(temp_r31->unk00, 1, 1); fn_1_39E0(temp_r31->unk00, 1, 1);
temp_r31->unk20 = 1; temp_r31->unk20 = 1;
temp_r31->unk28 = 0; temp_r31->unk28 = 0;
GWGameStat.rumble = 1; GWRumbleSet(1);
arg0->unk10 = 3; arg0->unk10 = 3;
} else if (fn_1_584(4) != 0 && temp_r31->unk20 != 0) { } else if (fn_1_584(4) != 0 && temp_r31->unk20 != 0) {
fn_1_39E0(temp_r31->unk00, 0, 1); fn_1_39E0(temp_r31->unk00, 0, 1);
temp_r31->unk20 = 0; temp_r31->unk20 = 0;
temp_r31->unk28 = 0; temp_r31->unk28 = 0;
GWGameStat.rumble = 0; GWRumbleSet(0);
HuPadRumbleAllStop();
arg0->unk10 = 3; 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 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 2)); temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 2));
Hu3DModelAttrSet(temp_r31->model[0], 0x40000002); Hu3DModelAttrSet(temp_r31->model[0], 0x40000002);
if (GWGameStat.rumble != 0) { if (GWRumbleGet()) {
Hu3DMotionTimeSet(temp_r31->model[0], 60.0f); Hu3DMotionTimeSet(temp_r31->model[0], 60.0f);
} else { } else {
Hu3DMotionTimeSet(temp_r31->model[0], 0.0f); 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 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL);
temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 11)); temp_r31->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_OPTION, 11));
if (GWGameStat.rumble != 0) { if (GWRumbleGet()) {
Hu3DModelAttrReset(temp_r31->model[0], 1); Hu3DModelAttrReset(temp_r31->model[0], 1);
} else { } else {
Hu3DModelAttrSet(temp_r31->model[0], 1); Hu3DModelAttrSet(temp_r31->model[0], 1);

View file

@ -197,7 +197,7 @@ static void fn_1_6E8(void) {
} }
SLCommonSet(); SLCommonSet();
if (SLSave() == 0) { if (SLSave() == 0) {
GWSystem.save_mode = 1; GWSaveModeSet(1);
} }
WipeCreate(2, 0, 0x14); WipeCreate(2, 0, 0x14);
while (WipeStatGet() != 0) { while (WipeStatGet() != 0) {

View file

@ -998,7 +998,7 @@ void fn_1_461C(void)
HuPrcVSleep(); HuPrcVSleep();
} }
if(GWSaveModeGet() == 2) { if(GWSaveModeGet() == 2) {
GWSystem.save_mode = 1; GWSaveModeSet(1);
} }
if(GWPartyGet() == 1) { if(GWPartyGet() == 1) {
GWGameStat.party_continue = 1; GWGameStat.party_continue = 1;
@ -1011,7 +1011,7 @@ void fn_1_461C(void)
if(SLSave()) { if(SLSave()) {
saveExecF = 1; saveExecF = 1;
} else { } else {
GWSystem.save_mode = 1; GWSaveModeSet(1);
} }
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20);
while(WipeStatGet()) { while(WipeStatGet()) {

View file

@ -154,25 +154,24 @@ static void FortuneMain(void)
while(fortunePlatformObj) { while(fortunePlatformObj) {
HuPrcVSleep(); HuPrcVSleep();
} }
if(GWPlayer[GWSystem.player_curr].com) { if(GWPlayer[GWSystem.player_curr].com && !GWMGShowComGet()) {
if((int)GWSystem.show_com_mg == 0) { HuPrcSleep(60);
HuPrcSleep(60); for(i=0; i<4; i++) {
for(i=0; i<4; i++) { s32 bit11 = GWPlayer[i].team_backup;
s32 bit11 = GWPlayer[i].team_backup; GWPlayer[i].team = bit11;
GWPlayer[i].team = bit11; GWPlayerCfg[i].group = bit11;
GWPlayerCfg[i].group = bit11;
}
ConfigComFortune();
FortunePostMG();
BoardMusStartBoard();
ExecComFortuneWin();
return;
} }
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) static void FortunePostMG(void)

View file

@ -341,7 +341,7 @@ void BoardStoryConfigSet(s32 mg_list, s32 diff_story)
GWSystem.team = 0; GWSystem.team = 0;
GWSystem.diff_story = diff_story; GWSystem.diff_story = diff_story;
GWSystem.bonus_star = 0; GWSystem.bonus_star = 0;
GWSystem.mg_list = mg_list; GWMGListSet(mg_list);
GWPlayer[0].handicap = 0; GWPlayer[0].handicap = 0;
GWPlayer[1].handicap = 0; GWPlayer[1].handicap = 0;
GWPlayer[2].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.team = team;
GWSystem.diff_story = 0; GWSystem.diff_story = 0;
GWSystem.bonus_star = bonus_star; GWSystem.bonus_star = bonus_star;
GWSystem.mg_list = mg_list; GWMGListSet(mg_list);
GWSystem.max_turn = max_turn; GWSystem.max_turn = max_turn;
memset(GWPlayer, 0, 4*sizeof(PlayerState)); memset(GWPlayer, 0, 4*sizeof(PlayerState));
GWPlayer[0].handicap = p1_handicap; GWPlayer[0].handicap = p1_handicap;
@ -613,27 +613,12 @@ s32 BoardStartCheck(void)
static void CreateBoard(void) static void CreateBoard(void)
{ {
s32 guest_status; s32 guest_status;
s32 mess_speed;
GWSystem.mg_next = -1; GWSystem.mg_next = -1;
if(!GWGameStat.field10E_bit5 && GWMGListGet() == 2) { if(!GWGameStat.field10E_bit5 && GWMGListGet() == 2) {
GWSystem.mg_list = 0; GWMGListSet(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;
} }
GWMessSpeedSet(GWMessSpeedGet());
if(GWMGExplainGet()) { if(GWMGExplainGet()) {
_SetFlag(FLAG_ID_MAKE(0, 11)); _SetFlag(FLAG_ID_MAKE(0, 11));
} else { } else {

View file

@ -483,8 +483,6 @@ static void PauseConfigObjFunc(omObjData *arg0) {
ConfigWork *temp_r31; ConfigWork *temp_r31;
s16 temp_r28; s16 temp_r28;
s32 var_r29; s32 var_r29;
s32 var_r27;
s32 var_r26;
temp_r31 = OM_GET_WORK_PTR(arg0, ConfigWork); temp_r31 = OM_GET_WORK_PTR(arg0, ConfigWork);
if (temp_r31->unk00_field0 != 0 || BoardIsKill()) { if (temp_r31->unk00_field0 != 0 || BoardIsKill()) {
@ -508,15 +506,13 @@ static void PauseConfigObjFunc(omObjData *arg0) {
break; break;
case 1: case 1:
if (UpdatePauseBox(arg0, temp_r31, 1) != 0) { if (UpdatePauseBox(arg0, temp_r31, 1) != 0) {
var_r27 = boxState[1]; GWMGExplainSet(boxState[1]);
GWSystem.explain_mg = var_r27;
} }
UpdatePauseText(cursorPos); UpdatePauseText(cursorPos);
break; break;
case 2: case 2:
if (UpdatePauseBox(arg0, temp_r31, 2) != 0) { if (UpdatePauseBox(arg0, temp_r31, 2) != 0) {
var_r26 = boxState[2]; GWMGShowComSet(boxState[2]);
GWSystem.show_com_mg = var_r26;
} }
UpdatePauseText(cursorPos); UpdatePauseText(cursorPos);
break; break;
@ -524,13 +520,13 @@ static void PauseConfigObjFunc(omObjData *arg0) {
if (UpdatePauseBoxExt(arg0, temp_r31, 3) != 0) { if (UpdatePauseBoxExt(arg0, temp_r31, 3) != 0) {
switch (boxState[3]) { switch (boxState[3]) {
case 0: case 0:
GWSystem.mg_list = 1; GWMGListSet(1);
break; break;
case 1: case 1:
GWSystem.mg_list = 0; GWMGListSet(0);
break; break;
case 2: case 2:
GWSystem.mg_list = 2; GWMGListSet(2);
break; break;
} }
} }
@ -538,11 +534,7 @@ static void PauseConfigObjFunc(omObjData *arg0) {
break; break;
case 4: case 4:
if (UpdatePauseBox(arg0, temp_r31, 4) != 0) { if (UpdatePauseBox(arg0, temp_r31, 4) != 0) {
var_r29 = boxState[4]; GWRumbleSet(boxState[4]);
GWGameStat.rumble = var_r29;
if (var_r29 == 0) {
HuPadRumbleAllStop();
}
} }
UpdatePauseText(cursorPos); UpdatePauseText(cursorPos);
break; break;
@ -550,16 +542,13 @@ static void PauseConfigObjFunc(omObjData *arg0) {
if (UpdatePauseBoxExt(arg0, temp_r31, 5) != 0) { if (UpdatePauseBoxExt(arg0, temp_r31, 5) != 0) {
switch (boxState[5]) { switch (boxState[5]) {
case 0: case 0:
GWSystem.mess_speed = 2; GWMessSpeedSet(2);
GWSystem.mess_delay = 48;
break; break;
case 1: case 1:
GWSystem.mess_speed = 1; GWMessSpeedSet(1);
GWSystem.mess_delay = 32;
break; break;
case 2: case 2:
GWSystem.mess_speed = 0; GWMessSpeedSet(0);
GWSystem.mess_delay = 16;
break; break;
} }
} }
@ -573,13 +562,13 @@ static void PauseConfigObjFunc(omObjData *arg0) {
if (UpdatePauseBoxExt(arg0, temp_r31, 6) != 0) { if (UpdatePauseBoxExt(arg0, temp_r31, 6) != 0) {
switch (boxState[6]) { switch (boxState[6]) {
case 0: case 0:
GWSystem.save_mode = 1; GWSaveModeSet(1);
break; break;
case 1: case 1:
GWSystem.save_mode = 0; GWSaveModeSet(0);
break; break;
case 2: case 2:
GWSystem.save_mode = 2; GWSaveModeSet(2);
break; break;
} }
} }

View file

@ -36,12 +36,11 @@ static inline void InitPlayerConfig(void)
static inline void ResetBoardSettings(void) static inline void ResetBoardSettings(void)
{ {
GWGameStat.rumble = 1; GWRumbleSet(1);
GWSystem.explain_mg = 1; GWMGExplainSet(1);
GWSystem.show_com_mg = 1; GWMGShowComSet(1);
GWSystem.mess_speed = 1; GWMessSpeedSet(1);
GWSystem.mess_delay = 32; GWSaveModeSet(0);
GWSystem.save_mode = 0;
} }
void GWInit(void) void GWInit(void)

View file

@ -1210,9 +1210,8 @@ void omGameSysInit(Process *objman) {
} }
void omVibrate(s16 player, s16 duration, s16 off, s16 on) { 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); HuPadRumbleSet(GWPlayerCfg[player].pad_idx, duration, off, on);
} }
} }