Newer Super Mario All-Stars Revived is a New Super Mario Bros. Wii mod which aims to be a Super Mario All-Stars remaster, featuring a modern take on gameplay and extra additions to the game.
- The guides below assume a certain level of savviness. Don't know how to do something? Look it up.
- Don't like how the folder structure is laid out? Change it.
- CodeWarrior for MPC55xx/MPC56xx v2.10 Special Edition
- Kamek (pick according to your OS)
- Clone the GitHub repo to a folder of choice;
- Install
.NET 5.0
or higher if not already present, as it is required by Kamek; - Add Kamek to your
PATH
variable (restarting your device may be necessary in order for the change to be detected);- If this isn't possible, then edit the build scripts to match Kamek's path.
- Run the CodeWarrior installer;
- Only the
Command Line Tools
component is needed for compilation; you can set this in the custom install configuration.
- Only the
- Go to the cloned GitHub repo and make a folder named
cw
; - Go to the CodeWarrior installation directory and copy the contents of the
PowerPC_EABI_Tools\Command_Line_Tools
folder to thecw
folder; - Copy
license.dat
andlmgr11.dll
to thecw
folder as well; - Run
build.py
to build the mod's code or loader. Make sure to check the notes section.
I'm not covering this. Figure it out yourself.
- Clone the GitHub repo to a folder of choice;
- CodeWarrior is a Windows application, therefore
wine
needs to be installed in order to run it; - Kamek requires
dotnet
to be installed, so get that as well; - Add Kamek to your
PATH
variable (sourcing may be necessary in order for the change to be detected); - Do NOT run the CodeWarrior installer in WINE, as the installer will fail;
- Due to the above, you'll need to extract the needed files manually. To do so, first make sure the
cabextract
package is installed; - Place the CodeWarrior installer in the same folder as
extractCW.sh
, then run the script; - Run
build.py
to build the mod's code or loader.
- The scripts automatically place the compiled binaries into the
assets/game
folder. Change them if you don't like it; - The
game
build script accepts a list of regions to compile the code to. If no regions are given, the code will be compiled for every region. The list is as follows:- P1 = EU v1;
- P2 = EU v2;
- E1 = US v1;
- E2 = US v2;
- J1 = JP v1;
- J2 = JP v2;
- K = KR;
- W = TW;
- The codebase uses C++ and PowerPC Assembly. C++ is preferred for full function replacements and for any kind of complex logic;
- No assumption about the use of registers by C++ code is made other than the ABI. If necessary, assembly wrappers are employed to restore/backup registers;
- The headers attempt to keep a consistent naming scheme and respect the original game's names, definitions and structures. However, all class members are marked as public for ease of use;
- As code is progressively added/updated, bugs may accidentally be introduced due to incompetence.
NOTE: Do not use this repository to ask modding questions! They will be left unanswered.
- NSMBW Modding Database
- NSMBW Hacking Depot (Discord Server)
- Compiler conventions and more (for Mario Kart Wii but applies to New Super Mario Bros. Wii as well)
- Custom Sprite Guide (by Asu-chan)
- IBM PPC 750CL Manual
- Various Assembly Tutorials and Techniques (for Mario Kart Wii but applies to New Super Mario Bros. Wii as well)
- Incomplete PAL v1 Symbol Map (by Ninji, RoadrunnerWMC, RootCubed, Grop and _tZ, here is a demangler/remangler for it written in Python)
- Mario Kart Wii Decompilation (included since several libraries used in Mario Kart Wii are shared with New Super Mario Bros. Wii. Code by riidefi et al.)
- Misc Structures (by me, outdated)
- Newer Super Mario Bros Wii Structures (by the Newer Team)