snesrev: smw

snesrev: smw brings Super Mario World to PC.

README

smw

A reimplementation of Super Mario World.

Our discord server is: https://discord.gg/AJJbJAzNNJ

About

This is a reverse engineered clone of Super Mario World.

It reimplements all parts of the original game and a bunch of mods added by Lunar Magic. The game is playable from start to end.

You need a copy of the ROM to extract game resources (levels, images). Then once that's done, the ROM is no longer needed.

It uses the PPU and DSP implementation from LakeSnes, but with lots of speed optimizations.

Building

You must self-build for now. Easy method on 64-bit Windows (no terminal or big downloads):
(1) Download Python if you don't have it and install with "Add to PATH" checked
(2) Click the green button "Code > Download ZIP" on the github page and extract the ZIP
(3) Place your USA rom named smw.sfc in that folder
(4) Download TCC and SDL2 and extract each ZIP into the "third-party" subfolder
(5) Double click "extract_assets.bat" in the main dir. This will create smw_assets.dat.
(6) Double-click "run_with_tcc.bat" in the main dir. This will create smw.exe and run it.
(7) Configure with smw.ini in a text editor like notepad++

For other platforms and compilers, see: https://github.com/snesrev/smw/blob/main/BUILDING.md

When running, it runs an emulated version in the background and compares the ram state every frame. If it detects a mismatch, it saves a snapshot in saves/ and displays a counter on screen counting down from 300. Please submit these bug snapshots on discord so that they can be fixed.

Usage and controls

The game supports snapshots. The joypad input history is also saved in the snapshot. It's thus possible to replay a playthrough in turbo mode to verify that the game behaves correctly.

ButtonKey
UpUp arrow
DownDown arrow
LeftLeft arrow
RightRight arrow
StartEnter
SelectRight shift
AX
BZ
XS
YA
LC
RV

The keys can be reconfigured in smw.ini

Additionally, the following commands are available:

KeyAction
TabTurbo mode
PPause (with dim)
Shift+PPause (without dim)
Ctrl+UpIncrease window size
Ctrl+DownDecrease window size
TToggle replay turbo mode
KClear all input history from the joypad log
LStop replaying a shapshot
RToggle between fast and slow renderer
FDisplay renderer performance
F1-F10Load snapshot
Alt+EnterToggle Fullscreen
Shift+F1-F10Save snapshot
Ctrl+F1-F10Replay the snapshot