fix(ui): reproduce long-idle item index wrap
The attract item animation computes `18 - phase` as a signed value without a lower bound. At phases 19 through 21, the subsequent 16-bit handle index wraps backward from the DAT801 table into DAT703, DAT702, and DAT701, copying each bitmap's upper 68x61 region into the item panel. Rust stopped drawing after phase 18 and hid this observable long-idle behavior. Render those three adjacent status crops and return to the inactive panel for later phases. Raise the deterministic simulation ceiling to 100,000 frames so the first wrapped phase at 10.94 minutes can be captured and inspected. Test Plan: - `cargo test --workspace --all-targets --all-features` -- 125 passed - `cargo clippy --workspace --all-targets --all-features -- -D warnings` -- passed - `rumdl check --flavor commonmark RECONSTRUCTION.md CHANGELOG.md` -- passed - `cargo run -- --simulate attract --step 78797 --screenshot /tmp/tdkpin-attract-wrap-19.png` -- passed; DAT703 crop visually inspected at 640x460 - `git diff --cached --check` -- passed
This commit is contained in:
@@ -55,6 +55,9 @@ and this project adheres to
|
||||
chases, magnetic flashes, five-record strip, four-point chase, DAT801-809
|
||||
item progression, and the circular `WELCOME TO THE MACHINE` BITMAP500
|
||||
marquee. Move gameplay item frames to their exact `(123,300)` destination.
|
||||
- Preserve the long-idle signed item-index wrap: phases 19-21 read the adjacent
|
||||
DAT703/DAT702/DAT701 handles and copy their upper 68x61 regions before later
|
||||
phases return to the inactive item panel.
|
||||
- Match central score/event side effects: every stored collision candidate
|
||||
clears its ball slot's capture age, Tilt suppresses all score and rule-record
|
||||
mutations, and active multiball doubles points before permanent Double can
|
||||
|
||||
Reference in New Issue
Block a user