From d3cfad624c12d8252d7d664f05c8f5d0e89885ed Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Wed, 1 Nov 2023 18:07:19 -0600 Subject: [PATCH] func_80A78ACC, func_80A787FC, func_80A776E0, [WIP] func_80A776E0 --- src/overlays/actors/ovl_En_Jso2/z_en_jso2.c | 38 +++++++++++++++++++-- src/overlays/actors/ovl_En_Jso2/z_en_jso2.h | 15 ++++++-- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/src/overlays/actors/ovl_En_Jso2/z_en_jso2.c b/src/overlays/actors/ovl_En_Jso2/z_en_jso2.c index 91f36542b..97f8e7266 100644 --- a/src/overlays/actors/ovl_En_Jso2/z_en_jso2.c +++ b/src/overlays/actors/ovl_En_Jso2/z_en_jso2.c @@ -35,6 +35,7 @@ void func_80A79A84(EnJso2* this, PlayState* play); void func_80A79BA0(EnJso2* this, PlayState* play); void func_80A7A124(EnJso2* this, PlayState* play); void func_80A7A2EC(EnJso2* this, PlayState* play); +void func_80A78868(EnJso2* this, PlayState* play); #if 0 // static DamageTable sDamageTable = { @@ -107,12 +108,26 @@ extern ColliderQuadInit D_80A7B634; extern UNK_TYPE D_06002ED8; extern UNK_TYPE D_060081F4; +extern AnimationHeader** D_80A7B684; +extern u8* D_80A7B6DC; #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Jso2/EnJso2_Init.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Jso2/EnJso2_Destroy.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Jso2/func_80A776E0.s") +// #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Jso2/func_80A776E0.s") + +void func_80A776E0(EnJso2* this, s32 frame) { + f32 var_fv0; + + this->unk374 = (f32)Animation_GetLastFrame(D_80A7B684[frame]); + var_fv0 = 1.0f; + this->unk1040 = frame; + if (frame == 8) { + var_fv0 = 2.0f; + } + Animation_Change(&this->skelAnime, D_80A7B684 + frame, var_fv0, 0.0f, this->unk374, (u8)frame, -2.0f); +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Jso2/func_80A77790.s") @@ -130,13 +145,30 @@ void func_80A778D8(EnJso2* this) { #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Jso2/func_80A785E4.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Jso2/func_80A787FC.s") +void func_80A787FC(EnJso2* this, PlayState* play) { + Actor* sp1C; + + sp1C = play->actorCtx.actorLists[2].first; + func_80A776E0(this, 8); + this->unk286 = sp1C->shape.rot.y; + this->unk288 = 0x258; + this->unk284 = 3; + this->unk370 = 0; + this->unkF05 |= 4; + this->actionFunc = func_80A78868; +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Jso2/func_80A78868.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Jso2/func_80A78A70.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Jso2/func_80A78ACC.s") +void func_80A78ACC(EnJso2* this, PlayState* play) { + f32 temp = this->unk15C; + + if (temp >= this->unk374) { + func_80A787FC(this, play); + } +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Jso2/func_80A78B04.s") diff --git a/src/overlays/actors/ovl_En_Jso2/z_en_jso2.h b/src/overlays/actors/ovl_En_Jso2/z_en_jso2.h index a0b2d21c0..9f812e206 100644 --- a/src/overlays/actors/ovl_En_Jso2/z_en_jso2.h +++ b/src/overlays/actors/ovl_En_Jso2/z_en_jso2.h @@ -9,12 +9,23 @@ typedef void (*EnJso2ActionFunc)(struct EnJso2*, PlayState*); typedef struct EnJso2 { /* 0x0000 */ Actor actor; - /* 0x0144 */ char unk_144[0x134]; + /* 0x0144 */ SkelAnime skelAnime; + /* 0x0150 */ char unk_150[0xC]; + /* 0x015C */ f32 unk15C; + /* 0x0160 */ char unk_160[0x118]; /* 0x0278 */ EnJso2ActionFunc actionFunc; /* 0x027C */ char unk_27C[0x8]; /* 0x0284 */ s16 unk284; - /* 0x0286 */ char unk_286[0xE6]; + /* 0x0286 */ s16 unk286; + /* 0x0288 */ s16 unk288; + /* 0x0290 */ char unk_290[0xE2]; /* 0x036C */ s32 unk36C; + /* 0x0370 */ s8 unk370; + /* 0x0374 */ f32 unk374; + /* 0x0378 */ char unk_378[0xB8D]; + /* 0x0F05 */ u8 unkF05; + /* 0x0F09 */ char unk_F09[0x13B]; + /* 0x1040 */ s32 unk1040; } EnJso2; // size = 0x1090 #endif // Z_EN_JSO2_H