fix(game): restore six-state target rotation

Replace the free-running 68x60 wheel animation with the original six-callback
91x90 DAT600 mechanism. Start WAVE 2011 at state one, advance once per selected
detail timer, and rotate the five per-player lock contact/item values exactly at
state six.

Decode the 17x17 DAT600 target image/mask pair and render all six recovered
position sets over the correct atlas or overlay-B base. Preserve filled targets
in their resting state after rotation and add a deterministic `targets` scenario
for trace and framebuffer validation.

Test Plan:
- `cargo test --all-targets` -- passed, 74 tests
- `cargo clippy --all-targets -- -D warnings` -- passed
- `rumdl check CHANGELOG.md README.md RECONSTRUCTION.md` -- passed
- rendered all six target-rotation states -- visually verified
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-23 17:53:40 +02:00
parent 4b84460c93
commit 096d923c79
7 changed files with 151 additions and 43 deletions
+4 -4
View File
@@ -44,10 +44,10 @@ cargo run -- --simulate claw-6 --at 0.15 \
```
Use `--step N` instead of `--at SECONDS` to reproduce one exact update. The
available scenarios are `autoplay`, `launcher`, `flippers`, `panel`, `claw-1`,
`claw-6`, `claw-7`, and `claw-18`; `--seed N` fixes random choices. `autoplay` charges
each ball and operates the flippers from live ball position for long end-to-end
validation runs.
available scenarios are `autoplay`, `launcher`, `flippers`, `panel`, `targets`,
`claw-1`, `claw-6`, `claw-7`, and `claw-18`; `--seed N` fixes random choices.
`autoplay` charges each ball and operates the flippers from live ball position
for long end-to-end validation runs.
## Original and modern controls