fix(input): preserve Win16 flipper key latches
Normal ball-end handling keeps the original flipper key bytes and geometry unless the current player has finished. Rust instead reset both flippers on every drain, skipped the normal WAVE 2021 release edge, and treated a key still held after Tilt as a fresh press once Tilt cleared. Preserve flipper state across ordinary drains. Tilt and a player's final ball now clear only the key flags, let the timer epilogue lower raised geometry, and latch each physical key until key-up before accepting another press. This matches the original WM_KEYDOWN/WM_KEYUP lifetime while retaining modern per-frame input sampling. Test Plan: - `cargo test --workspace --all-targets --all-features` -- 119 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:
@@ -147,6 +147,10 @@ and this project adheres to
|
||||
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.
|
||||
- Preserve held flipper keys and raised geometry across ordinary drains. Tilt
|
||||
and a player's final ball now clear the key latch, release a raised flipper
|
||||
through its normal WAVE 2021 timer edge, and require physical key-up before
|
||||
the same key can raise it again.
|
||||
- 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.
|
||||
|
||||
Reference in New Issue
Block a user