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 "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;
}

View file

@ -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);

View file

@ -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) {

View file

@ -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()) {

View file

@ -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)

View file

@ -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 {

View file

@ -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;
}
}

View file

@ -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)

View file

@ -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);
}
}