From aa8ec96742e114f6fdc0f838277a4caf1d2493d6 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 2 Nov 2023 19:56:07 -0600 Subject: [PATCH 1/2] Decompiled even more functions uwu --- src/overlays/actors/ovl_En_Bsb/z_en_bsb.c | 48 +++++++++++++++++++---- 1 file changed, 40 insertions(+), 8 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 7170542f8..b146f2392 100644 --- a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c +++ b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c @@ -132,13 +132,17 @@ extern ColliderJntSphElementInit D_80C0F8D4[7]; extern ColliderJntSphInit D_80C0F9D0; extern DamageTable D_80C0F9E0; -extern UNK_TYPE D_06000C50; +extern AnimationHeader* D_06000C50[]; extern UNK_TYPE D_06004894; -extern AnimationHeader D_060086BC; -extern SkeletonHeader D_0600C3E0; +extern AnimationHeader* D_80C0FA20[]; +extern u8 D_80C0FA84[]; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0B290.s") +void func_80C0B290(EnBsb *this, s32 animIndex) { + this->unk2D8 = animIndex; + this->unk2C4 = Animation_GetLastFrame(D_80C0FA20[animIndex]); + Animation_Change(&this->skelAnime, D_80C0FA20[this->unk2D8], 1.0f, 0.0f, this->unk2C4, D_80C0FA84[this->unk2D8], -2.0f); +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0B31C.s") @@ -248,7 +252,16 @@ void func_80C0C430(EnBsb* this) { #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C6A8.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C86C.s") +void func_80C0C86C(EnBsb *this) { + this->unk2A4 = 0; + this->unk2DC = 1; + this->actor.speed = 2.0f; + func_80C0B290(this, 4); + this->unk294 = Rand_S16Offset(0, 0x1E); + WEEKEVENTREG(0x55) |= 0x40; + this->unk2B4 = 4; + this->actionFunc = func_80C0C8EC; +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C8EC.s") @@ -261,7 +274,18 @@ void func_80C0CCCC(EnBsb* this) { this->actionFunc = func_80C0CD04; } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0CD04.s") +void func_80C0CD04(EnBsb *this, PlayState *play) { + f32 var_0 = this->skelAnime.curFrame; + + if ((this->unk2D8 == 0x18) && (var_0 >= this->unk2C4)) { + this->actor.flags &= 0xF7FFFFFF; + this->actor.gravity = -2.0f; + this->unk294 = 0xA; + func_80C0C86C(this); + } else if (this->unk2D8 == 0x17) { + func_80C0B290(this, 0x18); + } +} void func_80C0CD90(EnBsb* this) { this->unk2A4 = 0; @@ -274,7 +298,15 @@ void func_80C0CD90(EnBsb* this) { #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") +void func_80C0CF4C(EnBsb *this) { + this->actor.speed = 0.0f; + this->unk2A4 = 0; + Animation_Change(&this->skelAnime, D_06000C50, -1.0f, this->skelAnime.curFrame - 1.0f, 0.0f, 2, 0.0f); + this->unk294 = 0xA; + Actor_PlaySfx(this, NA_SE_EN_KTIA_PAUSE_K); + this->unk2B4 = 7; + this->actionFunc = func_80C0CFDC; +} void func_80C0CFDC(EnBsb* this, PlayState* play) { if (this->unk294 == 0) { @@ -305,7 +337,7 @@ void func_80C0D334(EnBsb* this) { this->actionFunc = func_80C0D384; } -void func_80C0D384(EnBsb* this, PlayState* play) { +void func_80C0D384(EnBsb *this, PlayState *play) { f32 var_v0 = this->skelAnime.curFrame; if (this->unk2C4 <= var_v0) { From 6f6de4bcedd2b9bfb628ee829bbd98c935652f08 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 2 Nov 2023 21:15:21 -0600 Subject: [PATCH 2/2] Added even more functions --- src/overlays/actors/ovl_En_Bsb/z_en_bsb.c | 61 ++++++++++++++++------- src/overlays/actors/ovl_En_Bsb/z_en_bsb.h | 4 +- 2 files changed, 47 insertions(+), 18 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 b146f2392..944091920 100644 --- a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c +++ b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.c @@ -132,16 +132,20 @@ extern ColliderJntSphElementInit D_80C0F8D4[7]; extern ColliderJntSphInit D_80C0F9D0; extern DamageTable D_80C0F9E0; -extern AnimationHeader* D_06000C50[]; +extern AnimationHeader D_06000C50[]; extern UNK_TYPE D_06004894; extern AnimationHeader* D_80C0FA20[]; extern u8 D_80C0FA84[]; -void func_80C0B290(EnBsb *this, s32 animIndex) { +extern AnimationHeader D_060086BC; +extern SkeletonHeader D_0600C3E0; + +void func_80C0B290(EnBsb* this, s32 animIndex) { this->unk2D8 = animIndex; this->unk2C4 = Animation_GetLastFrame(D_80C0FA20[animIndex]); - Animation_Change(&this->skelAnime, D_80C0FA20[this->unk2D8], 1.0f, 0.0f, this->unk2C4, D_80C0FA84[this->unk2D8], -2.0f); + Animation_Change(&this->skelAnime, D_80C0FA20[this->unk2D8], 1.0f, 0.0f, this->unk2C4, D_80C0FA84[this->unk2D8], + -2.0f); } #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0B31C.s") @@ -175,7 +179,7 @@ void EnBsb_Init(Actor* thisx, PlayState* play) { this->actor.hintId = 0x21; this->actor.gravity = -2.0f; - Collider_InitAndSetJntSph(play, &this->unkF34, &this->actor, &D_80C0F9D0, &this->unk_F54); + Collider_InitAndSetJntSph(play, &this->unk_F34, &this->actor, &D_80C0F9D0, &this->unk_F54); if (this->unk_2B6 == 0x1F) { Actor_Kill(&this->actor); @@ -203,7 +207,7 @@ void EnBsb_Destroy(Actor* thisx, PlayState* play) { if (this->unk2B0 == 0) { Audio_RestorePrevBgm(); - Collider_DestroyJntSph(play, &this->unkF34); + Collider_DestroyJntSph(play, &this->unk_F34); } if (CutsceneManager_GetCurrentCsId() == this->unk_2CC[3]) { CutsceneManager_Stop(this->unk_2CC[3]); @@ -228,10 +232,10 @@ void EnBsb_Destroy(Actor* thisx, PlayState* play) { #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C238.s") -void func_80C0C32C(EnBsb* arg0) { - arg0->unk2A4 = 0; - func_80C0B290(arg0, 1); - arg0->actionFunc = func_80C0C364; +void func_80C0C32C(EnBsb* this) { + this->unk2A4 = 0; + func_80C0B290(this, 1); + this->actionFunc = func_80C0C364; } #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C364.s") @@ -248,11 +252,24 @@ void func_80C0C430(EnBsb* this) { #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C484.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C610.s") +void func_80C0C610(EnBsb* this) { + this->unk2A4 = 0; + this->actor.speed = 0.0f; + func_80C0B290(this, 2); + Actor_PlaySfx(&this->actor, NA_SE_EN_KITA_DAMAGE); + this->unk294 = 0; + if (this->unk2DC != 0) { + this->unk294 = 0x28; + Actor_PlaySfx(&this->actor, NA_SE_EN_COMMON_FREEZE); + Actor_SetColorFilter(&this->actor, 0U, 0xFFU, 0U, 0x28); + } + this->unk2B4 = 3; + this->actionFunc = func_80C0C6A8; +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0C6A8.s") -void func_80C0C86C(EnBsb *this) { +void func_80C0C86C(EnBsb* this) { this->unk2A4 = 0; this->unk2DC = 1; this->actor.speed = 2.0f; @@ -274,7 +291,7 @@ void func_80C0CCCC(EnBsb* this) { this->actionFunc = func_80C0CD04; } -void func_80C0CD04(EnBsb *this, PlayState *play) { +void func_80C0CD04(EnBsb* this, PlayState* play) { f32 var_0 = this->skelAnime.curFrame; if ((this->unk2D8 == 0x18) && (var_0 >= this->unk2C4)) { @@ -298,12 +315,12 @@ void func_80C0CD90(EnBsb* this) { #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0CDE4.s") -void func_80C0CF4C(EnBsb *this) { +void func_80C0CF4C(EnBsb* this) { this->actor.speed = 0.0f; this->unk2A4 = 0; - Animation_Change(&this->skelAnime, D_06000C50, -1.0f, this->skelAnime.curFrame - 1.0f, 0.0f, 2, 0.0f); + Animation_Change(&this->skelAnime, &D_06000C50[0], -1.0f, this->skelAnime.curFrame - 1.0f, 0.0f, 2, 0.0f); this->unk294 = 0xA; - Actor_PlaySfx(this, NA_SE_EN_KTIA_PAUSE_K); + Actor_PlaySfx(&this->actor, NA_SE_EN_KTIA_PAUSE_K); this->unk2B4 = 7; this->actionFunc = func_80C0CFDC; } @@ -337,7 +354,7 @@ void func_80C0D334(EnBsb* this) { this->actionFunc = func_80C0D384; } -void func_80C0D384(EnBsb *this, PlayState *play) { +void func_80C0D384(EnBsb* this, PlayState* play) { f32 var_v0 = this->skelAnime.curFrame; if (this->unk2C4 <= var_v0) { @@ -357,7 +374,17 @@ void func_80C0D964(EnBsb* this, PlayState* play) { this->actionFunc = func_80C0D9B4; } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0D9B4.s") +void func_80C0D9B4(EnBsb* this, PlayState* play) { + if ((Message_GetState(&play->msgCtx) == 5) && (Message_ShouldAdvance(play) != 0)) { + Message_CloseTextbox(play); + play->nextEntrance = Entrance_CreateFromSpawn(5); + gSaveContext.nextCutsceneIndex = 0; + play->transitionTrigger = 0x14; + play->transitionType = 2; + gSaveContext.nextTransitionType = 3; + this->unk_111A = 0; + } +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bsb/func_80C0DA58.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 176b3b108..b9cae08ca 100644 --- a/src/overlays/actors/ovl_En_Bsb/z_en_bsb.h +++ b/src/overlays/actors/ovl_En_Bsb/z_en_bsb.h @@ -35,8 +35,10 @@ typedef struct EnBsb { /* 0x02D8 */ s32 unk2D8; /* 0x02DC */ s32 unk2DC; /* 0x02E0 */ char unk2E0[0xC54]; - /* 0x0F34 */ ColliderJntSph unkF34; + /* 0x0F34 */ ColliderJntSph unk_F34; /* 0x0F54 */ ColliderJntSphElement unk_F54; + /* 0x0F94 */ char unk_F94[0x186]; + /* 0x111A */ s16 unk_111A; } EnBsb; // size = 0x1158 #endif // Z_EN_BSB_H