summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSynray <31429825+Synray@users.noreply.github.com>2021-02-15 09:29:06 -0800
committerGitHub <noreply@github.com>2021-02-15 18:29:06 +0100
commit79c8accfaba2b7ca0bd0acdd8aa65d3805cb2ed8 (patch)
treefc75b049344a069669a9335ee8d1bc139a23afcf /src
parent5bc23f58f80cdce021008ec798c6ac3e5f4a6bf0 (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.c17
-rw-r--r--src/code/z_play.c88
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;