Skip to content

Super Mario World Recomp v0.12.0 - opt-in Lua playground

Choose a tag to compare

@mstan mstan released this 11 Sep 08:01
· 28 commits to main since this release
5fc466c

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.exe

After starting the game through the launcher, use Python 3:

python lua/lua_tcp.py load lua/100_fireballs.lua

Full 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.