summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorDragorn421 <Dragorn421@users.noreply.github.com>2022-12-20 01:19:57 +0100
committerGitHub <noreply@github.com>2022-12-19 19:19:57 -0500
commit738268a79a0e7c5438d33abd6aa211c4c6473168 (patch)
treed47097782f4f236a0ff983ad4f43628f7f1982cd /src/code
parent75eb3c5c81bb713a846107eb8dbf968c54b4eede (diff)
`R_PAUSE_MENU_MODE` -> `R_PAUSE_BG_PRERENDER_STATE` and docs (#1368)
* `R_PAUSE_MENU_MODE` -> `R_PAUSE_BG_PRERENDER_STATE` and document values and usage * `SREG(33)` -> `R_GRAPH_TASKSET00_FLAGS` * format * `PAUSE_BG_PRERENDER_DRAW` -> `PAUSE_BG_PRERENDER_SETUP` * `PAUSE_BG_PRERENDER_FILTER` -> `PAUSE_BG_PRERENDER_PROCESS` * DList -> display list
Diffstat (limited to 'src/code')
-rw-r--r--src/code/game.c2
-rw-r--r--src/code/graph.c4
-rw-r--r--src/code/z_kaleido_scope_call.c10
-rw-r--r--src/code/z_parameter.c3
-rw-r--r--src/code/z_play.c45
-rw-r--r--src/code/z_rcp.c2
6 files changed, 38 insertions, 28 deletions
diff --git a/src/code/game.c b/src/code/game.c
index ae22e6ab3..9f3bc91bc 100644
--- a/src/code/game.c
+++ b/src/code/game.c
@@ -319,7 +319,7 @@ void GameState_Update(GameState* gameState) {
}
}
- if (R_PAUSE_MENU_MODE != 2u) {
+ if (R_PAUSE_BG_PRERENDER_STATE != (u32)PAUSE_BG_PRERENDER_PROCESS) {
GameState_Draw(gameState, gfxCtx);
func_800C49F4(gfxCtx);
}
diff --git a/src/code/graph.c b/src/code/graph.c
index 1c9093dc9..e5309966c 100644
--- a/src/code/graph.c
+++ b/src/code/graph.c
@@ -242,8 +242,8 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx) {
scTask->next = NULL;
scTask->flags = OS_SC_NEEDS_RSP | OS_SC_NEEDS_RDP | OS_SC_SWAPBUFFER | OS_SC_LAST_TASK;
- if (SREG(33) & 1) {
- SREG(33) &= ~1;
+ if (R_GRAPH_TASKSET00_FLAGS & 1) {
+ R_GRAPH_TASKSET00_FLAGS &= ~1;
scTask->flags &= ~OS_SC_SWAPBUFFER;
gfxCtx->fbIdx--;
}
diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c
index b9c116ff1..ced5b5203 100644
--- a/src/code/z_kaleido_scope_call.c
+++ b/src/code/z_kaleido_scope_call.c
@@ -61,7 +61,7 @@ void KaleidoScopeCall_Update(PlayState* play) {
if (Letterbox_GetSize() == 0) {
R_HREG_MODE = HREG_MODE_UCODE_DISAS;
R_UCODE_DISAS_LOG_MODE = 3;
- R_PAUSE_MENU_MODE = 1;
+ R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_SETUP;
pauseCtx->unk_1E4 = 0;
pauseCtx->unk_1EC = 0;
pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1;
@@ -69,14 +69,14 @@ void KaleidoScopeCall_Update(PlayState* play) {
} else if (pauseCtx->state == 8) {
R_HREG_MODE = HREG_MODE_UCODE_DISAS;
R_UCODE_DISAS_LOG_MODE = 3;
- R_PAUSE_MENU_MODE = 1;
+ R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_SETUP;
pauseCtx->unk_1E4 = 0;
pauseCtx->unk_1EC = 0;
pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1;
} else if ((pauseCtx->state == 2) || (pauseCtx->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 >= 3) {
+ if (R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_DONE) {
pauseCtx->state++;
}
} else if (pauseCtx->state != 0) {
@@ -118,7 +118,7 @@ void KaleidoScopeCall_Update(PlayState* play) {
void KaleidoScopeCall_Draw(PlayState* play) {
KaleidoMgrOverlay* kaleidoScopeOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_KALEIDO_SCOPE];
- if (R_PAUSE_MENU_MODE >= 3) {
+ if (R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_DONE) {
if (((play->pauseCtx.state >= 4) && (play->pauseCtx.state <= 7)) ||
((play->pauseCtx.state >= 11) && (play->pauseCtx.state <= 18))) {
if (gKaleidoMgrCurOvl == kaleidoScopeOvl) {
diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c
index b63702ec3..b8e7a0a8d 100644
--- a/src/code/z_parameter.c
+++ b/src/code/z_parameter.c
@@ -3238,7 +3238,8 @@ void Interface_Draw(PlayState* play) {
Magic_DrawMeter(play);
Minimap_Draw(play);
- if ((R_PAUSE_MENU_MODE != 2) && (R_PAUSE_MENU_MODE != 3)) {
+ if ((R_PAUSE_BG_PRERENDER_STATE != PAUSE_BG_PRERENDER_PROCESS) &&
+ (R_PAUSE_BG_PRERENDER_STATE != PAUSE_BG_PRERENDER_DONE)) {
func_8002C124(&play->actorCtx.targetCtx, play); // Draw Z-Target
}
diff --git a/src/code/z_play.c b/src/code/z_play.c
index 4f8284cfd..9a3fb3204 100644
--- a/src/code/z_play.c
+++ b/src/code/z_play.c
@@ -179,7 +179,7 @@ void Play_Destroy(GameState* thisx) {
this->state.gfxCtx->callbackParam = NULL;
SREG(91) = 0;
- R_PAUSE_MENU_MODE = 0;
+ R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF;
PreRender_Destroy(&this->pauseBgPreRender);
Effect_DeleteAll(this);
@@ -357,7 +357,7 @@ void Play_Init(GameState* thisx) {
}
SREG(91) = -1;
- R_PAUSE_MENU_MODE = 0;
+ R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF;
PreRender_Init(&this->pauseBgPreRender);
PreRender_SetValuesSave(&this->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, NULL, NULL, NULL);
PreRender_SetValues(&this->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, NULL, NULL);
@@ -1115,19 +1115,25 @@ void Play_Draw(PlayState* this) {
} else {
PreRender_SetValues(&this->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, gfxCtx->curFrameBuffer, gZBuffer);
- if (R_PAUSE_MENU_MODE == 2) {
+ if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_PROCESS) {
+ // Wait for the previous frame's display list 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();
+
PreRender_ApplyFilters(&this->pauseBgPreRender);
- R_PAUSE_MENU_MODE = 3;
- } else if (R_PAUSE_MENU_MODE >= 4) {
- R_PAUSE_MENU_MODE = 0;
+
+ R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_DONE;
+ } 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 == 3) {
- Gfx* sp84 = POLY_OPA_DISP;
+ if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DONE) {
+ 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;
} else {
s32 roomDrawFlags;
@@ -1238,22 +1244,25 @@ void Play_Draw(PlayState* this) {
DebugDisplay_DrawObjects(this);
}
- if ((R_PAUSE_MENU_MODE == 1) || (gTrnsnUnkState == 1)) {
- Gfx* sp70 = OVERLAY_DISP;
+ if ((R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_SETUP) || (gTrnsnUnkState == 1)) {
+ Gfx* gfxP = OVERLAY_DISP;
+ // Copy the frame buffer contents at this point in the display list to the zbuffer
+ // The zbuffer must then stay untouched until unpausing
this->pauseBgPreRender.fbuf = gfxCtx->curFrameBuffer;
this->pauseBgPreRender.fbufSave = (u16*)gZBuffer;
- PreRender_SaveFramebuffer(&this->pauseBgPreRender, &sp70);
- if (R_PAUSE_MENU_MODE == 1) {
+ PreRender_SaveFramebuffer(&this->pauseBgPreRender, &gfxP);
+ if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_SETUP) {
this->pauseBgPreRender.cvgSave = (u8*)gfxCtx->curFrameBuffer;
- PreRender_DrawCoverage(&this->pauseBgPreRender, &sp70);
- R_PAUSE_MENU_MODE = 2;
+ PreRender_DrawCoverage(&this->pauseBgPreRender, &gfxP);
+
+ R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_PROCESS;
} else {
gTrnsnUnkState = 2;
}
- OVERLAY_DISP = sp70;
+ OVERLAY_DISP = gfxP;
this->unk_121C7 = 2;
- SREG(33) |= 1;
+ R_GRAPH_TASKSET00_FLAGS |= 1;
} else {
Play_Draw_DrawOverlayElements:
if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_OVERLAY_ELEMENTS) {
diff --git a/src/code/z_rcp.c b/src/code/z_rcp.c
index 8b8c6d9be..7b9328459 100644
--- a/src/code/z_rcp.c
+++ b/src/code/z_rcp.c
@@ -1469,7 +1469,7 @@ void Gfx_SetupFrame(GraphicsContext* gfxCtx, u8 r, u8 g, u8 b) {
gDPSetDepthImage(POLY_XLU_DISP++, gZBuffer);
gDPSetDepthImage(OVERLAY_DISP++, gZBuffer);
- if ((R_PAUSE_MENU_MODE < 2) && (gTrnsnUnkState < 2)) {
+ if ((R_PAUSE_BG_PRERENDER_STATE <= PAUSE_BG_PRERENDER_SETUP) && (gTrnsnUnkState < 2)) {
s32 letterboxSize = Letterbox_GetSize();
if (R_HREG_MODE == HREG_MODE_SETUP_FRAME) {