Erik
|
98f58db913
|
feat(R2-Q2): verbatim CMotionTable — the GetObjectSequence dispatcher
CMotionTable (Core/Physics/Motion, 692 lines) wrapping the dat
MotionTable, per r2-motiontable-decomp.md + Q0 pins:
- GetObjectSequence (0x00522860): entry guards; modifier-class no-op
fast path; Branch 1 style-change (exit link + style link +
default_style double-hop + re_modify); Branch 2 cycle (UNCONDITIONAL
default-style retry per label_522ae6, is_allowed gate, same-substate
re-speed fast path = ChangeCycleSpeed + SubtractMotion(old) +
CombineMotion(new), clear-modifiers bit0, direct-link vs !SameSign
double-hop, A2 signedSpeed, outgoing-modifier re-registration,
re_modify, outTicks per A3); Branch 3 action (direct link OR the
4-layer out-and-back with the base cycle re-added at the OLD
substate_mod; outTicks WITHOUT ACE's double-count, A4-#1); Branch 4
modifier (PHYSICS-ONLY CombineMotion + AddModifier stop-then-re-add —
the AP-73 retirement mechanism).
- get_link (A1 pin: either-negative -> swapped keys — the adapter's
field-validated port re-homed), is_allowed (Bitfield & 2; A5
CONFIRMED on DatReaderWriter 2.1.7), re_modify (deep-copy snapshot
termination bound), StopSequenceMotion, SetDefaultState,
DoObjectMotion/StopObjectMotion/StopObjectCompletely (A4-#4 return).
- Free functions: AddMotion (UNCONDITIONAL velocity/omega set — the
G17 core), CombineMotion/SubtractMotion (physics-only),
ChangeCycleSpeed (verbatim incl. the A4-#2 retail gap), SameSign.
44 conformance tests pinning H1/H4/H5/H7/H8/H10-H14 + all Q0 pins,
incl. the run-while-turning gated-cycle -> Branch-4 physics-only test
(retail's actual turn-blend mechanism) and missing-cycle ->
sequence-untouched (retires the HasCycle fallback rationale).
Implemented by a dedicated agent against the Q2 spec; diff + key
branches reviewed, suite re-verified (3934 green) before commit.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 20:48:26 +02:00 |
|