fix(attract): use remainder-driven item phases
Raw 1000:061c-063b divides the idle tick by 144, copies the remainder from CX:BX into AX:DX, and only then divides by 8. Readable C and Rust instead used an unbounded quotient equivalent to tick/1152, making DAT801-809 advance far too slowly and suggesting a nonexistent negative long-idle index. Use `(tick % 144) / 8` to repeat item states 0,1..9,8..1 every 144 callbacks. Remove the disproven long-idle status crops and restore the ten-minute simulator ceiling. Extend the C and Rust phase tests across the forward, reverse, and wrap boundaries. Test Plan: - raw instruction review at `1000:061c-063b` -- remainder transfer 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 - `rumdl check --flavor commonmark RECONSTRUCTION.md CHANGELOG.md` -- passed - `git diff --cached --check` -- passed
This commit is contained in:
@@ -94,6 +94,11 @@ 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.
|
||||
|
||||
## Reproducible gates
|
||||
|
||||
|
||||
Reference in New Issue
Block a user