The rewrite reset wheel holes, top targets, collision latches, active records, selected effects, and multiball readiness on every drain. The reconstructed turn-state code instead saves all 175 live record states for the outgoing player and restores the incoming player's mirror. Add a per-player rule snapshot and save/load it at normal turn transitions. Keep transient ball, claw, tilt, and presentation state global while retaining each player's mechanism progress and contact/activation state across later turns and extra balls. Test Plan: - `cargo test --all-targets` -- passed, 58 tests - `cargo clippy --all-targets -- -D warnings` -- passed - `rumdl check tdkpin-rs/CHANGELOG.md tdkpin-rs/RECONSTRUCTION.md` -- passed - `git diff --cached --check` -- passed
39 lines
2.0 KiB
Markdown
39 lines
2.0 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
|
|
|
|
- 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.
|