From b9267f0550e4f408c93ac9d091332f51e9ea7838 Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Mon, 27 Jan 2025 06:35:50 -0800 Subject: [PATCH] GCC Testing Vanilla bugs (#1789) * doc desbreko draw damage effect bug * doc like like sfx bug * doc shellblade incorrect sfx id * document powder keg text incorrect sfx * Doc more sfx bugs with shellblade --- src/overlays/actors/ovl_En_Go/z_en_go.c | 2 ++ src/overlays/actors/ovl_En_Pr/z_en_pr.c | 3 +++ src/overlays/actors/ovl_En_Rr/z_en_rr.c | 2 ++ src/overlays/actors/ovl_En_Sb/z_en_sb.c | 17 ++++++++++++++++- .../actors/ovl_En_Tubo_Trap/z_en_tubo_trap.c | 11 ++++++----- 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/overlays/actors/ovl_En_Go/z_en_go.c b/src/overlays/actors/ovl_En_Go/z_en_go.c index ea68331527..9e54d8bc4f 100644 --- a/src/overlays/actors/ovl_En_Go/z_en_go.c +++ b/src/overlays/actors/ovl_En_Go/z_en_go.c @@ -362,6 +362,8 @@ static MsgScript sMsgScriptGoronMedigoron[] = { /* 0x0014 0x01 */ MSCRIPT_CMD_DONE(), /* 0x0015 0x05 */ MSCRIPT_CMD_CHECK_WEEK_EVENT_REG(WEEKEVENTREG_18_40, 0x0037 - 0x001A), + //! @bug Incorrect sfx + //! The text associated with 0x0C80 makes use of an incorrect pop sound (`NA_SE_EN_SLIME_BREAK`) /* 0x001A 0x03 */ MSCRIPT_CMD_BEGIN_TEXT(0x0C80), /* 0x001D 0x01 */ MSCRIPT_CMD_AWAIT_TEXT(), /* 0x001E 0x03 */ MSCRIPT_CMD_SET_WEEK_EVENT_REG(WEEKEVENTREG_18_40), diff --git a/src/overlays/actors/ovl_En_Pr/z_en_pr.c b/src/overlays/actors/ovl_En_Pr/z_en_pr.c index 42688c2745..2bfb008f60 100644 --- a/src/overlays/actors/ovl_En_Pr/z_en_pr.c +++ b/src/overlays/actors/ovl_En_Pr/z_en_pr.c @@ -639,6 +639,9 @@ void EnPr_Draw(Actor* thisx, PlayState* play) { } if (this->drawDmgEffAlpha != 0) { + //! @bug: `this->drawDmgEffAlpha` is not decremented, so once active; the damage effect will remain until the + //! actor is killed. This only affects zora barrier as the only other damage effect, light arrows, kills in one + //! hit. f32 drawDmgEffAlpha = this->drawDmgEffAlpha * 0.05f; this->unk_238 = 0.8f; diff --git a/src/overlays/actors/ovl_En_Rr/z_en_rr.c b/src/overlays/actors/ovl_En_Rr/z_en_rr.c index 7e75c93253..3e8e56bb99 100644 --- a/src/overlays/actors/ovl_En_Rr/z_en_rr.c +++ b/src/overlays/actors/ovl_En_Rr/z_en_rr.c @@ -803,6 +803,8 @@ void EnRr_Update(Actor* thisx, PlayState* play) { this->actionFunc(this, play); if (this->actor.params == LIKE_LIKE_PARAM_2) { + //! @bug: Actor will constantly play an SFX every frame when player is close enough. + //! In `func_808FAF94` the check is if the actor has zero speed. this->actor.speed = 0.0f; } else { Math_StepToF(&this->actor.speed, 0.0f, 0.1f); diff --git a/src/overlays/actors/ovl_En_Sb/z_en_sb.c b/src/overlays/actors/ovl_En_Sb/z_en_sb.c index ae3b8046bc..4f10b78a47 100644 --- a/src/overlays/actors/ovl_En_Sb/z_en_sb.c +++ b/src/overlays/actors/ovl_En_Sb/z_en_sb.c @@ -153,6 +153,11 @@ void EnSb_SetupOpen(EnSb* this) { ANIMMODE_ONCE, 0.0f); this->state = SHELLBLADE_OPEN; this->actionFunc = EnSb_Open; + //! @bug Incorrect sfx + //! In OoT, NA_SE_EN_SHELL_MOUTH is the value 0x3849 + //! But in MM, certain sfxIds got reordered this was not updated: + //! In MM, NA_SE_EN_KUSAMUSHI_VIBE is the old value 0x3849 + //! In MM, NA_SE_EN_SHELL_MOUTH does not exist Actor_PlaySfx(&this->actor, NA_SE_EN_KUSAMUSHI_VIBE); } @@ -170,6 +175,11 @@ void EnSb_SetupLunge(EnSb* this) { Animation_Change(&this->skelAnime, &object_sb_Anim_000124, playbackSpeed, 0.0f, endFrame, ANIMMODE_ONCE, 0); this->state = SHELLBLADE_LUNGE; this->actionFunc = EnSb_Lunge; + //! @bug Incorrect sfx + //! In OoT, NA_SE_EN_SHELL_MOUTH is the value 0x3849 + //! But in MM, certain sfxIds got reordered this was not updated: + //! In MM, NA_SE_EN_KUSAMUSHI_VIBE is the old value 0x3849 + //! In MM, NA_SE_EN_SHELL_MOUTH does not exist Actor_PlaySfx(&this->actor, NA_SE_EN_KUSAMUSHI_VIBE); } @@ -341,7 +351,12 @@ void EnSb_UpdateDamage(EnSb* this, PlayState* play) { } this->isDead = true; Enemy_StartFinishingBlow(play, &this->actor); - SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 0x28, NA_SE_EN_BEE_FLY); + //! @bug Incorrect sfx + //! In OoT, NA_SE_EN_SHELL_DEAD is the value 0x384A + //! But in MM, certain sfxIds got reordered this was not updated: + //! In MM, NA_SE_EN_BEE_FLY is the old value 0x384A + //! In MM, NA_SE_EN_SHELL_DEAD does not exist + SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 40, NA_SE_EN_BEE_FLY); return; } hitPoint.x = this->collider.elem.acDmgInfo.hitPos.x; diff --git a/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.c b/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.c index b52a025d0e..757b3b2f48 100644 --- a/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.c +++ b/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.c @@ -269,11 +269,12 @@ void EnTuboTrap_FlyAtPlayer(EnTuboTrap* this, PlayState* play) { f32 dY = this->originPos.y - this->actor.world.pos.y; f32 dZ = this->originPos.z - this->actor.world.pos.z; - //! @bug should be NA_SE_EN_TUBOOCK_FLY - SFX_FLAG - // In OoT, NA_SE_EN_TUBOOCK_FLY is the value 0x3837 - // But in MM, certain sfxIds got reordered and devs forgot to update: - // In MM, NA_SE_EN_MIZUBABA2_ATTACK is the old value 0x3837 - // In MM, NA_SE_EN_TUBOOCK_FLY is the new value 0x3AE0 + //! @bug Incorrect sfx + //! This should be NA_SE_EN_TUBOOCK_FLY - SFX_FLAG + //! In OoT, NA_SE_EN_TUBOOCK_FLY is the value 0x3837 + //! But in MM, certain sfxIds got reordered this was not updated: + //! In MM, NA_SE_EN_MIZUBABA2_ATTACK is the old value 0x3837 + //! In MM, NA_SE_EN_TUBOOCK_FLY is the new value 0x3AE0 Actor_PlaySfx(&this->actor, NA_SE_EN_MIZUBABA2_ATTACK - SFX_FLAG); if ((SQ(dX) + SQ(dY) + SQ(dZ) > SQ(240.0f))) {