Darhkfox/SuperMarioAllStars
GamesNative Windows and Android port of SNES Super Mario All-Stars with widescreen, co-op and achievements, running from your own ROM.
Overview
This is a native C++ port of the SNES Super Mario All-Stars collection for Windows 10/11 and Android. It emulates the original SNES hardware and layers port-specific features on top: true widescreen up to 21:9 with re-anchored HUDs, simultaneous two-player co-op for SMB1, The Lost Levels and SMB3, 82 achievements, CRT filters and RetroArch slang shader support, save states, rewind, cheats, level select, a sound test and a music player. It ships no game data and requires your own Super Mario All-Stars (USA).sfc ROM (CRC32 925637C7); the launcher reports ROM not found without one.
The widescreen work is the core technical effort: per-game code in src/game/ extends tilemaps, rebuilds streamed parallax scenery, keeps margin enemies active, and splits the status bar to the screen edges, with a detailed documented treatment per game and per level type.
Build on Windows
Requirements: Windows 10/11, Visual Studio 2022 with the C++ workload, and CMake 3.20 or newer. No other libraries are needed, since Direct3D 11, Direct2D, XAudio2, XInput and DirectInput ship with Windows.
build.bat
The executable is written to build\Release\SuperMarioAllStars.exe. Build instructions
Build for Android
Install the Android SDK with NDK 28.2 and CMake 3.31.6, plus JDK 17 or later. The SDL2 source belongs in third_party/SDL2-2.32.10-src; android/fetch_sdl.ps1 downloads and checks it. Then, from the android directory:
cd android
gradlew assembleDebug
The APK lands in android/app/build/outputs/apk/debug/, targeting 64-bit ARM devices on Android 6.0+ and the x86_64 emulator. Release builds are signed if android/keystore.properties supplies a keystore. Android build notes
Run a game
Place the ROM next to the executable, in a roms folder beside it, or in any parent folder up to three levels up; the path is remembered in rompath.txt. On Android, tap the ROM-not-found card and pick the file in the system picker, or copy it to Android/data/com.darhkfox.allstars/files.
Launching opens the launcher, whose cards start the cartridge or an individual game. To skip the launcher:
SuperMarioAllStars.exe --game smb1
Accepted values are allstars, smb1, smbll, smb2 and smb3. Saves go to saves\smas.srm, save states and screenshots to their own folders, and settings to smas_port.ini. Running details
Controls and co-op
Keyboard defaults use arrows for the D-pad, Z/X/A/S for B/A/Y/X, Q/W for L/R, Enter for Start, and Esc or Right Shift for the menu; F5/F8 save and load states, Tab fast-forwards, and Backspace rewinds about the last minute of play. Xbox-layout pads, PlayStation, Switch Pro and USB/SNES pads are supported, and all bindings can be changed under Menu → Controls for both players.
Two-player co-op runs the game's own player code a second time per frame for Luigi on controller 2; in SMB1 and The Lost Levels each brother keeps his own physics. It is toggled in Options → Multiplayer and offered as a CO-OP GAME choice on the title screens of SMB1, The Lost Levels and SMB3. With co-op on, the emulated CPU runs at twice its speed to keep busy scenes at full rate. Controls table
Achievements and fair play
82 achievements are split across the four games plus two collection-wide ones, listed under Menu → Achievements with progress indicators and stored in achievements.ini. While achievements are on, cheats, level select, fast forward and rewind are disabled; turning achievements off restores them. Save states record whether their run counts, so loading a cheated state cannot earn achievements. Achievement list
Constraints
- Windows 10/11 and Android 6.0+ are the supported platforms; Android release signing requires the keystore properties described above.
- A US-region ROM is required. Other versions or dumps run, but widescreen, cheats and level select are tuned for the USA version.
- Some display features are Windows-only, including window settings, VSync, Black Frame Insertion, High Frame Rate and slang shaders.
- Slang shaders need
librashader.dllbeside the executable and ashadersfolder of presets; some presets assume a 4:3 picture and may look wrong in widescreen. - The license metadata is NOASSERTION; bundled third-party code and shader presets carry their own licenses (SDL2 zlib, librashader MPL-2.0, several GPL CRT presets). Check the per-component license files before redistributing.
HotRepo's take
The repository appeared in HotRepo's new-project records for 2026-11-06 with 102 stars and 2 forks gained in roughly an 11-hour window, and no GitHub all-language daily rank recorded. That is a single snapshot, so it establishes early attention from the C++/retro-gaming audience rather than a trend. The substance behind it is the port-specific rendering and per-game co-op work documented in depth in the README, not just a wrapper around an existing emulator; the detail on how widescreen works per level is the part worth reading before deciding whether the ROM and hardware requirements fit your setup.
Written by AI from the project's README, updated . The project's own docs are the source of truth.