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.
-
show_timer_in_gp: Makes the timer be visible during Grand Prix
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)eur_rev0: Europe (v1.0) (0004000000030700) (WIP)eur_rev2: Europe (v1.2) (0004000000030700) (WIP)
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
-
devkitPro: For the
devkitARMtoolchain. -
Magikoopa-NSMB2-Examples (RicBent) and nsmb2-patch-collection (Gimzie): Being the idea inspiration for this repository.