diff --git a/soh/include/functions.h b/soh/include/functions.h index 11dbf8c81..8d4990290 100644 --- a/soh/include/functions.h +++ b/soh/include/functions.h @@ -1089,9 +1089,9 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange); void Magic_Fill(PlayState* play); void Magic_Reset(PlayState* play); s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type); -void func_80088AA0(s16 seconds); -void func_80088AF0(PlayState* play); -void func_80088B34(s16 arg0); +void Interface_SetSubTimer(s16 seconds); +void Interface_SetSubTimerToFinalSecond(PlayState* play); +void Interface_SetTimer(s16 arg0); void Interface_Draw(PlayState* play); void Interface_DrawTotalGameplayTimer(PlayState* play); void Interface_Update(PlayState* play); diff --git a/soh/include/z64player.h b/soh/include/z64player.h index a00d86557..e8c32b09e 100644 --- a/soh/include/z64player.h +++ b/soh/include/z64player.h @@ -85,6 +85,14 @@ typedef enum PlayerMask { /* 0x09 */ PLAYER_MASK_MAX } PlayerMask; +typedef enum PlayerEnvHazard { + /* 0x0 */ PLAYER_ENV_HAZARD_NONE, + /* 0x1 */ PLAYER_ENV_HAZARD_HOTROOM, + /* 0x2 */ PLAYER_ENV_HAZARD_UNDERWATER_FLOOR, + /* 0x3 */ PLAYER_ENV_HAZARD_SWIMMING, + /* 0x4 */ PLAYER_ENV_HAZARD_UNDERWATER_FREE +} PlayerEnvHazard; + typedef enum PlayerIdleType { /* -0x1 */ PLAYER_IDLE_CRIT_HEALTH = -1, /* 0x0 */ PLAYER_IDLE_DEFAULT, diff --git a/soh/include/z64save.h b/soh/include/z64save.h index 086dbccba..35f30c263 100644 --- a/soh/include/z64save.h +++ b/soh/include/z64save.h @@ -152,6 +152,45 @@ typedef struct { /* 0x24 */ s32 tempCollectFlags; } FaroresWindData; // size = 0x28 +typedef enum TimerState { + /* 0x0 */ TIMER_STATE_OFF, + /* 0x1 */ TIMER_STATE_ENV_HAZARD_INIT, // Init env timer that counts down, total time based on health, resets on + // void-out, kills at 0 + /* 0x2 */ TIMER_STATE_ENV_HAZARD_PREVIEW, // Display initial time, keep it fixed at the screen center + /* 0x3 */ TIMER_STATE_ENV_HAZARD_MOVE, // Move to top-left corner + /* 0x4 */ TIMER_STATE_ENV_HAZARD_TICK, // Counting down + /* 0x5 */ TIMER_STATE_DOWN_INIT, // Init timer that counts down + /* 0x6 */ TIMER_STATE_DOWN_PREVIEW, // Display initial time, keep it fixed at the screen center + /* 0x7 */ TIMER_STATE_DOWN_MOVE, // Move to top-left corner + /* 0x8 */ TIMER_STATE_DOWN_TICK, // Counting down + /* 0xA */ TIMER_STATE_STOP = 10, + /* 0xB */ TIMER_STATE_UP_INIT, // Init timer that counts up + /* 0xC */ TIMER_STATE_UP_PREVIEW, // Display initial time, keep it fixed at the screen center + /* 0xD */ TIMER_STATE_UP_MOVE, // Move to top-left corner + /* 0xE */ TIMER_STATE_UP_TICK, // Counting up + /* 0xF */ TIMER_STATE_UP_FREEZE // Stop counting the timer +} TimerState; + +typedef enum SubTimerState { + /* 0x0 */ SUBTIMER_STATE_OFF, + /* 0x1 */ SUBTIMER_STATE_DOWN_INIT, // Init timer that counts down + /* 0x2 */ SUBTIMER_STATE_DOWN_PREVIEW, // Display initial time, keep it fixed at the screen center + /* 0x3 */ SUBTIMER_STATE_DOWN_MOVE, // Move to top-left corner + /* 0x4 */ SUBTIMER_STATE_DOWN_TICK, // Counting down + /* 0x5 */ SUBTIMER_STATE_RESPAWN, // Time is up, trigger a transition, reset button items, spoil trade quest items + /* 0x6 */ SUBTIMER_STATE_STOP, // Time is up, stop counting + /* 0x7 */ SUBTIMER_STATE_UP_INIT, // Init timer that counts up + /* 0x8 */ SUBTIMER_STATE_UP_PREVIEW, // Display initial time, keep it fixed at the screen center + /* 0x9 */ SUBTIMER_STATE_UP_MOVE, // Move to top-left corner + /* 0xA */ SUBTIMER_STATE_UP_TICK // Counting up +} SubTimerState; + +typedef enum TimerId { + /* 0 */ TIMER_ID_MAIN, // Takes priority in both counting and drawing. See `timerState` and `timerSeconds` + /* 1 */ TIMER_ID_SUB, // See `subTimerState` and `subTimerSeconds` + /* 2 */ TIMER_ID_MAX +} TimerId; + typedef struct { RandomizerCheck check; RandomizerCheck hintedCheck; @@ -270,8 +309,8 @@ typedef struct { /* 0x13D0 */ s16 timerSeconds; /* 0x13D2 */ s16 subTimerState; /* 0x13D4 */ s16 subTimerSeconds; - /* 0x13D6 */ s16 timerX[2]; - /* 0x13DA */ s16 timerY[2]; + /* 0x13D6 */ s16 timerX[TIMER_ID_MAX]; + /* 0x13DA */ s16 timerY[TIMER_ID_MAX]; /* 0x13DE */ char unk_13DE[0x0002]; /* 0x13E0 */ u8 seqId; /* 0x13E1 */ u8 natureAmbienceId; diff --git a/soh/soh/Enhancements/QoL/PauseWarp.cpp b/soh/soh/Enhancements/QoL/PauseWarp.cpp index 391f42c61..572ff6716 100644 --- a/soh/soh/Enhancements/QoL/PauseWarp.cpp +++ b/soh/soh/Enhancements/QoL/PauseWarp.cpp @@ -61,7 +61,7 @@ static void PauseWarp_Execute() { for (int i = 0; i < ARRAY_COUNT(ocarinaSongMap); i++) { if (gPlayState->msgCtx.lastPlayedSong == ocarinaSongMap[i]) { gPlayState->nextEntranceIndex = entranceIndexMap[i]; - func_80088AF0(gPlayState); + Interface_SetSubTimerToFinalSecond(gPlayState); return; } } diff --git a/soh/soh/Enhancements/TimeDisplay/TimeDisplay.cpp b/soh/soh/Enhancements/TimeDisplay/TimeDisplay.cpp index 8f1f0ac40..5e213d26d 100644 --- a/soh/soh/Enhancements/TimeDisplay/TimeDisplay.cpp +++ b/soh/soh/Enhancements/TimeDisplay/TimeDisplay.cpp @@ -99,20 +99,20 @@ static void TimeDisplayGetTimer(uint32_t timeID) { timeDisplayTime = convertDayTime(gSaveContext.dayTime).c_str(); break; case DISPLAY_CONDITIONAL_TIMER: - if (gSaveContext.timerState > 0) { + if (gSaveContext.timerState > TIMER_STATE_OFF) { timeDisplayTime = formatHotWaterDisplay(gSaveContext.timerSeconds).c_str(); textColor = - gSaveContext.timerState <= 4 + gSaveContext.timerState <= TIMER_STATE_ENV_HAZARD_TICK ? (gPlayState->roomCtx.curRoom.behaviorType2 == ROOM_BEHAVIOR_TYPE2_3 ? COLOR_LIGHT_RED : COLOR_LIGHT_BLUE) : COLOR_WHITE; - if (gSaveContext.timerState <= 4) { + if (gSaveContext.timerState <= TIMER_STATE_ENV_HAZARD_TICK) { textureDisplay = Ship::Context::GetInstance()->GetWindow()->GetGui()->GetTextureByName( gPlayState->roomCtx.curRoom.behaviorType2 == ROOM_BEHAVIOR_TYPE2_3 ? itemMapping[ITEM_TUNIC_GORON].name : itemMapping[ITEM_TUNIC_ZORA].name); } - if (gSaveContext.timerState >= 6) { + if (gSaveContext.timerState >= TIMER_STATE_DOWN_PREVIEW) { textureDisplay = Ship::Context::GetInstance()->GetWindow()->GetGui()->GetTextureByName( itemMapping[ITEM_SWORD_MASTER].name); } diff --git a/soh/soh/Enhancements/tts/tts.cpp b/soh/soh/Enhancements/tts/tts.cpp index 21b71c7a5..122202b8a 100644 --- a/soh/soh/Enhancements/tts/tts.cpp +++ b/soh/soh/Enhancements/tts/tts.cpp @@ -143,9 +143,9 @@ void RegisterOnInterfaceUpdateHook() { static char ttsAnnounceBuf[32]; uint32_t timer = 0; - if (gSaveContext.timerState != 0) { + if (gSaveContext.timerState != TIMER_STATE_OFF) { timer = gSaveContext.timerSeconds; - } else if (gSaveContext.subTimerState != 0) { + } else if (gSaveContext.subTimerState != SUBTIMER_STATE_OFF) { timer = gSaveContext.subTimerSeconds; } diff --git a/soh/soh/SaveManager.cpp b/soh/soh/SaveManager.cpp index dc5072d27..b6070d00c 100644 --- a/soh/soh/SaveManager.cpp +++ b/soh/soh/SaveManager.cpp @@ -2586,8 +2586,8 @@ typedef struct { /* 0x13D0 */ s16 timerSeconds; /* 0x13D2 */ s16 subTimerState; /* 0x13D4 */ s16 subTimerSeconds; - /* 0x13D6 */ s16 timerX[2]; - /* 0x13DA */ s16 timerY[2]; + /* 0x13D6 */ s16 timerX[TIMER_ID_MAX]; + /* 0x13DA */ s16 timerY[TIMER_ID_MAX]; /* 0x13DE */ char unk_13DE[0x0002]; /* 0x13E0 */ u8 seqId; /* 0x13E1 */ u8 natureAmbienceId; diff --git a/soh/src/code/z_construct.c b/soh/src/code/z_construct.c index 06f872995..23a63ece1 100644 --- a/soh/src/code/z_construct.c +++ b/soh/src/code/z_construct.c @@ -10,7 +10,7 @@ void func_80110990(PlayState* play) { void func_801109B0(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; u32 parameterSize; - u8 temp; + u8 timerId; gSaveContext.sunsSongState = SUNSSONG_INACTIVE; gSaveContext.unk_13E8 = gSaveContext.unk_13EA = 0; @@ -83,35 +83,38 @@ void func_801109B0(PlayState* play) { osSyncPrintf("EVENT=%d\n", ((void)0, gSaveContext.timerState)); - if ((gSaveContext.timerState == 4) || (gSaveContext.timerState == 8) || (gSaveContext.subTimerState == 4) || - (gSaveContext.subTimerState == 10)) { + if ((gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_TICK) || + (gSaveContext.timerState == TIMER_STATE_DOWN_TICK) || + (gSaveContext.subTimerState == SUBTIMER_STATE_DOWN_TICK) || + (gSaveContext.subTimerState == SUBTIMER_STATE_UP_TICK)) { osSyncPrintf("restart_flag=%d\n", ((void)0, gSaveContext.respawnFlag)); if ((gSaveContext.respawnFlag == -1) || (gSaveContext.respawnFlag == 1)) { - if (gSaveContext.timerState == 4) { - gSaveContext.timerState = 1; - gSaveContext.timerX[0] = 140; - gSaveContext.timerY[0] = 80; + if (gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_TICK) { + gSaveContext.timerState = TIMER_STATE_ENV_HAZARD_INIT; + gSaveContext.timerX[TIMER_ID_MAIN] = 140; + gSaveContext.timerY[TIMER_ID_MAIN] = 80; } } - if ((gSaveContext.timerState == 4) || (gSaveContext.timerState == 8)) { - temp = 0; + if ((gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_TICK) || + (gSaveContext.timerState == TIMER_STATE_DOWN_TICK)) { + timerId = TIMER_ID_MAIN; } else { - temp = 1; + timerId = TIMER_ID_SUB; } - gSaveContext.timerX[temp] = 26; + gSaveContext.timerX[timerId] = 26; if (gSaveContext.healthCapacity > 0xA0) { - gSaveContext.timerY[temp] = 54; + gSaveContext.timerY[timerId] = 54; } else { - gSaveContext.timerY[temp] = 46; + gSaveContext.timerY[timerId] = 46; } } - if ((gSaveContext.timerState >= 11) && (gSaveContext.timerState < 16)) { - gSaveContext.timerState = 0; + if ((gSaveContext.timerState >= TIMER_STATE_UP_INIT) && (gSaveContext.timerState <= TIMER_STATE_UP_FREEZE)) { + gSaveContext.timerState = TIMER_STATE_OFF; // "Timer Stop!!!!!!!!!!!!!!!!!!!!!!" osSyncPrintf("タイマー停止!!!!!!!!!!!!!!!!!!!!! = %d\n", gSaveContext.timerState); } diff --git a/soh/src/code/z_game_over.c b/soh/src/code/z_game_over.c index da154f887..5b16bbc38 100644 --- a/soh/src/code/z_game_over.c +++ b/soh/src/code/z_game_over.c @@ -31,8 +31,8 @@ void GameOver_Update(PlayState* play) { case GAMEOVER_DEATH_START: Message_CloseTextbox(play); - gSaveContext.timerState = 0; - gSaveContext.subTimerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; gSaveContext.eventInf[1] &= ~1; // search inventory for spoiling items and revert if necessary diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c index 3b1d91f05..a9dfdd01f 100644 --- a/soh/src/code/z_parameter.c +++ b/soh/src/code/z_parameter.c @@ -172,8 +172,8 @@ static s16 sExtraItemBases[] = { ITEM_BOW, ITEM_BOW, ITEM_SEEDS, ITEM_BOMBCHU, ITEM_BOMBCHU, ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, }; -static s16 D_80125A58 = 0; -static s16 D_80125A5C = 0; +static s16 sEnvHazard = PLAYER_ENV_HAZARD_NONE; +static s16 sEnvHazardActive = false; static Gfx sSetupDL_80125A60[] = { gsDPPipeSync(), @@ -3757,21 +3757,21 @@ void Interface_DrawEnemyHealthBar(TargetContext* targetCtx, PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } -void func_80088AA0(s16 arg0) { - gSaveContext.timerX[1] = 140; - gSaveContext.timerY[1] = 80; - D_80125A5C = 0; - gSaveContext.subTimerSeconds = arg0; +void Interface_SetSubTimer(s16 seconds) { + gSaveContext.timerX[TIMER_ID_SUB] = 140; + gSaveContext.timerY[TIMER_ID_SUB] = 80; + sEnvHazardActive = false; + gSaveContext.subTimerSeconds = seconds; - if (arg0 != 0) { - gSaveContext.subTimerState = 1; + if (seconds) { + gSaveContext.subTimerState = SUBTIMER_STATE_DOWN_INIT; } else { - gSaveContext.subTimerState = 7; + gSaveContext.subTimerState = SUBTIMER_STATE_UP_INIT; } } -void func_80088AF0(PlayState* play) { - if (gSaveContext.subTimerState != 0) { +void Interface_SetSubTimerToFinalSecond(PlayState* play) { + if (gSaveContext.subTimerState != SUBTIMER_STATE_OFF) { if (gSaveContext.eventInf[1] & 1) { gSaveContext.subTimerSeconds = 239; } else { @@ -3780,16 +3780,16 @@ void func_80088AF0(PlayState* play) { } } -void func_80088B34(s16 arg0) { - gSaveContext.timerX[0] = 140; - gSaveContext.timerY[0] = 80; - D_80125A5C = 0; - gSaveContext.timerSeconds = arg0; +void Interface_SetTimer(s16 seconds) { + gSaveContext.timerX[TIMER_ID_MAIN] = 140; + gSaveContext.timerY[TIMER_ID_MAIN] = 80; + sEnvHazardActive = false; + gSaveContext.timerSeconds = seconds; - if (arg0 != 0) { - gSaveContext.timerState = 5; + if (seconds) { + gSaveContext.timerState = TIMER_STATE_DOWN_INIT; } else { - gSaveContext.timerState = 11; + gSaveContext.timerState = TIMER_STATE_UP_INIT; } } @@ -5120,10 +5120,10 @@ void Interface_Draw(PlayState* play) { static s16 spoilingItemEntrances[] = { ENTR_LOST_WOODS_2, ENTR_ZORAS_DOMAIN_3, ENTR_ZORAS_DOMAIN_3 }; static f32 D_80125B54[] = { -40.0f, -35.0f }; // unused static s16 D_80125B5C[] = { 91, 91 }; // unused - static s16 D_8015FFE0; - static s16 D_8015FFE2; - static s16 D_8015FFE4; - static s16 D_8015FFE6; + static s16 sTimerNextSecondTimer; + static s16 sTimerStateTimer; + static s16 sSubTimerNextSecondTimer; + static s16 sSubTimerStateTimer; static s16 timerDigits[5]; InterfaceContext* interfaceCtx = &play->interfaceCtx; PauseContext* pauseCtx = &play->pauseCtx; @@ -5134,7 +5134,7 @@ void Interface_Draw(PlayState* play) { s16 svar3; s16 svar4; s16 svar5; - s16 svar6; + s16 timerId; bool fullUi = !CVarGetInteger(CVAR_ENHANCEMENT("MinimalUI"), 0) || !R_MINIMAP_DISABLED || play->pauseCtx.state != 0; // #region SOH [NTSC] s32 languageOffset = gSaveContext.language; @@ -5901,13 +5901,14 @@ void Interface_Draw(PlayState* play) { } } - if ((gSaveContext.subTimerState == 5) && (Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT)) { + if ((gSaveContext.subTimerState == SUBTIMER_STATE_RESPAWN) && + (Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT)) { // Trade quest timer reached 0 - D_8015FFE6 = 40; + sSubTimerStateTimer = 40; gSaveContext.cutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; - gSaveContext.subTimerState = 0; + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; if ((gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI) && (gSaveContext.equips.buttonItems[0] != ITEM_SWORD_MASTER) && @@ -5947,98 +5948,99 @@ void Interface_Draw(PlayState* play) { (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play) && (gSaveContext.minigameState != 1) && (play->shootingGalleryStatus <= 1) && !((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38))) { - svar6 = 0; + timerId = TIMER_ID_MAIN; switch (gSaveContext.timerState) { - case 1: - D_8015FFE2 = 20; - D_8015FFE0 = 20; + case TIMER_STATE_ENV_HAZARD_INIT: + sTimerStateTimer = 20; + sTimerNextSecondTimer = 20; gSaveContext.timerSeconds = gSaveContext.health >> 1; - gSaveContext.timerState = 2; + gSaveContext.timerState = TIMER_STATE_ENV_HAZARD_PREVIEW; break; - case 2: - D_8015FFE2--; - if (D_8015FFE2 == 0) { - D_8015FFE2 = 20; - gSaveContext.timerState = 3; + case TIMER_STATE_ENV_HAZARD_PREVIEW: + sTimerStateTimer--; + if (sTimerStateTimer == 0) { + sTimerStateTimer = 20; + gSaveContext.timerState = TIMER_STATE_ENV_HAZARD_MOVE; } break; - case 5: - case 11: - D_8015FFE2 = 20; - D_8015FFE0 = 20; - if (gSaveContext.timerState == 5) { - gSaveContext.timerState = 6; + case TIMER_STATE_DOWN_INIT: + case TIMER_STATE_UP_INIT: + sTimerStateTimer = 20; + sTimerNextSecondTimer = 20; + if (gSaveContext.timerState == TIMER_STATE_DOWN_INIT) { + gSaveContext.timerState = TIMER_STATE_DOWN_PREVIEW; } else { - gSaveContext.timerState = 12; + gSaveContext.timerState = TIMER_STATE_UP_PREVIEW; } break; - case 6: - case 12: - D_8015FFE2--; - if (D_8015FFE2 == 0) { - D_8015FFE2 = 20; - if (gSaveContext.timerState == 6) { - gSaveContext.timerState = 7; + case TIMER_STATE_DOWN_PREVIEW: + case TIMER_STATE_UP_PREVIEW: + sTimerStateTimer--; + if (sTimerStateTimer == 0) { + sTimerStateTimer = 20; + if (gSaveContext.timerState == TIMER_STATE_DOWN_PREVIEW) { + gSaveContext.timerState = TIMER_STATE_DOWN_MOVE; } else { - gSaveContext.timerState = 13; + gSaveContext.timerState = TIMER_STATE_UP_MOVE; } } break; - case 3: - case 7: - svar1 = (gSaveContext.timerX[0] - 26) / D_8015FFE2; - gSaveContext.timerX[0] -= svar1; + case TIMER_STATE_ENV_HAZARD_MOVE: + case TIMER_STATE_DOWN_MOVE: + svar1 = (gSaveContext.timerX[TIMER_ID_MAIN] - 26) / sTimerStateTimer; + gSaveContext.timerX[TIMER_ID_MAIN] -= svar1; if (gSaveContext.healthCapacity > 0xA0) { - svar1 = (gSaveContext.timerY[0] - 54) / D_8015FFE2; + svar1 = (gSaveContext.timerY[TIMER_ID_MAIN] - 54) / sTimerStateTimer; } else { - svar1 = (gSaveContext.timerY[0] - 46) / D_8015FFE2; + svar1 = (gSaveContext.timerY[TIMER_ID_MAIN] - 46) / sTimerStateTimer; } - gSaveContext.timerY[0] -= svar1; + gSaveContext.timerY[TIMER_ID_MAIN] -= svar1; - D_8015FFE2--; - if (D_8015FFE2 == 0) { - D_8015FFE2 = 20; - gSaveContext.timerX[0] = 26; + sTimerStateTimer--; + if (sTimerStateTimer == 0) { + sTimerStateTimer = 20; + gSaveContext.timerX[TIMER_ID_MAIN] = 26; if (gSaveContext.healthCapacity > 0xA0) { - gSaveContext.timerY[0] = 54; + gSaveContext.timerY[TIMER_ID_MAIN] = 54; } else { - gSaveContext.timerY[0] = 46; + gSaveContext.timerY[TIMER_ID_MAIN] = 46; } - if (gSaveContext.timerState == 3) { - gSaveContext.timerState = 4; + if (gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_MOVE) { + gSaveContext.timerState = TIMER_STATE_ENV_HAZARD_TICK; } else { - gSaveContext.timerState = 8; + gSaveContext.timerState = TIMER_STATE_DOWN_TICK; } } - case 4: - case 8: - if ((gSaveContext.timerState == 4) || (gSaveContext.timerState == 8)) { + case TIMER_STATE_ENV_HAZARD_TICK: + case TIMER_STATE_DOWN_TICK: + if ((gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_TICK) || + (gSaveContext.timerState == TIMER_STATE_DOWN_TICK)) { if (gSaveContext.healthCapacity > 0xA0) { - gSaveContext.timerY[0] = 54; + gSaveContext.timerY[TIMER_ID_MAIN] = 54; } else { - gSaveContext.timerY[0] = 46; + gSaveContext.timerY[TIMER_ID_MAIN] = 46; } } - if ((gSaveContext.timerState >= 3) && (msgCtx->msgLength == 0)) { - D_8015FFE0--; - if (D_8015FFE0 == 0) { + if ((gSaveContext.timerState >= TIMER_STATE_ENV_HAZARD_MOVE) && (msgCtx->msgLength == 0)) { + sTimerNextSecondTimer--; + if (sTimerNextSecondTimer == 0) { if (gSaveContext.timerSeconds != 0) { gSaveContext.timerSeconds--; } - D_8015FFE0 = 20; + sTimerNextSecondTimer = 20; if (gSaveContext.timerSeconds == 0) { - gSaveContext.timerState = 10; - if (D_80125A5C != 0) { + gSaveContext.timerState = TIMER_STATE_STOP; + if (sEnvHazardActive) { gSaveContext.health = 0; play->damagePlayer(play, -(gSaveContext.health + 2)); } - D_80125A5C = 0; + sEnvHazardActive = false; } else if (gSaveContext.timerSeconds > 60) { if (timerDigits[4] == 1) { Audio_PlaySoundGeneral(NA_SE_SY_MESSAGE_WOMAN, &gSfxDefaultPos, 4, @@ -6059,47 +6061,47 @@ void Interface_Draw(PlayState* play) { } } break; - case 13: - svar1 = (gSaveContext.timerX[0] - 26) / D_8015FFE2; - gSaveContext.timerX[0] -= svar1; + case TIMER_STATE_UP_MOVE: + svar1 = (gSaveContext.timerX[TIMER_ID_MAIN] - 26) / sTimerStateTimer; + gSaveContext.timerX[TIMER_ID_MAIN] -= svar1; if (gSaveContext.healthCapacity > 0xA0) { - svar1 = (gSaveContext.timerY[0] - 54) / D_8015FFE2; + svar1 = (gSaveContext.timerY[TIMER_ID_MAIN] - 54) / sTimerStateTimer; } else { - svar1 = (gSaveContext.timerY[0] - 46) / D_8015FFE2; + svar1 = (gSaveContext.timerY[TIMER_ID_MAIN] - 46) / sTimerStateTimer; } - gSaveContext.timerY[0] -= svar1; + gSaveContext.timerY[TIMER_ID_MAIN] -= svar1; - D_8015FFE2--; - if (D_8015FFE2 == 0) { - D_8015FFE2 = 20; - gSaveContext.timerX[0] = 26; + sTimerStateTimer--; + if (sTimerStateTimer == 0) { + sTimerStateTimer = 20; + gSaveContext.timerX[TIMER_ID_MAIN] = 26; if (gSaveContext.healthCapacity > 0xA0) { - gSaveContext.timerY[0] = 54; + gSaveContext.timerY[TIMER_ID_MAIN] = 54; } else { - gSaveContext.timerY[0] = 46; + gSaveContext.timerY[TIMER_ID_MAIN] = 46; } - gSaveContext.timerState = 14; + gSaveContext.timerState = TIMER_STATE_UP_TICK; } - case 14: - if (gSaveContext.timerState == 14) { + case TIMER_STATE_UP_TICK: + if (gSaveContext.timerState == TIMER_STATE_UP_TICK) { if (gSaveContext.healthCapacity > 0xA0) { - gSaveContext.timerY[0] = 54; + gSaveContext.timerY[TIMER_ID_MAIN] = 54; } else { - gSaveContext.timerY[0] = 46; + gSaveContext.timerY[TIMER_ID_MAIN] = 46; } } - if (gSaveContext.timerState >= 3) { - D_8015FFE0--; - if (D_8015FFE0 == 0) { + if (gSaveContext.timerState >= TIMER_STATE_ENV_HAZARD_MOVE) { + sTimerNextSecondTimer--; + if (sTimerNextSecondTimer == 0) { gSaveContext.timerSeconds++; - D_8015FFE0 = 20; + sTimerNextSecondTimer = 20; if (gSaveContext.timerSeconds == 3599) { - D_8015FFE2 = 40; - gSaveContext.timerState = 15; + sTimerStateTimer = 40; + gSaveContext.timerState = TIMER_STATE_UP_FREEZE; } else { Audio_PlaySoundGeneral(NA_SE_SY_WARNING_COUNT_N, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, @@ -6108,98 +6110,99 @@ void Interface_Draw(PlayState* play) { } } break; - case 10: - if (gSaveContext.subTimerState != 0) { - D_8015FFE6 = 20; - D_8015FFE4 = 20; - gSaveContext.timerX[1] = 140; - gSaveContext.timerY[1] = 80; + case TIMER_STATE_STOP: + if (gSaveContext.subTimerState != SUBTIMER_STATE_OFF) { + sSubTimerStateTimer = 20; + sSubTimerNextSecondTimer = 20; + gSaveContext.timerX[TIMER_ID_SUB] = 140; + gSaveContext.timerY[TIMER_ID_SUB] = 80; - if (gSaveContext.subTimerState < 7) { - gSaveContext.subTimerState = 2; + if (gSaveContext.subTimerState <= SUBTIMER_STATE_STOP) { + gSaveContext.subTimerState = SUBTIMER_STATE_DOWN_PREVIEW; } else { - gSaveContext.subTimerState = 8; + gSaveContext.subTimerState = SUBTIMER_STATE_UP_PREVIEW; } - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; } else { - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; } - case 15: + case TIMER_STATE_UP_FREEZE: break; default: - svar6 = 1; + timerId = TIMER_ID_SUB; switch (gSaveContext.subTimerState) { - case 1: - case 7: - D_8015FFE6 = 20; - D_8015FFE4 = 20; - gSaveContext.timerX[1] = 140; - gSaveContext.timerY[1] = 80; - if (gSaveContext.subTimerState == 1) { - gSaveContext.subTimerState = 2; + case SUBTIMER_STATE_DOWN_INIT: + case SUBTIMER_STATE_UP_INIT: + sSubTimerStateTimer = 20; + sSubTimerNextSecondTimer = 20; + gSaveContext.timerX[TIMER_ID_SUB] = 140; + gSaveContext.timerY[TIMER_ID_SUB] = 80; + if (gSaveContext.subTimerState == SUBTIMER_STATE_DOWN_INIT) { + gSaveContext.subTimerState = SUBTIMER_STATE_DOWN_PREVIEW; } else { - gSaveContext.subTimerState = 8; + gSaveContext.subTimerState = SUBTIMER_STATE_UP_PREVIEW; } break; - case 2: - case 8: - D_8015FFE6--; - if (D_8015FFE6 == 0) { - D_8015FFE6 = 20; - if (gSaveContext.subTimerState == 2) { - gSaveContext.subTimerState = 3; + case SUBTIMER_STATE_DOWN_PREVIEW: + case SUBTIMER_STATE_UP_PREVIEW: + sSubTimerStateTimer--; + if (sSubTimerStateTimer == 0) { + sSubTimerStateTimer = 20; + if (gSaveContext.subTimerState == SUBTIMER_STATE_DOWN_PREVIEW) { + gSaveContext.subTimerState = SUBTIMER_STATE_DOWN_MOVE; } else { - gSaveContext.subTimerState = 9; + gSaveContext.subTimerState = SUBTIMER_STATE_UP_MOVE; } } break; - case 3: - case 9: + case SUBTIMER_STATE_DOWN_MOVE: + case SUBTIMER_STATE_UP_MOVE: osSyncPrintf("event_xp[1]=%d, event_yp[1]=%d TOTAL_EVENT_TM=%d\n", - svar5 = gSaveContext.timerX[1], svar2 = gSaveContext.timerY[1], - gSaveContext.subTimerSeconds); - svar1 = (gSaveContext.timerX[1] - 26) / D_8015FFE6; - gSaveContext.timerX[1] -= svar1; + svar5 = gSaveContext.timerX[TIMER_ID_SUB], + svar2 = gSaveContext.timerY[TIMER_ID_SUB], gSaveContext.subTimerSeconds); + svar1 = (gSaveContext.timerX[TIMER_ID_SUB] - 26) / sSubTimerStateTimer; + gSaveContext.timerX[TIMER_ID_SUB] -= svar1; if (gSaveContext.healthCapacity > 0xA0) { - svar1 = (gSaveContext.timerY[1] - 54) / D_8015FFE6; + svar1 = (gSaveContext.timerY[TIMER_ID_SUB] - 54) / sSubTimerStateTimer; } else { - svar1 = (gSaveContext.timerY[1] - 46) / D_8015FFE6; + svar1 = (gSaveContext.timerY[TIMER_ID_SUB] - 46) / sSubTimerStateTimer; } - gSaveContext.timerY[1] -= svar1; + gSaveContext.timerY[TIMER_ID_SUB] -= svar1; - D_8015FFE6--; - if (D_8015FFE6 == 0) { - D_8015FFE6 = 20; - gSaveContext.timerX[1] = 26; + sSubTimerStateTimer--; + if (sSubTimerStateTimer == 0) { + sSubTimerStateTimer = 20; + gSaveContext.timerX[TIMER_ID_SUB] = 26; if (gSaveContext.healthCapacity > 0xA0) { - gSaveContext.timerY[1] = 54; + gSaveContext.timerY[TIMER_ID_SUB] = 54; } else { - gSaveContext.timerY[1] = 46; + gSaveContext.timerY[TIMER_ID_SUB] = 46; } - if (gSaveContext.subTimerState == 3) { - gSaveContext.subTimerState = 4; + if (gSaveContext.subTimerState == SUBTIMER_STATE_DOWN_MOVE) { + gSaveContext.subTimerState = SUBTIMER_STATE_DOWN_TICK; } else { - gSaveContext.subTimerState = 10; + gSaveContext.subTimerState = SUBTIMER_STATE_UP_TICK; } } - case 4: - case 10: - if ((gSaveContext.subTimerState == 4) || (gSaveContext.subTimerState == 10)) { + case SUBTIMER_STATE_DOWN_TICK: + case SUBTIMER_STATE_UP_TICK: + if ((gSaveContext.subTimerState == SUBTIMER_STATE_DOWN_TICK) || + (gSaveContext.subTimerState == SUBTIMER_STATE_UP_TICK)) { if (gSaveContext.healthCapacity > 0xA0) { - gSaveContext.timerY[1] = 54; + gSaveContext.timerY[TIMER_ID_SUB] = 54; } else { - gSaveContext.timerY[1] = 46; + gSaveContext.timerY[TIMER_ID_SUB] = 46; } } - if (gSaveContext.subTimerState >= 3) { - D_8015FFE4--; - if (D_8015FFE4 == 0) { - D_8015FFE4 = 20; - if (gSaveContext.subTimerState == 4) { + if (gSaveContext.subTimerState >= SUBTIMER_STATE_DOWN_MOVE) { + sSubTimerNextSecondTimer--; + if (sSubTimerNextSecondTimer == 0) { + sSubTimerNextSecondTimer = 20; + if (gSaveContext.subTimerState == SUBTIMER_STATE_DOWN_TICK) { gSaveContext.subTimerSeconds--; osSyncPrintf("TOTAL_EVENT_TM=%d\n", gSaveContext.subTimerSeconds); @@ -6209,14 +6212,14 @@ void Interface_Draw(PlayState* play) { (play->sceneNum != SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) && (play->sceneNum != SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) && (play->sceneNum != SCENE_INSIDE_GANONS_CASTLE_COLLAPSE))) { - D_8015FFE6 = 40; - gSaveContext.subTimerState = 5; + sSubTimerStateTimer = 40; + gSaveContext.subTimerState = SUBTIMER_STATE_RESPAWN; gSaveContext.cutsceneIndex = 0; Message_StartTextbox(play, 0x71B0, NULL); Player_SetCsActionWithHaltedActors(play, NULL, 8); } else { - D_8015FFE6 = 40; - gSaveContext.subTimerState = 6; + sSubTimerStateTimer = 40; + gSaveContext.subTimerState = SUBTIMER_STATE_STOP; } } else if (gSaveContext.subTimerSeconds > 60) { if (timerDigits[4] == 1) { @@ -6241,7 +6244,7 @@ void Interface_Draw(PlayState* play) { if (gSaveContext.subTimerSeconds == 240) { Message_StartTextbox(play, 0x6083, NULL); gSaveContext.eventInf[1] &= ~1; - gSaveContext.subTimerState = 0; + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; } } } @@ -6255,21 +6258,21 @@ void Interface_Draw(PlayState* play) { } break; case 6: - D_8015FFE6--; - if (D_8015FFE6 == 0) { - gSaveContext.subTimerState = 0; + sSubTimerStateTimer--; + if (sSubTimerStateTimer == 0) { + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; } break; } break; } - if (((gSaveContext.timerState != 0) && (gSaveContext.timerState != 10)) || - (gSaveContext.subTimerState != 0)) { + if (((gSaveContext.timerState != TIMER_STATE_OFF) && (gSaveContext.timerState != TIMER_STATE_STOP)) || + (gSaveContext.subTimerState != SUBTIMER_STATE_OFF)) { timerDigits[0] = timerDigits[1] = svar2 = timerDigits[3] = 0; timerDigits[2] = 10; // digit 10 is used as ':' (colon) - if (gSaveContext.timerState != 0) { + if (gSaveContext.timerState != TIMER_STATE_OFF) { timerDigits[4] = gSaveContext.timerSeconds; } else { timerDigits[4] = gSaveContext.subTimerSeconds; @@ -6301,8 +6304,8 @@ void Interface_Draw(PlayState* play) { } else { X_Margins_Timer = 0; } - svar5 = OTRGetRectDimensionFromLeftEdge(gSaveContext.timerX[svar6] + X_Margins_Timer); - svar2 = gSaveContext.timerY[svar6]; + svar5 = OTRGetRectDimensionFromLeftEdge(gSaveContext.timerX[timerId] + X_Margins_Timer); + svar2 = gSaveContext.timerY[timerId]; if (CVarGetInteger(CVAR_COSMETIC("HUD.Timers.PosType"), 0) != ORIGINAL_LOCATION) { svar2 = (CVarGetInteger(CVAR_COSMETIC("HUD.Timers.PosY"), 0)); if (CVarGetInteger(CVAR_COSMETIC("HUD.Timers.PosType"), 0) == ANCHOR_LEFT) { @@ -6332,14 +6335,14 @@ void Interface_Draw(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - if (gSaveContext.timerState != 0) { - if ((gSaveContext.timerSeconds < 10) && (gSaveContext.timerState < 11)) { + if (gSaveContext.timerState != TIMER_STATE_OFF) { + if ((gSaveContext.timerSeconds < 10) && (gSaveContext.timerState <= TIMER_STATE_STOP)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } } else { - if ((gSaveContext.subTimerSeconds < 10) && (gSaveContext.subTimerState < 6)) { + if ((gSaveContext.subTimerSeconds < 10) && (gSaveContext.subTimerState <= SUBTIMER_STATE_RESPAWN)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255); @@ -6349,7 +6352,7 @@ void Interface_Draw(PlayState* play) { for (svar1 = 0; svar1 < 5; svar1++) { // clang-format off //svar5 = svar5 + 8; - //svar5 = OTRGetRectDimensionFromLeftEdge(gSaveContext.timerX[svar6]); + //svar5 = OTRGetRectDimensionFromLeftEdge(gSaveContext.timerX[timerId]); OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, digitTextures[timerDigits[svar1]], 8, 16, svar5 + timerDigitLeftPos[svar1], svar2, digitWidth[svar1], VREG(42), VREG(43) << 1, @@ -6650,24 +6653,25 @@ void Interface_Update(PlayState* play) { } HealthMeter_HandleCriticalAlarm(play); - D_80125A58 = Player_GetEnvironmentalHazard(play); + sEnvHazard = Player_GetEnvironmentalHazard(play); - if (D_80125A58 == 1) { + if (sEnvHazard == PLAYER_ENV_HAZARD_HOTROOM) { if (CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == EQUIP_VALUE_TUNIC_GORON || CVarGetInteger(CVAR_CHEAT("SuperTunic"), 0) != 0) { - D_80125A58 = 0; + sEnvHazard = PLAYER_ENV_HAZARD_NONE; } } else if ((Player_GetEnvironmentalHazard(play) >= 2) && (Player_GetEnvironmentalHazard(play) < 5)) { if (CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == EQUIP_VALUE_TUNIC_ZORA || CVarGetInteger(CVAR_CHEAT("SuperTunic"), 0) != 0) { - D_80125A58 = 0; + sEnvHazard = PLAYER_ENV_HAZARD_NONE; } } HealthMeter_Update(play); - if ((gSaveContext.timerState >= 3) && (play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0) && - (msgCtx->msgMode == MSGMODE_NONE) && !(player->stateFlags2 & PLAYER_STATE2_ATTEMPT_PLAY_FOR_ACTOR) && + if ((gSaveContext.timerState >= TIMER_STATE_ENV_HAZARD_MOVE) && (play->pauseCtx.state == 0) && + (play->pauseCtx.debugState == 0) && (msgCtx->msgMode == MSGMODE_NONE) && + !(player->stateFlags2 & PLAYER_STATE2_ATTEMPT_PLAY_FOR_ACTOR) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) {} @@ -6788,16 +6792,19 @@ void Interface_Update(PlayState* play) { Interface_UpdateMagicBar(play); } - if (gSaveContext.timerState == 0) { - if (((D_80125A58 == 1) || (D_80125A58 == 2) || (D_80125A58 == 4)) && ((gSaveContext.health >> 1) != 0)) { - gSaveContext.timerState = 1; - gSaveContext.timerX[0] = 140; - gSaveContext.timerY[0] = 80; - D_80125A5C = 1; + if (gSaveContext.timerState == TIMER_STATE_OFF) { + if (((sEnvHazard == PLAYER_ENV_HAZARD_HOTROOM) || (sEnvHazard == PLAYER_ENV_HAZARD_UNDERWATER_FLOOR) || + (sEnvHazard == PLAYER_ENV_HAZARD_UNDERWATER_FREE)) && + ((gSaveContext.health >> 1) != 0)) { + gSaveContext.timerState = TIMER_STATE_ENV_HAZARD_INIT; + gSaveContext.timerX[TIMER_ID_MAIN] = 140; + gSaveContext.timerY[TIMER_ID_MAIN] = 80; + sEnvHazardActive = true; } } else { - if (((D_80125A58 == 0) || (D_80125A58 == 3)) && (gSaveContext.timerState < 5)) { - gSaveContext.timerState = 0; + if (((sEnvHazard == PLAYER_ENV_HAZARD_NONE) || (sEnvHazard == PLAYER_ENV_HAZARD_SWIMMING)) && + (gSaveContext.timerState <= TIMER_STATE_ENV_HAZARD_TICK)) { + gSaveContext.timerState = TIMER_STATE_OFF; } } diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c index 95898367f..aa3623b6a 100644 --- a/soh/src/code/z_player_lib.c +++ b/soh/src/code/z_player_lib.c @@ -932,28 +932,32 @@ return_neg: s32 Player_GetEnvironmentalHazard(PlayState* play) { Player* this = GET_PLAYER(play); TextTriggerEntry* triggerEntry; - s32 var; + s32 envHazard; if (play->roomCtx.curRoom.behaviorType2 == ROOM_BEHAVIOR_TYPE2_3) { // Room is hot - var = 0; + envHazard = PLAYER_ENV_HAZARD_HOTROOM - 1; } else if ((this->underwaterTimer > 80) && ((this->currentBoots == PLAYER_BOOTS_IRON) || (this->underwaterTimer >= 300))) { // Deep underwater - var = ((this->currentBoots == PLAYER_BOOTS_IRON) && (this->actor.bgCheckFlags & 1)) ? 1 : 3; + envHazard = ((this->currentBoots == PLAYER_BOOTS_IRON) && (this->actor.bgCheckFlags & 1)) + ? (PLAYER_ENV_HAZARD_UNDERWATER_FLOOR - 1) + : (PLAYER_ENV_HAZARD_UNDERWATER_FREE - 1); } else if (this->stateFlags1 & PLAYER_STATE1_IN_WATER) { // Swimming - var = 2; + envHazard = PLAYER_ENV_HAZARD_SWIMMING - 1; } else { - return 0; + return PLAYER_ENV_HAZARD_NONE; } // Trigger general textboxes under certain conditions, like "It's so hot in here!" if (!Player_InCsMode(play)) { - triggerEntry = &sTextTriggers[var]; + triggerEntry = &sTextTriggers[envHazard]; if ((triggerEntry->flag != 0) && !(gSaveContext.textTriggerFlags & triggerEntry->flag) && - (((var == 0) && + (((envHazard == (PLAYER_ENV_HAZARD_HOTROOM - 1)) && (this->currentTunic != PLAYER_TUNIC_GORON && CVarGetInteger(CVAR_CHEAT("SuperTunic"), 0) == 0 && CVarGetInteger(CVAR_ENHANCEMENT("DisableTunicWarningText"), 0) == 0)) || - (((var == 1) || (var == 3)) && (this->currentBoots == PLAYER_BOOTS_IRON) && + (((envHazard == (PLAYER_ENV_HAZARD_UNDERWATER_FLOOR - 1)) || + (envHazard == (PLAYER_ENV_HAZARD_UNDERWATER_FREE - 1))) && + (this->currentBoots == PLAYER_BOOTS_IRON) && (this->currentTunic != PLAYER_TUNIC_ZORA && CVarGetInteger(CVAR_CHEAT("SuperTunic"), 0) == 0 && CVarGetInteger(CVAR_ENHANCEMENT("DisableTunicWarningText"), 0) == 0)))) { Message_StartTextbox(play, triggerEntry->textId, NULL); @@ -961,7 +965,7 @@ s32 Player_GetEnvironmentalHazard(PlayState* play) { } } - return var + 1; + return envHazard + 1; } u8 sEyeMouthIndexes[][2] = { diff --git a/soh/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.c b/soh/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.c index ae9c9ab21..5ea4843bc 100644 --- a/soh/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.c +++ b/soh/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.c @@ -230,7 +230,7 @@ void BgPoEvent_Destroy(Actor* thisx, PlayState* play) { } else { DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); if ((this->type == 1) && (gSaveContext.timerSeconds > 0)) { - gSaveContext.timerState = 0xA; + gSaveContext.timerState = TIMER_STATE_STOP; } } } @@ -319,7 +319,7 @@ void BgPoEvent_BlockFall(BgPoEvent* this, PlayState* play) { } else { Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_STONE_BOUND); func_80033E88(&this->dyna.actor, play, 5, 5); - func_80088B34(this->timer); + Interface_SetTimer(this->timer); if (firstFall == 0) { firstFall = 1; } else { @@ -345,7 +345,7 @@ void BgPoEvent_BlockIdle(BgPoEvent* this, PlayState* play) { OnePointCutscene_Init(play, 3170, 30, amy, MAIN_CAM); } Sfx_PlaySfxCentered(NA_SE_SY_CORRECT_CHIME); - gSaveContext.timerState = 0xA; + gSaveContext.timerState = TIMER_STATE_STOP; } } else { if ((gSaveContext.timerSeconds == 0) && (sBgPoEventBlocksAtRest == 5)) { diff --git a/soh/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c b/soh/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c index ce37bfd13..17113859f 100644 --- a/soh/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c +++ b/soh/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c @@ -159,7 +159,7 @@ void func_808A9234(BgRelayObjects* this, PlayState* play) { Flags_UnsetSwitch(play, this->switchFlag); this->dyna.actor.flags &= ~ACTOR_FLAG_UPDATE_CULLING_DISABLED; if (play->roomCtx.curRoom.num == 4) { - gSaveContext.timerState = 0xF; + gSaveContext.timerState = TIMER_STATE_UP_FREEZE; } this->actionFunc = BgRelayObjects_DoNothing; } diff --git a/soh/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c b/soh/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c index f4b017709..d4684e9da 100644 --- a/soh/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c +++ b/soh/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c @@ -833,7 +833,7 @@ void DemoKankyo_DrawWarpSparkles(Actor* thisx, PlayState* play) { this->unk_150[i].unk_22++; } } else if (i + 1 == this->sparkleCounter && play->csCtx.state == CS_STATE_IDLE) { - func_80088AF0(play); + Interface_SetSubTimerToFinalSecond(play); Actor_Kill(&this->actor); } break; diff --git a/soh/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c b/soh/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c index ab615bf54..6c3620baa 100644 --- a/soh/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c +++ b/soh/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c @@ -108,7 +108,7 @@ void EnDivingGame_Destroy(Actor* thisx, PlayState* play) { if (this->unk_31F == 0) { sHasSpawned = false; - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; } Collider_DestroyCylinder(play, &this->collider); @@ -132,9 +132,9 @@ void EnDivingGame_SpawnRuppy(EnDivingGame* this, PlayState* play) { } s32 EnDivingGame_HasMinigameFinished(EnDivingGame* this, PlayState* play) { - if (gSaveContext.timerState == 10 && !Play_InCsMode(play)) { + if (gSaveContext.timerState == TIMER_STATE_STOP && !Play_InCsMode(play)) { // Failed. - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; func_800F5B58(); Sfx_PlaySfxCentered(NA_SE_SY_FOUND); this->actor.textId = 0x71AD; @@ -152,7 +152,7 @@ s32 EnDivingGame_HasMinigameFinished(EnDivingGame* this, PlayState* play) { } if (this->grabbedRupeesCounter >= rupeesNeeded) { // Won. - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; this->allRupeesThrown = this->state = this->phase = this->unk_2A2 = this->grabbedRupeesCounter = 0; if (!Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_SILVER_SCALE)) { this->actor.textId = 0x4055; @@ -418,9 +418,9 @@ void func_809EE800(EnDivingGame* this, PlayState* play) { if (this->unk_292 == Message_GetState(&play->msgCtx) && Message_ShouldAdvance(play)) { Message_CloseTextbox(play); if (!Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_SILVER_SCALE)) { - func_80088B34(BREG(2) + 50); + Interface_SetTimer(BREG(2) + 50); } else { - func_80088B34(BREG(2) + 50); + Interface_SetTimer(BREG(2) + 50); } func_800F5ACC(NA_BGM_TIMED_MINI_GAME); Player_SetCsActionWithHaltedActors(play, NULL, 7); diff --git a/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c b/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c index 1c5566d54..ce6db14d1 100644 --- a/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c +++ b/soh/src/overlays/actors/ovl_En_Ds/z_en_ds.c @@ -95,7 +95,7 @@ void EnDs_GiveOddPotion(EnDs* this, PlayState* play) { if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_TRADE_ODD_MUSHROOM, true, this)) { this->actor.parent = NULL; this->actionFunc = EnDs_DisplayOddPotionText; - gSaveContext.subTimerState = 0; + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; } else { Actor_OfferGetItem(&this->actor, play, GI_ODD_POTION, 10000.0f, 50.0f); } diff --git a/soh/src/overlays/actors/ovl_En_Go/z_en_go.c b/soh/src/overlays/actors/ovl_En_Go/z_en_go.c index 3e306587e..b19714409 100644 --- a/soh/src/overlays/actors/ovl_En_Go/z_en_go.c +++ b/soh/src/overlays/actors/ovl_En_Go/z_en_go.c @@ -871,7 +871,7 @@ void EnGo_BiggoronActionFunc(EnGo* this, PlayState* play) { this->interactInfo.talkState = NPC_TALK_STATE_IDLE; EnGo_SetupAction(this, EnGo_Eyedrops); play->msgCtx.msgMode = MSGMODE_PAUSED; - gSaveContext.subTimerState = 0; + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; OnePointCutscene_Init(play, 4190, -99, &this->actor, MAIN_CAM); } else { this->interactInfo.talkState = NPC_TALK_STATE_IDLE; diff --git a/soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c b/soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c index 6b3d46027..d9b51c452 100644 --- a/soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c +++ b/soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c @@ -1068,7 +1068,7 @@ void EnGo2_BiggoronSetTextId(EnGo2* this, PlayState* play, Player* player) { this->actor.textId = 0x3058; } if (this->actor.textId == 0x3059) { - gSaveContext.subTimerState = 0; + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; } player->actor.textId = this->actor.textId; diff --git a/soh/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/soh/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index c109f1ce4..d230a008b 100644 --- a/soh/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/soh/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -130,7 +130,7 @@ void EnHorseGameCheck_FinishIngoRace(EnHorseGameCheckIngoRace* this, PlayState* } DREG(25) = 0; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; } s32 EnHorseGameCheck_UpdateIngoRace(EnHorseGameCheckBase* base, PlayState* play) { @@ -142,7 +142,7 @@ s32 EnHorseGameCheck_UpdateIngoRace(EnHorseGameCheckBase* base, PlayState* play) if ((this->startTimer > 50) && !(this->startFlags & INGORACE_SET_TIMER)) { this->startFlags |= INGORACE_SET_TIMER; - func_80088B34(0); + Interface_SetTimer(0); } else if ((this->startTimer > 80) && (player->rideActor != NULL) && !(this->startFlags & INGORACE_PLAYER_MOVE)) { this->startFlags |= INGORACE_PLAYER_MOVE; horse = (EnHorse*)player->rideActor; @@ -301,7 +301,7 @@ void EnHorseGameCheck_FinishMalonRace(EnHorseGameCheckMalonRace* this, PlayState play->transitionTrigger = TRANS_TRIGGER_START; } else if (this->result == MALONRACE_FAILURE) { gSaveContext.timerSeconds = 240; - gSaveContext.timerState = 0xF; + gSaveContext.timerState = TIMER_STATE_UP_FREEZE; gSaveContext.cutsceneIndex = 0; play->nextEntranceIndex = ENTR_LON_LON_RANCH_7; play->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST); @@ -330,7 +330,7 @@ s32 EnHorseGameCheck_UpdateMalonRace(EnHorseGameCheckBase* base, PlayState* play } if ((this->startTimer > 50) && !(this->raceFlags & MALONRACE_SET_TIMER)) { this->raceFlags |= MALONRACE_SET_TIMER; - func_80088B34(0); + Interface_SetTimer(0); } else if ((this->startTimer > 80) && (player->rideActor != NULL) && !(this->raceFlags & MALONRACE_PLAYER_MOVE)) { this->raceFlags |= MALONRACE_PLAYER_MOVE; horse = (EnHorse*)player->rideActor; @@ -385,7 +385,7 @@ s32 EnHorseGameCheck_UpdateMalonRace(EnHorseGameCheckBase* base, PlayState* play &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); this->result = MALONRACE_SUCCESS; this->finishTimer = 70; - gSaveContext.timerState = 0xF; + gSaveContext.timerState = TIMER_STATE_UP_FREEZE; } else if ((this->fenceCheck[7] == 1) && !(this->raceFlags & MALONRACE_SECOND_LAP)) { this->lapCount = 1; this->raceFlags |= MALONRACE_SECOND_LAP; @@ -406,7 +406,7 @@ s32 EnHorseGameCheck_UpdateMalonRace(EnHorseGameCheckBase* base, PlayState* play gSaveContext.timerSeconds = 240; this->result = MALONRACE_TIME_UP; this->finishTimer = 30; - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; } } else { if (this->finishTimer > 0) { diff --git a/soh/src/overlays/actors/ovl_En_Hs/z_en_hs.c b/soh/src/overlays/actors/ovl_En_Hs/z_en_hs.c index 0ca12f878..ca31879b5 100644 --- a/soh/src/overlays/actors/ovl_En_Hs/z_en_hs.c +++ b/soh/src/overlays/actors/ovl_En_Hs/z_en_hs.c @@ -133,7 +133,7 @@ void func_80A6E5EC(EnHs* this, PlayState* play) { void func_80A6E630(EnHs* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { if (GameInteractor_Should(VB_TRADE_TIMER_ODD_MUSHROOM, true)) { - func_80088AA0(180); + Interface_SetSubTimer(180); gSaveContext.eventInf[1] &= ~1; } func_80A6E3A0(this, func_80A6E6B0); diff --git a/soh/src/overlays/actors/ovl_En_In/z_en_in.c b/soh/src/overlays/actors/ovl_En_In/z_en_in.c index 18903bfbb..977752596 100644 --- a/soh/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/soh/src/overlays/actors/ovl_En_In/z_en_in.c @@ -440,7 +440,7 @@ void func_80A79BAC(EnIn* this, PlayState* play, s32 index, u32 transitionType) { if (index == 0) { AREG(6) = 0; } - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; } void func_80A79C78(EnIn* this, PlayState* play) { @@ -585,7 +585,7 @@ void func_80A79FB0(EnIn* this, PlayState* play) { this->actor.targetMode = 3; EnIn_ChangeAnim(this, ENIN_ANIM_2); this->actionFunc = func_80A7A568; - func_80088B34(0x3C); + Interface_SetTimer(0x3C); break; case 3: EnIn_ChangeAnim(this, ENIN_ANIM_4); @@ -662,12 +662,12 @@ void func_80A7A568(EnIn* this, PlayState* play) { if (!Flags_GetEventChkInf(EVENTCHKINF_RENTED_HORSE_FROM_INGO) && (player->stateFlags1 & PLAYER_STATE1_ON_HORSE)) { Flags_SetInfTable(INFTABLE_AB); } - if (gSaveContext.timerState == 10) { + if (gSaveContext.timerState == TIMER_STATE_STOP) { Audio_PlaySoundGeneral(NA_SE_SY_FOUND, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); func_80A79C78(this, play); this->actionFunc = func_80A7B024; - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; } else if (this->interactInfo.talkState == NPC_TALK_STATE_ACTION) { if (play->msgCtx.choiceIndex == 0) { if (gSaveContext.rupees < 50) { @@ -931,7 +931,7 @@ void EnIn_Update(Actor* thisx, PlayState* play) { this->actionFunc(this, play); if (this->actionFunc != func_80A7A304) { func_80A79AB4(this, play); - if (gSaveContext.subTimerSeconds < 6 && gSaveContext.subTimerState != 0 && + if (gSaveContext.subTimerSeconds < 6 && gSaveContext.subTimerState != SUBTIMER_STATE_OFF && this->interactInfo.talkState == NPC_TALK_STATE_IDLE) { if (Actor_ProcessTalkRequest(&this->actor, play)) {} } else { diff --git a/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c b/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c index 4bc506ff6..5e8c64c61 100644 --- a/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c +++ b/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c @@ -519,7 +519,7 @@ void EnKz_SetupGetItem(EnKz* this, PlayState* play) { void EnKz_StartTimer(EnKz* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { if (GameInteractor_Should(VB_TRADE_TIMER_FROG, INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_FROG)) { - func_80088AA0(180); // start timer2 with 3 minutes + Interface_SetSubTimer(180); // start timer2 with 3 minutes gSaveContext.eventInf[1] &= ~1; } this->interactInfo.talkState = NPC_TALK_STATE_IDLE; diff --git a/soh/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c b/soh/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c index 152adf6ee..9238c42df 100644 --- a/soh/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c +++ b/soh/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c @@ -122,7 +122,7 @@ s16 func_80AA2BD4(PlayState* play, Actor* thisx) { play->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_BLACK, TCS_FAST); play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.eventInf[0] |= 0x400; - gSaveContext.timerState = 0xF; + gSaveContext.timerState = TIMER_STATE_UP_FREEZE; } break; case TEXT_STATE_CHOICE: @@ -156,7 +156,7 @@ s16 func_80AA2BD4(PlayState* play, Actor* thisx) { gSaveContext.eventInf[0] &= ~0x400; thisx->flags &= ~ACTOR_FLAG_TALK_OFFER_AUTO_ACCEPTED; ret = NPC_TALK_STATE_IDLE; - gSaveContext.timerState = 0xA; + gSaveContext.timerState = TIMER_STATE_STOP; break; case 0x2002: Flags_SetInfTable(INFTABLE_B9); diff --git a/soh/src/overlays/actors/ovl_En_Mk/z_en_mk.c b/soh/src/overlays/actors/ovl_En_Mk/z_en_mk.c index 9f3c61dc3..fb7f45275 100644 --- a/soh/src/overlays/actors/ovl_En_Mk/z_en_mk.c +++ b/soh/src/overlays/actors/ovl_En_Mk/z_en_mk.c @@ -99,7 +99,7 @@ void func_80AACA94(EnMk* this, PlayState* play) { this->actor.parent = NULL; if (GameInteractor_Should(VB_TRADE_TIMER_EYEDROPS, true, this)) { this->actionFunc = func_80AACA40; - func_80088AA0(240); + Interface_SetSubTimer(240); gSaveContext.eventInf[1] &= ~1; } } else { @@ -266,7 +266,7 @@ void EnMk_Wait(EnMk* this, PlayState* play) { Animation_Change(&this->skelAnime, &object_mk_Anim_000368, 1.0f, 0.0f, Animation_GetLastFrame(&object_mk_Anim_000368), ANIMMODE_ONCE, -4.0f); this->flags &= ~2; - gSaveContext.subTimerState = 0; + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; Sfx_PlaySfxCentered(NA_SE_SY_TRE_BOX_APPEAR); break; default: diff --git a/soh/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c b/soh/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c index 72b193ea3..4129bbb23 100644 --- a/soh/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c +++ b/soh/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c @@ -107,14 +107,14 @@ void func_80AAEF70(EnMm2* this, PlayState* play) { } else if (Flags_GetInfTable(INFTABLE_17F)) { if (gSaveContext.eventInf[1] & 1) { this->actor.textId = 0x6082; - } else if (gSaveContext.subTimerState != 0) { + } else if (gSaveContext.subTimerState != SUBTIMER_STATE_OFF) { this->actor.textId = 0x6076; } else if (HIGH_SCORE(HS_MARATHON) == 158) { this->actor.textId = 0x607E; } else { this->actor.textId = 0x6081; } - } else if (gSaveContext.subTimerState) { + } else if (gSaveContext.subTimerState != SUBTIMER_STATE_OFF) { this->actor.textId = 0x6076; } else { this->actor.textId = 0x607D; @@ -197,7 +197,7 @@ void func_80AAF330(EnMm2* this, PlayState* play) { if (!(this->unk_1F4 & 2)) { Message_CloseTextbox(play); } - gSaveContext.subTimerState = 0; + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; gSaveContext.eventInf[1] &= ~1; } } @@ -238,7 +238,7 @@ void func_80AAF3C0(EnMm2* this, PlayState* play) { if (Actor_TextboxIsClosing(&this->actor, play)) { if (this->actor.textId == 0x607F) { - func_80088AA0(0); + Interface_SetSubTimer(0); this->actionFunc = func_80AAF57C; } else { this->actionFunc = func_80AAF57C; diff --git a/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c b/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c index c62db2dd8..d3aafb073 100644 --- a/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c +++ b/soh/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c @@ -146,7 +146,7 @@ void EnPoRelay_SetupRace(EnPoRelay* this) { EnPoRelay_Vec3sToVec3f(&vec, &D_80AD8C30[this->pathIndex]); this->actionTimer = ((s16)(this->actor.shape.rot.y - this->actor.world.rot.y - 0x8000) >> 0xB) % 32U; - func_80088B34(0); + Interface_SetTimer(0); this->hookshotSlotFull = (INV_CONTENT(ITEM_HOOKSHOT) != ITEM_NONE && !IS_RANDO) || (IS_RANDO && Flags_GetTreasure(gPlayState, 0x1E)); this->unk_19A = Actor_WorldYawTowardPoint(&this->actor, &vec); @@ -274,7 +274,7 @@ void EnPoRelay_EndRace(EnPoRelay* this, PlayState* play) { this->actionFunc = EnPoRelay_Talk2; } else if (play->roomCtx.curRoom.num == 5) { Actor_Kill(&this->actor); - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; } else if (Actor_IsFacingAndNearPlayer(&this->actor, 150.0f, 0x3000)) { this->actor.textId = this->textId; func_8002F2CC(&this->actor, play, 250.0f); @@ -295,7 +295,7 @@ void EnPoRelay_Talk2(EnPoRelay* this, PlayState* play) { Message_ContinueTextbox(play, this->actor.textId); } } else if (Actor_TextboxIsClosing(&this->actor, play)) { - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; this->actionTimer = 0; this->actionFunc = EnPoRelay_DisappearAndReward; } diff --git a/soh/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c b/soh/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c index 6387e4b2b..25e25339c 100644 --- a/soh/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c +++ b/soh/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c @@ -496,7 +496,7 @@ void func_80B12460(EnSyatekiNiw* this, PlayState* play) { void func_80B128D8(EnSyatekiNiw* this, PlayState* play) { if (this->unk_25E == 1) { - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; } } diff --git a/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c b/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c index a01d18f98..02c65b468 100644 --- a/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c +++ b/soh/src/overlays/actors/ovl_En_Ta/z_en_ta.c @@ -239,7 +239,7 @@ void EnTa_Destroy(Actor* thisx, PlayState* play) { Collider_DestroyCylinder(play, &this->collider); if (this->actor.params != 1 && this->actor.params != 2 && play->sceneNum == SCENE_LON_LON_BUILDINGS) { - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; } if (this->unk_2E0 & 0x200) { @@ -707,7 +707,7 @@ void EnTa_RunCuccoGame(EnTa* this, PlayState* play) { switch (EnTa_GetSuperCuccosCount(this, play)) { case 1: - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; Player_SetCsActionWithHaltedActors(play, &this->actor, 1); Message_StartTextbox(play, 0x2084, &this->actor); @@ -749,7 +749,7 @@ void EnTa_RunCuccoGame(EnTa* this, PlayState* play) { Audio_QueueSeqCmd(SEQ_PLAYER_BGM_MAIN << 24 | NA_BGM_STOP); this->unk_2E0 &= ~0x200; Sfx_PlaySfxCentered(NA_SE_SY_FOUND); - gSaveContext.timerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; Player_SetCsActionWithHaltedActors(play, &this->actor, 1); Message_StartTextbox(play, 0x2081, &this->actor); this->actionFunc = func_80B15424; @@ -814,7 +814,7 @@ void func_80B15AD4(EnTa* this, PlayState* play) { Animation_Change(&this->skelAnime, &gTalonSitHandsUpAnim, 1.0f, 1.0f, Animation_GetLastFrame(&gTalonSitHandsUpAnim), ANIMMODE_ONCE, 0.0f); this->unk_2CC = 50; - func_80088B34(0x1E); + Interface_SetTimer(0x1E); func_800F5ACC(NA_BGM_TIMED_MINI_GAME); this->unk_2E0 |= 0x200; Message_CloseTextbox(play); diff --git a/soh/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c b/soh/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c index 656766d54..4dec946c1 100644 --- a/soh/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c +++ b/soh/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c @@ -1610,7 +1610,7 @@ void EnZl2_Init(Actor* thisx, PlayState* play) { Audio_SetSoundBanksMute(0x6F); break; case 4: - gSaveContext.subTimerState = 0; + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; break; } } diff --git a/soh/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c b/soh/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c index 6a38b6264..80630e7d5 100644 --- a/soh/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c +++ b/soh/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c @@ -2492,7 +2492,7 @@ s32 func_80B59698(EnZl3* this, PlayState* play) { u8 curSpawn = play->curSpawn; if ((func_80B54DB4(this) == 0x20) && (curSpawn == 0) && - ((gSaveContext.subTimerSeconds <= 0) || (gSaveContext.subTimerState == 0))) { + ((gSaveContext.subTimerSeconds <= 0) || (gSaveContext.subTimerState == SUBTIMER_STATE_OFF))) { return 1; } } @@ -2535,7 +2535,7 @@ void func_80B59828(EnZl3* this, PlayState* play) { } if (func_80B59698(this, play) != 0) { - func_80088AA0(180); + Interface_SetSubTimer(180); func_80B53468(); gSaveContext.healthAccumulator = 320; Magic_Fill(play); @@ -2581,7 +2581,7 @@ void func_80B59AD0(EnZl3* this, PlayState* play) { Actor* thisx = &this->actor; // unused, necessary to use 'this' first to fix regalloc Flags_SetSwitch(play, 0x36); - func_80088AA0(180); + Interface_SetSubTimer(180); func_80B54EA4(this, play); func_80B53614(this, play); Flags_UnsetEventChkInf(EVENTCHKINF_WATCHED_GANONS_CASTLE_COLLAPSE_CAUGHT_BY_GERUDO); @@ -2669,7 +2669,7 @@ void EnZl3_Init(Actor* thisx, PlayState* play) { switch (func_80B54DD4(this)) { case 1: - gSaveContext.subTimerState = 0; + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; break; case 3: func_80B59A80(this, play); diff --git a/soh/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c b/soh/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c index ca9a88e5f..3b5180364 100644 --- a/soh/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c +++ b/soh/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c @@ -51,13 +51,13 @@ void ObjRoomtimer_Destroy(Actor* thisx, PlayState* play) { ObjRoomtimer* this = (ObjRoomtimer*)thisx; if ((this->actor.params != 0x3FF) && (gSaveContext.timerSeconds > 0)) { - gSaveContext.timerState = 10; + gSaveContext.timerState = TIMER_STATE_STOP; } } void func_80B9D054(ObjRoomtimer* this, PlayState* play) { if (this->actor.params != 0x3FF) { - func_80088B34(this->actor.params); + Interface_SetTimer(this->actor.params); } Actor_ChangeCategory(play, &play->actorCtx, &this->actor, ACTORCAT_PROP); @@ -67,7 +67,7 @@ void func_80B9D054(ObjRoomtimer* this, PlayState* play) { void func_80B9D0B0(ObjRoomtimer* this, PlayState* play) { if (Flags_GetTempClear(play, this->actor.room)) { if (this->actor.params != 0x3FF) { - gSaveContext.timerState = 10; + gSaveContext.timerState = TIMER_STATE_STOP; } Flags_SetClear(play, this->actor.room); Flags_SetSwitch(play, this->switchFlag); diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index 2c70b2c36..433ae8c2c 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -2634,7 +2634,7 @@ void Player_UpdateItems(Player* this, PlayState* play) { ((this->heldItemAction == this->itemAction) || (this->stateFlags1 & PLAYER_STATE1_SHIELDING)) && (gSaveContext.health != 0) && (play->csCtx.state == CS_STATE_IDLE) && (this->csAction == 0) && (play->shootingGalleryStatus == 0) && (play->activeCamera == MAIN_CAM) && - (play->transitionTrigger != TRANS_TRIGGER_START) && (gSaveContext.timerState != 10)) { + (play->transitionTrigger != TRANS_TRIGGER_START) && (gSaveContext.timerState != TIMER_STATE_STOP)) { Player_ProcessItemButtons(this, play); } @@ -15346,7 +15346,7 @@ void Player_Action_8085063C(Player* this, PlayState* play) { play->transitionTrigger = TRANS_TRIGGER_START; play->nextEntranceIndex = gSaveContext.respawn[RESPAWN_MODE_TOP].entranceIndex; play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; - func_80088AF0(play); + Interface_SetSubTimerToFinalSecond(play); return; } diff --git a/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c b/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c index e88e433b4..7cdc10bfd 100644 --- a/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c +++ b/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c @@ -2542,8 +2542,8 @@ void FileChoose_LoadGame(GameState* thisx) { if (!CVarGetInteger(CVAR_ENHANCEMENT("DogFollowsEverywhere"), 0)) { gSaveContext.dogParams = 0; } - gSaveContext.timerState = 0; - gSaveContext.subTimerState = 0; + gSaveContext.timerState = TIMER_STATE_OFF; + gSaveContext.subTimerState = SUBTIMER_STATE_OFF; gSaveContext.eventInf[0] = 0; gSaveContext.eventInf[1] = 0; gSaveContext.eventInf[2] = 0;