summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorDragorn421 <Dragorn421@users.noreply.github.com>2023-08-13 16:35:38 +0200
committerGitHub <noreply@github.com>2023-08-13 10:35:38 -0400
commitb8c1440d1eb641aca4cf286e7982dbc2305e82b5 (patch)
treeabc22679e1c3f7b5c1c2525d3fd467732c064232 /src/code
parent63606af10dd7fe04e06bbb093d31a97626401028 (diff)
Cleanup?: Use gotos in z_play for large else blocks (#1486)
* remove else when using `goto Play_Draw_DrawOverlayElements` * Add `goto Play_Draw_skip`, use on prerender save * format
Diffstat (limited to 'src/code')
-rw-r--r--src/code/z_play.c268
1 files changed, 135 insertions, 133 deletions
diff --git a/src/code/z_play.c b/src/code/z_play.c
index a33394f11..d3b09e94c 100644
--- a/src/code/z_play.c
+++ b/src/code/z_play.c
@@ -332,7 +332,7 @@ void Play_Init(GameState* thisx) {
gSaveContext.sceneLayer == 6) {
osSyncPrintf("エンディングはじまるよー\n"); // "The ending starts"
((void (*)(void))0x81000000)();
- osSyncPrintf("出戻り?\n"); // "Return?"
+ osSyncPrintf("出戻り?\n"); // "Return?"
}
Cutscene_HandleEntranceTriggers(this);
@@ -1118,169 +1118,171 @@ void Play_Draw(PlayState* this) {
TransitionTile_Draw(&sTransitionTile, &sp88);
POLY_OPA_DISP = sp88;
goto Play_Draw_DrawOverlayElements;
- } else {
- PreRender_SetValues(&this->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, gfxCtx->curFrameBuffer, gZBuffer);
+ }
- 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_SetValues(&this->pauseBgPreRender, SCREEN_WIDTH, SCREEN_HEIGHT, gfxCtx->curFrameBuffer, gZBuffer);
- PreRender_ApplyFilters(&this->pauseBgPreRender);
+ 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();
- R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_READY;
- } else if (R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_MAX) {
- R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF;
- }
+ PreRender_ApplyFilters(&this->pauseBgPreRender);
- if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_READY) {
- Gfx* gfxP = POLY_OPA_DISP;
+ R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_READY;
+ } else if (R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_MAX) {
+ R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF;
+ }
- PreRender_RestoreFramebuffer(&this->pauseBgPreRender, &gfxP);
- POLY_OPA_DISP = gfxP;
+ if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_READY) {
+ Gfx* gfxP = POLY_OPA_DISP;
- goto Play_Draw_DrawOverlayElements;
- } else {
- s32 roomDrawFlags;
+ PreRender_RestoreFramebuffer(&this->pauseBgPreRender, &gfxP);
+ POLY_OPA_DISP = gfxP;
- if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_SKYBOX) {
- if (this->skyboxId && (this->skyboxId != SKYBOX_UNSET_1D) && !this->envCtx.skyboxDisabled) {
- if ((this->skyboxId == SKYBOX_NORMAL_SKY) || (this->skyboxId == SKYBOX_CUTSCENE_MAP)) {
- Environment_UpdateSkybox(this->skyboxId, &this->envCtx, &this->skyboxCtx);
- Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, this->envCtx.skyboxBlend,
- this->view.eye.x, this->view.eye.y, this->view.eye.z);
- } else if (this->skyboxCtx.drawType == SKYBOX_DRAW_128) {
- Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x, this->view.eye.y,
- this->view.eye.z);
- }
- }
- }
+ goto Play_Draw_DrawOverlayElements;
+ }
- if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ENV_FLAGS & PLAY_ENV_DRAW_SUN_AND_MOON)) {
- if (!this->envCtx.sunMoonDisabled) {
- Environment_DrawSunAndMoon(this);
- }
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_SKYBOX) {
+ if (this->skyboxId && (this->skyboxId != SKYBOX_UNSET_1D) && !this->envCtx.skyboxDisabled) {
+ if ((this->skyboxId == SKYBOX_NORMAL_SKY) || (this->skyboxId == SKYBOX_CUTSCENE_MAP)) {
+ Environment_UpdateSkybox(this->skyboxId, &this->envCtx, &this->skyboxCtx);
+ Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, this->envCtx.skyboxBlend, this->view.eye.x,
+ this->view.eye.y, this->view.eye.z);
+ } else if (this->skyboxCtx.drawType == SKYBOX_DRAW_128) {
+ Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x, this->view.eye.y,
+ this->view.eye.z);
}
+ }
+ }
- if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ENV_FLAGS & PLAY_ENV_DRAW_SKYBOX_FILTERS)) {
- Environment_DrawSkyboxFilters(this);
- }
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ENV_FLAGS & PLAY_ENV_DRAW_SUN_AND_MOON)) {
+ if (!this->envCtx.sunMoonDisabled) {
+ Environment_DrawSunAndMoon(this);
+ }
+ }
- if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ENV_FLAGS & PLAY_ENV_DRAW_LIGHTNING)) {
- Environment_UpdateLightningStrike(this);
- Environment_DrawLightning(this, 0);
- }
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ENV_FLAGS & PLAY_ENV_DRAW_SKYBOX_FILTERS)) {
+ Environment_DrawSkyboxFilters(this);
+ }
- if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ENV_FLAGS & PLAY_ENV_DRAW_LIGHTS)) {
- sp228 = LightContext_NewLights(&this->lightCtx, gfxCtx);
- Lights_BindAll(sp228, this->lightCtx.listHead, NULL);
- Lights_Draw(sp228, gfxCtx);
- }
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ENV_FLAGS & PLAY_ENV_DRAW_LIGHTNING)) {
+ Environment_UpdateLightningStrike(this);
+ Environment_DrawLightning(this, 0);
+ }
- if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ROOM_FLAGS != 0)) {
- if (VREG(94) == 0) {
- if (R_HREG_MODE != HREG_MODE_PLAY) {
- roomDrawFlags = ROOM_DRAW_OPA | ROOM_DRAW_XLU;
- } else {
- roomDrawFlags = R_PLAY_DRAW_ROOM_FLAGS;
- }
- Scene_Draw(this);
- Room_Draw(this, &this->roomCtx.curRoom, roomDrawFlags & (ROOM_DRAW_OPA | ROOM_DRAW_XLU));
- Room_Draw(this, &this->roomCtx.prevRoom, roomDrawFlags & (ROOM_DRAW_OPA | ROOM_DRAW_XLU));
- }
- }
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ENV_FLAGS & PLAY_ENV_DRAW_LIGHTS)) {
+ sp228 = LightContext_NewLights(&this->lightCtx, gfxCtx);
+ Lights_BindAll(sp228, this->lightCtx.listHead, NULL);
+ Lights_Draw(sp228, gfxCtx);
+ }
- if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_SKYBOX) {
- if ((this->skyboxCtx.drawType != SKYBOX_DRAW_128) &&
- (GET_ACTIVE_CAM(this)->setting != CAM_SET_PREREND_FIXED)) {
- Vec3f quakeOffset;
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ROOM_FLAGS != 0)) {
+ if (VREG(94) == 0) {
+ s32 roomDrawFlags;
- Camera_GetQuakeOffset(&quakeOffset, GET_ACTIVE_CAM(this));
- Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x + quakeOffset.x,
- this->view.eye.y + quakeOffset.y, this->view.eye.z + quakeOffset.z);
- }
+ if (R_HREG_MODE != HREG_MODE_PLAY) {
+ roomDrawFlags = ROOM_DRAW_OPA | ROOM_DRAW_XLU;
+ } else {
+ roomDrawFlags = R_PLAY_DRAW_ROOM_FLAGS;
}
+ Scene_Draw(this);
+ Room_Draw(this, &this->roomCtx.curRoom, roomDrawFlags & (ROOM_DRAW_OPA | ROOM_DRAW_XLU));
+ Room_Draw(this, &this->roomCtx.prevRoom, roomDrawFlags & (ROOM_DRAW_OPA | ROOM_DRAW_XLU));
+ }
+ }
- if (this->envCtx.precipitation[PRECIP_RAIN_CUR] != 0) {
- Environment_DrawRain(this, &this->view, gfxCtx);
- }
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_SKYBOX) {
+ if ((this->skyboxCtx.drawType != SKYBOX_DRAW_128) &&
+ (GET_ACTIVE_CAM(this)->setting != CAM_SET_PREREND_FIXED)) {
+ Vec3f quakeOffset;
- if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ROOM_FLAGS != 0)) {
- Environment_FillScreen(gfxCtx, 0, 0, 0, this->bgCoverAlpha, FILL_SCREEN_OPA);
- }
+ Camera_GetQuakeOffset(&quakeOffset, GET_ACTIVE_CAM(this));
+ Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x + quakeOffset.x,
+ this->view.eye.y + quakeOffset.y, this->view.eye.z + quakeOffset.z);
+ }
+ }
- if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_ACTORS) {
- func_800315AC(this, &this->actorCtx);
- }
+ if (this->envCtx.precipitation[PRECIP_RAIN_CUR] != 0) {
+ Environment_DrawRain(this, &this->view, gfxCtx);
+ }
- if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_LENS_FLARES) {
- if (!this->envCtx.sunMoonDisabled) {
- sp21C.x = this->view.eye.x + this->envCtx.sunPos.x;
- sp21C.y = this->view.eye.y + this->envCtx.sunPos.y;
- sp21C.z = this->view.eye.z + this->envCtx.sunPos.z;
- Environment_DrawSunLensFlare(this, &this->envCtx, &this->view, gfxCtx, sp21C, 0);
- }
- Environment_DrawCustomLensFlare(this);
- }
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || (R_PLAY_DRAW_ROOM_FLAGS != 0)) {
+ Environment_FillScreen(gfxCtx, 0, 0, 0, this->bgCoverAlpha, FILL_SCREEN_OPA);
+ }
- if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_SCREEN_FILLS) {
- if (MREG(64) != 0) {
- Environment_FillScreen(gfxCtx, MREG(65), MREG(66), MREG(67), MREG(68),
- FILL_SCREEN_OPA | FILL_SCREEN_XLU);
- }
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_ACTORS) {
+ func_800315AC(this, &this->actorCtx);
+ }
- switch (this->envCtx.fillScreen) {
- case 1:
- Environment_FillScreen(gfxCtx, this->envCtx.screenFillColor[0],
- this->envCtx.screenFillColor[1], this->envCtx.screenFillColor[2],
- this->envCtx.screenFillColor[3], FILL_SCREEN_OPA | FILL_SCREEN_XLU);
- break;
- default:
- break;
- }
- }
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_LENS_FLARES) {
+ if (!this->envCtx.sunMoonDisabled) {
+ sp21C.x = this->view.eye.x + this->envCtx.sunPos.x;
+ sp21C.y = this->view.eye.y + this->envCtx.sunPos.y;
+ sp21C.z = this->view.eye.z + this->envCtx.sunPos.z;
+ Environment_DrawSunLensFlare(this, &this->envCtx, &this->view, gfxCtx, sp21C, 0);
+ }
+ Environment_DrawCustomLensFlare(this);
+ }
- if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_SANDSTORM) {
- if (this->envCtx.sandstormState != SANDSTORM_OFF) {
- Environment_DrawSandstorm(this, this->envCtx.sandstormState);
- }
- }
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_SCREEN_FILLS) {
+ if (MREG(64) != 0) {
+ Environment_FillScreen(gfxCtx, MREG(65), MREG(66), MREG(67), MREG(68),
+ FILL_SCREEN_OPA | FILL_SCREEN_XLU);
+ }
- if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_DEBUG_OBJECTS) {
- DebugDisplay_DrawObjects(this);
- }
+ switch (this->envCtx.fillScreen) {
+ case 1:
+ Environment_FillScreen(gfxCtx, this->envCtx.screenFillColor[0], this->envCtx.screenFillColor[1],
+ this->envCtx.screenFillColor[2], this->envCtx.screenFillColor[3],
+ FILL_SCREEN_OPA | FILL_SCREEN_XLU);
+ break;
+ default:
+ break;
+ }
+ }
- if ((R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_SETUP) ||
- (gTransitionTileState == TRANS_TILE_SETUP)) {
- Gfx* gfxP = OVERLAY_DISP;
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_SANDSTORM) {
+ if (this->envCtx.sandstormState != SANDSTORM_OFF) {
+ Environment_DrawSandstorm(this, this->envCtx.sandstormState);
+ }
+ }
- // 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, &gfxP);
- if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_SETUP) {
- this->pauseBgPreRender.cvgSave = (u8*)gfxCtx->curFrameBuffer;
- PreRender_DrawCoverage(&this->pauseBgPreRender, &gfxP);
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_DEBUG_OBJECTS) {
+ DebugDisplay_DrawObjects(this);
+ }
- R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_PROCESS;
- } else {
- gTransitionTileState = TRANS_TILE_PROCESS;
- }
- OVERLAY_DISP = gfxP;
- this->unk_121C7 = 2;
- R_GRAPH_TASKSET00_FLAGS |= 1;
- } else {
- Play_Draw_DrawOverlayElements:
- if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_OVERLAY_ELEMENTS) {
- Play_DrawOverlayElements(this);
- }
- }
+ if ((R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_SETUP) || (gTransitionTileState == TRANS_TILE_SETUP)) {
+ 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, &gfxP);
+ if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_SETUP) {
+ this->pauseBgPreRender.cvgSave = (u8*)gfxCtx->curFrameBuffer;
+ PreRender_DrawCoverage(&this->pauseBgPreRender, &gfxP);
+
+ R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_PROCESS;
+ } else {
+ gTransitionTileState = TRANS_TILE_PROCESS;
}
+ OVERLAY_DISP = gfxP;
+ this->unk_121C7 = 2;
+ R_GRAPH_TASKSET00_FLAGS |= 1;
+ goto Play_Draw_skip;
+ }
+
+ Play_Draw_DrawOverlayElements:
+ if ((R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_OVERLAY_ELEMENTS) {
+ Play_DrawOverlayElements(this);
}
}
+Play_Draw_skip:
+
if (this->view.unk_124 != 0) {
Camera_Update(GET_ACTIVE_CAM(this));
View_UpdateViewingMatrix(&this->view);