From 3ac770f357f83ebe532473304b8b0c1b702e6a49 Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Wed, 10 Jun 2026 15:12:17 -0700 Subject: [PATCH] Match and link CCharAnimMemoryMetrics --- config/GM8E01_00/splits.txt | 4 ++-- config/GM8E01_00/symbols.txt | 2 +- config/GM8E01_01/splits.txt | 4 ++-- config/GM8E01_01/symbols.txt | 2 +- configure.py | 2 +- include/Kyoto/Animation/CCharAnimMemoryMetrics.hpp | 4 ++++ include/MetroidPrime/Player/CPlayer.hpp | 2 +- src/Kyoto/Animation/CCharAnimMemoryMetrics.cpp | 13 +++++++++++++ src/MetroidPrime/Player/CPlayer.cpp | 2 +- 9 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 src/Kyoto/Animation/CCharAnimMemoryMetrics.cpp diff --git a/config/GM8E01_00/splits.txt b/config/GM8E01_00/splits.txt index 1195842b..8251ab37 100644 --- a/config/GM8E01_00/splits.txt +++ b/config/GM8E01_00/splits.txt @@ -2833,11 +2833,11 @@ Kyoto/Animation/CBoolPOINode.cpp: .text start:0x802F7AB4 end:0x802F7BA8 Kyoto/Animation/CCharAnimMemoryMetrics.cpp: - .text start:0x802F7BA8 end:0x802F7C64 + .text start:0x802F7BA8 end:0x802F7BC8 .sbss start:0x805A9318 end:0x805A9320 Kyoto/Animation/CCharLayoutInfo.cpp: - .text start:0x802F7C64 end:0x802F8D4C + .text start:0x802F7BC8 end:0x802F8D4C .rodata start:0x803D6E28 end:0x803D6E30 .data start:0x803ED420 end:0x803ED430 .sdata start:0x805A87D0 end:0x805A87D8 diff --git a/config/GM8E01_00/symbols.txt b/config/GM8E01_00/symbols.txt index a7872083..314938f4 100644 --- a/config/GM8E01_00/symbols.txt +++ b/config/GM8E01_00/symbols.txt @@ -22008,7 +22008,7 @@ lbl_805A9304 = .sbss:0x805A9304; // type:object size:0x4 data:4byte lbl_805A9308 = .sbss:0x805A9308; // type:object size:0x1 data:byte lbl_805A930C = .sbss:0x805A930C; // type:object size:0x4 data:4byte lbl_805A9310 = .sbss:0x805A9310; // type:object size:0x8 data:byte -sTotalSize__22CCharAnimMemoryMetrics = .sbss:0x805A9318; // type:object size:0x8 data:4byte +sTotalSize__22CCharAnimMemoryMetrics = .sbss:0x805A9318; // type:object size:0x4 data:4byte lbl_805A9320 = .sbss:0x805A9320; // type:object size:0x1 data:byte lbl_805A9324 = .sbss:0x805A9324; // type:object size:0x1 data:byte lbl_805A9328 = .sbss:0x805A9328; // type:object size:0x1 data:byte diff --git a/config/GM8E01_01/splits.txt b/config/GM8E01_01/splits.txt index 837f33b9..faa56971 100644 --- a/config/GM8E01_01/splits.txt +++ b/config/GM8E01_01/splits.txt @@ -2833,11 +2833,11 @@ Kyoto/Animation/CBoolPOINode.cpp: .text start:0x802F7B94 end:0x802F7C88 Kyoto/Animation/CCharAnimMemoryMetrics.cpp: - .text start:0x802F7C88 end:0x802F7D44 + .text start:0x802F7C88 end:0x802F7CA8 .sbss start:0x805A94F8 end:0x805A9500 Kyoto/Animation/CCharLayoutInfo.cpp: - .text start:0x802F7D44 end:0x802F8E2C + .text start:0x802F7CA8 end:0x802F8E2C .rodata start:0x803D7008 end:0x803D7010 .data start:0x803ED600 end:0x803ED610 .sdata start:0x805A89B0 end:0x805A89B8 diff --git a/config/GM8E01_01/symbols.txt b/config/GM8E01_01/symbols.txt index 17be688a..58a4a7af 100644 --- a/config/GM8E01_01/symbols.txt +++ b/config/GM8E01_01/symbols.txt @@ -21929,7 +21929,7 @@ lbl_805A94E4 = .sbss:0x805A94E4; // type:object size:0x4 data:4byte lbl_805A94E8 = .sbss:0x805A94E8; // type:object size:0x1 data:byte lbl_805A94EC = .sbss:0x805A94EC; // type:object size:0x4 data:4byte lbl_805A94F0 = .sbss:0x805A94F0; // type:object size:0x8 data:byte -lbl_805A94F8 = .sbss:0x805A94F8; // type:object size:0x8 data:4byte +sTotalSize__22CCharAnimMemoryMetrics = .sbss:0x805A94F8; // type:object size:0x4 data:4byte FatalFunc = .sbss:0x805A9500; // type:object size:0x4 scope:local data:byte lbl_805A9504 = .sbss:0x805A9504; // type:object size:0x1 data:byte lbl_805A9508 = .sbss:0x805A9508; // type:object size:0x1 data:byte diff --git a/configure.py b/configure.py index 6c292007..27b6374b 100755 --- a/configure.py +++ b/configure.py @@ -1382,7 +1382,7 @@ config.libs = [ MatchingFor("GM8E01_00", "GM8E01_01"), "Kyoto/Animation/CBoolPOINode.cpp", ), - Object(NonMatching, "Kyoto/Animation/CCharAnimMemoryMetrics.cpp"), + Object(MatchingFor("GM8E01_00", "GM8E01_01"), "Kyoto/Animation/CCharAnimMemoryMetrics.cpp"), Object(NonMatching, "Kyoto/Animation/CCharLayoutInfo.cpp"), Object(NonMatching, "Kyoto/Animation/CFBStreamedAnimReader.cpp"), Object(NonMatching, "Kyoto/Animation/CFBStreamedCompression.cpp"), diff --git a/include/Kyoto/Animation/CCharAnimMemoryMetrics.hpp b/include/Kyoto/Animation/CCharAnimMemoryMetrics.hpp index 06fd8161..2d528018 100644 --- a/include/Kyoto/Animation/CCharAnimMemoryMetrics.hpp +++ b/include/Kyoto/Animation/CCharAnimMemoryMetrics.hpp @@ -13,6 +13,10 @@ public: static void AddToTotalSize(uint size, EAnimSubSystem subSystem); static void SubtractFromTotalSize(uint size, EAnimSubSystem subSystem); + static uint GetTotalSize(); + +private: + static uint sTotalSize; }; #endif // _CCHARANIMMEMORYMETRICS diff --git a/include/MetroidPrime/Player/CPlayer.hpp b/include/MetroidPrime/Player/CPlayer.hpp index 3cafd8ba..679e469b 100644 --- a/include/MetroidPrime/Player/CPlayer.hpp +++ b/include/MetroidPrime/Player/CPlayer.hpp @@ -69,7 +69,7 @@ class CPlayer : public CPhysicsActor, public TOneStatic< CPlayer > { }; CPlayerStuckTracker(); - ~CPlayerStuckTracker(); + //~CPlayerStuckTracker(); void AddState(EPlayerState, const CVector3f&, const CVector3f&, const CVector2f&); bool IsPlayerStuck(); void ResetStats(); diff --git a/src/Kyoto/Animation/CCharAnimMemoryMetrics.cpp b/src/Kyoto/Animation/CCharAnimMemoryMetrics.cpp new file mode 100644 index 00000000..80e5ac0b --- /dev/null +++ b/src/Kyoto/Animation/CCharAnimMemoryMetrics.cpp @@ -0,0 +1,13 @@ +#include "Kyoto/Animation/CCharAnimMemoryMetrics.hpp" + +uint CCharAnimMemoryMetrics::sTotalSize = 0; + +void CCharAnimMemoryMetrics::AddToTotalSize(const uint size, EAnimSubSystem subSystem) { + sTotalSize += size; +} + +void CCharAnimMemoryMetrics::SubtractFromTotalSize(uint size, EAnimSubSystem subSystem) { + sTotalSize -= size; +} + +uint CCharAnimMemoryMetrics::GetTotalSize() { return sTotalSize; } \ No newline at end of file diff --git a/src/MetroidPrime/Player/CPlayer.cpp b/src/MetroidPrime/Player/CPlayer.cpp index e421f39c..ff937c24 100644 --- a/src/MetroidPrime/Player/CPlayer.cpp +++ b/src/MetroidPrime/Player/CPlayer.cpp @@ -3106,4 +3106,4 @@ bool CPlayer::IsEnergyLow(const CStateManager& mgr) const { bool CPlayer::IsTransparent() const { return x588_alpha < 1.f; } // TODO nonmatching & should be implicit -CPlayer::CPlayerStuckTracker::~CPlayerStuckTracker() {} +//CPlayer::CPlayerStuckTracker::~CPlayerStuckTracker() {}