summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
authorJordan Longstaff <JordanLongstaff@users.noreply.github.com>2026-01-08 13:56:01 -0500
committerGitHub <noreply@github.com>2026-01-08 18:56:01 +0000
commit9ca5ce0b53c7bb58042e39fcac502894291152f4 (patch)
tree72ed2ae78eebba033739c241fd44e746a862ad84 /soh/src/code
parentfeb142947133bf4bdc7fa2e204bc4107a2a59259 (diff)
Decomp import: rename timer-related functions and variables (#5896)
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/z_construct.c33
-rw-r--r--soh/src/code/z_game_over.c4
-rw-r--r--soh/src/code/z_parameter.c395
-rw-r--r--soh/src/code/z_player_lib.c22
4 files changed, 234 insertions, 220 deletions
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;
-
- if (gSaveContext.subTimerState < 7) {
- gSaveContext.subTimerState = 2;
+ 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 <= 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] = {