Skip to content

CGameCamera & CBallCamera#45

Merged
encounter merged 6 commits intomainfrom
cameras
Mar 20, 2026
Merged

CGameCamera & CBallCamera#45
encounter merged 6 commits intomainfrom
cameras

Conversation

@encounter
Copy link
Copy Markdown
Member

No description provided.

@decomp-dev
Copy link
Copy Markdown

decomp-dev bot commented Mar 16, 2026

Report for GM8E01_48 (deed664 - c80992c)

No changes

Report for GM8E01_00 (deed664 - c80992c)

📈 Matched code: 34.40% (+0.43%, +17124 bytes)
📈 Matched data: 31.92% (+0.01%, +128 bytes)

✅ 52 new matches
Unit Item Bytes Before After
main/MetroidPrime/Cameras/CBallCamera CBallCamera::SplineIntersectTest(CMaterialList&, CStateManager&) const +1928 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::GetSurroundingPoints(int, rstl::reserved_vector<CVector3f, 4>&, rstl::reserved_vector<CVector3f, 4>&) +1600 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) +948 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::CalculateSplineLength() +824 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::ValidateCameraTransform(const CTransform4f&, const CTransform4f&) +788 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::Think(float, CStateManager&) +724 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdatePlayerMovement(float, CStateManager&) +692 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::GetInterpolatedSplinePointByTime(float, float) const +600 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::CGameCamera(TUniqueId, bool, const rstl::basic_string<char, rstl::char_traits<char>, rstl::rmemory_allocator>&, const CEntityInfo&, const CTransform4f&, float, float, float, float, TUniqueId, bool, int) +572 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::ClampLength(const CVector3f&, bool, const CMaterialFilter&, const CStateManager&) const +532 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::SetupColliders(rstl::vector<CCameraCollider, rstl::rmemory_allocator>&, float, float, float, int, float, float, float) +438 18.42% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingFixedCameras(float, CStateManager&) +404 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::SetState(CBallCamera::EBallCameraState, CStateManager&) +388 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::~CCameraSpline() +376 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::FindDesiredTransform(CVector3f, CStateManager&) +308 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ActivateFailSafe(float, CStateManager&) +288 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::Reset(int) +264 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::AddKnot(CVector3f, CVector3f) +256 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ComputeVelocity(const CVector3f&, const CVector3f&) const +252 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera rstl::vector<TUniqueId, rstl::rmemory_allocator>::operator=(const rstl::vector<TUniqueId, rstl::rmemory_allocator>&) +244 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::ConvertToScreenSpace(const CVector3f&) const +232 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::GetPerspectiveMatrix() const +228 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::UpdatePerspective(float) +220 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera rstl::vector<CCameraCollider, rstl::rmemory_allocator>::reserve(int) +210 8.02% 100.00%
main/MetroidPrime/Cameras/CBallCamera CCameraCollider::CCameraCollider(const CCameraCollider&) +176 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CCameraCollider::CCameraCollider(float, CVector3f, const CCameraSpring&, float) +168 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::ValidateLength(float) const +148 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingSpindleCameras(float, CStateManager&) +140 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingPathCameras(float, CStateManager&) +140 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) +136 0.00% 100.00%

...and 22 more new matches

🥀 1 broken match
Unit Item Bytes Before After
main/Kyoto/Particles/CElementGen CElementGen::BuildParticleSystemBounds() -3 100.00% 99.61%
📈 37 improvements in unmatched items
Unit Item Bytes Before After
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingColliders(float, CStateManager&) +4181 0.00% 80.97%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::FindDesiredPosition(float, float, CVector3f, CStateManager&, bool) +3274 0.00% 96.30%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::BuildSpline(CStateManager&) +2887 0.00% 90.34%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingTransitions(float, CStateManager&) +2548 0.00% 91.29%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::OverrideCameraInfo(CStateManager&) +1989 0.00% 90.12%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingFreeLook(float, CStateManager&) +1586 0.00% 90.15%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::FindClosestLengthOnSpline(float, CVector3f) const +1556 0.00% 90.94%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::GetInterpolatedSplinePointByLength(float) const +1359 0.00% 99.94%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::CheckFailSafe(float, CStateManager&) +1352 0.00% 89.23%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateTransform(const CVector3f&, const CVector3f&, float, CStateManager&) +1328 0.00% 91.99%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ResetSpline(CStateManager&) +1309 0.00% 84.37%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateLookAtPosition(float, CStateManager&) +1141 0.00% 79.90%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::CheckFailsafeFromMorphBallState(CStateManager&) const +1105 0.00% 64.55%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::GetFixedLookTarget(const CVector3f&, CStateManager&) const +962 0.00% 97.38%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::CalculateKnots(TUniqueId, const rstl::vector<SConnection, rstl::rmemory_allocator>&, CStateManager&) +940 0.00% 99.24%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::MoveCollisionActor(const CVector3f&, float, CStateManager&) +787 0.00% 91.11%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateCameraPositions(float, const CTransform4f&, const CTransform4f&) +743 0.00% 98.39%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ConstrainYawAngle(const CPlayer&, float, float, float, CStateManager&) const +676 0.00% 79.02%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateObjectTooCloseId(CStateManager&) +626 0.00% 97.20%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::CheckDoorProximity(const CVector3f&, const CStateManager&) +533 0.00% 98.85%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ConstrainElevationAndDistance(float&, float&, float, CStateManager&) +421 0.00% 75.32%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ProcessInput(const CFinalInput&, CStateManager&) +399 0.00% 99.97%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::TweenVelocity(const CVector3f&, const CVector3f&, float, float) +360 0.00% 98.10%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::InterpolateCameraElevation(const CVector3f&, float) const +305 0.00% 91.07%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ClampElevationToWater(const CVector3f&, CStateManager&) const +262 0.00% 99.39%
main/MetroidPrime/Cameras/CBallCamera .sdata2 +176 21.00% 85.66%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ShouldResetSpline(CStateManager&) const +149 0.00% 98.42%
main/MetroidPrime/ScriptObjects/CScriptSpindleCamera CScriptSpindleCamera::Think(float, CStateManager&) +66 96.98% 98.31%
main/MetroidPrime/Cameras/CGameCamera .sdata2 +64 0.00% 90.00%
main/MetroidPrime/Cameras/CBallCamera .sdata +63 63.68% 88.89%

...and 7 more improvements in unmatched items

📉 3 regressions in unmatched items
Unit Item Bytes Before After
main/MetroidPrime/Cameras/CPathCamera .sdata -7 54.76% 26.09%
main/MetroidPrime/Player/CSamusFaceReflection .sdata -1 26.67% 23.53%
main/MetroidPrime/ScriptObjects/CScriptSpindleCamera .sdata -1 59.26% 55.17%

Report for GM8E01_01 (deed664 - c80992c)

📈 Matched code: 33.27% (+0.38%, +15184 bytes)
📈 Matched data: 13.46% (+0.01%, +128 bytes)

✅ 49 new matches
Unit Item Bytes Before After
main/MetroidPrime/Cameras/CBallCamera CBallCamera::SplineIntersectTest(CMaterialList&, CStateManager&) const +1928 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) +948 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::CalculateSplineLength() +824 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::ValidateCameraTransform(const CTransform4f&, const CTransform4f&) +788 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::Think(float, CStateManager&) +724 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdatePlayerMovement(float, CStateManager&) +692 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::GetInterpolatedSplinePointByTime(float, float) const +600 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::CGameCamera(TUniqueId, bool, const rstl::basic_string<char, rstl::char_traits<char>, rstl::rmemory_allocator>&, const CEntityInfo&, const CTransform4f&, float, float, float, float, TUniqueId, bool, int) +572 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::ClampLength(const CVector3f&, bool, const CMaterialFilter&, const CStateManager&) const +532 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::SetupColliders(rstl::vector<CCameraCollider, rstl::rmemory_allocator>&, float, float, float, int, float, float, float) +438 18.42% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingFixedCameras(float, CStateManager&) +404 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::SetState(CBallCamera::EBallCameraState, CStateManager&) +388 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::~CCameraSpline() +376 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::FindDesiredTransform(CVector3f, CStateManager&) +308 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ActivateFailSafe(float, CStateManager&) +288 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::Reset(int) +264 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ComputeVelocity(const CVector3f&, const CVector3f&) const +252 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera rstl::vector<TUniqueId, rstl::rmemory_allocator>::operator=(const rstl::vector<TUniqueId, rstl::rmemory_allocator>&) +244 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::ConvertToScreenSpace(const CVector3f&) const +232 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::GetPerspectiveMatrix() const +228 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::UpdatePerspective(float) +220 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera rstl::vector<CCameraCollider, rstl::rmemory_allocator>::reserve(int) +210 8.02% 100.00%
main/MetroidPrime/Cameras/CBallCamera CCameraCollider::CCameraCollider(const CCameraCollider&) +176 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CCameraCollider::CCameraCollider(float, CVector3f, const CCameraSpring&, float) +168 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::ValidateLength(float) const +148 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingSpindleCameras(float, CStateManager&) +140 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingPathCameras(float, CStateManager&) +140 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera CGameCamera::AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) +136 0.00% 100.00%
main/MetroidPrime/Cameras/CGameCamera .data +128 0.00% 100.00%
main/MetroidPrime/Cameras/CBallCamera rstl::vector<CCameraCollider, rstl::rmemory_allocator>::push_back(const CCameraCollider&) +124 0.00% 100.00%

...and 19 more new matches

🥀 1 broken match
Unit Item Bytes Before After
main/Kyoto/Particles/CElementGen CElementGen::BuildParticleSystemBounds() -3 100.00% 99.61%
📈 36 improvements in unmatched items
Unit Item Bytes Before After
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingColliders(float, CStateManager&) +4181 0.00% 80.97%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::FindDesiredPosition(float, float, CVector3f, CStateManager&, bool) +3274 0.00% 96.30%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::BuildSpline(CStateManager&) +2887 0.00% 90.34%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingTransitions(float, CStateManager&) +2548 0.00% 91.29%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::OverrideCameraInfo(CStateManager&) +1989 0.00% 90.12%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateUsingFreeLook(float, CStateManager&) +1586 0.00% 90.15%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::FindClosestLengthOnSpline(float, CVector3f) const +1556 0.00% 90.94%
main/MetroidPrime/Cameras/CGameCamera CCameraSpline::GetInterpolatedSplinePointByLength(float) const +1359 0.00% 99.94%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::CheckFailSafe(float, CStateManager&) +1352 0.00% 89.23%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateTransform(const CVector3f&, const CVector3f&, float, CStateManager&) +1328 0.00% 91.99%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ResetSpline(CStateManager&) +1309 0.00% 84.37%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateLookAtPosition(float, CStateManager&) +1141 0.00% 79.90%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::CheckFailsafeFromMorphBallState(CStateManager&) const +1105 0.00% 64.55%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::GetFixedLookTarget(const CVector3f&, CStateManager&) const +962 0.00% 97.38%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::MoveCollisionActor(const CVector3f&, float, CStateManager&) +787 0.00% 91.11%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateCameraPositions(float, const CTransform4f&, const CTransform4f&) +743 0.00% 98.39%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ConstrainYawAngle(const CPlayer&, float, float, float, CStateManager&) const +676 0.00% 79.02%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::UpdateObjectTooCloseId(CStateManager&) +626 0.00% 97.20%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::CheckDoorProximity(const CVector3f&, const CStateManager&) +533 0.00% 98.85%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ConstrainElevationAndDistance(float&, float&, float, CStateManager&) +421 0.00% 75.32%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ProcessInput(const CFinalInput&, CStateManager&) +399 0.00% 99.97%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::TweenVelocity(const CVector3f&, const CVector3f&, float, float) +360 0.00% 98.10%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::InterpolateCameraElevation(const CVector3f&, float) const +305 0.00% 91.07%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ClampElevationToWater(const CVector3f&, CStateManager&) const +262 0.00% 99.39%
main/MetroidPrime/Cameras/CBallCamera .sdata2 +176 21.00% 85.66%
main/MetroidPrime/Cameras/CBallCamera CBallCamera::ShouldResetSpline(CStateManager&) const +149 0.00% 98.42%
main/MetroidPrime/ScriptObjects/CScriptSpindleCamera CScriptSpindleCamera::Think(float, CStateManager&) +66 96.98% 98.31%
main/MetroidPrime/Cameras/CGameCamera .sdata2 +64 0.00% 90.00%
main/MetroidPrime/Cameras/CBallCamera .sdata +63 63.68% 88.89%
main/MetroidPrime/BodyState/CBSCover CBSCover::Start(CBodyController&, CStateManager&) +37 87.92% 93.88%

...and 6 more improvements in unmatched items

📉 3 regressions in unmatched items
Unit Item Bytes Before After
main/MetroidPrime/Cameras/CPathCamera .sdata -7 54.76% 26.09%
main/MetroidPrime/Player/CSamusFaceReflection .sdata -1 26.67% 23.53%
main/MetroidPrime/ScriptObjects/CScriptSpindleCamera .sdata -1 59.26% 55.17%

@encounter encounter marked this pull request as ready for review March 20, 2026 04:26
@encounter encounter merged commit cbd919e into main Mar 20, 2026
6 checks passed
@encounter encounter deleted the cameras branch March 20, 2026 04:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant