feat(L.2g-S2a): CMotionInterp inbound funnel in Core + live-retail conformance harness (DEV-1 core)
Port the inbound funnel verbatim into MotionInterpreter: - MoveToInterpretedState (0x005289c0): raw-state style adopt, FLAT copy_movement_from overwrite, apply, then action replay under the 15-bit server_action_stamp wraparound gate (local player skips its own autonomous echoes). - ApplyInterpretedMovement (0x00528600): my_run_rate cache from RunForward speed, then retail dispatch order style -> forward-or- Falling -> sidestep(-stop) -> turn(-stop), turn early-return. - DispatchInterpretedMotion (0x00528360): contact-gated sink dispatch (IInterpretedMotionSink = the GetObjectSequence backend the App implements); blocked non-action motions take the apply-only path — retail's real mechanism behind K-fix17's 'airborne remotes keep their cycle' empirical guard. - contact_allows_move REWRITTEN VERBATIM from the real 0x00528240 (pseudo-C 305471): Falling/0x40000011 + turns always allowed, non-creature weenies + no-gravity bypass, else Contact+OnWalkable. The previous body conflated jump_charge_is_allowed (0x00527a50) posture checks — the 2026-06-04 deep-dive divergence, now retired. Six tests that pinned the misattributed behavior corrected (grounded posture does NOT block motion; airborne accepts Falling/turns only). - IWeenieObject.IsCreature (default true) for the gate's non-creature bypass. Conformance harness (the user-requested 'prove it equals retail' apparatus, layer 1): RetailObserverTraceConformanceTests parses the LIVE cdb trace of a retail observer (Fixtures/l2g-observer-trace.log, captured via tools/cdb/l2g-observer.cdb) into 183 golden cases — each [MTIS] input state replayed through our funnel must produce retail's exact [DIM] dispatch sequence. 183/183 conformant, including the airborne jump case (replayed contact-free; pre-gate vs post-gate accounting + HitGround second-pass truncation documented in-test). 13 synthetic funnel tests cover the branches the trace missed (actions, stamps, longjump, sidestep). GameWindow integration (S2b) follows; funnel not yet wired. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
97e098bf91
commit
7b0cbbda2c
6 changed files with 3693 additions and 55 deletions
2953
tests/AcDream.Core.Tests/Fixtures/l2g-observer-trace.log
Normal file
2953
tests/AcDream.Core.Tests/Fixtures/l2g-observer-trace.log
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue