Releases: mstan/SuperMarioWorldRecomp
Release list
v0.14.2 - Falcon loading and turbo audio
Captain Falcon now loads when the Smash Bros. 64 mod is enabled, and audio playback can recover correctly after fast-forward.
- Read the owner ROM from the current mod loader's verified resources.
- Bundle the Falcon asset helper for Windows and Linux. First use builds the cache locally from your Super Smash Bros. (USA) v1.0 ROM; Python and environment-variable setup are no longer required.
- Activate Falcon's gameplay hooks and preserve the selected character when loading saves, including loading a Falcon save with the mod disabled.
- Fix post-turbo recovery trimming the audio queue below the amount required to restart playback. This could leave music silent after a stage transition or buffer starvation.
Enable Smash Bros. 64 (Experimental) in Mods, select your supported Smash Bros. ROM, and press Play. Keep the complete release package together. No ROMs or generated owner assets are included.
Validated on the Windows ZIP and Linux AppImage: first-run cache generation, stage gameplay and controls, and save loading with Falcon on/off. Windows was tested without development tools on PATH. Audio recovery regressions pass at 32,040, 44,100 and 48,000 Hz; both packaged builds produced sustained audio after turbo. Launcher rendering and AppImage state layout were also checked.
SHA-256:
- Windows ZIP:
7fe5f28f6c82a178ef2dc50a077e61fcd38f33ae983471dc15b1a5b640b86f5d - Linux AppImage:
7fa57304b85e38b4b0c06c27611d77fe1c8c49422bb196e642f18ff03a9a3ac3
v0.14.1 — Mods page fix
Fixes an empty Mods page.
The mod provider was initialized with the catalog root mods, but it looks
for <root>/packages and the build stages mods/preloaded/packages. It
therefore found no packages, returned success — an empty catalog is legal —
and the Mods page rendered empty with no error logged anywhere. The packages
were present in the v0.14.0 zip the whole time; nothing loaded them.
Adaptive Widescreen, MSU-1 audio and Smash 64 Captain Falcon are all back.
The root now comes from the engine (SNES_MOD_CATALOG_ROOT) rather than
being spelled out per title, so the two cannot drift apart again.
Verified on both platforms: the Windows zip extracted and launched with
PATH scrubbed to C:\Windows\system32;C:\Windows with all three packages
listed, and the AppImage carries the same catalog under
mods/preloaded/packages.
Super Mario World Recomp v0.14.0
Launcher settings now save when you press Play or close the launcher, including fullscreen. No manual INI editing is needed.
- Adds CRT Soft, LCD Grid, Sharp and Warm Composite shader presets.
- Adds 4:3 CRT, 8:7 square pixels and 1:1 square frame display choices. These also control pixel proportions in adaptive widescreen; visible area and enemy spawning remain in Mods.
- Uses shared SNES settings, shader assets and geometry, also consumed by Mega Man X.
- Keeps bundled shader selections working after Linux AppImage relaunches or moving the installation.
- Includes the built-in widescreen mod catalog in both packages. Lua support and examples remain included.
Downloads: Windows x64 ZIP and Linux x86_64 AppImage, with SHA256SUMS.txt. Supply your own supported Super Mario World ROM.
Validated full Windows/Linux builds, settings persistence, all four OpenGL presets, adaptive aspect geometry, Windows runtime DLL closure, and AppImage state preservation and remounts. Built from f5c4474 with shared engine 770bf651e63ae32ece5bc142bd4912838a3a69f1.
v0.13.2 - Windows launch fix (0xc000007b)
Windows packaging fix. If v0.13.1 failed to launch, this release is the fix.
The problem
Launching SuperMarioWorldSNESRecomp.exe from the v0.13.1 Windows zip could fail
immediately with either:
0xc000007b— "The application was unable to start correctly"0xc0000135— the DLL could not be found
The zip was missing libiconv-2.dll, a dependency of the SDL3.dll it
shipped. If your PC had no copy of that DLL, you got 0xc0000135. If your PATH
happened to carry a 32-bit copy (32-bit Git for Windows, GTK, PHP and GIMP
all ship one), Windows loaded it, the 32/64-bit mismatch aborted the process
before the game started, and you got 0xc000007b naming the exe rather than the
DLL — which is why the message was so unhelpful.
Nothing was wrong with your system, your ROM, or your drivers. The package was
simply incomplete.
The fix
make_release.ps1 used to copy a hand-written list of runtime DLLs into the zip.
That list was correct when it was written and quietly went stale when the build
picked up a newer SDL3 that needed one more library.
Packaging no longer works from a list. It now walks the executable's actual
dependency graph, ships everything it finds that Windows does not provide, and
then re-checks the finished package: every dependency must resolve inside the
zip, and every binary must be 64-bit. Anything missing or wrong-architecture
fails the release instead of shipping. This release was verified by launching it
with PATH stripped to C:\Windows\system32;C:\Windows.
What has not changed
The game itself is identical to v0.13.1 — same engine revision, same generated
code, same features. Only the contents of the zip changed. Save files,
config.ini, keybinds and mod settings all carry over; extract over your
existing folder or alongside it, either works.
Linux users: the AppImage bundles its own SDL3 and was never affected. The
v0.13.1 AppImage
remains current.
Install
Download the zip, extract the whole folder, run
SuperMarioWorldSNESRecomp.exe. Supply your own legally-obtained Super Mario
World (USA) ROM when prompted. The ROM is never redistributed.
v0.13.1 - Expanded sprite rendering fixes
This update fixes missing and split sprites in adaptive widescreen.
- Preserve completed sprite draws in a growing host list, so later reuse of a guest OAM entry cannot erase earlier pieces. The renderer can retain more than the SNES OAM limit of 128 pieces.
- Keep the Volcano Lotus flower and leaves complete after its graphics helper changes the final tiles and palette.
- Render Chuck baseballs across the expanded view with Screen-based spawning.
- Prevent extra ghost-house Eeries from overwriting Mario and cape tiles.
Enable SMW Adaptive Widescreen in Mods. It defaults to Fit to screen and Screen-based enemy spawning; fixed ratios and Original 4:3 spawning remain available. The game's separate active-enemy limits still apply.
Validation: both packaged launchers and the reported F1 flower/baseball scene passed focused checks with Fit and Screen-based spawning. Each package replay checked 380 frames and 2,604 opaque sprite pixels across six captures. Before packaging, the 150-piece shared-slot test and the earlier Mario and ghost-house regressions also passed. Linux portable-state checks passed.
Most testing remains in World 1-2 (Yoshi's Island 2), plus the reported saved scenes. The rest of the game has not been fully tested. Adaptive widescreen remains experimental; unsupported scenes use native rendering.
Windows: extract the ZIP and run SuperMarioWorldSNESRecomp.exe. Linux: make the AppImage executable and run it. Supply your own Super Mario World (USA) ROM; no ROM is included. Preserve your existing saves, settings and mods/state.toml when updating. Both packages retain the opt-in Lua playground.
Built from f520aaaa00319559f42ed375a1266b34fdaf094c on main.
SHA-256:
2c34f687af0fb670bdc6136a8af6b262cbb66958bb507eb19c7cc681b54ad2ec SuperMarioWorldRecomp-windows-x64-v0.13.1.zip
0a0413e0ae778ea460966d806d7e9c845d5040f05c58e479aba8959df24aa84f SuperMarioWorldRecomp-linux-0.13.1-x86_64.AppImage
v0.13.0 - Adaptive widescreen
Enable SMW Adaptive Widescreen in the launcher's Mods page for the new renderer. It defaults to Fit to screen and Screen-based enemy spawning. Fixed aspect ratios through 100:9 and Original 4:3 enemy spawning are also available.
Changes:
- Adapt the visible level to the window and anchor the HUD at the left, center and right.
- Extend enemy activation and sprite rendering into the expanded view, including Yoshi, winged blocks, Piranha heads, ghosts and moving floor holes; prevent duplicate Koopa placements.
- Stabilize pipe colors, camera movement and background parallax, and keep supported stage/pipe fades wide.
- Improve audio buffering after save loads and temporary starvation.
- Preserve older main/renderer save states and retain the existing Lua playground and experimental Falcon support.
Testing has focused mostly on World 1-2 (Yoshi's Island 2), with focused checks of the reported sprite, transition and ghost-house scenes. The rest of the game has not been fully tested. Adaptive widescreen remains experimental. Very wide views still share the game's finite sprite capacity, and unsupported scenes use native rendering.
Both downloadable packages passed launcher and F1 gameplay smoke checks with Fit and Screen-based spawning: 1,150 frames, all 12 later ghost-house placements activating at the expanded frontier, and exact checks of 4,334 sprite pixels outside the native view. Renderer/save-format units and Linux portable-state checks pass. This is not a full-game compatibility claim.
Install:
- Windows: extract the ZIP and run
SuperMarioWorldSNESRecomp.exe. Linux: make the AppImage executable and run it. - Select your own Super Mario World (USA) ROM. No ROM is included.
- Enable the adaptive mod in Mods. Saves and settings live beside the executable/AppImage; preserve them when updating.
Built from 2c158851f5c6decc9fc5b413b1fb3ca56ba140fa on main. Integrated through PR #15.
SHA-256:
cbc264841d027326fcea94699c1200bc1e183460953d01a5752dce0e75a25c19 SuperMarioWorldRecomp-windows-x64-v0.13.0.zip
2e25ddf143012cb0ded87fdf00d5a0538f813908bf62c5355728cb06144c9018 SuperMarioWorldRecomp-linux-0.13.0-x86_64.AppImage
Super Mario World Recomp v0.12.0 - opt-in Lua playground
Optional Lua playground
This release adds opt-in Lua scripting over a localhost TCP server and a bundled 100-fireballs-per-second example. Hold A or S on the default keyboard layout (SNES Y/X) to produce the stream; release to stop firing. Movement and jumping still work.
Normal play is unchanged until you explicitly enable the server and load a script. The framework build option defaults OFF; these Windows/Linux packages include support, activated only by SNESRECOMP_LUA_PORT.
The lua/ folder contains 100_fireballs.lua, the Python TCP client, SMW helpers, instructions, and Lua's MIT license. On Linux, first launch copies writable examples beside the AppImage and preserves existing scripts.
Try it
On Windows, start the extracted game from PowerShell:
$env:SNESRECOMP_LUA_PORT = '4380'
Start-Process -FilePath .\SuperMarioWorldSNESRecomp.exeAfter starting the game through the launcher, use Python 3:
python lua/lua_tcp.py load lua/100_fireballs.luaFull Windows/Linux instructions: lua/README.md. TCP reset disables the script. To return to ordinary play, close the game and launch without SNESRECOMP_LUA_PORT.
Integration and validation
- SMW is pinned to snesrecomp
266804e860560ff7084ed74258d803204b7d7bd0, merged in framework PR #71. Game integration: SMW PR #14. - Framework CI passed on Windows, Linux and macOS, including Lua build opt-out and real TCP tests.
- Full gameplay tests passed from the extracted Windows ZIP and Linux AppImage: entity spawning/hits, exactly 100 projectiles in 60 frames, hold/release, standalone example, and reset.
- Packaged launchers were visually checked. Windows also passed with the 16:9 mod enabled. AppImage state relocation and preservation of user Lua/config edits passed. Both binaries ran with Lua inactive.
Scope
The experimental stream uses a separate 256-projectile pool with native SMW movement/collisions. Extra shots use the native 256-pixel camera bounds and draw above the finished frame; SNES foreground priority/windows/color math are not reproduced for them. Lua and extra projectile state are not included in savestates. Stock USA single-player only; Lua is not enabled for co-op.
Supply your own Super Mario World (USA) ROM; no ROM is included. Linux users should mark the AppImage executable with chmod +x.
Super Mario World Recomp v0.11.1
What's new
This is a dependency refresh release for the public Super Mario World build.
- Updated
snesrecompto include the latest host/runtime fixes, including
scheduler-deadline unwind handling. - Updated
recomp-uito the current launcher, including the hidden disabled-mod
feature cleanup and recent SNES gamepad binding UI. - Removed the obsolete game-local
tools/sync_funcs_h.py; regen now uses the
frameworkv2_sync_funcs_h.pytool. - Kept the stock title demo on the interpreter path to avoid the known generated
bounce instability there.
Validation
- Windows release build completed.
- Linux AppImage build completed.
- AppImage layout test passed: config, saves, ROM cache, and mods anchor beside
the AppImage. - Smoke launch confirmed the Linux AppImage loaded the ROM, initialized SDL/audio,
entered the main loop, and simulated the first frame.
Notes
- A legally-obtained Super Mario World (USA) ROM is required and is not included.
- Widescreen remains available from the launcher and defaults off.
v0.11.0 — experimental Smash Bros 64 mod catalog
Super Mario World Recomp v0.11.0
Highlights
- Adds the default-off Mods catalog path for Super Mario World.
- Adds
Smash Bros 64 (Experimental)withCaptain Falconas the first character option. - Keeps Widescreen as an opt-in mod, defaulting to fixed 16:9 when enabled.
- Includes MSU-1, Widescreen, and Captain Falcon in the release mod catalog without shipping local enabled-state.
- Syncs the
snesrecompruntime with owner-resource support needed by opt-in external-ROM-backed mods.
Captain Falcon status
Captain Falcon is experimental and default-off. It requires the user to provide a verified Super Smash Bros. 64 US v1.0 owner ROM/resource and the approved Falcon owner cache path. Stock Mario remains the default supported experience when mods are off.
Release validation
- Stock/no local mod state: launches 4:3 at
768x672with no Falcon activation. - Mods enabled locally: launches fixed 16:9 at
1194x672. - Falcon activation trace: approved runtime cache loaded, audio active, controller handoff.
- Windows package verified to include only
mods/packages, not localmods/state.toml. - Linux AppImage layout test passed: state anchors beside the AppImage and payload stays read-only.
Artifacts
SuperMarioWorldRecomp-windows-x64-v0.11.0.zip- SHA-256:
10891CAFC63A6723D515E44692000DA6193104E0F49309A5B402C13C3FEFB79C
- SHA-256:
SuperMarioWorldRecomp-linux-0.11.0-x86_64.AppImage- SHA-256:
186763D4A1FB1868BE9F99388062B11B61717AA4E155B1E5A9FDD56E13CB877C
- SHA-256:
Super Mario World v0.10.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.