fix(scoring): restore marker comparison and hit sound order

The original score helper compares signed high words and unsigned low words,
which is a signed 32-bit comparison of the wrapped score bits. Rust used an
unsigned comparison and could award a media marker after the score crossed the
sign bit. Type-four trigger handling also queued WAVE 2004 after score mutation,
so it replaced WAVE 2007 when the same hit crossed an extra-ball threshold.

Use the binary's comparison semantics and dispatch the type-four hit sound
before both ordinary target and player-effect score mutations. Regression tests
cover both trigger paths, the exact monophonic event order, and a score with the
high bit set.

Test Plan:
- `cargo test --workspace --all-targets --all-features` -- 115 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:55:44 +02:00
parent 4a55150fc0
commit 50764f6151
3 changed files with 78 additions and 6 deletions
+4 -1
View File
@@ -153,11 +153,14 @@ and this project adheres to
- Dispatch the original per-call-site sound sequences instead of assigning one
guessed WAV to each logical event. This removes the nonexistent WAV 2022
playback and restores bank, trigger, capture, nudge, tilt, and drain cues.
Type-4 WAVE 2004 now precedes its score mutation so a simultaneously crossed
media marker leaves WAVE 2007 audible, as in the 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.
bank adds 100,000 to the secondary score. 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.