From 984871eb3892a081d42209a62ca8951cbb64dd31 Mon Sep 17 00:00:00 2001 From: Dragorn421 Date: Thu, 23 Jun 2022 18:32:48 -0700 Subject: [PATCH] Document `SaveContext.gameMode` (#1295) * Document `SaveContext.gameMode` * end credits * Remove no longer needed comment --- include/z64save.h | 7 +++++++ src/code/graph.c | 2 +- src/code/z_camera.c | 2 +- src/code/z_construct.c | 2 +- src/code/z_demo.c | 15 ++++++++------- src/code/z_kankyo.c | 8 +++++--- src/code/z_parameter.c | 2 +- src/code/z_play.c | 12 ++++++------ src/code/z_player_lib.c | 3 ++- src/overlays/actors/ovl_En_Light/z_en_light.c | 3 +-- src/overlays/actors/ovl_En_Mag/z_en_mag.c | 2 +- src/overlays/actors/ovl_En_Mm/z_en_mm.c | 2 +- .../ovl_En_Okarina_Effect/z_en_okarina_effect.c | 2 +- src/overlays/actors/ovl_player_actor/z_player.c | 2 +- .../gamestates/ovl_file_choose/z_file_choose.c | 4 ++-- src/overlays/gamestates/ovl_opening/z_opening.c | 2 +- src/overlays/gamestates/ovl_title/z_title.c | 2 +- 17 files changed, 41 insertions(+), 31 deletions(-) diff --git a/include/z64save.h b/include/z64save.h index fcdb71c0f4..3ebda2ece2 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -245,6 +245,13 @@ typedef enum { /* 3 */ SUNSSONG_SPECIAL // time does not advance, but signals the song was played. used for freezing redeads } SunsSongState; +typedef enum { + /* 0 */ GAMEMODE_NORMAL, + /* 1 */ GAMEMODE_TITLE_SCREEN, + /* 2 */ GAMEMODE_FILE_SELECT, // Note: only instance type transitions swap to file select + /* 3 */ GAMEMODE_END_CREDITS +} GameMode; + typedef enum { /* 0 */ LINK_AGE_ADULT, /* 1 */ LINK_AGE_CHILD diff --git a/src/code/graph.c b/src/code/graph.c index 948dc127d9..fc41f1a610 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -384,7 +384,7 @@ void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState) { if (gIsCtrlr2Valid && CHECK_BTN_ALL(gameState->input[0].press.button, BTN_Z) && CHECK_BTN_ALL(gameState->input[0].cur.button, BTN_L | BTN_R)) { - gSaveContext.gameMode = 0; + gSaveContext.gameMode = GAMEMODE_NORMAL; SET_NEXT_GAMESTATE(gameState, MapSelect_Init, MapSelectState); gameState->running = false; } diff --git a/src/code/z_camera.c b/src/code/z_camera.c index b57f6ee5cc..b625f5c390 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -7529,7 +7529,7 @@ Vec3s Camera_Update(Camera* camera) { } if (camera->status == CAM_STAT_ACTIVE) { - if ((gSaveContext.gameMode != 0) && (gSaveContext.gameMode != 3)) { + if ((gSaveContext.gameMode != GAMEMODE_NORMAL) && (gSaveContext.gameMode != GAMEMODE_END_CREDITS)) { sCameraInterfaceFlags = 0; Camera_UpdateInterface(sCameraInterfaceFlags); } else if ((D_8011D3F0 != 0) && (camera->camId == CAM_ID_MAIN)) { diff --git a/src/code/z_construct.c b/src/code/z_construct.c index 1b2e2706af..adc90a4109 100644 --- a/src/code/z_construct.c +++ b/src/code/z_construct.c @@ -506,7 +506,7 @@ void func_80111070(void) { WREG(94) = 3; WREG(95) = 6; - if (gSaveContext.gameMode == 0) { + if (gSaveContext.gameMode == GAMEMODE_NORMAL) { R_TEXTBOX_X = 52; R_TEXTBOX_Y = 36; VREG(2) = 214; diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 82973eb119..04fde14899 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -489,8 +489,8 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB Player* player = GET_PLAYER(play); s32 temp = 0; - if ((gSaveContext.gameMode != 0) && (gSaveContext.gameMode != 3) && (play->sceneNum != SCENE_SPOT00) && - (csCtx->frames > 20) && + if ((gSaveContext.gameMode != GAMEMODE_NORMAL) && (gSaveContext.gameMode != GAMEMODE_END_CREDITS) && + (play->sceneNum != SCENE_SPOT00) && (csCtx->frames > 20) && (CHECK_BTN_ALL(play->state.input[0].press.button, BTN_A) || CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B) || CHECK_BTN_ALL(play->state.input[0].press.button, BTN_START)) && @@ -509,7 +509,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB osSyncPrintf("\n分岐先指定!!=[%d]番", cmd->base); // "Future fork designation=No. [%d]" - if ((gSaveContext.gameMode != 0) && (csCtx->frames != cmd->startFrame)) { + if ((gSaveContext.gameMode != GAMEMODE_NORMAL) && (csCtx->frames != cmd->startFrame)) { gSaveContext.unk_13E7 = 1; } @@ -826,7 +826,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 54: - gSaveContext.gameMode = 3; + gSaveContext.gameMode = GAMEMODE_END_CREDITS; Audio_SetSoundBanksMute(0x6F); play->linkAgeOnLoad = LINK_AGE_CHILD; play->nextEntranceIndex = ENTR_SPOT09_0; @@ -1207,7 +1207,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; case 117: - gSaveContext.gameMode = 3; + gSaveContext.gameMode = GAMEMODE_END_CREDITS; Audio_SetSoundBanksMute(0x6F); play->linkAgeOnLoad = LINK_AGE_ADULT; play->nextEntranceIndex = ENTR_SPOT00_0; @@ -1959,7 +1959,7 @@ void func_80068DC0(PlayState* play, CutsceneContext* csCtx) { osSyncPrintf("\n\n\n\n\nやっぱりここかいな"); // "Right here, huh" gSaveContext.cutsceneIndex = 0; - gSaveContext.gameMode = 0; + gSaveContext.gameMode = GAMEMODE_NORMAL; if (D_8015FCC8 != 0) { switch (gSaveContext.entranceIndex) { @@ -2076,7 +2076,8 @@ void Cutscene_HandleEntranceTriggers(PlayState* play) { void Cutscene_HandleConditionalTriggers(PlayState* play) { osSyncPrintf("\ngame_info.mode=[%d] restart_flag", ((void)0, gSaveContext.respawnFlag)); - if ((gSaveContext.gameMode == 0) && (gSaveContext.respawnFlag <= 0) && (gSaveContext.cutsceneIndex < 0xFFF0)) { + if ((gSaveContext.gameMode == GAMEMODE_NORMAL) && (gSaveContext.respawnFlag <= 0) && + (gSaveContext.cutsceneIndex < 0xFFF0)) { if ((gSaveContext.entranceIndex == ENTR_SPOT11_1) && !Flags_GetEventChkInf(EVENTCHKINF_AC)) { Flags_SetEventChkInf(EVENTCHKINF_AC); gSaveContext.entranceIndex = ENTR_SPOT11_0; diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index f10cb2aa73..5daf9060bc 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -881,7 +881,8 @@ void Environment_Update(PlayState* play, EnvironmentContext* envCtx, LightContex EnvLightSettings* lightSettingsList = play->envCtx.lightSettingsList; s32 adjustment; - if ((((void)0, gSaveContext.gameMode) != 0) && (((void)0, gSaveContext.gameMode) != 3)) { + if ((((void)0, gSaveContext.gameMode) != GAMEMODE_NORMAL) && + (((void)0, gSaveContext.gameMode) != GAMEMODE_END_CREDITS)) { func_800AA16C(); } @@ -918,9 +919,10 @@ void Environment_Update(PlayState* play, EnvironmentContext* envCtx, LightContex } if ((pauseCtx->state == 0) && (gameOverCtx->state == GAMEOVER_INACTIVE)) { - if (((msgCtx->msgLength == 0) && (msgCtx->msgMode == 0)) || (((void)0, gSaveContext.gameMode) == 3)) { + if (((msgCtx->msgLength == 0) && (msgCtx->msgMode == GAMEMODE_NORMAL)) || + (((void)0, gSaveContext.gameMode) == GAMEMODE_END_CREDITS)) { if ((envCtx->changeSkyboxTimer == 0) && !FrameAdvance_IsEnabled(play) && - (play->transitionMode == TRANS_MODE_OFF || ((void)0, gSaveContext.gameMode) != 0)) { + (play->transitionMode == TRANS_MODE_OFF || ((void)0, gSaveContext.gameMode) != GAMEMODE_NORMAL)) { if (IS_DAY || gTimeSpeed >= 400) { gSaveContext.dayTime += gTimeSpeed; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 995500e548..2e9af7c2dc 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2439,7 +2439,7 @@ void Magic_Update(PlayState* play) { // Add magic until magicFillTarget is reached gSaveContext.magic += 4; - if (gSaveContext.gameMode == 0 && gSaveContext.sceneSetupIndex < 4) { + if (gSaveContext.gameMode == GAMEMODE_NORMAL && gSaveContext.sceneSetupIndex < 4) { Audio_PlaySoundGeneral(NA_SE_SY_GAUGE_UP - SFX_FLAG, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); } diff --git a/src/code/z_play.c b/src/code/z_play.c index bb18e1ad1d..2905e4ba03 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -288,7 +288,7 @@ void Play_Init(GameState* thisx) { Cutscene_HandleConditionalTriggers(this); - if (gSaveContext.gameMode != 0 || gSaveContext.cutsceneIndex >= 0xFFF0) { + if (gSaveContext.gameMode != GAMEMODE_NORMAL || gSaveContext.cutsceneIndex >= 0xFFF0) { gSaveContext.nayrusLoveTimer = 0; Magic_Reset(this); gSaveContext.sceneSetupIndex = (gSaveContext.cutsceneIndex & 0xF) + 4; @@ -369,7 +369,7 @@ void Play_Init(GameState* thisx) { this->unk_11E18 = 0; this->unk_11DE9 = false; - if (gSaveContext.gameMode != 1) { + if (gSaveContext.gameMode != GAMEMODE_TITLE_SCREEN) { if (gSaveContext.nextTransitionType == TRANS_NEXT_TYPE_DEFAULT) { this->transitionType = ENTRANCE_INFO_END_TRANS_TYPE( gEntranceTable[((void)0, gSaveContext.entranceIndex) + tempSetupIndex].field); @@ -627,7 +627,7 @@ void Play_Update(PlayState* this) { } else if (this->transitionTrigger != TRANS_TRIGGER_END) { this->state.running = false; - if (gSaveContext.gameMode != 2) { + if (gSaveContext.gameMode != GAMEMODE_FILE_SELECT) { SET_NEXT_GAMESTATE(&this->state, Play_Init, PlayState); gSaveContext.entranceIndex = this->nextEntranceIndex; @@ -832,7 +832,7 @@ void Play_Update(PlayState* this) { if (1 && (gTrnsnUnkState != 3)) { PLAY_LOG(3542); - if ((gSaveContext.gameMode == 0) && (this->msgCtx.msgMode == MSGMODE_NONE) && + if ((gSaveContext.gameMode == GAMEMODE_NORMAL) && (this->msgCtx.msgMode == MSGMODE_NONE) && (this->gameOverCtx.state == GAMEOVER_INACTIVE)) { KaleidoSetup_Update(this); } @@ -930,7 +930,7 @@ void Play_Update(PlayState* this) { Play_SetViewpoint(this, this->viewpoint ^ (VIEWPOINT_LOCKED ^ VIEWPOINT_PIVOT)); } } - + Play_ChangeViewpointBgCamIndex(this); } @@ -1006,7 +1006,7 @@ void Play_DrawOverlayElements(PlayState* this) { KaleidoScopeCall_Draw(this); } - if (gSaveContext.gameMode == 0) { + if (gSaveContext.gameMode == GAMEMODE_NORMAL) { Interface_Draw(this); } diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 118df8d660..5217f1283d 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -903,7 +903,8 @@ void Player_DrawImpl(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dL SkelAnime_DrawFlexLod(play, skeleton, jointTable, dListCount, overrideLimbDraw, postLimbDraw, data, lod); if ((overrideLimbDraw != Player_OverrideLimbDrawGameplayFirstPerson) && - (overrideLimbDraw != Player_OverrideLimbDrawGameplay_80090440) && (gSaveContext.gameMode != 3)) { + (overrideLimbDraw != Player_OverrideLimbDrawGameplay_80090440) && + (gSaveContext.gameMode != GAMEMODE_END_CREDITS)) { if (LINK_IS_ADULT) { s32 strengthUpgrade = CUR_UPG_VALUE(UPG_STRENGTH); diff --git a/src/overlays/actors/ovl_En_Light/z_en_light.c b/src/overlays/actors/ovl_En_Light/z_en_light.c index 38e11640a0..bf85d4619e 100644 --- a/src/overlays/actors/ovl_En_Light/z_en_light.c +++ b/src/overlays/actors/ovl_En_Light/z_en_light.c @@ -49,8 +49,7 @@ void EnLight_Init(Actor* thisx, PlayState* play) { EnLight* this = (EnLight*)thisx; s16 yOffset; - if (gSaveContext.gameMode == 3) { - // special case for the credits + if (gSaveContext.gameMode == GAMEMODE_END_CREDITS) { yOffset = (this->actor.params < 0) ? 1 : 40; Lights_PointNoGlowSetInfo(&this->lightInfo, this->actor.world.pos.x, yOffset + (s16)this->actor.world.pos.y, this->actor.world.pos.z, 255, 255, 180, -1); diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.c b/src/overlays/actors/ovl_En_Mag/z_en_mag.c index 232e05def6..9d43794d92 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.c +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.c @@ -145,7 +145,7 @@ void EnMag_Update(Actor* thisx, PlayState* play) { Audio_PlaySoundGeneral(NA_SE_SY_PIECE_OF_HEART, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - gSaveContext.gameMode = 2; + gSaveContext.gameMode = GAMEMODE_FILE_SELECT; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_BLACK; } diff --git a/src/overlays/actors/ovl_En_Mm/z_en_mm.c b/src/overlays/actors/ovl_En_Mm/z_en_mm.c index dbe2ad1f3b..1fae3e0d8c 100644 --- a/src/overlays/actors/ovl_En_Mm/z_en_mm.c +++ b/src/overlays/actors/ovl_En_Mm/z_en_mm.c @@ -459,7 +459,7 @@ void func_80AAE294(EnMm* this, PlayState* play) { dustPos.y = this->actor.world.pos.y; dustPos.z = this->actor.world.pos.z; - if (gSaveContext.gameMode != 3) { + if (gSaveContext.gameMode != GAMEMODE_END_CREDITS) { func_80033480(play, &dustPos, 50.0f, 2, 350, 20, 0); } diff --git a/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c b/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c index cf4fc653bb..e1713e2763 100644 --- a/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c +++ b/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c @@ -73,7 +73,7 @@ void EnOkarinaEffect_ManageStorm(EnOkarinaEffect* this, PlayState* play) { Flags_UnsetEnv(play, 5); // clear storms env flag if (((play->pauseCtx.state == 0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->msgCtx.msgLength == 0) && (!FrameAdvance_IsEnabled(play)) && - ((play->transitionMode == TRANS_MODE_OFF) || (gSaveContext.gameMode != 0))) || + ((play->transitionMode == TRANS_MODE_OFF) || (gSaveContext.gameMode != GAMEMODE_NORMAL))) || (this->timer >= 250)) { if ((play->envCtx.lightMode != LIGHT_MODE_TIME) || play->envCtx.lightConfig != 1) { this->timer--; diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 43e63c392f..eaeab831bb 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -9373,7 +9373,7 @@ void Player_Init(Actor* thisx, PlayState* play2) { D_80854738[initMode](play, this); if (initMode != 0) { - if ((gSaveContext.gameMode == 0) || (gSaveContext.gameMode == 3)) { + if ((gSaveContext.gameMode == GAMEMODE_NORMAL) || (gSaveContext.gameMode == GAMEMODE_END_CREDITS)) { this->naviActor = Player_SpawnFairy(play, this, &thisx->world.pos, &D_80854778, FAIRY_NAVI); if (gSaveContext.dogParams != 0) { gSaveContext.dogParams |= 0x8000; diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose.c b/src/overlays/gamestates/ovl_file_choose/z_file_choose.c index b97a3fd64d..08cee5f54f 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose.c @@ -1445,7 +1445,7 @@ void FileSelect_LoadGame(GameState* thisx) { &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); gSaveContext.fileNum = this->buttonIndex; Sram_OpenSave(&this->sramCtx); - gSaveContext.gameMode = 0; + gSaveContext.gameMode = GAMEMODE_NORMAL; SET_NEXT_GAMESTATE(&this->state, MapSelect_Init, MapSelectState); this->state.running = false; } else { @@ -1453,7 +1453,7 @@ void FileSelect_LoadGame(GameState* thisx) { &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); gSaveContext.fileNum = this->buttonIndex; Sram_OpenSave(&this->sramCtx); - gSaveContext.gameMode = 0; + gSaveContext.gameMode = GAMEMODE_NORMAL; SET_NEXT_GAMESTATE(&this->state, Play_Init, PlayState); this->state.running = false; } diff --git a/src/overlays/gamestates/ovl_opening/z_opening.c b/src/overlays/gamestates/ovl_opening/z_opening.c index d1da5325e2..c7f7ff17aa 100644 --- a/src/overlays/gamestates/ovl_opening/z_opening.c +++ b/src/overlays/gamestates/ovl_opening/z_opening.c @@ -7,7 +7,7 @@ #include "global.h" void TitleSetup_SetupTitleScreen(TitleSetupState* this) { - gSaveContext.gameMode = 1; + gSaveContext.gameMode = GAMEMODE_TITLE_SCREEN; this->state.running = false; gSaveContext.linkAge = LINK_AGE_ADULT; Sram_InitDebugSave(); diff --git a/src/overlays/gamestates/ovl_title/z_title.c b/src/overlays/gamestates/ovl_title/z_title.c index ee831f4251..4dde02f962 100644 --- a/src/overlays/gamestates/ovl_title/z_title.c +++ b/src/overlays/gamestates/ovl_title/z_title.c @@ -139,7 +139,7 @@ void ConsoleLogo_Main(GameState* thisx) { if (this->exit) { gSaveContext.seqId = (u8)NA_BGM_DISABLED; gSaveContext.natureAmbienceId = 0xFF; - gSaveContext.gameMode = 1; + gSaveContext.gameMode = GAMEMODE_TITLE_SCREEN; this->state.running = false; SET_NEXT_GAMESTATE(&this->state, TitleSetup_Init, TitleSetupState); }