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 cb6733b88..5b070d205 100644 --- a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c +++ b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c @@ -53,7 +53,7 @@ s32 func_80C0B888(EnBsb* this, PlayState* play); void func_80C0C32C(EnBsb* this); void func_80C0C430(EnBsb* this); void func_80C0D00C(EnBsb* this); -void func_80C0F544(EnBsb* this, Vec3f* pos, Vec3f* unk_02, Vec3f* unk3, f32 unk4, s32 unk5); +void func_80C0F544(EnBsb* this, Vec3f* pos, Vec3f* velocity, Vec3f* accel, f32 arg0, s16 arg1); #if 0 // static ColliderJntSphElementInit sJntSphElementsInit[7] = { @@ -1144,7 +1144,24 @@ void func_80C0F170(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Acto #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/EnBsb_Draw.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0F544.s") +void func_80C0F544(EnBsb* this, Vec3f* pos, Vec3f* velocity, Vec3f* accel, f32 arg0, s16 arg1) { + EnBsbUnkStruct* var_s0 = &this->unk_0444; + s16 i; + for (i = 0; i < ARRAY_COUNT(this->unk_0444); i++, var_s0++) { + if (var_s0->unk_00 == 0) { + var_s0->unk_00 = 1U; + var_s0->pos = *pos; + var_s0->velocity = *velocity; + var_s0->accel = *accel; + var_s0->unk_30 = arg0; + var_s0->unk_34 = arg1; + var_s0->unk_28.x = (s16) (s32) Rand_CenteredFloat(30000.0f); + var_s0->unk_28.y = (s16) (s32) Rand_CenteredFloat(30000.0f); + var_s0->unk_28.z = (s16) (s32) Rand_CenteredFloat(30000.0f); + return; + } + } +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0F640.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 a87708116..2425c2b60 100644 --- a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.h +++ b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.h @@ -7,6 +7,16 @@ struct EnBsb; typedef void (*EnBsbActionFunc)(struct EnBsb*, PlayState*); +typedef struct EnBsbUnkStruct { + /* 0x00 */ u8 unk_00; + /* 0x04 */ Vec3f pos; + /* 0x10 */ Vec3f velocity; + /* 0x1C */ Vec3f accel; + /* 0x28 */ Vec3s unk_28; + /* 0x30 */ f32 unk_30; + /* 0x34 */ s16 unk_34; +} EnBsbUnkStruct; // size = 0x38 + typedef struct EnBsb { /* 0x0000 */ Actor actor; /* 0x0144 */ SkelAnime skelAnime; @@ -52,7 +62,7 @@ typedef struct EnBsb { /* 0x0330 */ Vec3f unk_0330[17]; /* 0x03FC */ s32 unk_03FC[17]; /* 0x0440 */ s16 unk_0440; - /* 0x0444 */ char pad_0444[0xAF0]; + /* 0x0444 */ EnBsbUnkStruct unk_0444[0x32]; /* 0x0F34 */ ColliderJntSph unk_0F34; /* 0x0F54 */ ColliderJntSphElement unk_0F54[7]; /* 0x1114 */ u32 unk_1114;