From e2157237513a4170c5c00bf2b56ef96753b4c63a Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Tue, 25 Aug 2026 15:01:19 -0400 Subject: [PATCH] Fix d_a_kamome not actually being equivalent (jump tables) --- configure.py | 2 +- src/d/actor/d_a_kamome.cpp | 26 +++++++++----------------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/configure.py b/configure.py index e1006c300..4676a3ff7 100755 --- a/configure.py +++ b/configure.py @@ -1559,7 +1559,7 @@ config.libs = [ ActorRel(Matching, "d_a_himo3"), ActorRel(Matching, "d_a_hmlif"), ActorRel(Matching, "d_a_hys"), - ActorRel(Equivalent, "d_a_kamome"), # fpr regalloc + ActorRel(Equivalent, "d_a_kamome"), # regalloc ActorRel(Matching, "d_a_kamome2"), # Demo-only TU ActorRel(NonMatching, "d_a_kantera"), ActorRel(Matching, "d_a_kn"), diff --git a/src/d/actor/d_a_kamome.cpp b/src/d/actor/d_a_kamome.cpp index ca445204b..c1b1aac66 100644 --- a/src/d/actor/d_a_kamome.cpp +++ b/src/d/actor/d_a_kamome.cpp @@ -465,18 +465,15 @@ static void kamome_path_move(kamome_class* i_this) { } break; - case 3: + case 10: break; - case 19: + case 20: if (i_this->mpMorf->isStop()) { i_this->mAnimState = 0; anm_init(i_this, dRes_INDEX_KAMOME_BCK_KA_WAIT2_e, 0.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, dRes_INDEX_KAMOME_BAS_KA_WAIT2_e); } break; - - case 20: - break; } switch (i_this->mMoveState) { @@ -688,7 +685,7 @@ static void kamome_path_move(kamome_class* i_this) { i_this->mVelocityFwdTarget = 25.0f; i_this->mVelocityFwdTargetMaxVel = 2.0f; a_this->speedF = 0.0f; - i_this->mAnimState = 0x14; + i_this->mAnimState = 20; i_this->mRiseTimer = REG0_S(4) + 10; } } @@ -749,18 +746,15 @@ static void kamome_auto_move(kamome_class* i_this) { } break; - case 3: + case 10: break; - case 19: + case 20: if (i_this->mpMorf->isStop()) { i_this->mAnimState = 0; i_this->mTimers[0] = cM_rndF(60.0f) + 20.0f; anm_init(i_this, dRes_INDEX_KAMOME_BCK_KA_WAIT2_e, 0.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, dRes_INDEX_KAMOME_BAS_KA_WAIT2_e); } - - case 20: - break; } switch (i_this->mMoveState) { @@ -957,7 +951,7 @@ static void kamome_auto_move(kamome_class* i_this) { i_this->mVelocityFwdTargetMaxVel = 1.0f; } else { i_this->mMoveState = 0; - i_this->mAnimState = 0x14; + i_this->mAnimState = 20; i_this->mTimers[3] = cM_rndF(100.0f) + 100.0f; i_this->mRiseTimer = REG0_S(4) + 10; if (i_this->mPathIdx != 0xff) { @@ -1057,18 +1051,16 @@ static void kamome_imouto_move(kamome_class* i_this) { } break; - case 3: + case 10: break; - case 19: + case 20: if (i_this->mpMorf->isStop()) { i_this->mAnimState = 0; i_this->mTimers[0] = cM_rndF(60.0f) + 20.0f; anm_init(i_this, dRes_INDEX_KAMOME_BCK_KA_WAIT2_e, 0.0f, J3DFrameCtrl::EMode_LOOP, 1.0f, dRes_INDEX_KAMOME_BAS_KA_WAIT2_e); } break; - case 20: - break; } switch (i_this->mMoveState) { @@ -1241,7 +1233,7 @@ static void kamome_imouto_move(kamome_class* i_this) { i_this->mVelocityFwdTargetMaxVel = 1.0f; } else { i_this->mMoveState = 0; - i_this->mAnimState = 0x14; + i_this->mAnimState = 20; i_this->mTimers[3] = cM_rndF(100.0f) + 100.0f; i_this->mRiseTimer = REG0_S(4) + 10; if (i_this->mPathIdx != 0xff) {