fix(attract): restore all remainder-driven cycles
The same raw Div32 pattern used by the item animation appears in every nested idle phase: after division by 32, 40, or 16, the binary copies the remainder from CX:BX before the second division. Readable C and Rust used quotients for targets, word quads, the record strip, and the four-point chase, turning short repeating chases into slow one-shot progressions. Use `%32/2`, `%32/4`, `%40/4`, and `%16/4` for those cycles alongside the already corrected `%144/8` items. Preserve the first-cycle phase-zero delay, then repeat each incremental overlay state exactly. Add C and Rust coverage at phase activation, reversal, deactivation, and wrap boundaries. Test Plan: - raw instruction review at `1000:01b7-063b` -- all remainder transfers confirmed - `cargo test --workspace --all-targets --all-features` -- 125 passed - `cargo clippy --workspace --all-targets --all-features -- -D warnings` -- passed - `bash original/tools/test_reconstructed_c.sh` -- passed - `python3 original/tools/audit_reconstruction.py --require-complete` -- passed with zero incomplete or unclassified units - `cargo run -- --simulate attract --step 145 --screenshot /tmp/tdkpin-attract-remainder.png` -- passed; visually inspected at 640x460 - `rumdl check --flavor commonmark RECONSTRUCTION.md CHANGELOG.md` -- passed - `git diff --cached --check` -- passed
This commit is contained in:
@@ -94,11 +94,12 @@ Wine record-57 transition `(75530,354765)/(3000,15)` to
|
||||
`(77369,356597)/(1839,1832)` with exact Real48 spin `-5.28`, plus record 72
|
||||
`(235348,356825)/(-3000,15)` to `(233253,358494)/(-2095,1669)` with spin
|
||||
`+5.46`, seal both paths and both relative slingshot chains.
|
||||
Raw `1000:061c-063b` further distinguishes the DOS divide outputs in the idle
|
||||
item animation: it copies the remainder of `tick / 144` from `CX:BX` and then
|
||||
divides that value by 8. The readable C and focused timer harness therefore use
|
||||
`(tick % 144) / 8`, producing the repeating `0,1..9,8..1` sequence without the
|
||||
previously inferred unbounded quotient.
|
||||
Raw `1000:01b7-063b` further distinguishes the DOS divide outputs throughout
|
||||
the idle animation: each nested phase copies the first division's remainder
|
||||
from `CX:BX` before its second division. The readable C and focused timer
|
||||
harness therefore use target `%32/2`, word-quad `%32/4`, record-strip `%40/4`,
|
||||
four-point `%16/4`, and item `%144/8` cycles. This produces the repeating
|
||||
animation rather than the previously inferred unbounded quotients.
|
||||
|
||||
## Reproducible gates
|
||||
|
||||
|
||||
Reference in New Issue
Block a user