From 97d75c381143cf896c2c627afa1f2c36da9074e6 Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Wed, 17 Aug 2022 20:31:40 -0700 Subject: [PATCH 1/9] Some small cleanup --- src/code/z_scene_table.c | 4 ++-- src/overlays/gamestates/ovl_select/z_select.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/code/z_scene_table.c b/src/code/z_scene_table.c index 108689978a..ea822a2c7b 100644 --- a/src/code/z_scene_table.c +++ b/src/code/z_scene_table.c @@ -1,10 +1,10 @@ #include "global.h" #define SCENE_ENTRY(name, textId, config) \ - { { SEGMENT_ROM_START(name), SEGMENT_ROM_END(name) }, textId, 0, config, 0 } + { { SEGMENT_ROM_START(name), SEGMENT_ROM_END(name) }, textId, 0, config, 0, 0 } #define SCENE_ENTRY_NONE() \ - { { 0, 0 }, 0, 0, 0, 0 } + { { 0, 0 }, 0, 0, 0, 0, 0 } SceneTableEntry gSceneTable[] = { /* 0x00 */ SCENE_ENTRY(Z2_20SICHITAI2, 0x0116, SCENE_DRAW_CFG_MAT_ANIM), diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 0147cca641..1860dc5056 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -37,7 +37,7 @@ void MapSelect_LoadGame(MapSelectState* this, u32 entrance, s32 spawn) { if (spawn != 0) { gSaveContext.save.entrance = - Entrance_Create((s32)gSaveContext.save.entrance >> 9, spawn, gSaveContext.save.entrance & 0xF); + Entrance_Create(gSaveContext.save.entrance >> 9, spawn, gSaveContext.save.entrance & 0xF); } if (gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_INTERIOR, 0)) { gSaveContext.save.day = 0; From 74cb1aa6e00d29ee711ab7b54d07e34f4f856d37 Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Wed, 17 Aug 2022 21:03:49 -0700 Subject: [PATCH 2/9] Match func_80165460 (from debug) --- src/code/z_play.c | 54 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/src/code/z_play.c b/src/code/z_play.c index 401d32b6db..ad9071d00a 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -17,9 +17,59 @@ extern Struct_80140E80 D_801F6D38; extern Struct_80140E80* D_801F6D4C; extern HiresoStruct D_801F6D50; extern u8 D_801F6DFC; -extern s8 D_801F6DFD; +extern u8 D_801F6DFD; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165460.s") +void func_80165460(PlayState* this) { + GraphicsContext* gfxCtx = this->state.gfxCtx; + s32 alpha; + Gfx* gfx; + Gfx* dlistHead; + + if (SREG(93) != 0) { + alpha = SREG(92); + + if (D_801F6DFD == 0) { + D_801F6DFD = 1; + } + } else if (SREG(91) != 0) { + alpha = SREG(90); + + if (D_801F6DFD == 0) { + D_801F6DFD = 1; + } + } else { + alpha = 0; + D_801F6DFD = 0; + } + + if (D_801F6DFD != 0) { + OPEN_DISPS(gfxCtx); + + dlistHead = POLY_OPA_DISP; + gfx = Graph_GfxPlusOne(dlistHead); + + gSPDisplayList(OVERLAY_DISP++, gfx); + + this->pauseBgPreRender.fbuf = gfxCtx->curFrameBuffer; + this->pauseBgPreRender.fbufSave = this->unk_18E64; + + if (D_801F6DFD == 2) { + func_80170AE0(&this->pauseBgPreRender, &gfx, alpha); + } else { + D_801F6DFD = 2; + } + + func_801705B4(&this->pauseBgPreRender, &gfx); + + gSPEndDisplayList(gfx++); + + Graph_BranchDlist(dlistHead, gfx); + + POLY_OPA_DISP = gfx; + + CLOSE_DISPS(gfxCtx); + } +} void func_80165608(void) { SREG(91) = 0; From b01fac18b3917dc201a4454667af14c5829687a0 Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Wed, 17 Aug 2022 21:06:07 -0700 Subject: [PATCH 3/9] Match func_80165658 --- src/code/z_play.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/code/z_play.c b/src/code/z_play.c index ad9071d00a..b8699a272c 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -83,7 +83,9 @@ void func_80165630(void) { D_801F6DFD = 0; } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165658.s") +void func_80165658(u32 arg0) { + SREG(90) = arg0; +} void func_8016566C(u32 arg0) { SREG(90) = arg0; From 628d39ea03c5c8e4cb27db44c0315f786c25896b Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Wed, 17 Aug 2022 21:08:27 -0700 Subject: [PATCH 4/9] Match func_80165DB8, func_80165DCC, func_80165DF0, func_80165E04 --- src/code/z_play.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/code/z_play.c b/src/code/z_play.c index b8699a272c..9129eaa279 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -99,13 +99,23 @@ void func_80165690(void) { void func_801656A4(u8* arg0, u16* arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7); #pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801656A4.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165DB8.s") +void func_80165DB8(s32 arg0) { + SREG(92) = arg0; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165DCC.s") +void func_80165DCC(s32 arg0) { + SREG(92) = arg0; + SREG(93) = 1; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165DF0.s") +void func_80165DF0(void) { + SREG(93) = 0; +} + +void func_80165E04(void) { + SREG(89) = 1; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165E04.s") void func_80165E1C(PreRender* prerender) { PreRender_ApplyFilters(prerender); From f5e71876ef6d43bd688bf72c17135fac7195d9ad Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Wed, 17 Aug 2022 21:19:40 -0700 Subject: [PATCH 5/9] Match func_80167DE4 (from debug) --- include/functions.h | 2 +- src/code/z_play.c | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/include/functions.h b/include/functions.h index e11a962633..f079c50fce 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2603,7 +2603,7 @@ void Play_Init(GameState* gameState); // void func_8016EA90(void); // void func_8016F1A8(void); // void func_8016F4EC(void); -void func_8016F5A8(PlayState* play, s8* pcParm2, Input* iParm3); +void func_8016F5A8(PlayState* play, HiresoStruct* arg1, Input* input); void func_8016FC78(HiresoStruct* this); void func_8016FC98(HiresoStruct* this); void PreRender_SetValuesSave(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf, void* cvg); diff --git a/src/code/z_play.c b/src/code/z_play.c index 9129eaa279..aafca8e58b 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -372,7 +372,34 @@ Input* D_801D0D60 = NULL; #pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Update.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80167DE4.s") +void func_80167DE4(PlayState* play) { + if (D_801F6DFC == 0) { + if (play->pauseCtx.unk_1F0 != 0) { + D_801F6DFC = 1; + D_801F6D50.unk_00 = 0; + } + } else { + if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_L) || + CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_B) || + CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_START) || + (gIrqMgrResetStatus != 0)) { + D_801F6DFC = 0; + play->pauseCtx.unk_1F0 = 0; + D_801F6D50.unk_00 = 0; + play->msgCtx.msgLength = 0; + play->msgCtx.msgMode = 0; + play->msgCtx.currentTextId = 0; + play->msgCtx.stateTimer = 0; + play_sound(NA_SE_SY_CANCEL); + } + } + if (D_801F6DFC != 0) { + func_8016F5A8(play, &D_801F6D50, play->state.input); + func_8015680C(play); + } else { + Play_Update(play); + } +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80167F0C.s") From afffe3976303881a8e1060b9591a05b270672845 Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Wed, 17 Aug 2022 21:44:34 -0700 Subject: [PATCH 6/9] Match func_80167F0C --- include/functions.h | 6 +++--- include/z64.h | 2 +- src/code/z_play.c | 49 +++++++++++++++++++++++++++++++++++++++------ 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/include/functions.h b/include/functions.h index f079c50fce..4a03b89a70 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1882,7 +1882,7 @@ void func_8011C808(PlayState* play); // void func_8011CA64(void); // void func_8011E3B4(void); // void func_8011E730(void); -// void func_8011F0E0(UNK_TYPE4 ctxt); +void func_8011F0E0(PlayState* play); // void func_80120F90(void); // void func_80121000(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE1 param_8, UNK_TYPE1 param_9, UNK_TYPE1 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14); // void func_80121064(void); @@ -2361,7 +2361,7 @@ void func_80140EA0(Struct_80140E80* arg0); // void func_80141200(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // void func_8014151C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // void func_80141678(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); -// void func_80141778(void); +void func_80141778(Struct_80140E80* arg0, Gfx** gfxp, void* unk_18E60, GraphicsContext* gfxCtx); void VisMono_Init(VisMono* this); void VisMono_Destroy(VisMono* this); // void VisMono_DesaturateTLUT(u16* tlut); @@ -2431,7 +2431,7 @@ u8 Message_GetState(MessageContext* msgCtx); // void func_80153E7C(void); // void func_80153EF0(void); void func_801541D4(PlayState* play, Gfx** gfxp); -// void func_80156758(void); +void func_80156758(PlayState* play); void func_8015680C(PlayState* play); void func_801586A4(PlayState* play); void Message_Init(PlayState* play); diff --git a/include/z64.h b/include/z64.h index 1eafccde0e..bdb994280a 100644 --- a/include/z64.h +++ b/include/z64.h @@ -1193,7 +1193,7 @@ struct PlayState { /* 0x18E54 */ SceneTableEntry* loadedScene; /* 0x18E58 */ UNK_PTR unk_18E58; /* 0x18E5C */ UNK_PTR unk_18E5C; - /* 0x18E60 */ UNK_PTR unk_18E60; + /* 0x18E60 */ void* unk_18E60; /* 0x18E64 */ void* unk_18E64; /* 0x18E68 */ void* unk_18E68; /* 0x18E6C */ char unk_18E6C[0x3EC]; diff --git a/src/code/z_play.c b/src/code/z_play.c index aafca8e58b..3b2297678d 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -116,7 +116,6 @@ void func_80165E04(void) { SREG(89) = 1; } - void func_80165E1C(PreRender* prerender) { PreRender_ApplyFilters(prerender); func_801656A4(D_80780000, prerender->fbufSave, 0x140, 0x50, 0x40, 0xEF, 0xAF, 8); @@ -379,10 +378,9 @@ void func_80167DE4(PlayState* play) { D_801F6D50.unk_00 = 0; } } else { - if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_L) || - CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_B) || - CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_START) || - (gIrqMgrResetStatus != 0)) { + if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_L) || + CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_B) || + CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_START) || (gIrqMgrResetStatus != 0)) { D_801F6DFC = 0; play->pauseCtx.unk_1F0 = 0; D_801F6D50.unk_00 = 0; @@ -401,7 +399,46 @@ void func_80167DE4(PlayState* play) { } } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80167F0C.s") +void func_80167F0C(PlayState* this) { + Gfx* sp34; + Gfx* sp30; + GraphicsContext* gfxCtx; + + if ((this->pauseCtx.state != 0) || (this->pauseCtx.debugEditor != 0)) { + KaleidoScopeCall_Draw(this); + } + + if (gSaveContext.gameMode == 0) { + func_8011F0E0(this); + } + + if (((this->pauseCtx.state == 0) && (this->pauseCtx.debugEditor == 0)) || (this->msgCtx.currentTextId != 0xFF)) { + func_80156758(this); + } + + if (this->gameOverCtx.state != 0) { + GameOver_FadeLights(this); + } + + if (gSaveContext.screenScaleFlag != 0) { + gfxCtx = this->state.gfxCtx; + D_801F6D4C->scale = gSaveContext.screenScale / 1000.0f; + + OPEN_DISPS(gfxCtx); + + sp30 = POLY_OPA_DISP; + sp34 = Graph_GfxPlusOne(sp30); + gSPDisplayList(OVERLAY_DISP++, sp34); + + func_80141778(D_801F6D4C, &sp34, this->unk_18E60, gfxCtx); + + gSPEndDisplayList(sp34++); + Graph_BranchDlist(sp30, sp34); + POLY_OPA_DISP = sp34; + + CLOSE_DISPS(gfxCtx); + } +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Draw.s") From e1c17c5da38fcdd99b6a19c9375563ceda267259 Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Fri, 19 Aug 2022 00:01:29 -0700 Subject: [PATCH 7/9] Match func_80168DAC --- include/functions.h | 8 ++++---- include/variables.h | 2 +- src/code/graph.c | 2 +- src/code/z_play.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 48 insertions(+), 9 deletions(-) diff --git a/include/functions.h b/include/functions.h index 4a03b89a70..9b189d4ce4 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2601,7 +2601,7 @@ void Play_Init(GameState* gameState); // void func_8016CD4C(void); // void func_8016E40C(void); // void func_8016EA90(void); -// void func_8016F1A8(void); +void func_8016F1A8(HiresoStruct* arg0, GraphicsContext* gfxCtx); // void func_8016F4EC(void); void func_8016F5A8(PlayState* play, HiresoStruct* arg1, Input* input); void func_8016FC78(HiresoStruct* this); @@ -2778,11 +2778,11 @@ void func_801780F0(Mtx* param_1, f32 param_2, f32 param_3, f32 param_4, f32 para // void func_801781EC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); void func_8017842C(MtxF* arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, f32 arg9, f32 arg10); void func_80178750(void); -// void func_80178818(void); +void func_80178818(void); void func_80178978(void); // void func_801789D4(void); -u32 SysCfb_GetFbPtr(s32 index); -u32 SysCfb_GetZBuffer(void); +void* SysCfb_GetFbPtr(s32 index); +void* SysCfb_GetZBuffer(void); // UNK_TYPE4 func_80178A24(void); // void func_80178A34(void); s32 func_80178A94(s32 param_1, s32 param_2); diff --git a/include/variables.h b/include/variables.h index 56111f6f29..a5dbdbb528 100644 --- a/include/variables.h +++ b/include/variables.h @@ -3275,7 +3275,7 @@ extern UNK_TYPE2 D_801FBBCC; extern UNK_TYPE2 D_801FBBCE; // extern UNK_TYPE1 D_801FBBD0; // extern UNK_TYPE1 D_801FBBD2; -// extern UNK_TYPE1 D_801FBBD4; +extern u8 D_801FBBD4; // extern UNK_TYPE1 D_801FBBE0; extern Vec3f D_801FBBF0; extern LineSegment Math3D_ColSphereTri_line; diff --git a/src/code/graph.c b/src/code/graph.c index 481aa1da0e..bfce5ab0fa 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -49,7 +49,7 @@ void Graph_SetNextGfxPool(GraphicsContext* gfxCtx) { gfxCtx->workBuffer = pool->workBuffer; gfxCtx->debugBuffer = pool->debugBuffer; - gfxCtx->curFrameBuffer = (u16*)SysCfb_GetFbPtr(gfxCtx->framebufferIdx % 2); + gfxCtx->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx->framebufferIdx % 2); gSegments[0x0F] = gfxCtx->curFrameBuffer; gfxCtx->zbuffer = SysCfb_GetZBuffer(); diff --git a/src/code/z_play.c b/src/code/z_play.c index 3b2297678d..b181b85c24 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -233,13 +233,13 @@ void Play_Destroy(GameState* thisx) { if (D_801F6DFC != 0) { MsgEvent_SendNullTask(); func_80178750(); - gfxCtx->curFrameBuffer = (u16*)SysCfb_GetFbPtr(gfxCtx->framebufferIdx % 2); + gfxCtx->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx->framebufferIdx % 2); gfxCtx->zbuffer = SysCfb_GetZBuffer(); gfxCtx->viMode = D_801FBB88; gfxCtx->viConfigFeatures = gViConfigFeatures; gfxCtx->xScale = gViConfigXScale; gfxCtx->yScale = gViConfigYScale; - gfxCtx->updateViMode = 1; + gfxCtx->updateViMode = true; D_801F6DFC = 0; } @@ -442,7 +442,46 @@ void func_80167F0C(PlayState* this) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Draw.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80168DAC.s") +void func_80168DAC(PlayState* this) { + GraphicsContext* gfxCtx = this->state.gfxCtx; + + { + GraphicsContext* gfxCtx2 = this->state.gfxCtx; + + if (D_801F6DFC != 0) { + if (D_801FBBD4 != 1) { + MsgEvent_SendNullTask(); + func_80178818(); + gfxCtx2->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx2->framebufferIdx % 2); + gfxCtx2->zbuffer = SysCfb_GetZBuffer(); + gfxCtx2->viMode = D_801FBB88; + gfxCtx2->viConfigFeatures = gViConfigFeatures; + gfxCtx2->xScale = gViConfigXScale; + gfxCtx2->yScale = gViConfigYScale; + gfxCtx2->updateViMode = true; + } + } else { + if (D_801FBBD4 != 0) { + MsgEvent_SendNullTask(); + func_80178750(); + gfxCtx2->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx2->framebufferIdx % 2); + gfxCtx2->zbuffer = SysCfb_GetZBuffer(); + gfxCtx2->viMode = D_801FBB88; + gfxCtx2->viConfigFeatures = gViConfigFeatures; + gfxCtx2->xScale = gViConfigXScale; + gfxCtx2->yScale = gViConfigYScale; + gfxCtx2->updateViMode = true; + } + } + } + + if ((D_801F6DFC != 0) && ((SREG(2) != 2) || (gZBufferPtr == NULL))) { + func_8016F1A8(&D_801F6D50, gfxCtx); + func_80156758(this); + } else { + Play_Draw(this); + } +} void Play_Main(GameState* thisx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Main.s") From a59568834621c913e8799b1d5bf3aefd39ff6d4d Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Fri, 19 Aug 2022 00:09:31 -0700 Subject: [PATCH 8/9] Matched func_80169100 --- src/code/z_play.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/code/z_play.c b/src/code/z_play.c index b181b85c24..d4d64ee6b9 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -490,7 +490,31 @@ s32 Play_InCsMode(PlayState* this) { return (this->csCtx.state != 0) || Player_InCsMode(this); } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80169100.s") +f32 func_80169100(PlayState* play, MtxF* mtx, CollisionPoly** poly, s32* bgId, Vec3f* feetPosPtr) { + f32 floorHeight = BgCheck_EntityRaycastFloor3(&play->colCtx, poly, bgId, feetPosPtr); + + if (floorHeight > BGCHECK_Y_MIN) { + func_800C0094(*poly, feetPosPtr->x, floorHeight, feetPosPtr->z, mtx); + } else { + mtx->xy = 0.0f; + mtx->zx = 0.0f; + mtx->yx = 0.0f; + mtx->xx = 0.0f; + mtx->wz = 0.0f; + mtx->xz = 0.0f; + mtx->wy = 0.0f; + mtx->wx = 0.0f; + mtx->zz = 0.0f; + mtx->yz = 0.0f; + mtx->zy = 0.0f; + mtx->yy = 1.0f; + mtx->xw = feetPosPtr->x; + mtx->yw = feetPosPtr->y; + mtx->zw = feetPosPtr->z; + mtx->ww = 1.0f; + } + return floorHeight; +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801691F0.s") From dd363101b7b1a4bd26a2f78856e75cfb8bcee9a1 Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Fri, 19 Aug 2022 00:12:00 -0700 Subject: [PATCH 9/9] Matched func_801691F0 --- include/functions.h | 4 ++-- src/code/z_play.c | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/include/functions.h b/include/functions.h index 9b189d4ce4..1c356bdb80 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2556,8 +2556,8 @@ void Play_Draw(PlayState* play); void func_80168DAC(PlayState* play); void Play_Main(GameState* thisx); s32 Play_InCsMode(PlayState* play); -f32 func_80169100(PlayState* play, MtxF* mtx, CollisionPoly** arg2, s32* arg3, Vec3f* feetPosPtr); -// void func_801691F0(void); +f32 func_80169100(PlayState* play, MtxF* mtx, CollisionPoly** poly, s32* bgId, Vec3f* feetPos); +void func_801691F0(PlayState* this, MtxF* mtx, Vec3f* feetPos); void* Play_LoadScene(PlayState* play, RomFile* entry); void func_8016927C(PlayState* play, s16 sParm2); // void func_801692C4(PlayState* play, UNK_TYPE1 uParm2); diff --git a/src/code/z_play.c b/src/code/z_play.c index d4d64ee6b9..0084c918df 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -490,11 +490,11 @@ s32 Play_InCsMode(PlayState* this) { return (this->csCtx.state != 0) || Player_InCsMode(this); } -f32 func_80169100(PlayState* play, MtxF* mtx, CollisionPoly** poly, s32* bgId, Vec3f* feetPosPtr) { - f32 floorHeight = BgCheck_EntityRaycastFloor3(&play->colCtx, poly, bgId, feetPosPtr); +f32 func_80169100(PlayState* play, MtxF* mtx, CollisionPoly** poly, s32* bgId, Vec3f* feetPos) { + f32 floorHeight = BgCheck_EntityRaycastFloor3(&play->colCtx, poly, bgId, feetPos); if (floorHeight > BGCHECK_Y_MIN) { - func_800C0094(*poly, feetPosPtr->x, floorHeight, feetPosPtr->z, mtx); + func_800C0094(*poly, feetPos->x, floorHeight, feetPos->z, mtx); } else { mtx->xy = 0.0f; mtx->zx = 0.0f; @@ -508,15 +508,20 @@ f32 func_80169100(PlayState* play, MtxF* mtx, CollisionPoly** poly, s32* bgId, V mtx->yz = 0.0f; mtx->zy = 0.0f; mtx->yy = 1.0f; - mtx->xw = feetPosPtr->x; - mtx->yw = feetPosPtr->y; - mtx->zw = feetPosPtr->z; + mtx->xw = feetPos->x; + mtx->yw = feetPos->y; + mtx->zw = feetPos->z; mtx->ww = 1.0f; } return floorHeight; } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801691F0.s") +void func_801691F0(PlayState* this, MtxF* mtx, Vec3f* feetPos) { + CollisionPoly* poly; + s32 bgId; + + func_80169100(this, mtx, &poly, &bgId, feetPos); +} void* Play_LoadScene(PlayState* this, RomFile* entry) { size_t size = entry->vromEnd - entry->vromStart;