This repository contains various examples patches and mods for Mario Kart 7.
-
change_chara_wifi (WIP): Adds a "Character" button in the online VR screen that allows you to change the character in between races.
-
class_lr_select: A custom menu that replaces the Local Multiplayer, which allows you to enable or disable many of these mods.
-
input_viewer: Allows you to view your stick movements and button presses in real time during races.
-
race_prints: Prints some vehicle and race information in the top screen during races. (USA Rev1 only, at the moment)
-
random_stats: Randomizes the stats of your vehicle on each race.
-
show_timer_in_gp: Makes the timer be visible during Grand Prix
-
ultra_miniturbo: Allows you to charge a third level of miniturbo, displayed in purple (just like in MK8D).
-
variable_mii_size: Changes the weight class of you player Mii depending on its size and weight set in the Mii Maker, instead of always be forced to medium class (just like in MKWii).
For this mod, two versions are available for the 3DS version: with_assets (has the custom Mii body models, but might crash if used with Luma CFW's game patching) and without_assets (doesn't have the custom Mii body models, but works fine if using Luma CFW's game patching).
Install the 3DS packages from devkitPro, as well as Python and make, if not already installed.
Use make in the repository's root to build code.ips and exheader.bin. For cleaning, use make clean.
You can specify which game version to build the patches for by typing make VERSION=XXXX, where XXXX is one of the following. The title ID is shown between parenthesis:
usa_rev1: Americas (v1.1, prepatched) (0004000000030800) (default)eur_rev0: Europe (v1.0) (0004000000030700) (WIP)eur_rev2: Europe (v1.2) (0004000000030700) (WIP)
To know what Title ID corresponds to your game, check this document.
Open the 3DS's SD card in your computer. Then, navigate to \luma\titles\title ID, and copy the files code.ips, exheader.bin generated in this repository's root into that folder.
Power on your 3DS while holding the SELECT key to launch the Luma3DS menu. Make sure that Enable game patching is turned on, then press START to save and launch the home menu. You only have to do this once.
In the Citra window, right-click on the installed copy of Mario Kart 7, and choose Open Mods Location (alternatively you can go to File->Open Citra Folder and then open up \load\mods\title ID.) Copy the files code.ips, exheader.bin generated in this repository's root into that folder.
This project is based on bits and pieces of other 3DS modding and reverse engineering projects:
-
oot3d_practice_menu (gamestebled, lioncash, HylianFreddy and gymnast86): This project was used as the primary base for this repository - more specifically, HylianFreddy's fork, as it includes additional code inside
patch.pyto automatically generate certain parts of the finalexheader.bin. MM3DR uses a similar build system, which in turn is based on MM3D Restoration Project (which uses the Magikoopa software). -
Mario Kart 7 Reverse Engineering Team: For their repositories, used here as a base for libraries. Including (but not limited to):
- OpenEAD: sead, nnheaders
- 3DS Decompilation: LibMessageStudio
- Anto726: game research
- PabloMK7: game research
- Marioiscool246:
Kart::NetDataresearch - _tZ:
System::RootSystem, its nested classes, and much more
-
craiyonchewer on Discord: For creating all the 3D models used in the "variable Mii size" example.
-
devkitPro: For the
devkitARMtoolchain. -
Magikoopa-NSMB2-Examples (RicBent) and nsmb2-patch-collection (Gimzie): Being the idea inspiration for this repository.