Skip to content

Fix adaptive shooter spawning corrupting the guest stack - #30

Open
mstan wants to merge 2 commits into
mainfrom
fix/smw29-soda-lake-20261113
Open

mstan wants to merge 2 commits into
mainfrom
fix/smw29-soda-lake-20261113

Conversation

@mstan

@mstan mstan commented Nov 13, 2026 •

Copy link
Copy Markdown
Owner

Adaptive horizontal spawning can reach the end of the placement list from inside the shooter factory. Its nested return then resumes beyond the terminator, wraps the list and overwrites low WRAM through a descending guest stack. Enter the existing factory as a tail continuation in both interpreted and generated callers, retaining its allocation and initialization logic.

New profiles start in a normal 1280x720 window so the default Fit setting shows the wider scene immediately. Saved window, aspect and mod choices retain their existing behavior.

Validation:

  • Existing renderer suite, policy guards, ROM-mirror handling and generated-hook idempotency pass; the new regression fails against the original source.
  • Native Linux reproduction matches all 50 checkpoints before the formerly corrupt input, then retains valid level state at that input.
  • LLE and explicit native-driver routes each run 660 field frames, activate further Torpedo Ted shooters, preserve the native center image and restore identical WRAM/rendered continuations through an ordinary save/load.
  • The candidate's 900-frame automatic recording replays exactly. Original-spawning and native-width controls each match 900 baseline checkpoints across WRAM, CPU, APU and VRAM.
  • Actual generated shooter execution is confirmed by the existing spawn diagnostics.
  • The Lua-enabled Linux AppImage passes its normal layout gate and a 900-frame disabled-Lua replay check. Fresh profiles render 342px; saved Auto, custom-window, 16:10/original-spawning and disabled-widescreen choices are preserved in actual gameplay.

Steam Deck/OpenGL validation remains pending. The vertical guard is unit tested; genuine vertical-level runtime coverage is unverified.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant