Super Mario Bros. · SMB Vanilla
Super Mario Bros.
OrigenNintendo Entertainment System
TecnologíaPort Nativo C/C++ (Reimplementación de Motor)
Disponible paraWindows, Linux, macOS
Ver proyecto oficialSobre el proyecto
Super Mario Bros. es un videojuego de plataformas desarrollado y publicado por Nintendo para la Nintendo Entertainment System (NES). Dirigido y producido por Shigeru Miyamoto, es la secuela del arcade Mario Bros. de 1983 y el primero de la serie Super Mario. Los jugadores controlan a Mario, o a su hermano Luigi en el modo multijugador, para atravesar el Reino Champiñón y rescatar a la princesa Toadstool del rey Koopa —más tarde llamado Bowser—.
11 versiones de Super Mario Bros.
Estás viendo: SMB Vanilla
SMB Vanillagithub.com/nukep/SMB-Vanilla
Super Mario Bros.github.com/pwsqrd/lynx_smb
Super Mario Bros. (nathsou)github.com/nathsou/smb
Super Mario Bros. (oliveryasuna)github.com/oliveryasuna/smb-recomp
Super Mario Bros. (Switch)github.com/sverigeunit/Mario-Bros-Switch-Port
Super Mario Bros. (UEFI_SuperMario)github.com/MikeWuPing/UEFI_SuperMario
Super Mario Bros. Remasteredgithub.com/JHDev2006/Super-Mario-Bros.-Remastered-Public
Super Mario Bros. Remastered (Android, mircey)github.com/mircey/super-mario-bros.-remastered-android
Super Mario Bros. Remastered (Android)github.com/mircowuffwuff/super-mario-bros.-remastered-android
Super Mario Bros. Remastered (Switch)github.com/delsonazevedo/Super-Mario-Bros.-Remastered-Switch
SuperMarioBrosRecompgithub.com/mstan/SuperMarioBrosNESRecompInformación oficial del proyecto
SMB Vanilla
For issues and pull requests, please visit Codeberg.
A C decompilation of the NES games "Super Mario Bros" and "Super Mario Bros 2 Japan" (aka Lost Levels).
<img width="512" src="./docs/screenshot1.png" alt="Screenshot" />This project intends to support most non-gamebreaking glitches from the original games (e.g. the minus world, collision and clipping bugs).
A legally obtained ROM dump is required to play the game. Otherwise, it will not run. This project only reimplements the gameplay, and does not come with level data or graphical assets.
Progress made:
- Super Mario Bros runs, is beatable
- Super Mario Bros 2J (Lost Levels) runs, is beatable
- Audio for SMB1 and (excluding the ending) SMB2J
- Get the core games compiling in C only (to make sure it's portable to older and embedded systems)
- Refactor of Ghidra-produced code (in progress)
- Audio for SMB2J ending (uses 2C33 audio chip)
- Unit and regression tests
- A decent UI/UX, customizable controls
No AI-generated code or assets are included in this project.
Running the game
Provide a copy of "smb.nes" and put in the same directory as the executable. Alternatively, modify the file paths in smbvanilla.ini.
smbvanilla.ini also has options to change key bindings if they're not tasteful for you.
When all is set up, run smbvanilla.exe (or smbvanilla on *nix). The first CLI argument can be the ROM filename to override the value in smbvanilla.ini. On Windows you can also drag the ROM onto the executable.
./smbvanilla
To play SMB2J (Lost Levels), provide the ROM path as a CLI argument, or modify smbvanilla.ini.
To play a specific level (SMB1 only right now), you can do so from the command line. For example, to play World 8-1:
./smbvanilla --level 8-1
Known-to-work hashes:
- SHA-1 hashes for smb.nes (NTSC): ea343f4e445a9050d4b4fbac2c77d0693b1d0922
- SHA-1 hashes for smb2j.fds: 3b8c8998b4887d6dd676965943d69a320738ab9c or 20e50128742162ee47561db9e82b2836399c880c
Romhacks that modify code or other types of data are not supported.
Building from source
See BUILDING.md for details.
Contributing
See CONTRIBUTING.md for details.
Goals for this project
The main goal of this project is to behave as identically to the original game as possible (including bugs).
The secondary goal is to provide an accessible, high-level reference for the logic of Super Mario Bros. It's reasonable for retro enthusiasts to cross-reference this with disassembly listings.
Special Thanks
Shoutout to doppelganger, for creating the go-to Super Mario Bros disassembly. Their work has been immensely helpful, and the diassembly is the basis for the label names used in this project: https://www.romhacking.net/documents/344/
Legal disclaimer
This project has no affiliation with Nintendo. No ROMs are included in this project.