Modding Mario Kart Wii

Aug - Oct 2020

This is probably a more unusual project, so back when I was in primary school, Mario Kart Wii was (and still is) my favourite game on the system and still remains one of my favourite games of all time. I got back into it again during my first year at University when I put it in the kitchen/social area of my flat to play various Wii games with my flatmates and during the summer holidays after my first year I started modding it to add characters, tracks and the ability to play online again since the servers got shut down years ago.

How to mod a Wii

Any mods that are used on the Wii are read off of a SD card rather than installed onto the console itself, which makes it less likey that any mods will permanently damage the console or games, even if the mods added crash the game.

To start with, the Homebrew channel needs to be added to the Wii to be able to run any homebrew applications, not just ones that mod Wii games, but you can also get applications to back up save games or copy Wii games from the disc to an SD card. The method I used to install the Homebrew channel was the Letterbomb method, where you download an installer on an SD card which is read as a letter in the mail menu of the Wii that allows you to run the installer. This then adds a file structure to the SD card which allows you to easily drag and drop homebrew applications from your computer to the SD card which, when inserted into the Wii, will show up in the Homebrew channel.

Getting Mods in Mario Kart

So now the Wii is set up for modding, the only thing now is to find mods for Mario Kart itself. One of the most common mods for Mario Kart is Wiimmfi, which allows you to play on custom servers set up to allow online play again since the original servers were shut down in 2014. This works not only for Mario Kart, but for over 100 supported games as well, which is why it works as a homebrew application on the channel, you load it up, and it patches the iso file of whatever disc is inserted in the console to direct the online play to the working servers. From my experience, it was very inconsistent on the Wii and kept disconnecting, but worked much better in the emulator, which I'll talk more about later, so I won't go over the installation here.

To add more content to the game through mods, I used a homebrew application called CTGP Revolution which adds over 200 extra tracks, some custom and some remade tracks from other Mario Kart Games, as well as other features like inbuilt Wiimmfi and a 'My Stuff' folder which it takes any files you put in there and puts them into the game, so it allows you to replace game character/item models, game sounds and music and pretty much any model/texture in the game. Most of the mods I added were ones I found on the internet, but I also created my own character mod out of Master Chief from the Halo games.

Before I can start putting Master Cheif in Mario Kart, I need to be able to have access to the original game files, so I can replace the models, textures and sounds of an existing Character, as unfortunately, you cannot add more on top of the existing roster in the same way you can with tracks. To get the original game files, I used another homebrew application called CLeanRip to copy the iso file from the disc to a USB drive, which can then be extracted on a computer with the command line software Wiimms ISO Tools.

Modding Master Chief into Mario Kart

Mario Kart Wii character files are in .szs format, so to open them, I used a program called Brawlbox. This allows me to view the .brres model file and export the G3D model as a .dae file to modify in any 3D modelling software. For Master Chief I chose Waluigi to replace, as I thought his model would have the most similar bone structure to map to the Master Chief model.

Brawlbox Software
3Ds Max Waluigi

Once I have the .dae file I can now import the Waluigi model into a 3D modelling software (I used 3Ds Max), replace the model with the Master Chief model, and map the bones to the skin. The model can be toggled to be transparent, allowing the bones to be seen easier.

I chose the Halo Combat Evolved model of Master Chief, as it had the lowest polygon count as the game was designed to handle only around 1000-1500ish polygons. Even with this model, there were too many polygons, so to lower the count further, I welded the skin's verticies and then used 3Ds Max proOptimiser feature to lower the poly count to around 1500. The welded verticies minimises holes forming on the model as lots of polygons are removed. I also split up the model a bit to target optimise the limbs and helmet seperately to further reduce the model tearing.

3Ds Max Model optimising
3Ds Max Bone Mapping

To actually map the bones to the now-optimised model, I go into the 'skin' modifier, where I can add the bones and select the verticies that apply for each bone and give them a weight of 1 when the correct bone is selected. this then tells the skin which parts of the model should be controlled by which bone when the model is going through it's animations. As the model is using Waligi's bones, it will use his animations too. Now I can export to .dae and replace the old model and textures in Bralbox with the new ones.

I can then take the 'driver.brres' file (seperately for karts and bikes) and replace each driver file of Waluigi's kart/bike .szs files with the Master Chief driver. I then renamed the 'wl' part of the file names with 'rs', so that this will now go over Rosalinas character in-game. This allowed me to replace the floating luma above Rosalina's character in-game with the 343 Guilty Spark from Halo using the same method as the character, but for the 'tico.brres' file inside the 'common.szs' file which holds all the item models, textures and animations.

The next thing to do is to change the menu and in-game references to 'Rosalina' and replace with 'M Chief' as for some reason the name cant be any longer than the original name, so 'Master Chief' wouldn't fit. Then I can also replace the 64x64 and 32x32 menu and race map icons with these ones, I made the 32x32 one myself, and scaled down an image I found online for the 64x64 icon.

Master Chief Icons
Brawlbox Replacing Sound Effects

To change the voices in game, I downloaded a bunch of Halo voice clips that would work well with the voice triggering events in Mario Kart, and replaced the Rosalina voice clips in the 'revo_kart.brsar' file that can be viewed in Brawlbox.

There we go! Master Chief is now playable as a Mario Kart Wii Character complete with correct menu and leaderboard labelling, menu and race map icons, sound effects and a floating 343 Guilty Spark.

Master Chief

Emulating Mario Kart Wii on PC

I know I already have access to a Wii, but emulating on a PC does allow significant improvements over a Wii. Hardware acceleration allows for the game and textures to be upscaled to a much higher resolution than the original 480p.

The emulator used for GameCube and Wii games is the Dolphin Emulator and allows up to 5k (5120x4224) resolution, 8x the original quality. This emulator requires the game iso to run, so to get this I used the CleanRip homebrew application on the Wii to copy the iso from the Mario Kart Wii disc to a USB drive int the back of the Wii. The emulator also allows you to emulate a Wii remote with a connected Xbox controller, which is much easier to use than a keyboard and mouse!

dolphin-emulator
dolphin-emulator

Being able to play online using Wiimmfi isn't just applying the ISO patcher to enable Wiimmfi. I also need to aquire my Will Nand.bin backup, which also allows me to transfer my game data from my Wii to my computer. This is done with another Homebrew application, BootMii, which allows me to download a Wii backup to a USB drive in the back of the Wii, which includes the Nand.bin I need to get my profile data on pc.

This is how far ive got with Mario Kart Wii modding so far, however I did try using Mario Kart 8 models and textures to make an almost 'HD' version of the game, but unfortunately the models weren't scaling properly to the bones and I couldn't get it to work properly. I might come back to that concept and/or other modding later (I would like to add my own tracks using LE-Code), but for now I'm leaving the modding here.