fix(game): restore the 281-frame panel sequence

Replace the immediate five-hole cleanup with the original 281-callback panel
state machine. Suspend physics, clear contact/item state at the recovered
boundaries, and emit WAVE 2013, WAVE 2012, and stop events at frames
1/45/58/66/129/159/222/230/238 before resuming after cleanup.

Decode DAT600's four AND/OR mask-image pairs into transparent native textures
and render all nine phase formulas with the original source rectangles,
destination offsets, variable heights, and opaque wheel copies. Add a `panel`
simulation scenario for deterministic trace and framebuffer validation.

Test Plan:
- `cargo test --all-targets` -- passed, 72 tests
- `cargo clippy --all-targets -- -D warnings` -- passed
- `rumdl check CHANGELOG.md README.md RECONSTRUCTION.md` -- passed
- rendered panel frames 1, 66, 159, 238, and completion -- visually verified
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-23 17:49:04 +02:00
parent 6337291461
commit 4b84460c93
7 changed files with 303 additions and 11 deletions
+2 -2
View File
@@ -44,8 +44,8 @@ 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`, `claw-1`, `claw-6`,
`claw-7`, and `claw-18`; `--seed N` fixes random choices. `autoplay` charges
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.