diff --git a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c index 191074b8e..419fb9c60 100644 --- a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c +++ b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c @@ -720,7 +720,7 @@ void func_80C0CDE4(EnBsb* this, PlayState* play) { this->unk_0F34.base.atFlags & AT_BOUNCED || temp_v0->stateFlags1 & 0x400000 && temp_fv0 <= 70.0f - && (temp_v1 = (temp_v0->actor.shape.rot.y - this->actor.shape.rot.y) + 0x8000, (temp_v1 < 0x2000) != 0) + && (temp_v1 = (temp_v0->actor.shape.rot.y - this->actor.shape.rot.y) + 0x8000, (temp_v1 < 0x2000) != 0) && temp_v1 > -0x2000 ) { this->unk_0F34.base.atFlags &= ~(AT_BOUNCED|AT_HIT); @@ -865,7 +865,7 @@ void func_80C0D3C0(EnBsb* this, PlayState* play) { this->unk_1134.y = this->unk_114C.y = this->unk_02E0.y - 10.0f; this->unk_1134.z = this->unk_114C.z = Math_CosS(this->actor.yawTowardsPlayer) * 10.0f + this->unk_02E0.z; - + this->unk_1124 = 60.0f; func_80C0B290(this, 2); this->unk_02B4 = 9; @@ -991,9 +991,44 @@ void EnBsb_Update(Actor* thisx, PlayState* play) { #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0EEA0.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0F078.s") +s32 func_80C0F078(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx, Gfx** gfx) { + EnBsb* this = THIS; + if (limbIndex != this->unk_02B0) { + *dList = NULL; + } else if (limbIndex != this->unk_02B0) { + *dList = NULL; + } else if ((limbIndex == 2) || (limbIndex == 3) || (limbIndex == 4) || (limbIndex == 5) || (limbIndex == 6) || (limbIndex == 7) || (limbIndex == 8) || (limbIndex == 9) || (limbIndex == 0xA) || (limbIndex == 0xC) || (limbIndex == 0xD) || (limbIndex == 0xF) || (limbIndex == 0x10) || (limbIndex == 0x11) || (limbIndex == 0x12) || (limbIndex == 0x13) || (limbIndex == 0x14)) { + rot->x += this->unk_031C.x; + rot->y += this->unk_031C.y; + rot->z += this->unk_031C.z; + } + return 0; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0F170.s") +void func_80C0F170(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { + EnBsb* this = THIS; + if (this->unk_02B0 == 0) { + if (limbIndex == 0xA) { + Matrix_MultVec3f(&gZeroVec3f, &this->unk_02E0); + } + if (limbIndex == 0x11) { + Matrix_MultVec3f(&gZeroVec3f, &this->unk_0304); + } + if (limbIndex == 0x14) { + Matrix_MultVec3f(&gZeroVec3f, &this->unk_02F8); + } + if ((limbIndex == 2) || (limbIndex == 3) || (limbIndex == 4) || (limbIndex == 5) || (limbIndex == 6) || (limbIndex == 7) || (limbIndex == 8) || (limbIndex == 9) || (limbIndex == 0xA) || (limbIndex == 0xC) || (limbIndex == 0xD) || (limbIndex == 0xF) || (limbIndex == 0x10) || (limbIndex == 0x11) || (limbIndex == 0x12) || (limbIndex == 0x13) || (limbIndex == 0x14)) { + Matrix_MultZero(&this->unk_0330[this->unk_0440]); + this->unk_03FC[this->unk_0440] = limbIndex; + + this->unk_0440++; + if (this->unk_0440 >= 0x11) { + this->unk_0440 = 0; + } + } + } + Collider_UpdateSpheres(limbIndex, &this->unk_0F34); +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/EnBsb_Draw.s") diff --git a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.h b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.h index 627c02fe1..a87708116 100644 --- a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.h +++ b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.h @@ -38,21 +38,21 @@ typedef struct EnBsb { /* 0x02CC */ s16 unk_02CC[5]; /* 0x02D8 */ s32 unk_02D8; /* 0x02DC */ s32 unk_02DC; - /* 0x2E0 */ Vec3f unk_02E0; - /* 0x2EC */ Vec3f unk_02EC; - /* 0x2F8 */ Vec3f unk_02F8; - /* 0x304 */ Vec3f unk_0304; - /* 0x310 */ Vec3s unk_0310; - /* 0x316 */ Vec3s unk_0316; - /* 0x31C */ Vec3s unk_031C; - /* 0x322 */ s16 unk_0322; - /* 0x324 */ s16 unk_0324; - /* 0x328 */ f32 unk_0328; - /* 0x32C */ f32 unk_032C; - /* 0x330 */ Vec3f unk_0330[17]; - /* 0x3FC */ s32 unk_03FC[17]; - /* 0x440 */ s16 unk_0440; - /* 0x444 */ char pad_0444[0xAF0]; + /* 0x02E0 */ Vec3f unk_02E0; + /* 0x02EC */ Vec3f unk_02EC; + /* 0x02F8 */ Vec3f unk_02F8; + /* 0x0304 */ Vec3f unk_0304; + /* 0x0310 */ Vec3s unk_0310; + /* 0x0316 */ Vec3s unk_0316; + /* 0x031C */ Vec3s unk_031C; + /* 0x0322 */ s16 unk_0322; + /* 0x0324 */ s16 unk_0324; + /* 0x0328 */ f32 unk_0328; + /* 0x032C */ f32 unk_032C; + /* 0x0330 */ Vec3f unk_0330[17]; + /* 0x03FC */ s32 unk_03FC[17]; + /* 0x0440 */ s16 unk_0440; + /* 0x0444 */ char pad_0444[0xAF0]; /* 0x0F34 */ ColliderJntSph unk_0F34; /* 0x0F54 */ ColliderJntSphElement unk_0F54[7]; /* 0x1114 */ u32 unk_1114;