fix(rules): scope double scoring to the active ball

The binary stores the diamond-bank double flag at receiver +0x0bdc and clears
it in normal_ball_end. Rust stored that flag on Player, so it incorrectly
survived every normal drain and player turn. The special effect-seven respawn
is intentionally different because it bypasses normal_ball_end.

Represent the flag as an explicit ball-double state on Game. Clear it only on
the normal ball-end path, preserve it through the special respawn, and make the
first completed diamond bank after a normal drain re-enable double scoring
without adding 100,000 secondary points. Keep the independent multiball factor,
so both active factors still stack to 4x.

Test Plan:
- `cargo test --workspace --all-targets --all-features` -- 117 passed
- `cargo clippy --workspace --all-targets --all-features -- -D warnings` -- passed
- `rumdl check --flavor commonmark RECONSTRUCTION.md CHANGELOG.md` -- passed
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-23 19:58:39 +02:00
parent df66530b86
commit 6e6b7f4c58
3 changed files with 55 additions and 19 deletions
+6 -4
View File
@@ -158,10 +158,12 @@ and this project adheres to
monophonic original.
- Advance media/extra-ball thresholds only from score additions, preserve
32-bit score wrapping, and restore the ninth-diamond ordering: its 24,464
award remains single, then permanent double scoring and all three magnetic
fields activate before the collision's static score. Every later completed
bank adds 100,000 to the secondary score. Marker comparisons retain the
binary's signed-high/unsigned-low 32-bit ordering after score wrap.
award remains single, then ball-scoped double scoring and all three magnetic
fields activate before the collision's static score. Further completed banks
during that ball add 100,000 to the secondary score; a normal ball end clears
the multiplier, while effect seven's special respawn preserves it. Marker
comparisons retain the binary's signed-high/unsigned-low 32-bit ordering
after score wrap.
- Match the original 640x460 window, native 16x28 score glyphs, and
`TDK Pinball Machine 1.00` title so the recovered artwork is presented
one-for-one instead of enlarged or resampled.