diff options
| author | Dragorn421 <Dragorn421@users.noreply.github.com> | 2022-12-20 01:19:57 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-19 19:19:57 -0500 |
| commit | 738268a79a0e7c5438d33abd6aa211c4c6473168 (patch) | |
| tree | d47097782f4f236a0ff983ad4f43628f7f1982cd /src/code | |
| parent | 75eb3c5c81bb713a846107eb8dbf968c54b4eede (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.c | 2 | ||||
| -rw-r--r-- | src/code/graph.c | 4 | ||||
| -rw-r--r-- | src/code/z_kaleido_scope_call.c | 10 | ||||
| -rw-r--r-- | src/code/z_parameter.c | 3 | ||||
| -rw-r--r-- | src/code/z_play.c | 45 | ||||
| -rw-r--r-- | src/code/z_rcp.c | 2 |
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) { |
