📰 Title: | SuperMarioBros-C | 🕹️ / 🛠️ Type: | Game |
---|---|---|---|
🗃️ Genre: | Arcade | 👁️ Visual: | 2D Scrolling |
🏷️ Category: | Arcade ➤ Platformer ➤ Super Mario Bros. | 🏝️ Perspective: | Side view |
🔖 Tags: | Jump and Run; Action; Arcade; Super Mario Bros.; Platformer; Action Platformer; Family Friendly; Pixel Art; Retro; Remake; Cult Classic; Keyboard | ⏱️ Pacing: | Real Time |
🐣️ Approx. start: | 👫️ Played: | Single | |
🐓️ Latest: | 2019-01-21 | 🚦 Status: | 04. Released (status) |
📍️ Version: | Latest: (waiting) / Dev: 5bb9205 | ❤️ Like it: | 9. ⏳️ |
🏛️ License type: | 🎁 Free of charge | 🎀️ Quality: | 7. ⏳️ |
🏛️ License: | Code: ? / Artwork: Commercial | ✨️ (temporary): | |
🐛️ Created: | 2018-03-07 | 🐜️ Updated: | 2024-06-22 |
📦️ Package name: | ..... 📦️ Arch: | ||
---|---|---|---|
📄️ Source: | ..... 📦️ RPM: | ||
⚙️ Generic binary: | ..... 📦️ Deb: | ||
🌍️ Browser version: | ..... 📦️ AppImage: | ||
📱️ PDA support: | ..... 📦️ Flatpak: | ||
✨️ Not use: | ..... 📦️ Snap: |
📰 What's new?: | 👻️ Temporary: | ||
---|---|---|---|
💡 Lights on: | 🎨️ Significant improvement: | ||
👔️ Already shown: | 💭️ New version published (to be updated): | ||
🎖️ This work: | 🚧️ Some work remains to be done: | ||
👫️ Contrib.: | goupildb & Louis | 🦺️ Work in progress: | |
🎰️ ID: | 15381 |
📜️[en]: | A free / not libre (license not yet specified) and multi-platform game engine for Super Mario Bros. (requiring the NES ROM for data), derived from a reverse engineering of the original game source. It consists of both the original disassembly engine converted into C ++, an hardware emulation layer, and the SDL2 library for rendering. The interest is to make the game multi-platform and that it behaves in exactly the same way as the original. Awesome. | 📜️[fr]: | Un moteur gratuit (licence non spécifiée) et multi-plateforme pour le jeu Super Mario Bros. (nécessitant la ROM de la NES pour les données), issu d'une rétro-ingénierie du source du jeu original. Il se compose à la fois du moteur original traduit en C++, d'une couche d'émulation du matériel et de la bibliothèque SDL2 pour le rendu. L'intérêt est de rendre le jeu multi-plateforme et qu'il se comporte de manière strictement identique à l'original. Génial. |
---|
🦉️ From Devs: (202xxx♺),
🎙️ Dev Interviews (Mr Miyamoto and Mr Tezuka, Nintendo) :
🏡️ Website & videos
[Homepage] [Dev site] [Features/About] [Screenshots] [Videos t(202xxx) gd(202xxx♺) r(202xxx) lp(202xxx) g(202xxx) g[fr](202xxx) g[de](202xxx) g[ru](202xxx) g[pl](202xxx) g[cz](202xxx) g[sp](202xxx) g[pt](202xxx) g[it](202xxx) g[tr](202xxx)] [WIKI] [FAQ] [RSS: waiting] [Changelog 1 2]
💰 Commercial
• (empty)
🍩️ Resources
• Super Mario Bros (JU) (PRG 0): [RomsMania.com] [Complete ROMs] [Zophar's Domain]
(Rename this ROM by: "Super Mario Bros. (JU) (PRG0) [!].nes")
🛠️ Technical informations
[PCGamingWiki] [MobyGames]
🦣️ Social
(SuperMarioBros-C) Devs (Mitchell Sternke [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
(SuperMarioBros-C) Devs (doppelganger [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
(Mario & Zelda) Devs (Nintendo [fr] [en]): [Site 1 2] [MobyGames] [Chat] [mastodon] [PeerTube] [YouTube] [Instagram] [PressKit] [Interview 1(Story)(1889) 2(202xxx)]
(Mario & Zelda) Devs (Shigeru Miyamoto (Nintendo) [fr] [en]): [Site 1 2] [MobyGames] [IMDb] [PeerTube] [YouTube] [PressKit] [Interview 1(Story)(Takashi Tezuka & Shigeru Miyamoto)(1981) 2[fr](Shigeru Miyamoto)(201509) 3[fr](Takashi Tezuka & Shigeru Miyamoto)(201512)]
(Mario & Zelda) Devs (Takashi Tezuka (Nintendo) [fr] [en]): [Site 1 2] [MobyGames] [IMDb] [PeerTube] [YouTube] [PressKit] [Interview 1(Story)(Takashi Tezuka & Shigeru Miyamoto)(1981) 2(Takashi Tezuka & Shigeru Miyamoto)(201506) 3(Takashi Tezuka)(201906)]
The Project: [Blog] [Chat] [Forums] [mastodon] [PeerTube] [YouTube] [PressKit] [reddit] [Discord]
🐝️ Related
[Wikipedia (Super Mario Bros.) [fr] [en] [de]]
📦️ Misc. repositories
[Repology] [pkgs.org] [Generic binary] [Arch Linux / AUR] [openSUSE] [Debian/Ubuntu] [Flatpak] [AppImage(author's repo)] [Snap] [PortableLinuxGames]
🕵️ Reviews
[HowLongToBeat] [metacritic] [OpenCritic] [iGDB]
🕊️ Source of this Entry: [Site (date)]
🦣️ Social Networking Update (on mastodon)
🕹️ Title:
🦊️ What's:
🏡️
🐣️
🔖
📦️
📖 Our entry: (homeless)
🥁️ Update:
⚗️
📌️ Changes:
🦣️ From: 🛜️
🏝️ https://www.youtube.com/embed/
🦉️ https://www.youtube.com/embed/
🦝️ https://www.youtube.com/embed/
🦝️ https://www.youtube.com/embed/
🕵️ https://www.youtube.com/embed/
🕯️https://www.youtube.com/embed/
🕯️https://www.youtube.com/embed/
🎲️ https://www.youtube.com/embed/
🎲️ https://www.youtube.com/embed/
🎲️ https://www.youtube.com/embed/
🎲️[fr] https://www.youtube.com/embed/
🎮️ https://www.youtube.com/embed/
🎮️ https://www.youtube.com/embed/
🐧https://www.youtube.com/embed/
🐧https://www.youtube.com/embed/
🕶️
📚️ Name is a
📜️ "blabla" 📜️
SuperMarioBros-C
Looks and plays just like the original
An attempt to manually translate the original Super Mario Bros. for the NES to readable C/C++.
I've taken the smbdis.asm disassembly of Super Mario Bros. and successfully converted it to C++ using an automated codegen program I wrote (which you can be found in the codegen/ subdirectory of the repo). Right now, it looks very similar to the original disassembly and is fairly dense code, but it works! Check out source/SMB/SMB.cpp if you're curious.
Many thanks to doppelganger (doppelheathen@gmail.com), who wrote the original comprehensive Super Mario Bros. disassembly. This can be found in the docs/ folder of the repo.
Building
Dependencies
• C++11 compiler
• Boost
• SDL2
• Flex
• Bison
• CMake
Running
This requires an unmodified copy of the Super Mario Bros. (JU) (PRG0) [!].nes ROM in the working directory to run. Without this, the game won't have any graphics, since the CHR data is used for rendering.
Architecture
The game consists of a few parts:
• The decompiled original Super Mario Bros. source code in C++
• An emulation layer, consisting of
⚬ Core NES CPU functionality (RAM, CPU registers, call stack, and emulation of unique 6502 instructions that don't have C++ equivalents)
⚬ Picture Processing Unit (PPU) emulation (for video)
⚬ Audio Processing Unit (APU) emulation (for sound/music)
⚬ Controller emulation
• SDL2 library for multi-platform video/audio/input
Essentially, the game is a statically recompiled version of Super Mario Bros. for modern platforms. The only part of the NES that doesn't have to be emulated is the CPU, since most instructions are now native C++ code.
The plan is to eventually ditch all of the emulation layer and convert code that relies upon it. Once that's done, this will be a true multi-platform version of Super Mario Bros. which behaves identically to the original. It could then be easily modified and extended with new features!
License
TODO
Un moteur pour le jeu Super Mario Bros., par Mitchell Sternke (à partir du désassemblage de l'original (de Shigeru Miyamoto & Takashi Tezuka, Nintendo) par doppelganger).
En C/C++ (traduit en C++ à partir de l'assembleur du jeu original).
SuperMarioBros-C est un moteur gratuit (licence non spécifiée) et multi-plateforme pour le jeu Super Mario Bros. (nécessitant la ROM de la NES pour les données), issu d'une rétro-ingénierie du source du jeu original. Il se compose à la fois du moteur original traduit en C++, d'une couche d'émulation du matériel et de la bibliothèque SDL2 pour le rendu. L'intérêt est de rendre le jeu multi-plateforme et qu'il se comporte de manière strictement identique à l'original. Génial.
SuperMarioBros-C
A l'aspect et fonctionne de manière identique à l'original
Une tentative de traduire manuellement le Super Mario Bros. original pour la NES en C / C ++ lisible.
J'ai utilisé le désassemblage smbdis.asm de Super Mario Bros. et l'ai converti avec succès en C ++ en utilisant le programme codegen automatisé que j'ai écrit (que vous pouvez trouver dans le sous-répertoire codegen/ du source). À l'heure actuelle, il ressemble beaucoup au désassemblage d'origine et c'est un code assez dense, mais ça marche ! Jetez un oeil dans source/SMB/SMB.cpp si vous êtes curieux.
Un grand merci à doppelganger (doppelheathen@gmail.com), qui a écrit le désassemblage complet de Super Mario Bros. Il peut être trouvé dans le dossier docs/ du source.
Construction
Dépendances
• Compilateur C ++ 11
• Boost
• SDL2
• Flex
• Bison
• CMake
Fonctionnement
Il nécessite une copie non modifiée de la ROM "Super Mario Bros. (JU) (PRG0) [!].nes" dans le répertoire de travail à exécuter. Sans cela, le jeu n'aura aucun graphique, puisque les données CHR sont utilisées pour le rendu.
Architecture
Le jeu se compose de quelques parties :
• Le code source original de Super Mario Bros. décompilé en C ++
• Une couche d'émulation composée de :
⚬ Fonctionnalité du CPU du noyau NES (RAM, registres de processeurs, pile d'appels et émulation des instructions spécifiques au 6502 qui n'ont pas d'équivalents C ++)
⚬ Émulation de l'unité de traitement d'image (Picture Processing Unit, PPU) (pour la vidéo)
⚬ Émulation de l'unité de traitement audio (Audio Processing Unit, APU) (pour le son / la musique)
⚬ Émulation du contrôleur
• Bibliothèque SDL2 pour vidéo / audio / entrée multi-plateforme
Le jeu est essentiellement une version recompilée de Super Mario Bros. pour les plateformes modernes. La seule partie de la NES qui n'a pas besoin d'être émulée est le CPU, puisque la plupart des instructions sont maintenant du code C ++ natif.
Le plan consiste à éventuellement abandonner toute la couche d'émulation et à convertir le code qui en dépend. Une fois cela fait, ce sera une véritable version multi-plateforme de Super Mario Bros. qui se comporte de la même manière que l'original. Il pourrait alors être facilement modifié et étendu avec de nouvelles fonctionnalités!
Licence
À faire
⚙️ Installation à partir du binaire
Pas de binaire disponible.
📄️ Installation à partir du source
Installation :
• Installez au préalable les paquets suivants : libboost-dev libfl-dev libbison-dev
• Installez au préalable le(s) paquet(s) suivant(s) : sdl2
▸ Compilation :
• Dans son répertoire racine lancez successivement :
$ cmake -S . -B build/
$ cd build/
$ make -j$(nproc)
↪ le(s) binaire(s) issu(s) de la compilation se trouve(nt) dans le répertoire build/
• Téléchargez la ROM "Super Mario Bros. (JU) (PRG0) [!].nes". Si elle ne porte pas ce nom, renommez-là.
Attention : le téléchargement de ROMS commerciales est illégal à moins de les avoir acquises financièrement.
🚀️ LANCEMENT DU JEU:
• En console dans son répertoire racine lancez : $ ./smbc