mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-04 15:04:31 +00:00
R_PAUSE_MENU_MODE
-> R_PAUSE_BG_PRERENDER_STATE
and document values
This commit is contained in:
parent
236c0603ed
commit
9ebd76d9af
8 changed files with 42 additions and 32 deletions
|
@ -56,7 +56,7 @@
|
||||||
#define R_FB_FILTER_A SREG(84)
|
#define R_FB_FILTER_A SREG(84)
|
||||||
#define R_FB_FILTER_ENV_COLOR(c) SREG(85 + (c))
|
#define R_FB_FILTER_ENV_COLOR(c) SREG(85 + (c))
|
||||||
#define R_ENABLE_FB_FILTER SREG(88)
|
#define R_ENABLE_FB_FILTER SREG(88)
|
||||||
#define R_PAUSE_MENU_MODE SREG(94)
|
#define R_PAUSE_BG_PRERENDER_STATE SREG(94) // `PauseBgPreRenderState`
|
||||||
#define R_CAM_MAX_PHI OREG(5)
|
#define R_CAM_MAX_PHI OREG(5)
|
||||||
#define R_CAM_DEFA_PHI_UPDRATE OREG(7)
|
#define R_CAM_DEFA_PHI_UPDRATE OREG(7)
|
||||||
#define R_DEFA_CAM_ANIM_TIME OREG(23)
|
#define R_DEFA_CAM_ANIM_TIME OREG(23)
|
||||||
|
|
|
@ -783,12 +783,12 @@ typedef enum {
|
||||||
} PauseCtxUnk1EC;
|
} PauseCtxUnk1EC;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
/* 0 */ PAUSE_MENU_REG_MODE_0,
|
/* 0 */ PAUSE_BG_PRERENDER_OFF, // Inactive, do nothing.
|
||||||
/* 1 */ PAUSE_MENU_REG_MODE_1,
|
/* 1 */ PAUSE_BG_PRERENDER_DRAW, // The current frame is only drawn for the purpose of serving as the pause background.
|
||||||
/* 2 */ PAUSE_MENU_REG_MODE_2,
|
/* 2 */ PAUSE_BG_PRERENDER_FILTER, // The previous frame was PAUSE_BG_PRERENDER_DRAW, now apply prerender filters.
|
||||||
/* 3 */ PAUSE_MENU_REG_MODE_3,
|
/* 3 */ PAUSE_BG_PRERENDER_DONE, // The pause background is ready to be used.
|
||||||
/* 4 */ PAUSE_MENU_REG_MODE_MAX
|
/* 4 */ PAUSE_BG_PRERENDER_MAX
|
||||||
} PauseMenuRegMode;
|
} PauseBgPreRenderState;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* 0x0000 */ View view;
|
/* 0x0000 */ View view;
|
||||||
|
|
|
@ -309,7 +309,7 @@ void GameState_Update(GameState* gameState) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (R_PAUSE_MENU_MODE != (u32)PAUSE_MENU_REG_MODE_2) {
|
if (R_PAUSE_BG_PRERENDER_STATE != (u32)PAUSE_BG_PRERENDER_FILTER) {
|
||||||
GameState_Draw(gameState, gfxCtx);
|
GameState_Draw(gameState, gfxCtx);
|
||||||
func_800C49F4(gfxCtx);
|
func_800C49F4(gfxCtx);
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,7 @@ void KaleidoScopeCall_Update(PlayState* play) {
|
||||||
if (Letterbox_GetSize() == 0) {
|
if (Letterbox_GetSize() == 0) {
|
||||||
HREG(80) = 7;
|
HREG(80) = 7;
|
||||||
HREG(82) = 3;
|
HREG(82) = 3;
|
||||||
R_PAUSE_MENU_MODE = PAUSE_MENU_REG_MODE_1;
|
R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_DRAW;
|
||||||
pauseCtx->unk_1E4_ps6_ = PAUSE_S6_0_IDLE_;
|
pauseCtx->unk_1E4_ps6_ = PAUSE_S6_0_IDLE_;
|
||||||
pauseCtx->unk_1EC_ps7_ = PAUSE_S7_0;
|
pauseCtx->unk_1EC_ps7_ = PAUSE_S7_0;
|
||||||
pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1; // PAUSE_STATE_2
|
pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1; // PAUSE_STATE_2
|
||||||
|
@ -69,14 +69,14 @@ void KaleidoScopeCall_Update(PlayState* play) {
|
||||||
} else if (pauseCtx->state == PAUSE_STATE_8) {
|
} else if (pauseCtx->state == PAUSE_STATE_8) {
|
||||||
HREG(80) = 7;
|
HREG(80) = 7;
|
||||||
HREG(82) = 3;
|
HREG(82) = 3;
|
||||||
R_PAUSE_MENU_MODE = PAUSE_MENU_REG_MODE_1;
|
R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_DRAW;
|
||||||
pauseCtx->unk_1E4_ps6_ = PAUSE_S6_0_IDLE_;
|
pauseCtx->unk_1E4_ps6_ = PAUSE_S6_0_IDLE_;
|
||||||
pauseCtx->unk_1EC_ps7_ = PAUSE_S7_0;
|
pauseCtx->unk_1EC_ps7_ = PAUSE_S7_0;
|
||||||
pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1; // PAUSE_STATE_9
|
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_2) || (pauseCtx->state == PAUSE_STATE_9)) {
|
||||||
osSyncPrintf("PR_KAREIDOSCOPE_MODE=%d\n", R_PAUSE_MENU_MODE);
|
osSyncPrintf("PR_KAREIDOSCOPE_MODE=%d\n", R_PAUSE_BG_PRERENDER_STATE);
|
||||||
|
|
||||||
if (R_PAUSE_MENU_MODE >= PAUSE_MENU_REG_MODE_3) {
|
if (R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_DONE) {
|
||||||
pauseCtx->state++; // PAUSE_STATE_3 or PAUSE_STATE_10
|
pauseCtx->state++; // PAUSE_STATE_3 or PAUSE_STATE_10
|
||||||
}
|
}
|
||||||
} else if (pauseCtx->state != PAUSE_STATE_0) {
|
} else if (pauseCtx->state != PAUSE_STATE_0) {
|
||||||
|
@ -118,7 +118,7 @@ void KaleidoScopeCall_Update(PlayState* play) {
|
||||||
void KaleidoScopeCall_Draw(PlayState* play) {
|
void KaleidoScopeCall_Draw(PlayState* play) {
|
||||||
KaleidoMgrOverlay* kaleidoScopeOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_KALEIDO_SCOPE];
|
KaleidoMgrOverlay* kaleidoScopeOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_KALEIDO_SCOPE];
|
||||||
|
|
||||||
if (R_PAUSE_MENU_MODE >= PAUSE_MENU_REG_MODE_3) {
|
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_)
|
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_ */) ||
|
/* 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)
|
((play->pauseCtx.state >= PAUSE_STATE_11) && (play->pauseCtx.state <= PAUSE_STATE_18_FLIP_PAGES_AND_UNPAUSE)
|
||||||
|
|
|
@ -3208,7 +3208,8 @@ void Interface_Draw(PlayState* play) {
|
||||||
Magic_DrawMeter(play);
|
Magic_DrawMeter(play);
|
||||||
Minimap_Draw(play);
|
Minimap_Draw(play);
|
||||||
|
|
||||||
if ((R_PAUSE_MENU_MODE != PAUSE_MENU_REG_MODE_2) && (R_PAUSE_MENU_MODE != PAUSE_MENU_REG_MODE_3)) {
|
if ((R_PAUSE_BG_PRERENDER_STATE != PAUSE_BG_PRERENDER_FILTER) &&
|
||||||
|
(R_PAUSE_BG_PRERENDER_STATE != PAUSE_BG_PRERENDER_DONE)) {
|
||||||
func_8002C124(&play->actorCtx.targetCtx, play); // Draw Z-Target
|
func_8002C124(&play->actorCtx.targetCtx, play); // Draw Z-Target
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -178,7 +178,7 @@ void Play_Destroy(GameState* thisx) {
|
||||||
this->state.gfxCtx->callbackParam = 0;
|
this->state.gfxCtx->callbackParam = 0;
|
||||||
|
|
||||||
SREG(91) = 0;
|
SREG(91) = 0;
|
||||||
R_PAUSE_MENU_MODE = PAUSE_MENU_REG_MODE_0;
|
R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF;
|
||||||
|
|
||||||
PreRender_Destroy(&this->pauseBgPreRender);
|
PreRender_Destroy(&this->pauseBgPreRender);
|
||||||
Effect_DeleteAll(this);
|
Effect_DeleteAll(this);
|
||||||
|
@ -355,7 +355,7 @@ void Play_Init(GameState* thisx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SREG(91) = -1;
|
SREG(91) = -1;
|
||||||
R_PAUSE_MENU_MODE = PAUSE_MENU_REG_MODE_0;
|
R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF;
|
||||||
PreRender_Init(&this->pauseBgPreRender);
|
PreRender_Init(&this->pauseBgPreRender);
|
||||||
PreRender_SetValuesSave(&this->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, NULL, NULL, NULL);
|
PreRender_SetValuesSave(&this->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, NULL, NULL, NULL);
|
||||||
PreRender_SetValues(&this->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, NULL, NULL);
|
PreRender_SetValues(&this->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, NULL, NULL);
|
||||||
|
@ -1110,19 +1110,25 @@ void Play_Draw(PlayState* this) {
|
||||||
} else {
|
} else {
|
||||||
PreRender_SetValues(&this->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, gfxCtx->curFrameBuffer, gZBuffer);
|
PreRender_SetValues(&this->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, gfxCtx->curFrameBuffer, gZBuffer);
|
||||||
|
|
||||||
if (R_PAUSE_MENU_MODE == PAUSE_MENU_REG_MODE_2) {
|
if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_FILTER) {
|
||||||
|
// Wait for the previous frame's DList to be processed,
|
||||||
|
// so that `pauseBgPreRender.fbufSave` and `pauseBgPreRender.cvgSave` are filled with the appropriate
|
||||||
|
// content and can be used by `PreRender_ApplyFilters` below.
|
||||||
Sched_FlushTaskQueue();
|
Sched_FlushTaskQueue();
|
||||||
|
|
||||||
PreRender_ApplyFilters(&this->pauseBgPreRender);
|
PreRender_ApplyFilters(&this->pauseBgPreRender);
|
||||||
R_PAUSE_MENU_MODE = PAUSE_MENU_REG_MODE_3;
|
|
||||||
} else if (R_PAUSE_MENU_MODE >= PAUSE_MENU_REG_MODE_MAX) {
|
R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_DONE;
|
||||||
R_PAUSE_MENU_MODE = PAUSE_MENU_REG_MODE_0;
|
} else if (R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_MAX) {
|
||||||
|
R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (R_PAUSE_MENU_MODE == PAUSE_MENU_REG_MODE_3) {
|
if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DONE) {
|
||||||
Gfx* sp84 = POLY_OPA_DISP;
|
Gfx* gfxP = POLY_OPA_DISP;
|
||||||
|
|
||||||
|
PreRender_RestoreFramebuffer(&this->pauseBgPreRender, &gfxP);
|
||||||
|
POLY_OPA_DISP = gfxP;
|
||||||
|
|
||||||
PreRender_RestoreFramebuffer(&this->pauseBgPreRender, &sp84);
|
|
||||||
POLY_OPA_DISP = sp84;
|
|
||||||
goto Play_Draw_DrawOverlayElements;
|
goto Play_Draw_DrawOverlayElements;
|
||||||
} else {
|
} else {
|
||||||
s32 roomDrawFlags;
|
s32 roomDrawFlags;
|
||||||
|
@ -1233,17 +1239,19 @@ void Play_Draw(PlayState* this) {
|
||||||
DebugDisplay_DrawObjects(this);
|
DebugDisplay_DrawObjects(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((R_PAUSE_MENU_MODE == PAUSE_MENU_REG_MODE_1) || (gTrnsnUnkState == 1)) {
|
if ((R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DRAW) || (gTrnsnUnkState == 1)) {
|
||||||
Gfx* gfxP = OVERLAY_DISP;
|
Gfx* gfxP = OVERLAY_DISP;
|
||||||
|
|
||||||
|
// Copy the frame buffer contents at this point in the DList to the zbuffer
|
||||||
|
// The zbuffer must then stay untouched until unpausing
|
||||||
this->pauseBgPreRender.fbuf = gfxCtx->curFrameBuffer;
|
this->pauseBgPreRender.fbuf = gfxCtx->curFrameBuffer;
|
||||||
this->pauseBgPreRender.fbufSave = (u16*)gZBuffer;
|
this->pauseBgPreRender.fbufSave = (u16*)gZBuffer;
|
||||||
PreRender_SaveFramebuffer(&this->pauseBgPreRender, &gfxP);
|
PreRender_SaveFramebuffer(&this->pauseBgPreRender, &gfxP);
|
||||||
if (R_PAUSE_MENU_MODE == PAUSE_MENU_REG_MODE_1) {
|
if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DRAW) {
|
||||||
this->pauseBgPreRender.cvgSave = (u8*)gfxCtx->curFrameBuffer;
|
this->pauseBgPreRender.cvgSave = (u8*)gfxCtx->curFrameBuffer;
|
||||||
PreRender_DrawCoverage(&this->pauseBgPreRender, &gfxP);
|
PreRender_DrawCoverage(&this->pauseBgPreRender, &gfxP);
|
||||||
|
|
||||||
R_PAUSE_MENU_MODE = PAUSE_MENU_REG_MODE_2;
|
R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_FILTER;
|
||||||
} else {
|
} else {
|
||||||
gTrnsnUnkState = 2;
|
gTrnsnUnkState = 2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1469,8 +1469,9 @@ void Gfx_SetupFrame(GraphicsContext* gfxCtx, u8 r, u8 g, u8 b) {
|
||||||
gDPSetDepthImage(POLY_XLU_DISP++, gZBuffer);
|
gDPSetDepthImage(POLY_XLU_DISP++, gZBuffer);
|
||||||
gDPSetDepthImage(OVERLAY_DISP++, gZBuffer);
|
gDPSetDepthImage(OVERLAY_DISP++, gZBuffer);
|
||||||
|
|
||||||
if ((R_PAUSE_MENU_MODE < PAUSE_MENU_REG_MODE_2) /* PAUSE_MENU_REG_MODE_0, PAUSE_MENU_REG_MODE_1 */ &&
|
if ((R_PAUSE_BG_PRERENDER_STATE <= PAUSE_BG_PRERENDER_DRAW)
|
||||||
(gTrnsnUnkState < 2)) {
|
/* PAUSE_BG_PRERENDER_OFF, PAUSE_BG_PRERENDER_DRAW */
|
||||||
|
&& (gTrnsnUnkState < 2)) {
|
||||||
s32 letterboxSize = Letterbox_GetSize();
|
s32 letterboxSize = Letterbox_GetSize();
|
||||||
|
|
||||||
if (HREG(80) == 16) {
|
if (HREG(80) == 16) {
|
||||||
|
|
|
@ -2640,7 +2640,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
s16 stepA;
|
s16 stepA;
|
||||||
s32 pad;
|
s32 pad;
|
||||||
|
|
||||||
if ((R_PAUSE_MENU_MODE >= PAUSE_MENU_REG_MODE_3) &&
|
if ((R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_DONE) &&
|
||||||
(((pauseCtx->state >= PAUSE_STATE_4) && (pauseCtx->state <= PAUSE_STATE_7_SAVE_PROMPT_)
|
(((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_ */
|
/* PAUSE_STATE_4, PAUSE_STATE_5, PAUSE_STATE_6, PAUSE_STATE_7_SAVE_PROMPT_ */
|
||||||
) ||
|
) ||
|
||||||
|
@ -3571,7 +3571,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
interfaceCtx->unk_244 = 255;
|
interfaceCtx->unk_244 = 255;
|
||||||
pauseCtx->state = PAUSE_STATE_0;
|
pauseCtx->state = PAUSE_STATE_0;
|
||||||
R_UPDATE_RATE = 3;
|
R_UPDATE_RATE = 3;
|
||||||
R_PAUSE_MENU_MODE = PAUSE_MENU_REG_MODE_0;
|
R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF;
|
||||||
func_800981B8(&play->objectCtx);
|
func_800981B8(&play->objectCtx);
|
||||||
func_800418D0(&play->colCtx, play);
|
func_800418D0(&play->colCtx, play);
|
||||||
if (pauseCtx->promptChoice == 0) {
|
if (pauseCtx->promptChoice == 0) {
|
||||||
|
@ -3629,7 +3629,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||||
case PAUSE_STATE_19_UNPAUSE:
|
case PAUSE_STATE_19_UNPAUSE:
|
||||||
pauseCtx->state = PAUSE_STATE_0;
|
pauseCtx->state = PAUSE_STATE_0;
|
||||||
R_UPDATE_RATE = 3;
|
R_UPDATE_RATE = 3;
|
||||||
R_PAUSE_MENU_MODE = PAUSE_MENU_REG_MODE_0;
|
R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF;
|
||||||
func_800981B8(&play->objectCtx);
|
func_800981B8(&play->objectCtx);
|
||||||
func_800418D0(&play->colCtx, play);
|
func_800418D0(&play->colCtx, play);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue