From 5ad693e9d6095316e06105dd89614205f1f4119d Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 2 Nov 2023 19:22:07 -0600 Subject: [PATCH] Decompiled some functions --- src/overlays/actors/ovl_En_Bsb/z_en_bsb.c | 105 +++++++++++++++++++--- src/overlays/actors/ovl_En_Bsb/z_en_bsb.h | 26 +++++- 2 files changed, 116 insertions(+), 15 deletions(-) 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 c6e91411b..73d2dac07 100644 --- a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c +++ b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c @@ -36,6 +36,8 @@ void func_80C0DB18(EnBsb* this, PlayState* play); void func_80C0E1C0(EnBsb* this, PlayState* play); void func_80C0E480(EnBsb* this, PlayState* play); void func_80C0E4FC(EnBsb* this, PlayState* play); +void func_80C0C86C(EnBsb* this); +void func_80C0B290(EnBsb* this, s32 arg0); #if 0 // static ColliderJntSphElementInit sJntSphElementsInit[7] = { @@ -139,7 +141,17 @@ extern UNK_TYPE D_06004894; #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/EnBsb_Init.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/EnBsb_Destroy.s") +void EnBsb_Destroy(Actor *thisx, PlayState *play) { + EnBsb* this = THIS; + + if (this->unk2B0 == 0) { + Audio_RestorePrevBgm(); + Collider_DestroyJntSph(play, &this->unkF34); + } + if (CutsceneManager_GetCurrentCsId() == this->unk2D2) { + CutsceneManager_Stop(this->unk2D2); + } +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0B888.s") @@ -159,11 +171,23 @@ extern UNK_TYPE D_06004894; #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C238.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C32C.s") +void func_80C0C32C(EnBsb *arg0) { + arg0->unk2A4 = 0; + func_80C0B290(arg0, 1); + arg0->actionFunc = func_80C0C364; +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C364.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C430.s") +void func_80C0C430(EnBsb *this) { + this->unk2A4 = 0; + if (this->unk2D8 != 1) { + func_80C0B290(this, 1); + } + this->unk294 = 0x46; + this->unk2B4 = 2; + this->actionFunc = func_80C0C484; +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C484.s") @@ -179,35 +203,74 @@ extern UNK_TYPE D_06004894; #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0CB3C.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0CCCC.s") +void func_80C0CCCC(EnBsb *this) { + func_80C0B290(this, 0x17); + this->actionFunc = func_80C0CD04; +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0CD04.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0CD90.s") +void func_80C0CD90(EnBsb *this) { + this->unk2A4 = 0; + this->actor.speed = 0.0f; + Actor_PlaySfx(&this->actor, NA_SE_EN_KITA_ATTACK_W); + func_80C0B290(this, 5); + this->unk2B4 = 6; + this->actionFunc = func_80C0CDE4; +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0CDE4.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0CF4C.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0CFDC.s") +void func_80C0CFDC(EnBsb *this, PlayState *play) { + if (this->unk294 == 0) { + func_80C0C86C(this); + } +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0D00C.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0D10C.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0D214.s") +void func_80C0D214(EnBsb *this) { + this->unk294 = 0x28; + this->actor.speed = 0.0f; + Actor_SetColorFilter(&this->actor, 0U, 0x78U, 0U, 0x28); + Actor_PlaySfx(&this->actor, NA_SE_EN_COMMON_FREEZE); + this->unk2B4 = 0xA; + this->actionFunc = func_80C0D27C; +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0D27C.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0D334.s") +void func_80C0D334(EnBsb *this) { + this->actor.speed = 0.0f; + Actor_PlaySfx(&this->actor, NA_SE_EN_KITA_LAUGH_K); + func_80C0B290(this, 6); + this->unk2B4 = 0xB; + this->actionFunc = func_80C0D384; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0D384.s") +void func_80C0D384(EnBsb *this, PlayState *play) { + f32 var_v0 = this->unk15C; + + if (this->unk2C4 <= var_v0) { + func_80C0C86C(this); + } +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0D3C0.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0D51C.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0D964.s") +void func_80C0D964(EnBsb* this, PlayState* play) { + this->unk2A4 = 0; + this->unk2A8 = 0; + this->actor.textId = 0x1535; + Message_StartTextbox(play, this->actor.textId, &this->actor); + this->actionFunc = func_80C0D9B4; +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0D9B4.s") @@ -215,13 +278,31 @@ extern UNK_TYPE D_06004894; #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0DB18.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0E178.s") +void func_80C0E178(EnBsb* this) { + this->actor.flags |= 0x08000000; + this->unk2AE = 0; + this->unk2A4 = 0; + this->actor.flags &= ~1; + this->unk2B4 = 0xE; + this->actionFunc = func_80C0E1C0; + this->actor.speed = 0.0f; +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0E1C0.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0E3B8.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0E480.s") +void func_80C0E480(EnBsb *this, PlayState *play) { + if (this->unk2C0 != 0.0f) { + if (this->unk2C0 <= this->actor.world.pos.y) { + this->unk2C0 = this->actor.world.pos.y - 40.0f; + } + this->unk294 = 2; + this->unk2CA = 0xFF; + this->actionFunc = func_80C0E4FC; + this->unk2C0 = this->actor.home.pos.y + (this->actor.world.pos.y - this->unk2C0); + } +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0E4FC.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 f3cd4b7d6..194c45532 100644 --- a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.h +++ b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.h @@ -9,11 +9,31 @@ typedef void (*EnBsbActionFunc)(struct EnBsb*, PlayState*); typedef struct EnBsb { /* 0x0000 */ Actor actor; - /* 0x0144 */ char unk_144[0x140]; + /* 0x0144 */ char unk_144[0x18]; + /* 0x015C */ f32 unk15C; + /* 0x0160 */ char unk_160[0x124]; /* 0x0284 */ EnBsbActionFunc actionFunc; - /* 0x0288 */ char unk_288[0x54]; + /* 0x0288 */ char unk_288[0xC]; + /* 0x0294 */ s16 unk294; + /* 0x0296 */ char unk_296[0xE]; + /* 0x02A4 */ s32 unk2A4; + /* 0x02A8 */ s32 unk2A8; + /* 0x02AC */ char unk_2AC[0x2]; + /* 0x02AE */ s8 unk2AE; + /* 0x02B0 */ s32 unk2B0; + /* 0x02B4 */ s16 unk2B4; + /* 0x02B6 */ char unk_2B6[0xA]; + /* 0x02C4 */ f32 unk2C0; + /* 0x02C4 */ f32 unk2C4; + /* 0x02C8 */ char unk_2C8[0x2]; + /* 0x02CA */ s16 unk2CA; + /* 0x02CD */ char unk_2CD[0x5]; + /* 0x02D2 */ s16 unk2D2; + /* 0x02D4 */ char unk_2D4[0x4]; + /* 0x02D8 */ s32 unk2D8; /* 0x02DC */ s32 unk2DC; - /* 0x02E0 */ char unk2E0[0xE78]; + /* 0x02E0 */ char unk2E0[0xC54]; + /* 0x0F34 */ ColliderJntSph unkF34; } EnBsb; // size = 0x1158 #endif // Z_EN_BSB_H