Skip to content

Releases: mstan/SuperMetroidRecomp

Super Metroid v0.3.6

Choose a tag to compare

@github-actions github-actions released this 14 Sep 02:30
9e146f5

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

Choose a tag to compare

@github-actions github-actions released this 14 Sep 01:05
fb2891c

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

Choose a tag to compare

@github-actions github-actions released this 13 Sep 04:25
32085c5

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

Choose a tag to compare

@mstan mstan released this 11 Sep 05:15
ddddf28

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

Choose a tag to compare

@mstan mstan released this 11 Sep 02:30
241994c

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

Choose a tag to compare

@mstan mstan released this 10 Sep 19:48
ce330cb

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

Choose a tag to compare

@mstan mstan released this 08 Sep 18:07

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 and assets/ folder together. This package includes SDL3's
    transitive libiconv-2.dll dependency 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

Choose a tag to compare

@mstan mstan released this 28 Aug 04:28

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

Choose a tag to compare

@mstan mstan released this 06 Aug 01:58

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

Choose a tag to compare

@mstan mstan released this 05 Aug 07:20

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.ini and saves/ were silently discarded every
    launch. State now lives next to the .AppImage and 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 bundled assets/ 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 +x the .AppImage and run it from a writable folder.
  • Widescreen remains incomplete on this title and is intentionally not offered.