Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

Darhkfox/SuperMarioAllStars

Games

Native Windows and Android port of SNES Super Mario All-Stars with widescreen, co-op and achievements, running from your own ROM.

192
5
C++
NOASSERTION
1 day old

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.dll beside the executable and a shaders folder 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.