Remove the live-fitted upward and downward flipper polynomials. Port the reconstructed 1000:7ed9 path with delta-specific pivots and record edges, integer cross-product and radius gates, penetration, response-record gain, wrapping velocity updates, and the final position delta. Use resting records on press and the already-raised records on release, correct the original delta direction, and apply each edge to both live ball slots. Keep render-facing Vec2 projections, but adjust their float representation by ULPs so every gameplay millipixel round-trips exactly instead of losing reconstructed integer results. Test Plan: - `bash original/tools/test_reconstructed_c.sh` -- passed during raised-record reference capture - `cargo test --all-targets` -- passed, 62 tests - `cargo clippy --all-targets -- -D warnings` -- passed - `rumdl check tdkpin-rs/CHANGELOG.md tdkpin-rs/RECONSTRUCTION.md` -- passed - `git diff --cached --check` -- passed
3.1 KiB
3.1 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Fixed
- Replace the live-fitted flipper transfer polynomials with the reconstructed
1000:7ed9millipixel geometry gates, penetration, gain, response-record, velocity, and position calculations for both directions and both balls. - Preserve every gameplay millipixel across the float-only render projection so exact integer physics results are not changed when stored for drawing.
- Restore launcher input to the setup scalar: each Down keydown subtracts 750
millipixels, release subtracts 1,500, then applies the recovered
-3800and-2280clamp/jitter branches and the ten original decoration thresholds. - Apply the original independent
1.03 - Random * 0.08X/Y velocity response after entering radius-bearing type-4 targets, preserving both motion and the subsequent shared PRNG sequence. - Check every player against the high-score table when their own last ball is
lost, prefill the original
TDK Pinball Playername, 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
+25tilt counter with its randomized30..39threshold. - 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.9and 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.00title so the recovered artwork is presented one-for-one instead of enlarged or resampled.