From 85df7c194db50b7fe774889780280c0a330d1c5a Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Sun, 24 May 2026 15:16:15 -0400 Subject: [PATCH] fixup: dAcEKs_c::actorCreate, dAcEKs_c::fn_155_2270, dAcEKs_c::executeState_WaitReady --- include/f/f_base.h | 3 +++ src/REL/d/a/e/d_a_e_ks.cpp | 26 +++++++++++++------------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/include/f/f_base.h b/include/f/f_base.h index 8ef5ac43..296fca1e 100644 --- a/include/f/f_base.h +++ b/include/f/f_base.h @@ -92,6 +92,9 @@ public: u32 getFromParams(u8 shift, u32 mask) { return (mParams >> shift) & mask; } + f32 getFromParams(u8 shift, u32 mask, f32 scale) { + return ((mParams >> shift) & mask) * scale; + } public: fBase_c(); diff --git a/src/REL/d/a/e/d_a_e_ks.cpp b/src/REL/d/a/e/d_a_e_ks.cpp index 8a1d8f36..e6b781fe 100644 --- a/src/REL/d/a/e/d_a_e_ks.cpp +++ b/src/REL/d/a/e/d_a_e_ks.cpp @@ -743,7 +743,6 @@ void dAcEKs_c::fn_155_1C80() { } void dAcEKs_c::fn_155_2270() { - // NONMATCHING if (field_0xD6A > 0) { field_0xD6A--; } @@ -751,8 +750,8 @@ void dAcEKs_c::fn_155_2270() { dAcObjBase_c *pTarget = targetPlayerOrScrapper(0.f); field_0xBF8.set(pTarget->mPosition + field_0xBEC); - mAng y = cLib::targetAngleY(mPosition, mTargetPos); - y = y - mRotation.y; + mAng yAngleDiff = cLib::targetAngleY(mPosition, mTargetPos); + yAngleDiff = yAngleDiff - mRotation.y; if (field_0xDA6 != 0) { if (transitionToNextState()) { if (mType == EKS_ELECTRIC) { @@ -814,8 +813,9 @@ void dAcEKs_c::fn_155_2270() { sLib::addCalcAngle(mAngle.y.ref(), mYaw_0xC36, 12, 0x1555); sLib::addCalcAngle(mRotation.y.ref(), mYaw_0xC36, 12, 0x1555); sLib::addCalcAngle(mRotation.x.ref(), 0, 12, 0x1555); - // ?? - if (u16(y + 0x3FFF) <= 0x7FFE) { + + s16 y; + if (u16(yAngleDiff + 0x3FFF) <= 0x7FFE) { y = mRotation.x + 0xAAA; } else { y = mRotation.x - 0xAAA; @@ -897,13 +897,13 @@ void dAcEKs_c::fn_155_2270() { sLib::addCalcAngle(mRotation.y.ref(), mYaw_0xC36, 12, 0x1555); sLib::addCalcAngle(mRotation.x.ref(), 0, 12, 0x1555); - // ?? - if (u16(y + 0x3FFF) <= 0x7FFE) { - y = mRotation.x + 0xAAA; + s16 x; + if (u16(yAngleDiff + 0x3FFF) <= 0x7FFE) { + x = mRotation.x + 0xAAA; } else { - y = mRotation.x - 0xAAA; + x = mRotation.x - 0xAAA; } - sLib::addCalcAngle(mRotation.x.ref(), y, 12, 0x1555); + sLib::addCalcAngle(mRotation.x.ref(), x, 12, 0x1555); } } } @@ -1383,8 +1383,8 @@ int dAcEKs_c::actorCreate() { setActorProperty(AC_PROP_0x400); } } - field_0xC3C = getFromParams(6, 0xF) * 100.f; - field_0xC40 = getFromParams(10, 0xF) * 100.f; + field_0xC3C = getFromParams(6, 0xF, 100); + field_0xC40 = getFromParams(10, 0xF, 100); field_0xC44 = ((mRotation.z >> 0) & 0xF) * 100.f; field_0xC48 = ((mRotation.z >> 4) & 0xF) * 100.f; @@ -2121,7 +2121,7 @@ void dAcEKs_c::executeState_WaitReady() { mMdl.play(); playBlinkAnm(); if (field_0xD50 > 0) { - field_0xD50++; + field_0xD50--; } sLib::addCalcAngle(mRotation.x.ref(), 0, 12, 0xAAB); sLib::addCalcAngle(mRotation.y.ref(), field_0xD8A, 12, 0xAAB);