From a5fa523b1272693c74cb3ed9824bdbf6904ba356 Mon Sep 17 00:00:00 2001 From: inspectredc Date: Thu, 2 Nov 2023 00:44:38 +0000 Subject: [PATCH] func_8086F8FC --- src/overlays/actors/ovl_En_Okuta/z_en_okuta.c | 48 ++++++++++++++++++- src/overlays/actors/ovl_En_Okuta/z_en_okuta.h | 4 +- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c b/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c index 2ff6005ae..d8996de7c 100644 --- a/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c +++ b/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c @@ -508,7 +508,7 @@ void func_8086F2FC(EnOkuta* this, PlayState* play) { this->unk18E = 0xA; Actor_SetColorFilter(&this->actor, 0x8000, 0x80FF, 0, 0xA); - this->actor.child = Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, 0x143, this->actor.world.pos.x, this->actor.world.pos.y + (this->skelAnime.jointTable->y * this->actor.scale.y) + (25.0f * this->unk268), this->actor.world.pos.z, 0, this->actor.home.rot.y, 0, 3); + this->actor.child = Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, 0x143, this->actor.world.pos.x, this->actor.world.pos.y + (this->skelAnime.jointTable->y * this->actor.scale.y) + (25.0f * this->headScale.y), this->actor.world.pos.z, 0, this->actor.home.rot.y, 0, 3); if (this->actor.child != NULL) { this->actor.flags &= ~1; @@ -613,7 +613,51 @@ void func_8086F694(EnOkuta* this, PlayState* play) { } } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Okuta/func_8086F8FC.s") +void func_8086F8FC(EnOkuta* this) { + f32 curFrame; + + curFrame = this->skelAnime.curFrame; + if (this->actionFunc == func_8086E658) { + if (curFrame < 8.0f) { + this->headScale.x = this->headScale.y = this->headScale.z = 1.0f; + } else if (curFrame < 10.0f) { + this->headScale.x = this->headScale.z = 1.0f; + this->headScale.y = (((curFrame - 7.0f) * 0.4f) + 1.0f); + } else if (curFrame < 14.0f) { + this->headScale.x = this->headScale.z = ((curFrame - 9.0f) * 0.075f) + 1.0f; + this->headScale.y = 1.8f - ((curFrame - 9.0f) * 0.25f); + } else { + this->headScale.x = this->headScale.z = 1.3f - ((curFrame - 13.0f) * 0.05f); + this->headScale.y = ((curFrame - 13.0f) * 0.0333f) + 0.8f; + } + } else if (this->actionFunc == func_8086E7E8) { + if (curFrame < 3.0f) { + this->headScale.y = 1.0f; + } else if (curFrame < 4.0f) { + this->headScale.y = (curFrame - 2.0f) + 1.0f; + } else { + this->headScale.y = 2.0f - ((curFrame - 3.0f) * 0.333f); + } + this->headScale.x = this->headScale.z = 1.0f; + } else if (this->actionFunc == func_8086EC00) { + if (curFrame < 5.0f) { + this->headScale.x = this->headScale.y = this->headScale.z = (curFrame * 0.125f) + 1.0f; + } else if (curFrame < 7.0f) { + this->headScale.x = this->headScale.y = this->headScale.z = 1.5f - ((curFrame - 4.0f) * 0.35f); + } else if (curFrame < 17.0f) { + this->headScale.x = this->headScale.z = ((curFrame - 6.0f) * 0.05f) + 0.8f; + this->headScale.y = 0.8f; + } else { + this->headScale.x = this->headScale.z = 1.3f - ((curFrame - 16.0f) * 0.1f); + this->headScale.y = ((curFrame - 16.0f) * 0.0666f) + 0.8f; + } + } else if (this->actionFunc == func_8086E948) { + this->headScale.x = this->headScale.z = 1.0f; + this->headScale.y = (Math_SinF(0.19634955f * curFrame) * 0.2f) + 1.0f; + } else { + this->headScale.x = this->headScale.y = this->headScale.z = 1.0f; + } +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Okuta/func_8086FCA4.s") diff --git a/src/overlays/actors/ovl_En_Okuta/z_en_okuta.h b/src/overlays/actors/ovl_En_Okuta/z_en_okuta.h index c073b65bf..f0a18e31e 100644 --- a/src/overlays/actors/ovl_En_Okuta/z_en_okuta.h +++ b/src/overlays/actors/ovl_En_Okuta/z_en_okuta.h @@ -22,9 +22,7 @@ typedef struct EnOkuta { /* 0x258 */ f32 unk258; /* 0x25C */ f32 unk25C; /* 0x260 */ f32 unk260; - /* 0x264 */ char pad264[0x4]; - /* 0x268 */ f32 unk268; - /* 0x26C */ char pad26C[0x4]; + /* 0x264 */ Vec3f headScale; /* 0x270 */ Vec3f bodyPartsPos[0xA]; /* 0x2E8 */ ColliderCylinder collider; } EnOkuta;