fix(multiball): clear record 148 contact on respawn

The required-effect word at 1028:399a is record 148's +0x43 contact field.
The original special respawn clears that exact word before suppressing the
capture gate. Rust reset only its derived multiball state and left contact 2
behind, allowing a synthetic type-three rim candidate after respawn.

Clear record_contacts[148] with the derived state. Extend both armed and active
multiball respawn regressions to begin with the binary's contact sentinel and
prove that the transition removes it.

Test Plan:
- `cargo test --workspace --all-targets --all-features` -- 118 passed
- `cargo clippy --workspace --all-targets --all-features -- -D warnings` -- passed
- `rumdl check --flavor commonmark CHANGELOG.md` -- passed
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-23 20:02:32 +02:00
parent a7c2779f73
commit 25019514c7
2 changed files with 8 additions and 2 deletions
+3 -2
View File
@@ -19,8 +19,9 @@ and this project adheres to
full normal velocity instead of always subtracting 1,000.
- Restore `1000:ae6e`'s required-ball special respawn: armed or completed
effect-seven play grants one final `(17,23)/(0,3040)` ball without consuming
a marker, clears required state, and suppresses record 148 until the next
broadphase-active type-4 record reenables it.
a marker, clears required state including record 148's contact word, and
suppresses record 148 until the next broadphase-active type-4 record
reenables it.
- Replace the invented post-move `y>470` fallback with the original pre-scan
prediction bounds `x<=0 || x>340000 || y<=0 || y>460000`, including
one-slot removal during multiball and next-substep handling after a response.