Releases: mstan/SuperMetroidRecomp
Release list
Super Metroid v0.3.6
Super Metroid v0.3.6 — setup packs
These packs do not contain the game. Each holds a setup program, the
recompiler and the source; on first run it takes your own copy of
Super Metroid (Japan, USA) (En,Ja).sfc (SHA-256 12b77c4bc9c1832cee8881244659065ee1d84c70c3d29e6eaf92e6798cc2ca72), recompiles it locally, and builds
the playable game. No ROM data is included or downloaded.
The portable build tools (cmake-clang-v1) are embedded in every pack.
Framework revisions
Framework revisions in this build:
snesrecomp=372e21c7ec2df4d6839b748831f64a25a1089080 (372e21c7ec2d)
recomp-ui=cb7e54b41b6d75a6233de0083914e270f3902f4c (cb7e54b41b6d)
recomp-net=859ba28b93f7374f2ac1eb70d2171594c5cd4f4b (859ba28b93f7)
retcomm-rbengine=a7b98507a62fe00e5aec3b90c52a4134f3c174bc (a7b98507a62f)
Super Metroid v0.3.5
Super Metroid v0.3.5 — setup packs
These packs do not contain the game. Each holds a setup program, the
recompiler and the source; on first run it takes your own copy of
Super Metroid (Japan, USA) (En,Ja).sfc (SHA-256 12b77c4bc9c1832cee8881244659065ee1d84c70c3d29e6eaf92e6798cc2ca72), recompiles it locally, and builds
the playable game. No ROM data is included or downloaded.
The portable build tools (cmake-clang-v1) are embedded in every pack.
Framework revisions
Framework revisions in this build:
snesrecomp=f86864e76ae285c748705c1b11e5bd2d989ee668 (f86864e76ae2)
recomp-ui=2298545959c30cf74defd1b8153b7fdeb6b2daa1 (2298545959c3)
recomp-net=859ba28b93f7374f2ac1eb70d2171594c5cd4f4b (859ba28b93f7)
retcomm-rbengine=a7b98507a62fe00e5aec3b90c52a4134f3c174bc (a7b98507a62f)
Super Metroid v0.3.4
Super Metroid v0.3.4 — setup packs
These packs do not contain the game. Each holds a setup program, the
recompiler and the source; on first run it takes your own copy of
Super Metroid (Japan, USA) (En,Ja).sfc (SHA-256 12b77c4bc9c1832cee8881244659065ee1d84c70c3d29e6eaf92e6798cc2ca72), recompiles it locally, and builds
the playable game. No ROM data is included or downloaded.
The portable build tools (cmake-clang-v1) are embedded in every pack.
Framework revisions
Framework revisions in this build:
snesrecomp=cc01228d958821ce02ac4647b11a41f2a0acd4d0 (cc01228d9588)
recomp-ui=2298545959c30cf74defd1b8153b7fdeb6b2daa1 (2298545959c3)
recomp-net=859ba28b93f7374f2ac1eb70d2171594c5cd4f4b (859ba28b93f7)
retcomm-rbengine=a7b98507a62fe00e5aec3b90c52a4134f3c174bc (a7b98507a62f)
Super Metroid v0.3.3
Super Metroid v0.3.3
- Fix audio interruptions during door transitions by advancing the sound
processor continuously through loading work and preserving its elapsed time. - Pace long loading iterations by their guest duration, keeping normal gameplay
speed after the door. The tested F1 transition takes about 2.95 seconds. - Keep fast loading work from overflowing the audio buffer and allow playback
to build a small cushion after startup or starvation. - Use Linux's corrected monotonic clock for pacing so a drifting raw timer
cannot make gameplay fall behind the audio device. - Add repeatable doorway audio checks and missing/dropped-output diagnostics.
Available as a Windows x64 ZIP and a Linux x86_64 AppImage. Existing saves remain
compatible; keep your ROM, configuration, and saves when updating.
The release pins snesrecomp e2c75fd, the framework revision validated with this
game and included in the history of framework PR #70. Advancing this title to all
newer framework changes requires a separate frame-driver compatibility update
tracked as beads-8wg.6.7.
Super Metroid v0.3.2
Super Metroid v0.3.2
Fixes the v0.3.1 doorway-transition audio regression. Door loading now repays timing debt while the game is non-interactive, keeping the audio queue supplied; remaining debt is discarded once gameplay resumes, so Samus does not speed up after leaving the door.
Validation
- Windows and Linux production builds passed all five automated tests.
- The Windows ZIP was re-read to verify portable paths and no ROM or save data.
- The Linux AppImage passed its packaged layout check.
Super Metroid v0.3.1 - Doorway timing fix
Doorway timing correction
Fixes a timing bug where a slow room/door transition could leave the host scheduler behind wall time, then run several guest frames back-to-back. Samus, animations, and SPC audio now remain at normal speed after exiting a door.
Downloads
- Windows x64: extract the entire ZIP and run
SuperMetroidSNESRecomp.exe. - Linux x86_64: make the AppImage executable and launch it.
Supply your own unmodified Super Metroid (Japan, USA) ROM. No ROM, SRAM save, or save state is included. SHA-256 checksums are in SHA256SUMS-v0.3.1.txt.
Validation
The F1 TCP doorway route and human gameplay validation both confirm the timing correction. The Windows ZIP and Linux AppImage each pass all five game-side tests; the AppImage package layout test also verifies state persists beside the image.
Super Metroid v0.3.0 - Custom widescreen renderer
Custom widescreen renderer
Super Metroid now has a game-specific, presentation-only custom renderer,
replacing the previous generated widescreen hooks.
- Widescreen mod: adaptive Fit, 16:9, 21:9 and 32:9.
- HUD anchoring: energy/reserves on the left, weapons centered, minimap on
the right, or keep the HUD centered. - Presentation FPS mod: Auto or 60/90/120/144/165/240/360 targets,
independent of widescreen. Game simulation retains native timing. - Both mods are off by default. Open Mods in the launcher to enable
them; both off selects the stock renderer. - README screenshots show the landing site and Tourian gameplay.
Downloads
- Windows x64: extract the entire ZIP and run
SuperMetroidSNESRecomp.exe.
Keep its DLLs andassets/folder together. This package includes SDL3's
transitivelibiconv-2.dlldependency and was tested without a developer
toolchain on PATH. - Linux x86_64: make the AppImage executable and launch it. Built and
tested on Ubuntu 24.04 under WSL; older Linux runtimes may not be compatible.
Steam Deck hardware has not been directly tested.
Supply your own unmodified Super Metroid (Japan, USA) ROM. No ROM, SRAM save,
emulator state, or generated C source is included. Keep settings and saves/
beside the executable/AppImage when updating.
Validation and limits
Both platform builds pass all five game-side test suites and 3,200-frame
stock/widescreen/combined-FPS/FPS-only simulation comparisons. Linux package
layout tests verify settings/save placement and preservation on relaunch.
Windows and Linux launcher clicks verify Mods selection and persistence.
The renderer remains experimental: full-game visual fidelity is not certified,
some special-effect and boss interactions need broader coverage, and actual
presentation FPS depends on hardware and scene complexity. Linux runtime
automation used offscreen video and a dummy audio driver; audible playback was
not verified there. Gameplay logic, including enemy activation, is not widened.
See the repository's docs/custom-renderer.md for detailed implementation and
validation notes. SHA-256 checksums are supplied in SHA256SUMS.txt.
Super Metroid v0.2.2 - attract-mode wedge fixed
Fixed
- Attract-mode black-screen wedge: leaving the game unattended for ~10 minutes corrupted the IRQ command variable and wedged the game to a black screen with a pegged CPU core. Root cause was a recompiler dispatch-frame-size bug: a clean HDMA-object handler return was misclassified as a non-local return, leaking 2 bytes of guest stack per occurrence until the corruption cascaded. Verified with a 61,000-frame unattended attract soak (previously wedged at ~19,000 frames).
Updated
- Engine: raster-IRQ delivery fixes, unresolved-dispatch-index handling, left-margin OAM widescreen hints, APU guest-clock unclamp, new always-on diagnostics rings.
- Launcher (recomp-ui): window now fits small displays.
SHA256 (zip): AFB96EBB9151FABAA1E9A2675545012CDC4CC382891566AC2D6C0F83EB0A9C5C
Super Metroid v0.2.1 - audio crackle fixed
Audio: family-wide crackle fixed
The shared engine retired a hardcoded 534 output samples per audio callback
regardless of how many the host actually asked for, so consumption tracked the
callback rate and ignored the callback size. Any host not asking for exactly
534 drove the DSP output ring permanently out of balance.
Measured on the Super Mario Kart port before the fix: 17.8 k samples/s consumed
against 32.04 k/s produced, the ring pinned at its cap, and 43% of every audio
sample generated was discarded - 384,032 of them carrying audible music - in
64,935 separate drop runs. Tempo survived because the drops landed as thousands
of very short runs per second, which is why this was heard as static rather than
as obviously wrong pitch.
The consumer now retires exactly as many samples as it emits frames, converts
the SPC's native 32040 Hz onto the device rate with continuous-phase
interpolation, and steers ring occupancy with a +/-0.5% servo (about 8 cents,
well below audibility) so the guest and the audio device can no longer drift
apart. Starvation fades over 64 frames instead of cutting to silence.
After the fix, same measurement: 0 samples dropped, 0 audible drops, 0 drop
runs, occupancy stable, consumed/produced 0.999, no steady-state underruns.
Engine: snesrecomp 1c271f9 + ad7860b. Launcher: recomp-ui 58e9d72.
Also fixed here
This title opened the audio device at 32000 Hz while the SPC produces 32040 Hz.
That 40 samples/s surplus filled the output ring after about 178 seconds, so the
crackle appeared a few minutes into play and then never left. It now opens at the
true native rate.
Super Metroid v0.2.0 — SDL3, Linux state fixed
What's new
SDL3, and state that actually persists on Linux.
- Ported to SDL3 (SDL2 still available for local builds), and moved onto the
current shared engine (~136 commits of catch-up). - Fixed: nothing was saved on Linux. Config resolution derived its directory
from the executable path, which inside an AppImage is the read-only mount, so
config.ini,keybinds.iniandsaves/were silently discarded every
launch. State now lives next to the.AppImageand re-anchors if you move it. - Added Linux AppImage packaging, plus a layout test that fails the build if state
ever leaks into the read-only payload. - Windows archive now uses portable ZIP paths so Linux/Steam Deck extractors
rebuild the bundledassets/hierarchy correctly. - Fixed a black screen under SDL3 (SNES frames are opaque RGB with a zero alpha
byte, which SDL3 blended away to the clear colour). - Production builds no longer announce a TCP debug server they do not have.
Notes
- A verified Super Metroid (USA/Japan) ROM is required and is not included.
- Windows: extract the full archive, then run
SuperMetroidSNESRecomp.exe. - Linux:
chmod +xthe.AppImageand run it from a writable folder. - Widescreen remains incomplete on this title and is intentionally not offered.