been pulling animations out of gta san andreas for my own characters, and the format taught me something i keep repeating to myself since.
quaternion, time and root movement sit in the file as integers, divided by constants. every write-up out there says the time divisor is 1024 or 2048. take those and the whole file, fifteen hundred animations, lasts 0.36 seconds. absurd, but the absurdity only shows up if you stop and ask what the number means.
the real divisor is 60. two independent things confirmed it. the typical gap between keyframes lands on exactly 30 frames per second, a round number for a 2004 game. and the root moves at 1.52 m/s in a walk clip, 4.3 m/s in a run. that second check is the strong one, because it tests the time divisor and the movement divisor together. get either wrong and the speed goes stupid.
so i stopped checking my parser against the spec. the spec was typed by a person who was guessing too. unit-length quaternions confirm the field layout, human walking speed confirms the divisors, monotonic time confirms the ordering. three of those beat any wiki.
and the check has to live outside the parser. logs are useless here. a clip that slid the character 1.75 meters sideways printed perfectly healthy logs the whole time.
