docs: close #161 (user-verified) - landing-pose fix b1cf0102; next up #162 adjudication + #163 diag strip
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
b1cf01029a
commit
584ad0a8f6
2 changed files with 51 additions and 56 deletions
|
|
@ -71,49 +71,6 @@ actually steps at (Player_Move.cs / Creature GetRunRate usage).
|
||||||
**Where:** GameWindow `TickRemoteMoveTo` + the L.3 M2 queue chase vs
|
**Where:** GameWindow `TickRemoteMoveTo` + the L.3 M2 queue chase vs
|
||||||
`MotionTableDispatchSink` dispatch speed. Related: TS-33 cadence rows.
|
`MotionTableDispatchSink` dispatch speed. Related: TS-33 cadence rows.
|
||||||
|
|
||||||
## #161 — Remote jump landing holds the falling pose (no landing anim)
|
|
||||||
|
|
||||||
**Status:** FIX LANDED (2026-07-03) — awaiting user live verify.
|
|
||||||
**Root cause (three legs, all retail-decode):**
|
|
||||||
1. **Apply-pass params (the big one):** retail's `apply_interpreted_movement`
|
|
||||||
runs ALL its dispatches with `ModifyInterpretedState=false` — the ctor
|
|
||||||
default 0x1EE0F is REWRITTEN by a bitfield store the BN decomp smears
|
|
||||||
into the mush expression at raw 305778 (`(word & 0x37ff) |
|
|
||||||
cancelMoveTo<<15 | disableJump<<17`; 0x37ff clears SetHoldKey/
|
|
||||||
ModifyInterpretedState/CancelMoveTo). ACE MotionInterp.cs:444-449
|
|
||||||
confirms. Our pass dispatched with ctor defaults (modify=true), so the
|
|
||||||
airborne Falling substitution CLOBBERED `InterpretedState.ForwardCommand`
|
|
||||||
→ HitGround's re-apply re-dispatched Falling instead of the preserved
|
|
||||||
pre-fall wire command. (The handoff's "HitGround raw @305949" was a
|
|
||||||
mislabel — 305949 is inside `move_to_interpreted_state`; the real
|
|
||||||
HitGround is 0x00528ac0 → `apply_current_movement(0,0)`.) Bonus decode:
|
|
||||||
raw arg3 = DisableJumpDuringLink, so every `(N, 0)` caller means
|
|
||||||
allowJump=TRUE — all caller polarities fixed. The W6 entry-cache (whose
|
|
||||||
"retail self-heals via hoisted registers" theory was this same
|
|
||||||
misreading) is deleted; live field reads are retail semantics now that
|
|
||||||
the pass cannot write state.
|
|
||||||
2. **Landing-order:** both GameWindow landing blocks cleared the Gravity
|
|
||||||
state bit BEFORE `rm.Motion.HitGround()`, whose verbatim `state & 0x400`
|
|
||||||
gate then no-opped the entire retail re-apply (retail never clears
|
|
||||||
GRAVITY on landing). The UP-driven landing block never called HitGround
|
|
||||||
at all. Both now: transients → `Motion.HitGround()` → `MoveTo.HitGround()`
|
|
||||||
→ THEN the DR bookkeeping gravity-clear.
|
|
||||||
3. **K-fix17 answered (user Q3):** its SetCycle DID execute — and re-set
|
|
||||||
the Falling cycle, because it read the leg-1-clobbered ForwardCommand
|
|
||||||
(0x40000015 ≠ 0, so the Ready fallback never fired). Both SetCycle
|
|
||||||
adaptation blocks deleted — superseded by the retail HitGround path,
|
|
||||||
which also plays the proper Falling→X landing LINK animation SetCycle
|
|
||||||
never did. Also fixed en route: `copy_movement_from` omitted
|
|
||||||
`current_style` (raw 0051e757 copies it first) — the landing re-apply's
|
|
||||||
style dispatch read a stale style.
|
|
||||||
**Tests:** `MotionInterpreterFunnelTests.HitGround_AfterFall_
|
|
||||||
RedispatchesPreservedForward_ExitsFalling` (full lifecycle) + the flipped
|
|
||||||
`AirborneBody_NoCycleDispatches_OnlyTurnStop` state assertion (it had
|
|
||||||
PINNED the bug value 0x40000015 — noted in-file). Suite 3,964 green.
|
|
||||||
**Verify:** retail mover jumps in place near acdream observer → lands →
|
|
||||||
legs exit falling pose into idle WITHOUT pressing any key; jump while
|
|
||||||
running → lands into run cycle.
|
|
||||||
|
|
||||||
## #164 — UM action-replay dispatches drop the per-action Autonomous bit
|
## #164 — UM action-replay dispatches drop the per-action Autonomous bit
|
||||||
|
|
||||||
**Status:** OPEN (2026-07-03, filed during #161)
|
**Status:** OPEN (2026-07-03, filed during #161)
|
||||||
|
|
@ -5788,6 +5745,44 @@ outdoors at the angle that previously erased it.
|
||||||
|
|
||||||
# Recently closed
|
# Recently closed
|
||||||
|
|
||||||
|
## #161 — Remote jump landing holds the falling pose (no landing anim)
|
||||||
|
|
||||||
|
**Status:** DONE (2026-07-03, `b1cf0102`) — user live-verified ("Yes works!").
|
||||||
|
Three legs, all retail-decode, zero adaptations added:
|
||||||
|
1. **Apply-pass params:** retail's `apply_interpreted_movement` runs ALL its
|
||||||
|
dispatches with `ModifyInterpretedState=false` — the ctor default 0x1EE0F
|
||||||
|
is REWRITTEN by a bitfield store the BN decomp smears into the mush
|
||||||
|
expression at raw 305778 (`(word & 0x37ff) | cancelMoveTo<<15 |
|
||||||
|
disableJump<<17`; 0x37ff clears SetHoldKey/ModifyInterpretedState/
|
||||||
|
CancelMoveTo). ACE MotionInterp.cs:444-449 confirms. Our pass dispatched
|
||||||
|
with ctor defaults → the airborne Falling substitution clobbered
|
||||||
|
`InterpretedState.ForwardCommand` → HitGround's re-apply re-dispatched
|
||||||
|
Falling instead of the preserved pre-fall wire command. (The retail exit:
|
||||||
|
fwd is PRESERVED through the fall; HitGround re-dispatches it; the motion
|
||||||
|
table plays the Falling→X landing link — no wire input needed.) Bonus
|
||||||
|
decode: raw arg3 = DisableJumpDuringLink, so `(N, 0)` callers mean
|
||||||
|
allowJump=TRUE — all 9 caller polarities fixed; the W6 entry-cache
|
||||||
|
(built on the wrong "retail self-heals via hoisted registers" theory)
|
||||||
|
deleted; `copy_movement_from`'s `current_style` copy (raw 0051e757)
|
||||||
|
added to the UM flat-copy. NOTE: the handoff's "HitGround raw @305949"
|
||||||
|
was a mislabel — 305949 is inside `move_to_interpreted_state`; real
|
||||||
|
HitGround is 0x00528ac0 → `apply_current_movement(0,0)`.
|
||||||
|
2. **Landing order:** both GameWindow landing blocks cleared the Gravity
|
||||||
|
state bit BEFORE `Motion.HitGround()`, whose verbatim `state & 0x400`
|
||||||
|
gate no-opped the whole retail re-apply (retail never clears GRAVITY on
|
||||||
|
landing); the UP-driven block never called HitGround at all. Both now:
|
||||||
|
transients → `Motion.HitGround()` → `MoveTo.HitGround()` → THEN the DR
|
||||||
|
gravity-clear (register row AP-81; retire in R6).
|
||||||
|
3. **K-fix17 (the handoff's Q3):** its SetCycle DID execute — and re-set
|
||||||
|
the Falling cycle, because it read the leg-1-clobbered ForwardCommand
|
||||||
|
(0x40000015 ≠ 0 defeated the Ready fallback). Both SetCycle blocks
|
||||||
|
deleted — superseded by the retail path, which also plays the landing
|
||||||
|
LINK animation SetCycle never did.
|
||||||
|
Tests: `HitGround_AfterFall_RedispatchesPreservedForward_ExitsFalling`
|
||||||
|
lifecycle pin; `AirborneBody_NoCycleDispatches_OnlyTurnStop` assertion
|
||||||
|
flipped (it had PINNED the bug value). Suite 3,964 green. Spawned #164
|
||||||
|
(action-replay Autonomous bit).
|
||||||
|
|
||||||
## #150 — Open doors still blocked at the threshold (ethereal target not skipped in the step-down pass)
|
## #150 — Open doors still blocked at the threshold (ethereal target not skipped in the step-down pass)
|
||||||
|
|
||||||
**Status:** DONE (2026-06-25) — after the retail collision sweep, an OPEN door
|
**Status:** DONE (2026-06-25) — after the retail collision sweep, an OPEN door
|
||||||
|
|
|
||||||
|
|
@ -36,19 +36,19 @@ whole gate state — it is how both wedges were pinned.
|
||||||
|
|
||||||
## OPEN — next session picks up here (full trails in docs/ISSUES.md)
|
## OPEN — next session picks up here (full trails in docs/ISSUES.md)
|
||||||
|
|
||||||
1. **#161 — remote jump landing stuck in the falling pose** (retested
|
1. ~~**#161 — remote jump landing stuck in the falling pose**~~ **CLOSED
|
||||||
post-TS-40: still broken). Evidence in the issue: `VU.land` fires but
|
2026-07-03 `b1cf0102`, user live-verified.** The prime suspect was
|
||||||
the first post-landing UM still sees `seq now motion=0x40000015`; the
|
right; the mechanism was a BN decomp artifact: retail REWRITES the
|
||||||
char recovers only via subsequent wire UMs; window-focus change also
|
apply pass's params word (raw 305778 smeared store, mask 0x37ff →
|
||||||
unsticks it (a frame-advance/big-dt hint). PRIME SUSPECT: the funnel's
|
`ModifyInterpretedState=false`; ACE MotionInterp.cs:444-449 confirms),
|
||||||
airborne branch dispatches Falling via `DoInterpretedMotion` with
|
so retail PRESERVES interpreted fwd through the fall and HitGround
|
||||||
ctor-default `ModifyInterpretedState=true` → interpreted fwd BECOMES
|
re-dispatches it (the landing-link exit). Also: both landing blocks
|
||||||
0x40000015 → `HitGround`'s `apply_current_movement` (interpreted branch
|
cleared Gravity BEFORE `Motion.HitGround()` (whose verbatim state&0x400
|
||||||
for remotes) re-dispatches FALLING instead of the pre-fall wire command.
|
gate then no-opped — fixed order, AP-81); K-fix17's SetCycle DID
|
||||||
CHECK RETAIL FIRST: does raw ~305730's falling dispatch really write
|
execute but re-set the clobbered Falling command — both copies deleted.
|
||||||
interpreted fwd; what exits Falling on a retail REMOTE landing
|
NOTE: "HitGround raw @305949" below was a mislabel (that line is inside
|
||||||
(HitGround raw @305949, the `apply_current_movement(this, 1, ...)`
|
`move_to_interpreted_state`; real HitGround = 0x00528ac0 →
|
||||||
arg semantics); does K-fix17's landing SetCycle even execute (probe it).
|
`apply_current_movement(0,0)`). Full trail: ISSUES Recently-closed #161.
|
||||||
2. **#162 — glide-class adjudication (PENDING USER)**: ACE re-broadcasts
|
2. **#162 — glide-class adjudication (PENDING USER)**: ACE re-broadcasts
|
||||||
every mover MoveToState to observers as autonomous mt-0
|
every mover MoveToState to observers as autonomous mt-0
|
||||||
(MovementData.cs:162 — ACE's own "this is a hack" comment;
|
(MovementData.cs:162 — ACE's own "this is a hack" comment;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue