Files
tdkpin/tdkpin-rs/CHANGELOG.md
T
ddidderr 3fa3e29ad3 fix(scores): restore per-player high-score flow
The rewrite waited for the whole game to finish, selected only the maximum
player score, and sorted entries as ordinary unsigned integers. The original
checks each player immediately when their own last ball is lost and compares
scores by signed high word then unsigned low word.

Emit a candidate at each player elimination, prompt qualifying players with the
original `TDK Pinball Player` value, show the table, and then either resume the
next player or return to attract mode. Preserve source table order on import and
insert only strictly qualifying scores with the original word-wise comparator;
keep JSON as the host persistence representation.

Test Plan:
- `cargo test --all-targets` -- passed, 60 tests
- `cargo clippy --all-targets -- -D warnings` -- passed
- `rumdl check tdkpin-rs/CHANGELOG.md tdkpin-rs/RECONSTRUCTION.md` -- passed
- `git diff --cached --check` -- passed
2026-08-23 17:00:12 +02:00

43 lines
2.4 KiB
Markdown

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Fixed
- Check every player against the high-score table when their own last ball is
lost, prefill the original `TDK Pinball Player` name, show the table before
resuming the next player, and use the original signed-high/unsigned-low score
ordering instead of selecting only the maximum score at whole-game end.
- Preserve each player's complete rule-record state across turn changes instead
of globally clearing wheel holes, top targets, 176 active/contact slots,
selected effect, and multiball readiness on every drain.
- Store lock-hole and effect awards in the original per-player secondary score
instead of a global bonus. The fifth hole now transfers
`310000 * score_multiplier`, clears it, increments the multiplier and ball
count, while effect 6 transfers the same display value and drain leaves it
intact.
- Replace the cooldown/float-meter nudge approximation with the original
Left-Shift, keypad-3, and Space formulas using scalar 15, the shared Borland
random stream, 32-bit velocity wrapping, and the decaying 16-bit `+25` tilt
counter with its randomized `30..39` threshold.
- Replace the Xorshift gameplay RNG with the original Borland linear stream and
unbiased `Random(n)` high-word mapping. Launcher variation, effect selection,
claw terminals, and magnetic-field impulses now share the recovered sequence.
- Restore the magnetic-field response as `vx * 0.9` and a randomized
`-3800 * (1 - Random * 0.3)` vertical impulse instead of a fixed upward speed.
- 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.
- Advance media/extra-ball thresholds only from score additions, preserve
32-bit score wrapping, and restore the ninth-diamond 24,464-point award plus
the later double-score and secondary-score bank states.
- 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.