acdream/tools
Erik b1d8e122ed research(motion): cdb live trace of retail walk-to-run transition
Live cdb trace of retail acclient.exe (v11.4186, PDB-matched) capturing
the exact function call sequence for a direct walk-to-run motion
transition where the user holds shift+W (walk) then releases SHIFT
while still holding W (transition to run).

Trace bps on:
- CPhysicsObj::DoInterpretedMotion (0x0050EA70)
- CPartArray::DoInterpretedMotion  (0x00518750)
- MotionTableManager::PerformMovement (0x0051C0B0)
- MotionTableManager::add_to_queue (0x0051BFE0)
- MotionTableManager::truncate_animation_list (0x0051BCA0)
- CMotionTable::DoObjectMotion (0x00523E90)
- CMotionTable::StopObjectMotion (0x00523EC0)

Captured trace at tools/cdb-scripts/walk_run_motion_trace.log shows
the precise walk-to-run sequence:

  [79] CPhysicsObj::DoInterpretedMotion: motion=45000005   walk start
  [82] CMotionTable::DoObjectMotion: motion=45000005
  [83] MotionTableManager::add_to_queue: arg1=45000005 arg2=00000001

  [89] CPhysicsObj::DoInterpretedMotion: motion=44000007   run start
  [92] CMotionTable::DoObjectMotion: motion=44000007
  [93] MotionTableManager::add_to_queue: arg1=44000007 arg2=00000001

  [104] CMotionTable::StopObjectMotion: motion=44000007    run end

Critical structural finding for #L.4-walk-run:

  Retail does NOT call truncate_animation_list during the walk→run
  transition. truncate_animation_list never fires in the entire 200-hit
  trace. Retail also does NOT call StopObjectMotion(WalkForward) before
  add_to_queue(RunForward). Retail just appends the new motion to the
  queue and lets MotionTableManager (and its CheckForCompletedMotions /
  remove_redundant_links per-tick cleanup, not yet traced) handle the
  natural progression.

  acdream's AnimationSequencer.SetCycle aggressively calls
  ClearCyclicTail() at line 430 BEFORE enqueuing the new cycle, which
  destroys the in-flight walk cycle's frames. The new run cycle is
  enqueued but _currNode is left in a state that doesn't smoothly
  continue — visible to the user as "it just blips forward walking,
  AS SOON as press another key like turning, its starts running"
  (the next motion event re-fires SetCycle which finally aligns state).

  Fix is a structural refactor of SetCycle to mirror retail's
  "additive queue with auto-cleanup" semantics. Out of scope for this
  research commit; filed as #L.4 in the next ISSUES.md entry.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-03 16:54:34 +02:00
..
cdb-scripts research(motion): cdb live trace of retail walk-to-run transition 2026-05-03 16:54:34 +02:00
dump-keymap docs(research): canonical retail keymap + dump-keymap tool 2026-04-25 23:01:58 +02:00
ghidra_project feat(core): port decompiled AC client physics — CollisionPrimitives + PhysicsBody 2026-04-12 23:54:51 +02:00
pdb-extract feat(physics): #32 L.5 30Hz physics tick + retail debugger toolchain (#35) + Phase 3 retail-faithful kill_velocity 2026-04-30 22:41:12 +02:00
PesChainAudit docs(research): sky/weather investigation handoff + diagnostic tools 2026-04-26 21:40:34 +02:00
RainMeshProbe feat(sky): load Setup-backed (0x020xxx) sky objects via SetupMesh.Flatten 2026-04-27 23:24:09 +02:00
RetailTimeProbe sky(phase-8): retail-faithful night sky + README refresh 2026-04-24 20:34:36 +02:00
SkyObjectInspect sky(phase-8): retail-faithful night sky + README refresh 2026-04-24 20:34:36 +02:00
StarsProbe tools(probe): add StarsProbe to dump every SkyObject's geometry + UVs 2026-04-26 22:19:28 +02:00
TextureDump docs(research): sky/weather investigation handoff + diagnostic tools 2026-04-26 21:40:34 +02:00
WeatherEnumerator docs(research): sky/weather investigation handoff + diagnostic tools 2026-04-26 21:40:34 +02:00
WeatherSetupProbe docs(research): sky/weather investigation handoff + diagnostic tools 2026-04-26 21:40:34 +02:00
decompile_acclient.py research: decompile acclient.exe terrain/physics via Ghidra headless 2026-04-12 23:18:27 +02:00
decompile_full.py research: full acclient.exe decompilation — 22,225 functions, 688K lines 2026-04-12 23:25:51 +02:00
DecompileTargets.java research: decompile acclient.exe terrain/physics via Ghidra headless 2026-04-12 23:18:27 +02:00
ghidra_decompile.py research: decompile acclient.exe terrain/physics via Ghidra headless 2026-04-12 23:18:27 +02:00