From 4330108a1b43312319be0c818f71c6c0363414bd Mon Sep 17 00:00:00 2001 From: Dragorn421 Date: Mon, 29 Aug 2022 12:10:39 +0200 Subject: [PATCH] Name pause states except saving/gameover and related/misc docs --- include/functions.h | 2 +- include/regs.h | 6 + include/z64.h | 20 +- src/code/z_bgcheck.c | 2 +- src/code/z_construct.c | 12 +- src/code/z_kaleido_scope_call.c | 22 +- src/code/z_kaleido_setup.c | 42 ++- src/code/z_kankyo.c | 6 +- src/code/z_lifemeter.c | 4 +- src/code/z_map_exp.c | 6 +- src/code/z_parameter.c | 31 +- src/code/z_play.c | 14 +- src/code/z_player_lib.c | 4 +- .../z_en_okarina_effect.c | 2 +- .../ovl_kaleido_scope/z_kaleido_collect.c | 8 +- .../ovl_kaleido_scope/z_kaleido_equipment.c | 4 +- .../misc/ovl_kaleido_scope/z_kaleido_item.c | 4 +- .../ovl_kaleido_scope/z_kaleido_map_PAL.c | 4 +- .../ovl_kaleido_scope/z_kaleido_scope_PAL.c | 298 ++++++++++-------- .../misc/ovl_kaleido_scope/z_lmap_mark.c | 4 +- 20 files changed, 272 insertions(+), 223 deletions(-) diff --git a/include/functions.h b/include/functions.h index 6c199feaaf..7508a0ca35 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1086,7 +1086,7 @@ s32 Player_OverrideLimbDrawGameplay_80090440(PlayState* play, s32 limbIndex, Gfx u8 func_80090480(PlayState* play, ColliderQuad* collider, WeaponInfo* weaponInfo, Vec3f* newTip, Vec3f* newBase); void Player_DrawGetItem(PlayState* play, Player* this); void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx); -u32 func_80091738(PlayState* play, u8* segment, SkelAnime* skelAnime); +u32 Player_InitDrawPause(PlayState* play, u8* segment, SkelAnime* skelAnime); void Player_DrawPause(PlayState* play, u8* segment, SkelAnime* skelAnime, Vec3f* pos, Vec3s* rot, f32 scale, s32 sword, s32 tunic, s32 shield, s32 boots); void PreNMI_Init(GameState* thisx); diff --git a/include/regs.h b/include/regs.h index 48339bccca..4414a59a82 100644 --- a/include/regs.h +++ b/include/regs.h @@ -133,9 +133,13 @@ #define R_B_LABEL_DD WREG(0) #define R_PAUSE_OFFSET_VERTICAL WREG(2) #define R_PAUSE_OFFSET_DEPTH WREG(3) +#define R_PAUSE_UI_ANIM_ALPHA_ADD_DURATION WREG(4) +#define R_PAUSE_UI_ANIMS_DURATION WREG(6) #define R_PAUSE_CURSOR_LEFT_X WREG(16) #define R_PAUSE_CURSOR_RIGHT_X WREG(17) #define R_PAUSE_CURSOR_LEFT_RIGHT_Y WREG(18) +#define R_PAUSE_CURSOR_LEFT_MOVE_OFFSET_X WREG(25) +#define R_PAUSE_CURSOR_RIGHT_MOVE_OFFSET_X WREG(26) #define R_OW_MINIMAP_X WREG(29) #define R_OW_MINIMAP_Y WREG(30) #define R_MINIMAP_DISABLED WREG(31) @@ -143,6 +147,8 @@ #define R_B_LABEL_Y(i) WREG(43 + (i)) #define R_DGN_MINIMAP_X WREG(68) #define R_DGN_MINIMAP_Y WREG(69) +#define R_PAUSE_NAME_DISPLAY_TIMER_MAX_ WREG(88) +#define R_PAUSE_NAME_DISPLAY_TIMER_THRESHOLD_ WREG(89) #define R_TEXTBOX_X VREG(0) #define R_TEXTBOX_Y VREG(1) #define R_TEXTBOX_CLEF_XPOS VREG(7) diff --git a/include/z64.h b/include/z64.h index ebf674b345..61078f7ecf 100644 --- a/include/z64.h +++ b/include/z64.h @@ -742,13 +742,13 @@ typedef enum { #define PAUSE_PLAYER_SEGMENT_GAMEPLAY_KEEP_BUFFER_SIZE 0x5000 typedef enum { - /* 0 */ PAUSE_STATE_0, - /* 1 */ PAUSE_STATE_1, - /* 2 */ PAUSE_STATE_2, - /* 3 */ PAUSE_STATE_3, - /* 4 */ PAUSE_STATE_4, - /* 5 */ PAUSE_STATE_5, - /* 6 */ PAUSE_STATE_6, // listen to inputs + /* 0 */ PAUSE_STATE_OFF, + /* 1 */ PAUSE_STATE_WAIT_LETTERBOX, // Request no letterboxing and wait for it. + /* 2 */ PAUSE_STATE_WAIT_BG_PRERENDER, // Wait for the pause background prerender to be done. + /* 3 */ PAUSE_STATE_INIT, // Load data and initialize/setup various things. + /* 4 */ PAUSE_STATE_OPENING_1, // Animate the pause menu coming together with rotations and other animations. + /* 5 */ PAUSE_STATE_OPENING_2, // Finish some animations for opening the menu. + /* 6 */ PAUSE_STATE_IDLE, // Pause menu ready for player inputs. /* 7 */ PAUSE_STATE_7_SAVE_PROMPT_, // save /* 8 */ PAUSE_STATE_8, // saveGameOver /* 9 */ PAUSE_STATE_9, // saveGameOver @@ -760,8 +760,8 @@ typedef enum { /* 15 */ PAUSE_STATE_15, // game over KaleidoScope_DrawGameOver saveGameOver /* 16 */ PAUSE_STATE_16, // game over KaleidoScope_DrawGameOver saveGameOver /* 17 */ PAUSE_STATE_17, // game over KaleidoScope_DrawGameOver saveGameOver - /* 18 */ PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE, - /* 19 */ PAUSE_STATE_19_UNPAUSE + /* 18 */ PAUSE_STATE_CLOSING, // Animate the pause menu closing + /* 19 */ PAUSE_STATE_UNPAUSE } PauseCtxState; typedef enum { @@ -826,7 +826,7 @@ typedef struct { /* 0x01E4 */ u16 unk_1E4_ps6_; /* 0x01E6 */ u16 mode; /* 0x01E8 */ u16 pageIndex; // "kscp_pos" - /* 0x01EA */ u16 unk_1EA_PageSwitchTimer__; + /* 0x01EA */ u16 unk_1EA_OpenMenuAndPageSwitchTimer__; /* 0x01EC */ u16 unk_1EC_ps7_; /* 0x01F0 */ f32 savePromptOffsetDepth_unk_1F0; /* 0x01F4 */ f32 rollRotPageItem; diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index caf82a3c70..78d4edcc1b 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -3144,7 +3144,7 @@ f32 BgCheck_RaycastFloorDyna(DynaRaycast* dynaRaycast) { dynaActor = DynaPoly_GetActor(dynaRaycast->colCtx, *dynaRaycast->bgId); if ((result != BGCHECK_Y_MIN) && (dynaActor != NULL) && (dynaRaycast->play != NULL)) { - pauseState = dynaRaycast->play->pauseCtx.state != PAUSE_STATE_0; + pauseState = dynaRaycast->play->pauseCtx.state != PAUSE_STATE_OFF; if (!pauseState) { pauseState = dynaRaycast->play->pauseCtx.debugState != 0; } diff --git a/src/code/z_construct.c b/src/code/z_construct.c index b50f5ebd1c..21dbdd41fd 100644 --- a/src/code/z_construct.c +++ b/src/code/z_construct.c @@ -432,9 +432,9 @@ void func_80111070(void) { XREG(95) = 200; R_PAUSE_OFFSET_VERTICAL = -6080; R_PAUSE_OFFSET_DEPTH = 9355; - WREG(4) = 8; + R_PAUSE_UI_ANIM_ALPHA_ADD_DURATION = 8; WREG(5) = 3; - WREG(6) = 8; + R_PAUSE_UI_ANIMS_DURATION = 8; WREG(7) = 0; WREG(8) = 100; WREG(9) = 109; @@ -453,8 +453,8 @@ void func_80111070(void) { WREG(22) = -32; WREG(23) = -38; WREG(24) = -36; - WREG(25) = 40; - WREG(26) = -40; + R_PAUSE_CURSOR_LEFT_MOVE_OFFSET_X = 40; + R_PAUSE_CURSOR_RIGHT_MOVE_OFFSET_X = -40; WREG(27) = 0; WREG(28) = 0; R_OW_MINIMAP_X = 238; @@ -497,8 +497,8 @@ void func_80111070(void) { R_DGN_MINIMAP_X = 204; R_DGN_MINIMAP_Y = 140; WREG(87) = 80; - WREG(88) = 70; - WREG(89) = 40; + R_PAUSE_NAME_DISPLAY_TIMER_MAX_ = 70; + R_PAUSE_NAME_DISPLAY_TIMER_THRESHOLD_ = 40; WREG(90) = 320; WREG(91) = 40; WREG(92) = 3; diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c index 6078c37e0d..cc3e99f2d1 100644 --- a/src/code/z_kaleido_scope_call.c +++ b/src/code/z_kaleido_scope_call.c @@ -56,15 +56,15 @@ void KaleidoScopeCall_Update(PlayState* play) { KaleidoMgrOverlay* kaleidoScopeOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_KALEIDO_SCOPE]; PauseContext* pauseCtx = &play->pauseCtx; - if ((pauseCtx->state != PAUSE_STATE_0) || (pauseCtx->debugState != 0)) { - if (pauseCtx->state == PAUSE_STATE_1) { + if ((pauseCtx->state != PAUSE_STATE_OFF) || (pauseCtx->debugState != 0)) { + if (pauseCtx->state == PAUSE_STATE_WAIT_LETTERBOX) { if (Letterbox_GetSize() == 0) { HREG(80) = 7; HREG(82) = 3; R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_DRAW; pauseCtx->unk_1E4_ps6_ = PAUSE_S6_0_IDLE_; pauseCtx->unk_1EC_ps7_ = PAUSE_S7_0; - pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1; // PAUSE_STATE_2 + pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1; // PAUSE_STATE_WAIT_BG_PRERENDER } } else if (pauseCtx->state == PAUSE_STATE_8) { HREG(80) = 7; @@ -73,13 +73,13 @@ void KaleidoScopeCall_Update(PlayState* play) { pauseCtx->unk_1E4_ps6_ = PAUSE_S6_0_IDLE_; pauseCtx->unk_1EC_ps7_ = PAUSE_S7_0; pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1; // PAUSE_STATE_9 - } else if ((pauseCtx->state == PAUSE_STATE_2) || (pauseCtx->state == PAUSE_STATE_9)) { + } else if ((pauseCtx->state == PAUSE_STATE_WAIT_BG_PRERENDER) || (pauseCtx->state == PAUSE_STATE_9)) { osSyncPrintf("PR_KAREIDOSCOPE_MODE=%d\n", R_PAUSE_BG_PRERENDER_STATE); if (R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_DONE) { - pauseCtx->state++; // PAUSE_STATE_3 or PAUSE_STATE_10 + pauseCtx->state++; // PAUSE_STATE_INIT or PAUSE_STATE_10 } - } else if (pauseCtx->state != PAUSE_STATE_0) { + } else if (pauseCtx->state != PAUSE_STATE_OFF) { if (gKaleidoMgrCurOvl != kaleidoScopeOvl) { if (gKaleidoMgrCurOvl != NULL) { osSyncPrintf(VT_FGCOL(GREEN)); @@ -101,7 +101,7 @@ void KaleidoScopeCall_Update(PlayState* play) { if (gKaleidoMgrCurOvl == kaleidoScopeOvl) { sKaleidoScopeUpdateFunc(play); - if ((play->pauseCtx.state == PAUSE_STATE_0) && (play->pauseCtx.debugState == 0)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugState == 0)) { osSyncPrintf(VT_FGCOL(GREEN)); // "Kaleido area Kaleidoscope Emission" osSyncPrintf("カレイド領域 カレイドスコープ排出\n"); @@ -119,11 +119,11 @@ void KaleidoScopeCall_Draw(PlayState* play) { KaleidoMgrOverlay* kaleidoScopeOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_KALEIDO_SCOPE]; if (R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_DONE) { - if (((play->pauseCtx.state >= PAUSE_STATE_4) && (play->pauseCtx.state <= PAUSE_STATE_7_SAVE_PROMPT_) - /* PAUSE_STATE_4, PAUSE_STATE_5, PAUSE_STATE_6, PAUSE_STATE_7_SAVE_PROMPT_ */) || - ((play->pauseCtx.state >= PAUSE_STATE_11) && (play->pauseCtx.state <= PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE) + if (((play->pauseCtx.state >= PAUSE_STATE_OPENING_1) && (play->pauseCtx.state <= PAUSE_STATE_7_SAVE_PROMPT_) + /* PAUSE_STATE_OPENING_1, PAUSE_STATE_OPENING_2, PAUSE_STATE_IDLE, PAUSE_STATE_7_SAVE_PROMPT_ */) || + ((play->pauseCtx.state >= PAUSE_STATE_11) && (play->pauseCtx.state <= PAUSE_STATE_CLOSING) /* PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13, PAUSE_STATE_14, PAUSE_STATE_15, - PAUSE_STATE_16, PAUSE_STATE_17, PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE */ + PAUSE_STATE_16, PAUSE_STATE_17, PAUSE_STATE_CLOSING */ )) { if (gKaleidoMgrCurOvl == kaleidoScopeOvl) { sKaleidoScopeDrawFunc(play); diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index 43706b2c91..497854a727 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -1,10 +1,20 @@ #include "global.h" -s16 sKaleidoSetupKscpPos0[] = { PAUSE_QUEST, PAUSE_EQUIP, PAUSE_ITEM, PAUSE_MAP }; +s16 sKaleidoSetupKscpPos0[] = { + PAUSE_QUEST, // PAUSE_ITEM + PAUSE_EQUIP, // PAUSE_MAP + PAUSE_ITEM, // PAUSE_QUEST + PAUSE_MAP, // PAUSE_EQUIP +}; f32 sKaleidoSetupEyeX0[] = { 0.0f, 64.0f, 0.0f, -64.0f }; f32 sKaleidoSetupEyeZ0[] = { -64.0f, 0.0f, 64.0f, 0.0f }; -s16 sKaleidoSetupKscpPos1[] = { PAUSE_MAP, PAUSE_QUEST, PAUSE_EQUIP, PAUSE_ITEM }; +s16 sKaleidoSetupKscpPos1[] = { + PAUSE_MAP, // PAUSE_ITEM + PAUSE_QUEST, // PAUSE_MAP + PAUSE_EQUIP, // PAUSE_QUEST + PAUSE_ITEM, // PAUSE_EQUIP +}; f32 sKaleidoSetupEyeX1[] = { -64.0f, 0.0f, 64.0f, 0.0f }; f32 sKaleidoSetupEyeZ1[] = { 0.0f, -64.0f, 0.0f, 64.0f }; @@ -12,11 +22,11 @@ void KaleidoSetup_Update(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; Input* input = &play->state.input[0]; - if (pauseCtx->state == PAUSE_STATE_0 && pauseCtx->debugState == 0 && play->gameOverCtx.state == GAMEOVER_INACTIVE && - play->transitionTrigger == TRANS_TRIGGER_OFF && play->transitionMode == TRANS_MODE_OFF && - gSaveContext.cutsceneIndex < 0xFFF0 && gSaveContext.nextCutsceneIndex < 0xFFF0 && !Play_InCsMode(play) && - play->shootingGalleryStatus <= 1 && gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY && - gSaveContext.magicState != MAGIC_STATE_FILL && + if (pauseCtx->state == PAUSE_STATE_OFF && pauseCtx->debugState == 0 && + play->gameOverCtx.state == GAMEOVER_INACTIVE && play->transitionTrigger == TRANS_TRIGGER_OFF && + play->transitionMode == TRANS_MODE_OFF && gSaveContext.cutsceneIndex < 0xFFF0 && + gSaveContext.nextCutsceneIndex < 0xFFF0 && !Play_InCsMode(play) && play->shootingGalleryStatus <= 1 && + gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY && gSaveContext.magicState != MAGIC_STATE_FILL && (play->sceneId != SCENE_BOWLING || !Flags_GetSwitch(play, 0x38))) { if (CHECK_BTN_ALL(input->cur.button, BTN_L) && CHECK_BTN_ALL(input->press.button, BTN_CUP)) { @@ -24,16 +34,18 @@ void KaleidoSetup_Update(PlayState* play) { pauseCtx->debugState = 3; } } else if (CHECK_BTN_ALL(input->press.button, BTN_START)) { + // The start button was pressed, pause + gSaveContext.unk_13EE = gSaveContext.unk_13EA; R_PAUSE_CURSOR_LEFT_X = -175; R_PAUSE_CURSOR_RIGHT_X = 155; - pauseCtx->unk_1EA_PageSwitchTimer__ = 0; - pauseCtx->unk_1E4_ps6_ = - PAUSE_S6_1_SWITCH_PAGE_; // irrelevant? reset in PAUSE_STATE_1 by KaleidoScopeCall_Update + pauseCtx->unk_1EA_OpenMenuAndPageSwitchTimer__ = 0; + pauseCtx->unk_1E4_ps6_ = PAUSE_S6_1_SWITCH_PAGE_; // irrelevant? reset in PAUSE_STATE_WAIT_LETTERBOX by + // KaleidoScopeCall_Update - if (ZREG(48) == 0) { + if (R_START_LABEL_DD(0) == 0) { pauseCtx->eye.x = sKaleidoSetupEyeX0[pauseCtx->pageIndex]; pauseCtx->eye.z = sKaleidoSetupEyeZ0[pauseCtx->pageIndex]; pauseCtx->pageIndex = sKaleidoSetupKscpPos0[pauseCtx->pageIndex]; @@ -44,13 +56,13 @@ void KaleidoSetup_Update(PlayState* play) { } pauseCtx->mode = (u16)(pauseCtx->pageIndex * 2) + 1; - pauseCtx->state = PAUSE_STATE_1; + pauseCtx->state = PAUSE_STATE_WAIT_LETTERBOX; osSyncPrintf("Mode=%d eye.x=%f, eye.z=%f kscp_pos=%d\n", pauseCtx->mode, pauseCtx->eye.x, pauseCtx->eye.z, pauseCtx->pageIndex); } - if (pauseCtx->state == PAUSE_STATE_1) { + if (pauseCtx->state == PAUSE_STATE_WAIT_LETTERBOX) { R_PAUSE_OFFSET_VERTICAL = -6240; R_UPDATE_RATE = 2; @@ -67,10 +79,10 @@ void KaleidoSetup_Init(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; u64 temp = 0; // Necessary to match - pauseCtx->state = PAUSE_STATE_0; + pauseCtx->state = PAUSE_STATE_OFF; pauseCtx->debugState = 0; pauseCtx->alpha = 0; - pauseCtx->unk_1EA_PageSwitchTimer__ = 0; + pauseCtx->unk_1EA_OpenMenuAndPageSwitchTimer__ = 0; pauseCtx->unk_1E4_ps6_ = PAUSE_S6_0_IDLE_; pauseCtx->mode = 0; pauseCtx->pageIndex = PAUSE_ITEM; diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 6c84620ecb..980353bffe 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -886,8 +886,8 @@ void Environment_Update(PlayState* play, EnvironmentContext* envCtx, LightContex func_800AA16C(); } - if (pauseCtx->state == PAUSE_STATE_0) { - if ((play->pauseCtx.state == PAUSE_STATE_0) && (play->pauseCtx.debugState == 0)) { + if (pauseCtx->state == PAUSE_STATE_OFF) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugState == 0)) { if (play->skyboxId == SKYBOX_NORMAL_SKY) { play->skyboxCtx.rot.y -= 0.001f; } else if (play->skyboxId == SKYBOX_CUTSCENE_MAP) { @@ -918,7 +918,7 @@ void Environment_Update(PlayState* play, EnvironmentContext* envCtx, LightContex } } - if ((pauseCtx->state == PAUSE_STATE_0) && (gameOverCtx->state == GAMEOVER_INACTIVE)) { + if ((pauseCtx->state == PAUSE_STATE_OFF) && (gameOverCtx->state == GAMEOVER_INACTIVE)) { if (((msgCtx->msgLength == 0) && (msgCtx->msgMode == MSGMODE_NONE)) || (((void)0, gSaveContext.gameMode) == GAMEMODE_END_CREDITS)) { if ((envCtx->changeSkyboxTimer == 0) && !FrameAdvance_IsEnabled(play) && diff --git a/src/code/z_lifemeter.c b/src/code/z_lifemeter.c index bf5f8a9715..381eaf88ef 100644 --- a/src/code/z_lifemeter.c +++ b/src/code/z_lifemeter.c @@ -506,8 +506,8 @@ void Health_UpdateBeatingHeart(PlayState* play) { if (interfaceCtx->beatingHeartOscillator <= 0) { interfaceCtx->beatingHeartOscillator = 0; interfaceCtx->beatingHeartOscillatorDirection = 0; - if (!Player_InCsMode(play) && (play->pauseCtx.state == PAUSE_STATE_0) && (play->pauseCtx.debugState == 0) && - Health_IsCritical() && !Play_InCsMode(play)) { + if (!Player_InCsMode(play) && (play->pauseCtx.state == PAUSE_STATE_OFF) && + (play->pauseCtx.debugState == 0) && Health_IsCritical() && !Play_InCsMode(play)) { func_80078884(NA_SE_SY_HITPOINT_ALARM); } } diff --git a/src/code/z_map_exp.c b/src/code/z_map_exp.c index 59ed18bd57..044243254c 100644 --- a/src/code/z_map_exp.c +++ b/src/code/z_map_exp.c @@ -364,8 +364,8 @@ void Minimap_Draw(PlayState* play) { OPEN_DISPS(play->state.gfxCtx, "../z_map_exp.c", 626); - if (play->pauseCtx.state < PAUSE_STATE_4) { - /* PAUSE_STATE_0, PAUSE_STATE_1, PAUSE_STATE_2, PAUSE_STATE_3 */ + if (play->pauseCtx.state < PAUSE_STATE_OPENING_1) { + /* PAUSE_STATE_OFF, PAUSE_STATE_WAIT_LETTERBOX, PAUSE_STATE_WAIT_BG_PRERENDER, PAUSE_STATE_INIT */ switch (play->sceneId) { case SCENE_YDAN: case SCENE_DDAN: @@ -521,7 +521,7 @@ void Map_Update(PlayState* play) { s16 floor; s16 i; - if ((play->pauseCtx.state == PAUSE_STATE_0) && (play->pauseCtx.debugState == 0)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugState == 0)) { switch (play->sceneId) { case SCENE_YDAN: case SCENE_DDAN: diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 827d946278..aade82d749 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2099,7 +2099,7 @@ void Interface_SetDoAction(PlayState* play, u16 action) { interfaceCtx->unk_1EC = 1; interfaceCtx->unk_1F4 = 0.0f; Interface_LoadActionLabel(interfaceCtx, action, 1); - if (pauseCtx->state != PAUSE_STATE_0) { + if (pauseCtx->state != PAUSE_STATE_OFF) { interfaceCtx->unk_1EC = 3; } } @@ -2514,7 +2514,7 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_CONSUME_LENS: // Slowly consume magic while lens is on - if ((play->pauseCtx.state == PAUSE_STATE_0) && (play->pauseCtx.debugState == 0) && + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugState == 0) && (msgCtx->msgMode == MSGMODE_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) { @@ -2760,12 +2760,13 @@ void Interface_DrawItemButtons(PlayState* play) { (R_ITEM_BTN_X(3) + R_ITEM_BTN_WIDTH(3)) << 2, (R_ITEM_BTN_Y(3) + R_ITEM_BTN_WIDTH(3)) << 2, G_TX_RENDERTILE, 0, 0, R_ITEM_BTN_DD(3) << 1, R_ITEM_BTN_DD(3) << 1); - if ((pauseCtx->state < PAUSE_STATE_8) /* PAUSE_STATE_0, PAUSE_STATE_1, PAUSE_STATE_2, PAUSE_STATE_3, - PAUSE_STATE_4, PAUSE_STATE_5, PAUSE_STATE_6, PAUSE_STATE_7_SAVE_PROMPT_ */ - || - (pauseCtx->state >= - PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE) /* PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE, PAUSE_STATE_19_UNPAUSE */) { - if ((play->pauseCtx.state != PAUSE_STATE_0) || (play->pauseCtx.debugState != 0)) { + if ((pauseCtx->state < PAUSE_STATE_8) + /* PAUSE_STATE_OFF, PAUSE_STATE_WAIT_LETTERBOX, PAUSE_STATE_WAIT_BG_PRERENDER, PAUSE_STATE_INIT, + PAUSE_STATE_OPENING_1, PAUSE_STATE_OPENING_2, PAUSE_STATE_IDLE, PAUSE_STATE_7_SAVE_PROMPT_ */ + || (pauseCtx->state >= PAUSE_STATE_CLOSING) + /* PAUSE_STATE_CLOSING, PAUSE_STATE_UNPAUSE */ + ) { + if ((play->pauseCtx.state != PAUSE_STATE_OFF) || (play->pauseCtx.debugState != 0)) { // Start Button Texture, Color & Label gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 120, 120, interfaceCtx->startAlpha); @@ -2793,7 +2794,7 @@ void Interface_DrawItemButtons(PlayState* play) { } } - if (interfaceCtx->naviCalling && (play->pauseCtx.state == PAUSE_STATE_0) && (play->pauseCtx.debugState == 0) && + if (interfaceCtx->naviCalling && (play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugState == 0) && (play->csCtx.state == CS_STATE_IDLE)) { if (!sCUpInvisible) { // C-Up Button Texture, Color & Label (Navi Text) @@ -3320,7 +3321,7 @@ void Interface_Draw(PlayState* play) { func_8008A994(interfaceCtx); - if ((pauseCtx->state == PAUSE_STATE_6) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_3)) { + if ((pauseCtx->state == PAUSE_STATE_IDLE) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_3)) { // Inventory Equip Effects gSPSegment(OVERLAY_DISP++, 0x08, pauseCtx->iconItemSegment); Gfx_SetupDL_42Overlay(play->state.gfxCtx); @@ -3371,7 +3372,7 @@ void Interface_Draw(PlayState* play) { Gfx_SetupDL_39Overlay(play->state.gfxCtx); - if ((play->pauseCtx.state == PAUSE_STATE_0) && (play->pauseCtx.debugState == 0)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugState == 0)) { if (gSaveContext.minigameState != 1) { // Carrots rendering if the action corresponds to riding a horse if (interfaceCtx->unk_1EE == 8) { @@ -3467,7 +3468,7 @@ void Interface_Draw(PlayState* play) { } } - if ((play->pauseCtx.state == PAUSE_STATE_0) && (play->pauseCtx.debugState == 0) && + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugState == 0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (msgCtx->msgMode == MSGMODE_NONE) && !(player->stateFlags2 & PLAYER_STATE2_24) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play) && (gSaveContext.minigameState != 1) && @@ -3891,7 +3892,7 @@ void Interface_Update(PlayState* play) { osSyncPrintf("J_N=%x J_N=%x\n", gSaveContext.language, &gSaveContext.language); } - if ((play->pauseCtx.state == PAUSE_STATE_0) && (play->pauseCtx.debugState == 0)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugState == 0)) { if ((gSaveContext.minigameState == 1) || !IS_CUTSCENE_LAYER || ((play->sceneId == SCENE_SPOT20) && (gSaveContext.sceneLayer == 4))) { if ((msgCtx->msgMode == MSGMODE_NONE) || @@ -4035,7 +4036,7 @@ void Interface_Update(PlayState* play) { Health_UpdateMeter(play); - if ((gSaveContext.timer1State >= 3) && (play->pauseCtx.state == PAUSE_STATE_0) && + if ((gSaveContext.timer1State >= 3) && (play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugState == 0) && (msgCtx->msgMode == MSGMODE_NONE) && !(player->stateFlags2 & PLAYER_STATE2_24) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) {} @@ -4121,7 +4122,7 @@ void Interface_Update(PlayState* play) { WREG(7) = interfaceCtx->unk_1F4; // Update Magic - if ((play->pauseCtx.state == PAUSE_STATE_0) && (play->pauseCtx.debugState == 0) && + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugState == 0) && (msgCtx->msgMode == MSGMODE_NONE) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->transitionMode == TRANS_MODE_OFF) && ((play->csCtx.state == CS_STATE_IDLE) || !Player_InCsMode(play))) { diff --git a/src/code/z_play.c b/src/code/z_play.c index 4217bd36dd..8cf2462672 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -443,7 +443,7 @@ void Play_Init(GameState* thisx) { void Play_Update(PlayState* this) { s32 pad1; - s32 sp80; + s32 isPaused; Input* input; u32 i; s32 pad2; @@ -838,7 +838,7 @@ void Play_Update(PlayState* this) { } PLAY_LOG(3551); - sp80 = (this->pauseCtx.state != PAUSE_STATE_0) || (this->pauseCtx.debugState != 0); + isPaused = (this->pauseCtx.state != PAUSE_STATE_OFF) || (this->pauseCtx.debugState != 0); PLAY_LOG(3555); AnimationContext_Reset(&this->animationCtx); @@ -848,7 +848,7 @@ void Play_Update(PlayState* this) { PLAY_LOG(3577); - if ((sp80 == 0) && (IREG(72) == 0)) { + if (!isPaused && (IREG(72) == 0)) { PLAY_LOG(3580); this->gameplayFrames++; @@ -915,7 +915,7 @@ void Play_Update(PlayState* this) { if (this->viewpoint != VIEWPOINT_NONE) { if (CHECK_BTN_ALL(input[0].press.button, BTN_CUP)) { - if ((this->pauseCtx.state != PAUSE_STATE_0) || (this->pauseCtx.debugState != 0)) { + if ((this->pauseCtx.state != PAUSE_STATE_OFF) || (this->pauseCtx.debugState != 0)) { // "Changing viewpoint is prohibited due to the kaleidoscope" osSyncPrintf(VT_FGCOL(CYAN) "カレイドスコープ中につき視点変更を禁止しております\n" VT_RST); } else if (Player_InCsMode(this)) { @@ -939,7 +939,7 @@ void Play_Update(PlayState* this) { PLAY_LOG(3716); - if ((this->pauseCtx.state != PAUSE_STATE_0) || (this->pauseCtx.debugState != 0)) { + if ((this->pauseCtx.state != PAUSE_STATE_OFF) || (this->pauseCtx.debugState != 0)) { PLAY_LOG(3721); KaleidoScopeCall_Update(this); } else if (this->gameOverCtx.state != GAMEOVER_INACTIVE) { @@ -976,7 +976,7 @@ void Play_Update(PlayState* this) { skip: PLAY_LOG(3801); - if ((sp80 == 0) || gDbgCamEnabled) { + if (!isPaused || gDbgCamEnabled) { s32 pad3[5]; s32 i; @@ -1002,7 +1002,7 @@ skip: } void Play_DrawOverlayElements(PlayState* this) { - if ((this->pauseCtx.state != PAUSE_STATE_0) || (this->pauseCtx.debugState != 0)) { + if ((this->pauseCtx.state != PAUSE_STATE_OFF) || (this->pauseCtx.debugState != 0)) { KaleidoScopeCall_Draw(this); } diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 928fe3333f..3933bac42c 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -1640,7 +1640,7 @@ void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList, Ve } } -u32 func_80091738(PlayState* play, u8* segment, SkelAnime* skelAnime) { +u32 Player_InitDrawPause(PlayState* play, u8* segment, SkelAnime* skelAnime) { s16 linkObjectId = gLinkObjectIds[(void)0, gSaveContext.linkAge]; u32 size; void* ptr; @@ -1662,7 +1662,7 @@ u32 func_80091738(PlayState* play, u8* segment, SkelAnime* skelAnime) { SkelAnime_InitLink(play, skelAnime, gPlayerSkelHeaders[(void)0, gSaveContext.linkAge], &gPlayerAnim_003238, 9, ptr, ptr, PLAYER_LIMB_MAX); - return size + PAUSE_EQUIP_BUFFER_SIZE + PAUSE_PLAYER_SEGMENT_GAMEPLAY_KEEP_BUFFER_SIZE + + return PAUSE_EQUIP_BUFFER_SIZE + PAUSE_PLAYER_SEGMENT_GAMEPLAY_KEEP_BUFFER_SIZE + size + sizeof(Vec3s[PLAYER_LIMB_BUF_COUNT]); } 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 3adc838892..0d9f34b4bc 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 @@ -71,7 +71,7 @@ void EnOkarinaEffect_TriggerStorm(EnOkarinaEffect* this, PlayState* play) { void EnOkarinaEffect_ManageStorm(EnOkarinaEffect* this, PlayState* play) { Flags_UnsetEnv(play, 5); // clear storms env flag - if (((play->pauseCtx.state == PAUSE_STATE_0) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && + if (((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->msgCtx.msgLength == 0) && (!FrameAdvance_IsEnabled(play)) && ((play->transitionMode == TRANS_MODE_OFF) || (gSaveContext.gameMode != GAMEMODE_NORMAL))) || (this->timer >= 250)) { diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.c index f70bf15b86..082a009915 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.c @@ -125,7 +125,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) { if (pauseCtx->cursorSpecialPos == 0) { pauseCtx->nameColorSet = 0; - if ((pauseCtx->state != PAUSE_STATE_6) || ((pauseCtx->stickRelX == 0) && (pauseCtx->stickRelY == 0))) { + if ((pauseCtx->state != PAUSE_STATE_IDLE) || ((pauseCtx->stickRelX == 0) && (pauseCtx->stickRelY == 0))) { // No cursor movement cursor = pauseCtx->cursorSlot[PAUSE_QUEST]; } else { @@ -232,7 +232,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) { // Handle part of the ocarina songs playback - if ((pauseCtx->state == PAUSE_STATE_6) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && + if ((pauseCtx->state == PAUSE_STATE_IDLE) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && (pauseCtx->cursorSpecialPos == 0)) { if ((cursor >= QUEST_SONG_MINUET) && (cursor < QUEST_KOKIRI_EMERALD)) { if (CHECK_QUEST_ITEM(pauseCtx->cursorPoint[PAUSE_QUEST])) { @@ -544,7 +544,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) { gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - if ((pauseCtx->state == PAUSE_STATE_4) || (pauseCtx->state == PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE)) { + if ((pauseCtx->state == PAUSE_STATE_OPENING_1) || (pauseCtx->state == PAUSE_STATE_CLOSING)) { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sHpPrimColors[0][0], sHpPrimColors[0][1], sHpPrimColors[0][2], pauseCtx->alpha); } else { @@ -561,7 +561,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) { 48, 48, 0); } - if (pauseCtx->state == PAUSE_STATE_6) { + if (pauseCtx->state == PAUSE_STATE_IDLE) { gDPPipeSync(POLY_OPA_DISP++); gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c index 662e07b842..6edfcb9a9d 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c @@ -150,7 +150,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) { } } - if ((pauseCtx->state == PAUSE_STATE_6) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && + if ((pauseCtx->state == PAUSE_STATE_IDLE) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && (pauseCtx->pageIndex == PAUSE_EQUIP)) { oldCursorPoint = pauseCtx->cursorPoint[PAUSE_EQUIP]; pauseCtx->cursorColorSet = 0; @@ -467,7 +467,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) { KaleidoScope_SetCursorVtx(pauseCtx, cursorSlot * 4, pauseCtx->equipVtx); if ((pauseCtx->cursorSpecialPos == 0) && (cursorItem != PAUSE_ITEM_NONE) && - (pauseCtx->state == PAUSE_STATE_6) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && + (pauseCtx->state == PAUSE_STATE_IDLE) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && CHECK_BTN_ALL(input->press.button, BTN_A) && (pauseCtx->cursorX[PAUSE_EQUIP] != 0)) { if ((gEquipAgeReqs[pauseCtx->cursorY[PAUSE_EQUIP]][pauseCtx->cursorX[PAUSE_EQUIP]] == 9) || diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c index 53969f4a17..0b5faa52e7 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c @@ -103,7 +103,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { pauseCtx->cursorColorSet = 0; pauseCtx->nameColorSet = 0; - if ((pauseCtx->state == PAUSE_STATE_6) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && + if ((pauseCtx->state == PAUSE_STATE_IDLE) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && (pauseCtx->pageIndex == PAUSE_ITEM)) { moveCursorResult = 0; oldCursorPoint = pauseCtx->cursorPoint[PAUSE_ITEM]; @@ -345,7 +345,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { index = cursorSlot * 4; // required to match? KaleidoScope_SetCursorVtx(pauseCtx, index, pauseCtx->itemVtx); - if ((pauseCtx->debugState == 0) && (pauseCtx->state == PAUSE_STATE_6) && + if ((pauseCtx->debugState == 0) && (pauseCtx->state == PAUSE_STATE_IDLE) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_)) { if (CHECK_BTN_ANY(input->press.button, BTN_CLEFT | BTN_CDOWN | BTN_CRIGHT)) { if (((gSlotAgeReqs[cursorSlot] == 9) || diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.c index 3ef2a8c0e1..da0dd0ba81 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.c @@ -46,7 +46,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) { OPEN_DISPS(gfxCtx, "../z_kaleido_map_PAL.c", 123); - if ((pauseCtx->state == PAUSE_STATE_6) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && + if ((pauseCtx->state == PAUSE_STATE_IDLE) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && (pauseCtx->pageIndex == PAUSE_MAP)) { pauseCtx->cursorColorSet = 0; oldCursorPoint = pauseCtx->cursorPoint[PAUSE_MAP]; @@ -411,7 +411,7 @@ void KaleidoScope_DrawWorldMap(PlayState* play, GraphicsContext* gfxCtx) { OPEN_DISPS(gfxCtx, "../z_kaleido_map_PAL.c", 556); - if ((pauseCtx->state == PAUSE_STATE_6) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && + if ((pauseCtx->state == PAUSE_STATE_IDLE) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) && (pauseCtx->pageIndex == PAUSE_MAP)) { pauseCtx->cursorColorSet = 0; oldCursorPoint = pauseCtx->cursorPoint[PAUSE_WORLD_MAP]; diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c index 2ae8d4e46d..eee617772d 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.c @@ -135,6 +135,7 @@ s16 D_8082AB2C_height_MAP_PAGE_VTX_NOT_IN_DUNGEON_SCENE_[] = { 24, 72, 13, 22, 19, 20, 19, 27, 14, 26, 22, 21, 49, 32, 45, 60, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 32, 8, }; +// TODO may not be indexed by `PAUSE_` static u8 D_8082AB6C[][5] = { { BTN_ENABLED, BTN_DISABLED, BTN_DISABLED, BTN_DISABLED, BTN_ENABLED }, // PAUSE_ITEM { BTN_ENABLED, BTN_ENABLED, BTN_ENABLED, BTN_ENABLED, BTN_DISABLED }, // PAUSE_MAP @@ -248,7 +249,7 @@ static void* sPromptChoiceTexs[][2] = { { gPauseYesFRATex, gPauseNoFRATex }, }; -static u8 D_808321A8[5]; +static u8 D_808321A8_savedButtonStatus[5]; static PreRender sPlayerPreRender; static void* sPreRenderCvg; @@ -388,7 +389,7 @@ void KaleidoScope_SetDefaultCursor(PlayState* play) { void KaleidoScope_SwitchPage(PauseContext* pauseCtx, u8 pt) { pauseCtx->unk_1E4_ps6_ = PAUSE_S6_1_SWITCH_PAGE_; - pauseCtx->unk_1EA_PageSwitchTimer__ = 0; + pauseCtx->unk_1EA_OpenMenuAndPageSwitchTimer__ = 0; if (!pt) { // pt == 0, scroll left pauseCtx->mode = pauseCtx->pageIndex * 2 + 1; @@ -459,7 +460,7 @@ void KaleidoScope_DrawCursor(PlayState* play, u16 pageIndex) { temp = pauseCtx->unk_1E4_ps6_; if ((((pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_) || (temp == PAUSE_S6_8_IDLE_CURSOR_ON_SONG_)) && - (pauseCtx->state == PAUSE_STATE_6)) || + (pauseCtx->state == PAUSE_STATE_IDLE)) || ((pauseCtx->pageIndex == PAUSE_QUEST) && ((temp < PAUSE_S6_3) /* PAUSE_S6_0_IDLE_, PAUSE_S6_1_SWITCH_PAGE_, PAUSE_S6_2_PLAYBACK_SONG_ */ || (temp == PAUSE_S6_5_PLAYER_PLAYING_SONG_) || (temp == PAUSE_S6_8_IDLE_CURSOR_ON_SONG_)))) { @@ -560,9 +561,12 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { OPEN_DISPS(gfxCtx, "../z_kaleido_scope_PAL.c", 1100); - if ((pauseCtx->state < PAUSE_STATE_8) /* PAUSE_STATE_0, PAUSE_STATE_1, PAUSE_STATE_2, PAUSE_STATE_3, PAUSE_STATE_4, - PAUSE_STATE_5, PAUSE_STATE_6, PAUSE_STATE_7_SAVE_PROMPT_ */ - || (pauseCtx->state > PAUSE_STATE_17) /* PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE, PAUSE_STATE_19_UNPAUSE */) { + if ((pauseCtx->state < PAUSE_STATE_8) + /* PAUSE_STATE_OFF, PAUSE_STATE_WAIT_LETTERBOX, PAUSE_STATE_WAIT_BG_PRERENDER, PAUSE_STATE_INIT, + PAUSE_STATE_OPENING_1, PAUSE_STATE_OPENING_2, PAUSE_STATE_IDLE, PAUSE_STATE_7_SAVE_PROMPT_ */ + || (pauseCtx->state >= PAUSE_STATE_CLOSING) + /* PAUSE_STATE_CLOSING, PAUSE_STATE_UNPAUSE */ + ) { if (pauseCtx->state != PAUSE_STATE_7_SAVE_PROMPT_) { stepR = ABS(sColor82ABRed_D_8082AB8C - sCursorColors_D_8082ACF4[pauseCtx->cursorColorSet + sCursorColorBlinkOffset_D_8082AD40][0]) / @@ -847,7 +851,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { Gfx_SetupDL_42Opa(gfxCtx); if ((pauseCtx->state == PAUSE_STATE_7_SAVE_PROMPT_) || - ((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE)) + ((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_CLOSING)) /* PAUSE_STATE_8, PAUSE_STATE_9, PAUSE_STATE_10, PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13, PAUSE_STATE_14, PAUSE_STATE_15, PAUSE_STATE_16, PAUSE_STATE_17 */ ) { @@ -891,7 +895,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx, "../z_kaleido_scope_PAL.c", 1424), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - if (((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE)) + if (((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_CLOSING)) /* PAUSE_STATE_8, PAUSE_STATE_9, PAUSE_STATE_10, PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13, PAUSE_STATE_14, PAUSE_STATE_15, PAUSE_STATE_16, PAUSE_STATE_17 */) { POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, sGameOverTexs); @@ -1205,8 +1209,8 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); gDPSetEnvColor(POLY_OPA_DISP++, 20, 30, 40, 0); - if ((pauseCtx->state == PAUSE_STATE_6) && (pauseCtx->namedItem != PAUSE_ITEM_NONE) && - (pauseCtx->nameDisplayTimer < WREG(89)) && + if ((pauseCtx->state == PAUSE_STATE_IDLE) && (pauseCtx->namedItem != PAUSE_ITEM_NONE) && + (pauseCtx->nameDisplayTimer < R_PAUSE_NAME_DISPLAY_TIMER_THRESHOLD_) && (!pauseCtx->unk_1E4_ps6_ /* PAUSE_S6_0_IDLE_ */ || (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_2_PLAYBACK_SONG_) || ((pauseCtx->unk_1E4_ps6_ >= PAUSE_S6_4_PLAYER_PLAYING_SONG_INIT_) && (pauseCtx->unk_1E4_ps6_ <= @@ -1214,12 +1218,14 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { PAUSE_S6_5_PLAYER_PLAYING_SONG_, PAUSE_S6_6_PLAYER_PLAYING_SONG_DONE_, PAUSE_S6_7 */ || (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_8_IDLE_CURSOR_ON_SONG_)) && (pauseCtx->cursorSpecialPos == 0)) { + if (!pauseCtx->unk_1E4_ps6_ /* PAUSE_S6_0_IDLE_ */ || (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_2_PLAYBACK_SONG_) || ((pauseCtx->unk_1E4_ps6_ >= PAUSE_S6_4_PLAYER_PLAYING_SONG_INIT_) && (pauseCtx->unk_1E4_ps6_ <= PAUSE_S6_7)) /* PAUSE_S6_4_PLAYER_PLAYING_SONG_INIT_, PAUSE_S6_5_PLAYER_PLAYING_SONG_, PAUSE_S6_6_PLAYER_PLAYING_SONG_DONE_, PAUSE_S6_7 */ || (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_8_IDLE_CURSOR_ON_SONG_)) { + pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = -63; pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] = @@ -1318,7 +1324,7 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, D_8082AD60_toDecideTextTextures_[gSaveContext.language], D_8082ADE0_toDecideTextWidth_[gSaveContext.language], 16, 4); } else if (pauseCtx->cursorSpecialPos != 0) { - if ((pauseCtx->state == PAUSE_STATE_6) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_)) { + if ((pauseCtx->state == PAUSE_STATE_IDLE) && (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_0_IDLE_)) { pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = -63; pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] = @@ -1440,41 +1446,43 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { void KaleidoScope_UpdateNamePanel(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; - u16 sp2A; + u16 texIndex; if ((pauseCtx->namedItem != pauseCtx->cursorItem[pauseCtx->pageIndex]) || ((pauseCtx->pageIndex == PAUSE_MAP) && (pauseCtx->cursorSpecialPos != 0))) { pauseCtx->namedItem = pauseCtx->cursorItem[pauseCtx->pageIndex]; - sp2A = pauseCtx->namedItem; + texIndex = pauseCtx->namedItem; osCreateMesgQueue(&pauseCtx->loadQueue, &pauseCtx->loadMsg, 1); if (pauseCtx->namedItem != PAUSE_ITEM_NONE) { if ((pauseCtx->pageIndex == PAUSE_MAP) && !sInDungeonScene) { - if (gSaveContext.language) { - sp2A += 12; + if (gSaveContext.language) { // != LANGUAGE_ENG + texIndex += 12; } if (gSaveContext.language == LANGUAGE_FRA) { - sp2A += 12; + texIndex += 12; } - DmaMgr_SendRequest1(pauseCtx->nameSegment, (uintptr_t)_map_name_staticSegmentRomStart + (sp2A * 0x400), - 0x400, "../z_kaleido_scope_PAL.c", 2093); + DmaMgr_SendRequest1(pauseCtx->nameSegment, + (uintptr_t)_map_name_staticSegmentRomStart + (texIndex * 0x400), 0x400, + "../z_kaleido_scope_PAL.c", 2093); } else { osSyncPrintf("zoom_name=%d\n", pauseCtx->namedItem); - if (gSaveContext.language) { - sp2A += 123; + if (gSaveContext.language) { // != LANGUAGE_ENG + texIndex += 123; } if (gSaveContext.language == LANGUAGE_FRA) { - sp2A += 123; + texIndex += 123; } - osSyncPrintf("J_N=%d point=%d\n", gSaveContext.language, sp2A); + osSyncPrintf("J_N=%d point=%d\n", gSaveContext.language, texIndex); - DmaMgr_SendRequest1(pauseCtx->nameSegment, (uintptr_t)_item_name_staticSegmentRomStart + (sp2A * 0x400), - 0x400, "../z_kaleido_scope_PAL.c", 2120); + DmaMgr_SendRequest1(pauseCtx->nameSegment, + (uintptr_t)_item_name_staticSegmentRomStart + (texIndex * 0x400), 0x400, + "../z_kaleido_scope_PAL.c", 2120); } pauseCtx->nameDisplayTimer = 0; @@ -1487,7 +1495,7 @@ void KaleidoScope_UpdateNamePanel(PlayState* play) { ((pauseCtx->pageIndex == PAUSE_EQUIP) && (pauseCtx->cursorX[PAUSE_EQUIP] != 0))) { if (pauseCtx->namedItem != ITEM_SOLD_OUT) { pauseCtx->nameDisplayTimer++; - if (pauseCtx->nameDisplayTimer > WREG(88)) { + if (pauseCtx->nameDisplayTimer > R_PAUSE_NAME_DISPLAY_TIMER_MAX_) { pauseCtx->nameDisplayTimer = 0; } } @@ -1513,18 +1521,18 @@ void KaleidoScope_UpdateSwitchPage_(PlayState* play, Input* input) { pauseCtx->eye.x += D_8082ABAC_pageSwitch_eye_dx_[mode]; pauseCtx->eye.z += D_8082ABCC_pageSwitch_eye_dz_[mode]; - if (pauseCtx->unk_1EA_PageSwitchTimer__ < 32) { - R_PAUSE_CURSOR_LEFT_X -= WREG(25) / WREG(6); - R_PAUSE_CURSOR_RIGHT_X -= WREG(26) / WREG(6); + if (pauseCtx->unk_1EA_OpenMenuAndPageSwitchTimer__ < 32) { + R_PAUSE_CURSOR_LEFT_X -= R_PAUSE_CURSOR_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_RIGHT_X -= R_PAUSE_CURSOR_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; } else { - R_PAUSE_CURSOR_LEFT_X += WREG(25) / WREG(6); - R_PAUSE_CURSOR_RIGHT_X += WREG(26) / WREG(6); + R_PAUSE_CURSOR_LEFT_X += R_PAUSE_CURSOR_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_RIGHT_X += R_PAUSE_CURSOR_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; } - pauseCtx->unk_1EA_PageSwitchTimer__ += 4; + pauseCtx->unk_1EA_OpenMenuAndPageSwitchTimer__ += 4; - if (pauseCtx->unk_1EA_PageSwitchTimer__ == 64) { - pauseCtx->unk_1EA_PageSwitchTimer__ = 0; + if (pauseCtx->unk_1EA_OpenMenuAndPageSwitchTimer__ == 64) { + pauseCtx->unk_1EA_OpenMenuAndPageSwitchTimer__ = 0; pauseCtx->pageIndex = D_8082ABEC_modeToNewPageIndex_[pauseCtx->mode]; pauseCtx->unk_1E4_ps6_ = PAUSE_S6_0_IDLE_; } @@ -1801,7 +1809,7 @@ s16 func_80823A0C_makeVertices_(PlayState* play, Vtx* vtx, s16 usage_arg2, s16 a vtx[bufI + 1].v.ob[0] = vtx[bufI + 3].v.ob[0] = vtx[bufI + 0].v.ob[0] + ptr2_width_[j]; - if (!((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE)) + if (!((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_CLOSING)) /* PAUSE_STATE_8, PAUSE_STATE_9, PAUSE_STATE_10, PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13, PAUSE_STATE_14, PAUSE_STATE_15, PAUSE_STATE_16, PAUSE_STATE_17 */) { vtx[bufI + 0].v.ob[1] = vtx[bufI + 1].v.ob[1] = ptr3_y_[j] + pauseCtx->offsetY; @@ -1939,13 +1947,13 @@ void KaleidoScope_InitVertices(PlayState* play, GraphicsContext* gfxCtx) { pauseCtx->offsetY = 0; - if ((pauseCtx->state == PAUSE_STATE_4) || - (pauseCtx->state >= - PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE) /* PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE, PAUSE_STATE_19_UNPAUSE */ - || ((pauseCtx->state == PAUSE_STATE_7_SAVE_PROMPT_) && - ((pauseCtx->unk_1EC_ps7_ == PAUSE_S7_2) || (pauseCtx->unk_1EC_ps7_ == PAUSE_S7_5))) || - ((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state <= PAUSE_STATE_13)) - /* PAUSE_STATE_8, PAUSE_STATE_9, PAUSE_STATE_10, PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13 */) { + if ((pauseCtx->state == PAUSE_STATE_OPENING_1) || + (pauseCtx->state >= PAUSE_STATE_CLOSING + /* PAUSE_STATE_CLOSING, PAUSE_STATE_UNPAUSE */) || + ((pauseCtx->state == PAUSE_STATE_7_SAVE_PROMPT_) && + ((pauseCtx->unk_1EC_ps7_ == PAUSE_S7_2) || (pauseCtx->unk_1EC_ps7_ == PAUSE_S7_5))) || + ((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state <= PAUSE_STATE_13) + /* PAUSE_STATE_8, PAUSE_STATE_9, PAUSE_STATE_10, PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13 */)) { pauseCtx->offsetY = 80; } @@ -2435,7 +2443,7 @@ void KaleidoScope_Draw(PlayState* play) { KaleidoScope_SetView(pauseCtx, 0.0f, 0.0f, 64.0f); - if (!((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE)) + if (!((pauseCtx->state >= PAUSE_STATE_8) && (pauseCtx->state < PAUSE_STATE_CLOSING)) /* PAUSE_STATE_8, PAUSE_STATE_9, PAUSE_STATE_10, PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13, PAUSE_STATE_14, PAUSE_STATE_15, PAUSE_STATE_16, PAUSE_STATE_17 */) { KaleidoScope_DrawInfoPanel(play); @@ -2475,26 +2483,30 @@ void KaleidoScope_GrayOutTextureRGBA32(u32* texture, u16 pixelCount) { } } -void func_808265BC_switchPageToSave___(PlayState* play) { +void KaleidoScope_UpdateOpening_(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; pauseCtx->eye.x += D_8082ABAC_pageSwitch_eye_dx_[pauseCtx->mode] * ZREG(46); pauseCtx->eye.z += D_8082ABCC_pageSwitch_eye_dz_[pauseCtx->mode] * ZREG(46); - pauseCtx->unk_1EA_PageSwitchTimer__ += 4 * ZREG(46); + pauseCtx->unk_1EA_OpenMenuAndPageSwitchTimer__ += 4 * ZREG(46); - if (pauseCtx->unk_1EA_PageSwitchTimer__ == (64 * ZREG(47))) { + if (pauseCtx->unk_1EA_OpenMenuAndPageSwitchTimer__ == (4 * 16 * ZREG(47))) { func_80084BF4(play, 1); + gSaveContext.buttonStatus[0] = D_8082AB6C[pauseCtx->pageIndex][0]; gSaveContext.buttonStatus[1] = D_8082AB6C[pauseCtx->pageIndex][1]; gSaveContext.buttonStatus[2] = D_8082AB6C[pauseCtx->pageIndex][2]; gSaveContext.buttonStatus[3] = D_8082AB6C[pauseCtx->pageIndex][3]; gSaveContext.buttonStatus[4] = D_8082AB6C[pauseCtx->pageIndex][4]; + pauseCtx->pageIndex = D_8082ABEC_modeToNewPageIndex_[pauseCtx->mode]; + pauseCtx->unk_1E4_ps6_ = PAUSE_S6_0_IDLE_; - pauseCtx->state++; // PAUSE_STATE_5 or PAUSE_STATE_6 + pauseCtx->state++; // PAUSE_STATE_OPENING_2 or PAUSE_STATE_IDLE + pauseCtx->alpha = 255; Interface_LoadActionLabelB(play, DO_ACTION_SAVE); - } else if (pauseCtx->unk_1EA_PageSwitchTimer__ == 64) { + } else if (pauseCtx->unk_1EA_OpenMenuAndPageSwitchTimer__ == 64) { pauseCtx->pageIndex = D_8082ABEC_modeToNewPageIndex_[pauseCtx->mode]; pauseCtx->mode = (u16)(pauseCtx->pageIndex * 2) + 1; } @@ -2630,8 +2642,8 @@ void KaleidoScope_Update(PlayState* play) { Player* player = GET_PLAYER(play); Input* input = &play->state.input[0]; u32 size; - u32 size0; - u32 size1; + u32 iconItemStaticSize; + u32 playerSegmentDrawPauseSize; u32 size2; u16 i; s16 stepR; @@ -2641,40 +2653,43 @@ void KaleidoScope_Update(PlayState* play) { s32 pad; if ((R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_DONE) && - (((pauseCtx->state >= PAUSE_STATE_4) && (pauseCtx->state <= PAUSE_STATE_7_SAVE_PROMPT_) - /* PAUSE_STATE_4, PAUSE_STATE_5, PAUSE_STATE_6, PAUSE_STATE_7_SAVE_PROMPT_ */ + (((pauseCtx->state >= PAUSE_STATE_OPENING_1) && (pauseCtx->state <= PAUSE_STATE_7_SAVE_PROMPT_) + /* PAUSE_STATE_OPENING_1, PAUSE_STATE_OPENING_2, PAUSE_STATE_IDLE, PAUSE_STATE_7_SAVE_PROMPT_ */ ) || - ((pauseCtx->state >= PAUSE_STATE_10) && (pauseCtx->state <= PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE) + ((pauseCtx->state >= PAUSE_STATE_10) && (pauseCtx->state <= PAUSE_STATE_CLOSING) /* PAUSE_STATE_10, PAUSE_STATE_11, PAUSE_STATE_12, PAUSE_STATE_13, PAUSE_STATE_14, - PAUSE_STATE_15, PAUSE_STATE_16, PAUSE_STATE_17, PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE */ + PAUSE_STATE_15, PAUSE_STATE_16, PAUSE_STATE_17, PAUSE_STATE_CLOSING */ ))) { if ((!pauseCtx->unk_1E4_ps6_ /* PAUSE_S6_0_IDLE_ */ || (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_8_IDLE_CURSOR_ON_SONG_)) && - (pauseCtx->state == PAUSE_STATE_6)) { + (pauseCtx->state == PAUSE_STATE_IDLE)) { + pauseCtx->stickRelX = input->rel.stick_x; pauseCtx->stickRelY = input->rel.stick_y; + KaleidoScope_UpdateCursorSize(play); KaleidoScope_HandlePageToggles(pauseCtx, input); } else if ((pauseCtx->pageIndex == PAUSE_QUEST) && ((pauseCtx->unk_1E4_ps6_ < PAUSE_S6_3) /* PAUSE_S6_0_IDLE_, PAUSE_S6_1_SWITCH_PAGE_, PAUSE_S6_2_PLAYBACK_SONG_ */ || (pauseCtx->unk_1E4_ps6_ == PAUSE_S6_5_PLAYER_PLAYING_SONG_))) { + KaleidoScope_UpdateCursorSize(play); } - if (pauseCtx->state == PAUSE_STATE_6) { + if (pauseCtx->state == PAUSE_STATE_IDLE) { KaleidoScope_UpdateNamePanel(play); } } switch (pauseCtx->state) { - case PAUSE_STATE_3: - D_808321A8[0] = gSaveContext.buttonStatus[0]; - D_808321A8[1] = gSaveContext.buttonStatus[1]; - D_808321A8[2] = gSaveContext.buttonStatus[2]; - D_808321A8[3] = gSaveContext.buttonStatus[3]; - D_808321A8[4] = gSaveContext.buttonStatus[4]; + case PAUSE_STATE_INIT: + D_808321A8_savedButtonStatus[0] = gSaveContext.buttonStatus[0]; + D_808321A8_savedButtonStatus[1] = gSaveContext.buttonStatus[1]; + D_808321A8_savedButtonStatus[2] = gSaveContext.buttonStatus[2]; + D_808321A8_savedButtonStatus[3] = gSaveContext.buttonStatus[3]; + D_808321A8_savedButtonStatus[4] = gSaveContext.buttonStatus[4]; pauseCtx->cursorX[PAUSE_MAP] = 0; pauseCtx->cursorSlot[PAUSE_MAP] = pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->dungeonMapSlot = @@ -2688,15 +2703,17 @@ void KaleidoScope_Update(PlayState* play) { //! @bug messed up alignment, should match `ALIGN64` pauseCtx->playerSegment = (void*)(((uintptr_t)play->objectCtx.spaceStart + 0x30) & ~0x3F); - size1 = func_80091738(play, pauseCtx->playerSegment, &pauseCtx->playerSkelAnime); - osSyncPrintf("プレイヤー size1=%x\n", size1); + playerSegmentDrawPauseSize = + Player_InitDrawPause(play, pauseCtx->playerSegment, &pauseCtx->playerSkelAnime); + osSyncPrintf("プレイヤー size1=%x\n", playerSegmentDrawPauseSize); - pauseCtx->iconItemSegment = (void*)ALIGN16((uintptr_t)pauseCtx->playerSegment + size1); + pauseCtx->iconItemSegment = (void*)ALIGN16((uintptr_t)pauseCtx->playerSegment + playerSegmentDrawPauseSize); - size0 = (uintptr_t)_icon_item_staticSegmentRomEnd - (uintptr_t)_icon_item_staticSegmentRomStart; - osSyncPrintf("icon_item size0=%x\n", size0); - DmaMgr_SendRequest1(pauseCtx->iconItemSegment, (uintptr_t)_icon_item_staticSegmentRomStart, size0, - "../z_kaleido_scope_PAL.c", 3662); + iconItemStaticSize = + (uintptr_t)_icon_item_staticSegmentRomEnd - (uintptr_t)_icon_item_staticSegmentRomStart; + osSyncPrintf("icon_item size0=%x\n", iconItemStaticSize); + DmaMgr_SendRequest1(pauseCtx->iconItemSegment, (uintptr_t)_icon_item_staticSegmentRomStart, + iconItemStaticSize, "../z_kaleido_scope_PAL.c", 3662); gSegments[8] = VIRTUAL_TO_PHYSICAL(pauseCtx->iconItemSegment); @@ -2706,7 +2723,7 @@ void KaleidoScope_Update(PlayState* play) { } } - pauseCtx->iconItem24Segment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + size0); + pauseCtx->iconItem24Segment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + iconItemStaticSize); size = (uintptr_t)_icon_item_24_staticSegmentRomEnd - (uintptr_t)_icon_item_24_staticSegmentRomStart; osSyncPrintf("icon_item24 size=%x\n", size); @@ -2778,10 +2795,12 @@ void KaleidoScope_Update(PlayState* play) { pauseCtx->nameSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemLangSegment + size); - osSyncPrintf("サイズ=%x\n", size2 + size1 + size0 + size); + // This printf may have been used to compute the size used on playerSegment at one point, + // but is missing the size of icon_item_24_static + osSyncPrintf("サイズ=%x\n", size2 + playerSegmentDrawPauseSize + iconItemStaticSize + size); osSyncPrintf("item_name I_N_PT=%x\n", 0x800); Interface_SetDoAction(play, DO_ACTION_DECIDE); - osSyncPrintf("サイズ=%x\n", size2 + size1 + size0 + size + 0x800); + osSyncPrintf("サイズ=%x\n", size2 + playerSegmentDrawPauseSize + iconItemStaticSize + size + 0x800); if (((void)0, gSaveContext.worldMapArea) < 22) { if (gSaveContext.language == LANGUAGE_ENG) { @@ -3032,47 +3051,50 @@ void KaleidoScope_Update(PlayState* play) { } } - pauseCtx->state = PAUSE_STATE_4; + pauseCtx->state = PAUSE_STATE_OPENING_1; break; - case PAUSE_STATE_4: + case PAUSE_STATE_OPENING_1: if (pauseCtx->rollRotPageItem == 160.0f) { + // First frame in this state + KaleidoScope_SetDefaultCursor(play); KaleidoScope_ProcessPlayerPreRender(); } pauseCtx->rollRotPageItem = pauseCtx->rollRotPageEquip = pauseCtx->rollRotPageMap = - pauseCtx->rollRotPageQuest -= 160.0f / WREG(6); - pauseCtx->infoPanelOffsetY += 40 / WREG(6); - interfaceCtx->startAlpha += 255 / WREG(6); - R_PAUSE_CURSOR_LEFT_X += WREG(25) / WREG(6); - R_PAUSE_CURSOR_RIGHT_X += WREG(26) / WREG(6); - XREG(5) += 150 / WREG(6); - pauseCtx->alpha += (u16)(255 / (WREG(6) + WREG(4))); + pauseCtx->rollRotPageQuest -= 160.0f / R_PAUSE_UI_ANIMS_DURATION; + pauseCtx->infoPanelOffsetY += 40 / R_PAUSE_UI_ANIMS_DURATION; + interfaceCtx->startAlpha += 255 / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_LEFT_X += R_PAUSE_CURSOR_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_RIGHT_X += R_PAUSE_CURSOR_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + XREG(5) += 150 / R_PAUSE_UI_ANIMS_DURATION; + pauseCtx->alpha += (u16)(255 / (R_PAUSE_UI_ANIMS_DURATION + R_PAUSE_UI_ANIM_ALPHA_ADD_DURATION)); if (pauseCtx->rollRotPageItem == 0) { interfaceCtx->startAlpha = 255; R_PAUSE_OFFSET_VERTICAL = 0; - pauseCtx->state = PAUSE_STATE_5; + pauseCtx->state = PAUSE_STATE_OPENING_2; } - func_808265BC_switchPageToSave___(play); + KaleidoScope_UpdateOpening_(play); break; - case PAUSE_STATE_5: - pauseCtx->alpha += (u16)(255 / (WREG(6) + WREG(4))); - func_808265BC_switchPageToSave___(play); - if (pauseCtx->state == PAUSE_STATE_6) { + case PAUSE_STATE_OPENING_2: + pauseCtx->alpha += (u16)(255 / (R_PAUSE_UI_ANIMS_DURATION + R_PAUSE_UI_ANIM_ALPHA_ADD_DURATION)); + KaleidoScope_UpdateOpening_(play); + + if (pauseCtx->state == PAUSE_STATE_IDLE) { KaleidoScope_UpdateNamePanel(play); } break; - case PAUSE_STATE_6: + case PAUSE_STATE_IDLE: switch (pauseCtx->unk_1E4_ps6_) { case PAUSE_S6_0_IDLE_: if (CHECK_BTN_ALL(input->press.button, BTN_START)) { Interface_SetDoAction(play, DO_ACTION_NONE); - pauseCtx->state = PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE; + pauseCtx->state = PAUSE_STATE_CLOSING; R_PAUSE_OFFSET_VERTICAL = -6240; func_800F64E0(0); } else if (CHECK_BTN_ALL(input->press.button, BTN_B)) { @@ -3116,7 +3138,7 @@ void KaleidoScope_Update(PlayState* play) { if (CHECK_BTN_ALL(input->press.button, BTN_START)) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); Interface_SetDoAction(play, DO_ACTION_NONE); - pauseCtx->state = PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE; + pauseCtx->state = PAUSE_STATE_CLOSING; R_PAUSE_OFFSET_VERTICAL = -6240; func_800F64E0(0); pauseCtx->unk_1E4_ps6_ = PAUSE_S6_0_IDLE_; @@ -3173,7 +3195,7 @@ void KaleidoScope_Update(PlayState* play) { if (CHECK_BTN_ALL(input->press.button, BTN_START)) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); Interface_SetDoAction(play, DO_ACTION_NONE); - pauseCtx->state = PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE; + pauseCtx->state = PAUSE_STATE_CLOSING; R_PAUSE_OFFSET_VERTICAL = -6240; func_800F64E0(0); pauseCtx->unk_1E4_ps6_ = PAUSE_S6_0_IDLE_; @@ -3206,9 +3228,9 @@ void KaleidoScope_Update(PlayState* play) { case PAUSE_STATE_7_SAVE_PROMPT_: switch (pauseCtx->unk_1EC_ps7_) { case PAUSE_S7_0: - pauseCtx->rollRotSavePromptPage_unk_204 -= 314.0f / WREG(6); - R_PAUSE_CURSOR_LEFT_X -= WREG(25) / WREG(6); - R_PAUSE_CURSOR_RIGHT_X -= WREG(26) / WREG(6); + pauseCtx->rollRotSavePromptPage_unk_204 -= 314.0f / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_LEFT_X -= R_PAUSE_CURSOR_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_RIGHT_X -= R_PAUSE_CURSOR_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; if (pauseCtx->rollRotSavePromptPage_unk_204 <= -628.0f) { pauseCtx->rollRotSavePromptPage_unk_204 = -628.0f; pauseCtx->unk_1EC_ps7_ = PAUSE_S7_1; @@ -3268,11 +3290,11 @@ void KaleidoScope_Update(PlayState* play) { case PAUSE_S7_3: case PAUSE_S7_6: - pauseCtx->rollRotSavePromptPage_unk_204 += 314.0f / WREG(6); - R_PAUSE_CURSOR_LEFT_X += WREG(25) / WREG(6); - R_PAUSE_CURSOR_RIGHT_X += WREG(26) / WREG(6); + pauseCtx->rollRotSavePromptPage_unk_204 += 314.0f / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_LEFT_X += R_PAUSE_CURSOR_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_RIGHT_X += R_PAUSE_CURSOR_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; if (pauseCtx->rollRotSavePromptPage_unk_204 >= -314.0f) { - pauseCtx->state = PAUSE_STATE_6; + pauseCtx->state = PAUSE_STATE_IDLE; pauseCtx->unk_1EC_ps7_ = PAUSE_S7_0; pauseCtx->rollRotPageItem = pauseCtx->rollRotPageEquip = pauseCtx->rollRotPageMap = pauseCtx->rollRotPageQuest = 0.0f; @@ -3284,19 +3306,19 @@ void KaleidoScope_Update(PlayState* play) { case PAUSE_S7_5: if (pauseCtx->rollRotSavePromptPage_unk_204 != (YREG(8) + 160.0f)) { pauseCtx->rollRotPageItem = pauseCtx->rollRotPageEquip = pauseCtx->rollRotPageMap = - pauseCtx->rollRotPageQuest += 160.0f / WREG(6); - pauseCtx->rollRotSavePromptPage_unk_204 += 160.0f / WREG(6); - pauseCtx->infoPanelOffsetY -= 40 / WREG(6); - R_PAUSE_CURSOR_LEFT_X -= WREG(25) / WREG(6); - R_PAUSE_CURSOR_RIGHT_X -= WREG(26) / WREG(6); - XREG(5) -= 150 / WREG(6); - pauseCtx->alpha -= (u16)(255 / WREG(6)); + pauseCtx->rollRotPageQuest += 160.0f / R_PAUSE_UI_ANIMS_DURATION; + pauseCtx->rollRotSavePromptPage_unk_204 += 160.0f / R_PAUSE_UI_ANIMS_DURATION; + pauseCtx->infoPanelOffsetY -= 40 / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_LEFT_X -= R_PAUSE_CURSOR_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_RIGHT_X -= R_PAUSE_CURSOR_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + XREG(5) -= 150 / R_PAUSE_UI_ANIMS_DURATION; + pauseCtx->alpha -= (u16)(255 / R_PAUSE_UI_ANIMS_DURATION); if (pauseCtx->rollRotSavePromptPage_unk_204 == (YREG(8) + 160.0f)) { pauseCtx->alpha = 0; } } else { pauseCtx->debugState = 0; - pauseCtx->state = PAUSE_STATE_19_UNPAUSE; + pauseCtx->state = PAUSE_STATE_UNPAUSE; pauseCtx->rollRotPageItem = pauseCtx->rollRotPageEquip = pauseCtx->rollRotPageMap = pauseCtx->rollRotPageQuest = 160.0f; pauseCtx->namedItem = PAUSE_ITEM_NONE; @@ -3317,12 +3339,13 @@ void KaleidoScope_Update(PlayState* play) { //! @bug messed up alignment, should match `ALIGN64` pauseCtx->iconItemSegment = (void*)(((uintptr_t)play->objectCtx.spaceStart + 0x30) & ~0x3F); - size0 = (uintptr_t)_icon_item_staticSegmentRomEnd - (uintptr_t)_icon_item_staticSegmentRomStart; - osSyncPrintf("icon_item size0=%x\n", size0); - DmaMgr_SendRequest1(pauseCtx->iconItemSegment, (uintptr_t)_icon_item_staticSegmentRomStart, size0, - "../z_kaleido_scope_PAL.c", 4356); + iconItemStaticSize = + (uintptr_t)_icon_item_staticSegmentRomEnd - (uintptr_t)_icon_item_staticSegmentRomStart; + osSyncPrintf("icon_item size0=%x\n", iconItemStaticSize); + DmaMgr_SendRequest1(pauseCtx->iconItemSegment, (uintptr_t)_icon_item_staticSegmentRomStart, + iconItemStaticSize, "../z_kaleido_scope_PAL.c", 4356); - pauseCtx->iconItem24Segment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + size0); + pauseCtx->iconItem24Segment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + iconItemStaticSize); size = (uintptr_t)_icon_item_24_staticSegmentRomEnd - (uintptr_t)_icon_item_24_staticSegmentRomStart; osSyncPrintf("icon_item24 size=%x\n", size); DmaMgr_SendRequest1(pauseCtx->iconItem24Segment, (uintptr_t)_icon_item_24_staticSegmentRomStart, size, @@ -3437,14 +3460,15 @@ void KaleidoScope_Update(PlayState* play) { case PAUSE_STATE_13: pauseCtx->rollRotPageItem = pauseCtx->rollRotPageEquip = pauseCtx->rollRotPageMap = - pauseCtx->rollRotPageQuest = pauseCtx->rollRotSavePromptPage_unk_204 -= 160.0f / WREG(6); - pauseCtx->infoPanelOffsetY += 40 / WREG(6); - interfaceCtx->startAlpha += 255 / WREG(6); + pauseCtx->rollRotPageQuest = pauseCtx->rollRotSavePromptPage_unk_204 -= + 160.0f / R_PAUSE_UI_ANIMS_DURATION; + pauseCtx->infoPanelOffsetY += 40 / R_PAUSE_UI_ANIMS_DURATION; + interfaceCtx->startAlpha += 255 / R_PAUSE_UI_ANIMS_DURATION; VREG(88) -= 3; - R_PAUSE_CURSOR_LEFT_X += WREG(25) / WREG(6); - R_PAUSE_CURSOR_RIGHT_X += WREG(26) / WREG(6); - XREG(5) += 150 / WREG(6); - pauseCtx->alpha += (u16)(255 / (WREG(6) + WREG(4))); + R_PAUSE_CURSOR_LEFT_X += R_PAUSE_CURSOR_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_RIGHT_X += R_PAUSE_CURSOR_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + XREG(5) += 150 / R_PAUSE_UI_ANIMS_DURATION; + pauseCtx->alpha += (u16)(255 / (R_PAUSE_UI_ANIMS_DURATION + R_PAUSE_UI_ANIM_ALPHA_ADD_DURATION)); if (pauseCtx->rollRotSavePromptPage_unk_204 < -628.0f) { pauseCtx->rollRotSavePromptPage_unk_204 = -628.0f; interfaceCtx->startAlpha = 255; @@ -3569,7 +3593,7 @@ void KaleidoScope_Update(PlayState* play) { interfaceCtx->unk_244 += 10; if (interfaceCtx->unk_244 >= 255) { interfaceCtx->unk_244 = 255; - pauseCtx->state = PAUSE_STATE_0; + pauseCtx->state = PAUSE_STATE_OFF; R_UPDATE_RATE = 3; R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF; func_800981B8(&play->objectCtx); @@ -3603,22 +3627,22 @@ void KaleidoScope_Update(PlayState* play) { } break; - case PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE: + case PAUSE_STATE_CLOSING: if (pauseCtx->rollRotPageItem != 160.0f) { pauseCtx->rollRotPageItem = pauseCtx->rollRotPageEquip = pauseCtx->rollRotPageMap = - pauseCtx->rollRotPageQuest += 160.0f / WREG(6); - pauseCtx->infoPanelOffsetY -= 40 / WREG(6); - interfaceCtx->startAlpha -= 255 / WREG(6); - R_PAUSE_CURSOR_LEFT_X -= WREG(25) / WREG(6); - R_PAUSE_CURSOR_RIGHT_X -= WREG(26) / WREG(6); - XREG(5) -= 150 / WREG(6); - pauseCtx->alpha -= (u16)(255 / WREG(6)); + pauseCtx->rollRotPageQuest += 160.0f / R_PAUSE_UI_ANIMS_DURATION; + pauseCtx->infoPanelOffsetY -= 40 / R_PAUSE_UI_ANIMS_DURATION; + interfaceCtx->startAlpha -= 255 / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_LEFT_X -= R_PAUSE_CURSOR_LEFT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + R_PAUSE_CURSOR_RIGHT_X -= R_PAUSE_CURSOR_RIGHT_MOVE_OFFSET_X / R_PAUSE_UI_ANIMS_DURATION; + XREG(5) -= 150 / R_PAUSE_UI_ANIMS_DURATION; + pauseCtx->alpha -= (u16)(255 / R_PAUSE_UI_ANIMS_DURATION); if (pauseCtx->rollRotPageItem == 160.0f) { pauseCtx->alpha = 0; } } else { pauseCtx->debugState = 0; - pauseCtx->state = PAUSE_STATE_19_UNPAUSE; + pauseCtx->state = PAUSE_STATE_UNPAUSE; pauseCtx->rollRotPageItem = pauseCtx->rollRotPageEquip = pauseCtx->rollRotPageMap = pauseCtx->rollRotPageQuest = 160.0f; pauseCtx->namedItem = PAUSE_ITEM_NONE; @@ -3626,10 +3650,11 @@ void KaleidoScope_Update(PlayState* play) { } break; - case PAUSE_STATE_19_UNPAUSE: - pauseCtx->state = PAUSE_STATE_0; + case PAUSE_STATE_UNPAUSE: + pauseCtx->state = PAUSE_STATE_OFF; R_UPDATE_RATE = 3; R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF; + func_800981B8(&play->objectCtx); func_800418D0(&play->colCtx, play); @@ -3656,18 +3681,23 @@ void KaleidoScope_Update(PlayState* play) { break; } - gSaveContext.buttonStatus[0] = D_808321A8[0]; - gSaveContext.buttonStatus[1] = D_808321A8[1]; - gSaveContext.buttonStatus[2] = D_808321A8[2]; - gSaveContext.buttonStatus[3] = D_808321A8[3]; - gSaveContext.buttonStatus[4] = D_808321A8[4]; + gSaveContext.buttonStatus[0] = D_808321A8_savedButtonStatus[0]; + gSaveContext.buttonStatus[1] = D_808321A8_savedButtonStatus[1]; + gSaveContext.buttonStatus[2] = D_808321A8_savedButtonStatus[2]; + gSaveContext.buttonStatus[3] = D_808321A8_savedButtonStatus[3]; + gSaveContext.buttonStatus[4] = D_808321A8_savedButtonStatus[4]; + interfaceCtx->unk_1FA = interfaceCtx->unk_1FC = 0; + osSyncPrintf(VT_FGCOL(YELLOW)); osSyncPrintf("i=%d LAST_TIME_TYPE=%d\n", i, gSaveContext.unk_13EE); + gSaveContext.unk_13EA = 0; Interface_ChangeAlpha(gSaveContext.unk_13EE); + player->targetActor = NULL; Player_SetEquipmentData(play, player); + osSyncPrintf(VT_RST); break; } diff --git a/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c b/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c index 31f5881696..01d6b3737f 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c @@ -80,8 +80,8 @@ void PauseMapMark_DrawForDungeon(PlayState* play) { Matrix_Push(); - if ((play->pauseCtx.state == PAUSE_STATE_4) || (play->pauseCtx.state >= PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE) - /* PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE, PAUSE_STATE_19_UNPAUSE */ + if ((play->pauseCtx.state == PAUSE_STATE_OPENING_1) || (play->pauseCtx.state >= PAUSE_STATE_CLOSING) + /* PAUSE_STATE_CLOSING, PAUSE_STATE_UNPAUSE */ ) { Matrix_Translate(-36.0f, 101.0f, 0.0f, MTXMODE_APPLY); } else {