research: full animation pseudocode from decompiled acclient.exe
Complete pseudocode translation of the retail AC client's animation system, extracted from chunk_00520000.c. Covers: - Sequence::update_internal (1021 bytes, the core frame advance loop) - Sequence::advance_to_next_animation (node transitions) - Sequence::append_animation (queue management) - MotionTableManager::PerformMovement (1878 bytes, full state machine) - AddAnimationsToSequence (transition link → sequence nodes) - GetStartFramePosition / GetEndFramePosition (reverse playback support) - AdjustNodeSpeed (negative speed = swapped start/end frames) Key findings: - framePosition is a 64-bit DOUBLE, not float - Negative speedScale swaps startFrame↔endFrame at the node level - update_internal handles both forward and reverse in one loop - Frame triggers fire at every integer boundary crossing - The keyframe slerp lives in the renderer, not the sequencer Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ca7ae45518
commit
8402aee703
2 changed files with 1142 additions and 128 deletions
1100
docs/research/acclient_animation_pseudocode.md
Normal file
1100
docs/research/acclient_animation_pseudocode.md
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue