From fdd8aea28464185f8ad9c209f0d0030724dfca7e Mon Sep 17 00:00:00 2001 From: Sirius902 <3645979-Sirius902@users.noreply.gitlab.com> Date: Sun, 18 Oct 2020 20:21:47 -0700 Subject: [PATCH] EnIk_PostLimbDraw2 --- src/overlays/actors/ovl_En_Ik/z_en_ik.c | 57 ++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/src/overlays/actors/ovl_En_Ik/z_en_ik.c b/src/overlays/actors/ovl_En_Ik/z_en_ik.c index dc0c3572c8..8b114afc84 100644 --- a/src/overlays/actors/ovl_En_Ik/z_en_ik.c +++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.c @@ -1043,7 +1043,9 @@ void func_80A770C0(EnIk* this, GlobalContext* globalCtx, s32 actionIdx) { } } -f32 EnIk_AnimCurrentFrame(EnIk* this) { +f32 EnIk_AnimCurrentFrame(Actor* thisx) { + EnIk* this = THIS; + return this->skelAnime.animCurrentFrame; } @@ -1136,10 +1138,8 @@ void func_80A774F8(EnIk* this, GlobalContext* globalCtx) { } s32 EnIk_OverrideLimbDraw2(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor) { - EnIk* this = (EnIk*)actor; - if ((limbIndex == 0xD) || (limbIndex == 0x1A) || (limbIndex == 0x1B)) { - if (EnIk_AnimCurrentFrame(this) >= 30.0f) { + if (EnIk_AnimCurrentFrame(actor) >= 30.0f) { *dList = NULL; } } @@ -1147,8 +1147,53 @@ s32 EnIk_OverrideLimbDraw2(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, return 0; } -void EnIk_PostLimbDraw2(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/EnIk_PostLimbDraw2.s") +void EnIk_PostLimbDraw2(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor) { + GraphicsContext* gfxCtx = globalCtx->state.gfxCtx; + + OPEN_DISPS(gfxCtx, "../z_en_ik_inAwake.c", 207); + + switch (limbIndex) { + case 0xD: + if (EnIk_AnimCurrentFrame(actor) < 30.0f) { + s32 pad; + + gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(gfxCtx, "../z_en_ik_inAwake.c", 267), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(oGfxCtx->polyXlu.p++, D_06016D88); + } + break; + case 0x16: + gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(gfxCtx, "../z_en_ik_inAwake.c", 274), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(oGfxCtx->polyXlu.p++, D_06016F88); + break; + case 0x18: + gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(gfxCtx, "../z_en_ik_inAwake.c", 280), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(oGfxCtx->polyXlu.p++, D_06016EE8); + break; + case 0x1A: + if (EnIk_AnimCurrentFrame(actor) < 30.0f) { + s32 pad; + + gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(gfxCtx, "../z_en_ik_inAwake.c", 288), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(oGfxCtx->polyXlu.p++, D_06016BE0); + } + break; + case 0x1B: + if (EnIk_AnimCurrentFrame(actor) < 30.0f) { + s32 pad; + + gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(gfxCtx, "../z_en_ik_inAwake.c", 297), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(oGfxCtx->polyXlu.p++, D_06016CD8); + } + break; + } + + CLOSE_DISPS(gfxCtx, "../z_en_ik_inAwake.c", 304); +} void func_80A77844(EnIk* this, GlobalContext* globalCtx) { GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;