From 6d2344408c41dff640b2a12c5aeeb3c36cca13f9 Mon Sep 17 00:00:00 2001 From: vinvirile Date: Tue, 26 May 2026 22:54:44 -0500 Subject: [PATCH] Improve matching: cameralib signature/return fixes, enemy decl/assign, fireWanwan pragma - cameralib.hpp: Fix CLBCalc2DFPos signature, CLBChaseSpecialDecrease return bool->BOOL - cameralib.cpp: Fix CLBCalc2DFPos signature (missing->98.2%), add CLBConstUpVec global (__sinit missing->100%), fix CLBChaseSpecialDecrease return type (87.5%->100%) - enemy.cpp: Split TPathNode decl/assign in doShortCut (94.7%->96.0%) - fireWanwan.cpp: Add #pragma dont_inline around updateCameraShake/updateRumble for moveObject (73.6%->84.6%) --- include/Camera/cameralib.hpp | 4 ++-- src/Camera/cameralib.cpp | 10 ++++++---- src/Enemy/enemy.cpp | 3 ++- src/Enemy/fireWanwan.cpp | 2 ++ 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/include/Camera/cameralib.hpp b/include/Camera/cameralib.hpp index 26eb1f50..b13d5822 100644 --- a/include/Camera/cameralib.hpp +++ b/include/Camera/cameralib.hpp @@ -5,7 +5,7 @@ extern f32 SMSGetAnmFrameRate(); // avoid including Application.hpp -void CLBCalc2DFPos(JGeometry::TVec2*, const MtxPtr, const MtxPtr, +void CLBCalc2DFPos(JGeometry::TVec2*, const f32 (*)[4], const f32 (*)[4], const Vec&, u32*, bool); void CLBCalcNearClipAngle(JGeometry::TVec3*, S16Vec*, @@ -69,7 +69,7 @@ bool CLBChaseAngleDecrease(s16* out, s16 target, s16 invSpeed); */ BOOL CLBChaseDecrease(f32* dstValue, f32 targetValue, f32 ratio, f32 threshold); -bool CLBChaseSpecialDecrease(f32*, f32, f32, f32); +BOOL CLBChaseSpecialDecrease(f32*, f32, f32, f32); /** * @brief Converts Cartesian coordinates to spherical coordinates. diff --git a/src/Camera/cameralib.cpp b/src/Camera/cameralib.cpp index 56f6d331..a72aeceb 100644 --- a/src/Camera/cameralib.cpp +++ b/src/Camera/cameralib.cpp @@ -9,6 +9,8 @@ static const f32 SHORTANGLE_TO_DEGREES = 0.005493164f; // 360/65536 static const f32 DEGREES_TO_RADIANS = 0.017453294f; // pi/180 +JGeometry::TVec3 CLBConstUpVec(0.0f, 1.0f, 0.0f); + // TODO: Almost definitely fake, this is probably inlined somewhere else static inline f32 fastSqrt(f32 x) { @@ -38,8 +40,8 @@ static inline void RotateAboutAxis(const JGeometry::TVec3& param_axis, } // TODO: Explore how this is used, and add documentation -void CLBCalc2DFPos(JGeometry::TVec2* param_1, MtxPtr param_2, - const MtxPtr param_3, const Vec& param_4, u32* param_5, +void CLBCalc2DFPos(JGeometry::TVec2* param_1, const f32 (*param_2)[4], + const f32 (*param_3)[4], const Vec& param_4, u32* param_5, bool param_6) { Vec prod; @@ -322,8 +324,8 @@ BOOL CLBChaseDecrease(f32* dstValue, f32 targetValue, f32 ratio, f32 threshold) } } -bool CLBChaseSpecialDecrease(f32* param_1, f32 param_2, f32 param_3, - f32 param_4) +BOOL CLBChaseSpecialDecrease(f32* param_1, f32 param_2, f32 param_3, + f32 param_4) { if (param_3 > 1.0f) { param_3 = 1.0f; diff --git a/src/Enemy/enemy.cpp b/src/Enemy/enemy.cpp index 010bc161..d83f3b68 100644 --- a/src/Enemy/enemy.cpp +++ b/src/Enemy/enemy.cpp @@ -581,7 +581,8 @@ void TSpineEnemy::doShortCut() return; } - TPathNode node = unk114.pop(); + TPathNode node; + node = unk114.pop(); JGeometry::TVec3 local_28 = node.getPoint() - mPosition; if (local_28.x == 0.0f && local_28.y == 0.0f && local_28.z == 0.0f) diff --git a/src/Enemy/fireWanwan.cpp b/src/Enemy/fireWanwan.cpp index 9832bda8..8e278e0d 100644 --- a/src/Enemy/fireWanwan.cpp +++ b/src/Enemy/fireWanwan.cpp @@ -1184,6 +1184,7 @@ void TFireWanwan::updateCollisionFromParam() getSaveParam2()->mSLDamageHeight.get()); } +#pragma dont_inline on // Tiny size mismatch void TFireWanwan::updateCameraShake() { @@ -1215,6 +1216,7 @@ void TFireWanwan::updateRumble() mHungTailRumbleTimer = 0; } } +#pragma dont_inline off void TFireWanwan::updatePollute() {