diff options
| author | Synray <31429825+Synray@users.noreply.github.com> | 2021-02-15 09:29:06 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-15 18:29:06 +0100 |
| commit | 79c8accfaba2b7ca0bd0acdd8aa65d3805cb2ed8 (patch) | |
| tree | fc75b049344a069669a9335ee8d1bc139a23afcf /src | |
| parent | 5bc23f58f80cdce021008ec798c6ac3e5f4a6bf0 (diff) | |
z_play.c OK (#701)
* z_play.c OK
* Change ~0x13 -> -20
* Back to hex
Diffstat (limited to 'src')
| -rw-r--r-- | src/code/z_camera.c | 17 | ||||
| -rw-r--r-- | src/code/z_play.c | 88 |
2 files changed, 44 insertions, 61 deletions
diff --git a/src/code/z_camera.c b/src/code/z_camera.c index cfd5152b5..4bd292f2e 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -7302,7 +7302,7 @@ void func_80058E8C(Camera* camera) { } } -Vec3s* Camera_Update(Vec3s* outVec, Camera* camera) { +Vec3s Camera_Update(Camera* camera) { static s32 sOOBTimer = 0; Vec3f viewAt; Vec3f viewEye; @@ -7328,8 +7328,7 @@ Vec3s* Camera_Update(Vec3s* outVec, Camera* camera) { if (R_DBG_CAM_UPDATE) { osSyncPrintf("camera: cut out %x\n", camera); } - *outVec = camera->inputDir; - return outVec; + return camera->inputDir; } sUpdateCameraDirection = false; @@ -7402,8 +7401,7 @@ Vec3s* Camera_Update(Vec3s* outVec, Camera* camera) { if (R_DBG_CAM_UPDATE) { osSyncPrintf("camera: wait out %x\n", camera); } - *outVec = camera->inputDir; - return outVec; + return camera->inputDir; } camera->unk_14A = 0; @@ -7470,15 +7468,13 @@ Vec3s* Camera_Update(Vec3s* outVec, Camera* camera) { if (R_DBG_CAM_UPDATE) { osSyncPrintf("camera: debug out\n"); } - *outVec = D_8015BD80.unk_10C6; - return outVec; + return D_8015BD80.unk_10C6; } OREG(0) &= ~8; if (camera->status == 3) { - *outVec = camera->inputDir; - return outVec; + return camera->inputDir; } // setting bgCheckId to the ret of Quake_Calc, and checking that @@ -7551,8 +7547,7 @@ Vec3s* Camera_Update(Vec3s* outVec, Camera* camera) { } } - *outVec = camera->inputDir; - return outVec; + return camera->inputDir; } /** diff --git a/src/code/z_play.c b/src/code/z_play.c index 5d8cc785b..79526d77e 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -138,8 +138,8 @@ void func_800BC88C(GlobalContext* globalCtx) { } Gfx* func_800BC8A0(GlobalContext* globalCtx, Gfx* gfx) { - Gfx_SetFog2(gfx, globalCtx->lightCtx.unk_07, globalCtx->lightCtx.unk_08, globalCtx->lightCtx.unk_09, 0, - globalCtx->lightCtx.unk_0A, 1000); + return Gfx_SetFog2(gfx, globalCtx->lightCtx.unk_07, globalCtx->lightCtx.unk_08, globalCtx->lightCtx.unk_09, 0, + globalCtx->lightCtx.unk_0A, 1000); } void Gameplay_Destroy(GameState* thisx) { @@ -407,14 +407,12 @@ void Gameplay_Init(GameState* thisx) { } } -#ifdef NON_MATCHING -// regalloc and stack usage differences -// also missing an extra move instruction void Gameplay_Update(GlobalContext* globalCtx) { + s32 pad1; s32 sp80; Input* input; - u32 i; // 0x78 - s32 temp; + u32 i; + s32 pad2; input = globalCtx->state.input; @@ -452,7 +450,7 @@ void Gameplay_Update(GlobalContext* globalCtx) { if (gTrnsnUnkState != 0) { switch (gTrnsnUnkState) { case 2: - if (TransitionUnk_Init(&sTrnsnUnk, 10, 7) == 0) { + if (TransitionUnk_Init(&sTrnsnUnk, 10, 7) == NULL) { osSyncPrintf("fbdemo_init呼出し失敗!\n"); // "fbdemo_init call failed!" gTrnsnUnkState = 0; } else { @@ -467,7 +465,7 @@ void Gameplay_Update(GlobalContext* globalCtx) { } } - if (globalCtx->transitionMode != 0) { + if (globalCtx->transitionMode) { switch (globalCtx->transitionMode) { case 1: if (globalCtx->sceneLoadFlag != -0x14) { @@ -662,7 +660,6 @@ void Gameplay_Update(GlobalContext* globalCtx) { break; case 10: - if (0) {} // Improves codegen if (globalCtx->sceneLoadFlag != -0x14) { globalCtx->state.running = 0; SET_NEXT_GAMESTATE(&globalCtx->state, Gameplay_Init, GlobalContext); @@ -707,7 +704,6 @@ void Gameplay_Update(GlobalContext* globalCtx) { } } else { if (globalCtx->envCtx.unk_E8 == 0xFF) { - if (0) {} // Improves codegen globalCtx->state.running = 0; SET_NEXT_GAMESTATE(&globalCtx->state, Gameplay_Init, GlobalContext); gSaveContext.entranceIndex = globalCtx->nextEntranceIndex; @@ -770,9 +766,8 @@ void Gameplay_Update(GlobalContext* globalCtx) { LOG_NUM("1", 1, "../z_play.c", 3533); } - temp = HREG(63); if (1 && (gTrnsnUnkState != 3)) { - if (1 && temp) { + if (1 && HREG(63)) { LOG_NUM("1", 1, "../z_play.c", 3542); } @@ -811,7 +806,7 @@ void Gameplay_Update(GlobalContext* globalCtx) { func_800AA178(1); - if ((globalCtx->actorCtx.unk_00 != 0) && (globalCtx->actorCtx.unk_00-- < 5)) { + if (globalCtx->actorCtx.unk_00 && (globalCtx->actorCtx.unk_00-- < 5)) { osSyncPrintf("FINISH=%d\n", globalCtx->actorCtx.unk_00); if ((globalCtx->actorCtx.unk_00 > 0) && ((globalCtx->actorCtx.unk_00 % 2) != 0)) { globalCtx->envCtx.unk_E1 = 1; @@ -987,6 +982,8 @@ void Gameplay_Update(GlobalContext* globalCtx) { } TransitionFade_Update(&globalCtx->transitionFade, R_UPDATE_RATE); + } else { + goto skip; } } @@ -994,14 +991,14 @@ void Gameplay_Update(GlobalContext* globalCtx) { LOG_NUM("1", 1, "../z_play.c", 3799); } +skip: if (1 && HREG(63)) { LOG_NUM("1", 1, "../z_play.c", 3801); } if ((sp80 == 0) || (gDbgCamEnabled != 0)) { - s32 i; // 0x54 - s32 camIdx; - Vec3s sp48; + s32 pad3[5]; + s32 i; globalCtx->nextCamera = globalCtx->activeCamera; @@ -1009,18 +1006,17 @@ void Gameplay_Update(GlobalContext* globalCtx) { LOG_NUM("1", 1, "../z_play.c", 3806); } - for (i = 0, camIdx = globalCtx->nextCamera; i < 4; i++) { - if ((i != camIdx) && (globalCtx->cameraPtrs[i] != NULL)) { + for (i = 0; i < 4; i++) { + if ((i != globalCtx->nextCamera) && (globalCtx->cameraPtrs[i] != NULL)) { if (1 && HREG(63)) { LOG_NUM("1", 1, "../z_play.c", 3809); } - Camera_Update(&sp48, globalCtx->cameraPtrs[i]); - camIdx = globalCtx->nextCamera; + Camera_Update(globalCtx->cameraPtrs[i]); } } - Camera_Update(&sp48, globalCtx->cameraPtrs[camIdx]); + Camera_Update(globalCtx->cameraPtrs[globalCtx->nextCamera]); if (1 && HREG(63)) { LOG_NUM("1", 1, "../z_play.c", 3814); @@ -1034,9 +1030,6 @@ void Gameplay_Update(GlobalContext* globalCtx) { func_80070C24(globalCtx, &globalCtx->envCtx, &globalCtx->lightCtx, &globalCtx->pauseCtx, &globalCtx->msgCtx, &globalCtx->unk_10A20, globalCtx->state.gfxCtx); } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Gameplay_Update.s") -#endif void Gameplay_DrawOverlayElements(GlobalContext* globalCtx) { if ((globalCtx->pauseCtx.state != 0) || (globalCtx->pauseCtx.flag != 0)) { @@ -1054,8 +1047,6 @@ void Gameplay_DrawOverlayElements(GlobalContext* globalCtx) { } } -#ifdef NON_MATCHING -// regalloc, stack usage and minor ordering differences void Gameplay_Draw(GlobalContext* globalCtx) { GraphicsContext* gfxCtx = globalCtx->state.gfxCtx; Lights* sp228; @@ -1110,13 +1101,14 @@ void Gameplay_Draw(GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x01, globalCtx->unk_11DE0); if ((HREG(80) != 10) || (HREG(92) != 0)) { + Gfx* gfxP; Gfx* sp1CC = POLY_OPA_DISP; - Gfx* gfxP = Graph_GfxPlusOne(POLY_OPA_DISP); + gfxP = Graph_GfxPlusOne(sp1CC); gSPDisplayList(OVERLAY_DISP++, gfxP); if ((globalCtx->transitionMode == 3) || (globalCtx->transitionMode == 11) || (globalCtx->transitionCtx.transitionType >= 56)) { - View view; // 0xA0 + View view; View_Init(&view, gfxCtx); view.flags = 2 | 8; @@ -1164,17 +1156,16 @@ void Gameplay_Draw(GlobalContext* globalCtx) { } else { s32 sp80; if ((HREG(80) != 10) || (HREG(83) != 0)) { - if (globalCtx->skyboxId != 0) { - s32 skyboxId = globalCtx->skyboxId; + if (globalCtx->skyboxId) { if ((globalCtx->skyboxId != 0x1D) && !globalCtx->envCtx.skyDisabled) { - if ((globalCtx->skyboxId == 1) || (skyboxId == 5)) { + if ((globalCtx->skyboxId == 1) || (globalCtx->skyboxId == 5)) { func_8006FC88(globalCtx->skyboxId, &globalCtx->envCtx, &globalCtx->skyboxCtx); SkyboxDraw_Draw(&globalCtx->skyboxCtx, gfxCtx, globalCtx->skyboxId, globalCtx->envCtx.unk_13, globalCtx->view.eye.x, globalCtx->view.eye.y, globalCtx->view.eye.z); } else if (globalCtx->skyboxCtx.unk_140 == 0) { - SkyboxDraw_Draw(&globalCtx->skyboxCtx, gfxCtx, skyboxId, 0, globalCtx->view.eye.x, - globalCtx->view.eye.y, globalCtx->view.eye.z); + SkyboxDraw_Draw(&globalCtx->skyboxCtx, gfxCtx, globalCtx->skyboxId, 0, + globalCtx->view.eye.x, globalCtx->view.eye.y, globalCtx->view.eye.z); } } } @@ -1253,19 +1244,19 @@ void Gameplay_Draw(GlobalContext* globalCtx) { func_8007672C(gfxCtx, MREG(65), MREG(66), MREG(67), MREG(68), 3); } - if (globalCtx->envCtx.unk_E1) {} // Necessary to match - - if (globalCtx->envCtx.unk_E1 == 1) { - func_8007672C(gfxCtx, globalCtx->envCtx.unk_E2[0], globalCtx->envCtx.unk_E2[1], - globalCtx->envCtx.unk_E2[2], globalCtx->envCtx.unk_E2[3], 3); - } else { - // Also necessary to match + switch (globalCtx->envCtx.unk_E1) { + case 1: + func_8007672C(gfxCtx, globalCtx->envCtx.unk_E2[0], globalCtx->envCtx.unk_E2[1], + globalCtx->envCtx.unk_E2[2], globalCtx->envCtx.unk_E2[3], 3); + break; + default: + break; } } if ((HREG(80) != 10) || (HREG(88) != 0)) { if (globalCtx->envCtx.unk_E6 != 0) { - func_80076934(globalCtx); + func_80076934(globalCtx, globalCtx->envCtx.unk_E6); } } @@ -1274,7 +1265,8 @@ void Gameplay_Draw(GlobalContext* globalCtx) { } if ((R_PAUSE_MENU_MODE == 1) || (gTrnsnUnkState == 1)) { - Gfx* sp70 = gfxCtx->overlay.p; + Gfx* sp70 = OVERLAY_DISP; + s32 pad[4]; globalCtx->preRenderCtx.fbuf = gfxCtx->curFrameBuffer; globalCtx->preRenderCtx.fbufSave = (u16*)gZBuffer; func_800C1F20(&globalCtx->preRenderCtx, &sp70); @@ -1285,7 +1277,7 @@ void Gameplay_Draw(GlobalContext* globalCtx) { } else { gTrnsnUnkState = 2; } - gfxCtx->overlay.p = sp70; + OVERLAY_DISP = sp70; globalCtx->unk_121C7 = 2; SREG(33) |= 1; } else { @@ -1299,11 +1291,10 @@ void Gameplay_Draw(GlobalContext* globalCtx) { } if (globalCtx->view.unk_124 != 0) { - Vec3s sp50; - Camera_Update(&sp50, ACTIVE_CAM); + Camera_Update(ACTIVE_CAM); func_800AB944(&globalCtx->view); globalCtx->view.unk_124 = 0; - if ((globalCtx->skyboxId != 0) && (globalCtx->skyboxId != 0x1D) && !globalCtx->envCtx.skyDisabled) { + if (globalCtx->skyboxId && (globalCtx->skyboxId != 0x1D) && !globalCtx->envCtx.skyDisabled) { SkyboxDraw_UpdateMatrix(&globalCtx->skyboxCtx, globalCtx->view.eye.x, globalCtx->view.eye.y, globalCtx->view.eye.z); } @@ -1313,9 +1304,6 @@ void Gameplay_Draw(GlobalContext* globalCtx) { CLOSE_DISPS(gfxCtx, "../z_play.c", 4508); } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Gameplay_Draw.s") -#endif void Gameplay_Main(GameState* thisx) { GlobalContext* globalCtx = (GlobalContext*)thisx; |
