From 9c4e78e9da09fe338d3fa0bd4e9d2aa28a5804a9 Mon Sep 17 00:00:00 2001 From: cristian64 Date: Sat, 25 Jul 2026 12:49:56 +0100 Subject: [PATCH] animator: Force data ordering and mark as matching. The theory is that data ordering was altered by _unused_ functions that were part of the compilation in the original game but were ultimately stripped of the binary. The symbols do not appear in the program, but the data remains. The solution is to define a counter unused function that defines the data in the order in which it appears in the original data section. --- configure.py | 2 +- src/Osako/animator.cpp | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/configure.py b/configure.py index e6f4dcbc..38bcc7ba 100755 --- a/configure.py +++ b/configure.py @@ -1230,7 +1230,7 @@ def MatchingFor(*versions): [], [ Object(Matching, "Osako/clock.cpp"), - Object(NonMatching, "Osako/animator.cpp"), + Object(Matching, "Osako/animator.cpp"), Object(Matching, "Osako/testApp.cpp"), Object(Matching, "Osako/shadowModel.cpp"), Object(Matching, "Osako/GameApp.cpp"), diff --git a/src/Osako/animator.cpp b/src/Osako/animator.cpp index 05af8bff..4327850a 100644 --- a/src/Osako/animator.cpp +++ b/src/Osako/animator.cpp @@ -1,5 +1,10 @@ #include "Osako/animator.h" +static void unused_force_data_ordering(double *a) +{ + *a = 4503601774854144.0; +} + void AnimatorWind::start() { mAnimationState = 1; } @@ -10,7 +15,13 @@ void AnimatorWind::stop() { void AnimatorWind::reset() { mAnimationState = 0; - mFrameCounter = 0; + mFrameCounter = 0.0f; +} + +static void unused_force_data_ordering2(float *a) +{ + *a = 0.0f; + *a = 60.0f; } void LoopAnimatorWind::update() {