fix(timing): batch state on original detail callbacks

Replace the host-frame 10 ms publication loop with the original timer matrix:
50/40/30/20/10 ms callbacks execute exactly 5/4/3/2/1 internal physics
substeps. Ball state, claw progression, and flipper geometry are now visible only
at the selected callback boundary rather than leaking intermediate substeps.

Separate flipper input flags from flipper position. Key changes are sampled by
the timer, then produce one delta edge, WAVE 2021, collision response, and
rendered position update after physics, matching the Win16 callback order. Clear
both input and position state on turn reset and keep tilt decay on the same timer
cadence.

Test Plan:
- `cargo test --all-targets` -- passed, 70 tests
- `cargo clippy --all-targets -- -D warnings` -- passed
- `rumdl check CHANGELOG.md README.md RECONSTRUCTION.md` -- passed
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-23 17:41:18 +02:00
parent 1f0085902c
commit 2549eaa459
5 changed files with 115 additions and 48 deletions
+3 -3
View File
@@ -64,9 +64,9 @@ validation runs.
| Sound | F12 | - |
The five original speed choices remain available in settings. Physics now uses
the original invariant 100 Hz millipixel substep, and claw animation follows the
recovered 50/40/30/20/10 ms timer choices. Setting-specific repaint batching
remains a presentation-only reconstruction boundary.
the original invariant 100 Hz millipixel substep, batched as 5/4/3/2/1 steps on
the recovered 50/40/30/20/10 ms callbacks. Claw animation, flipper edges, and
visible state publication follow the same selected callback cadence.
The help screen is the original artwork in English, German, French, Italian,
or Spanish. As instructed on that screen, double-clicking its upper-left exit