Mario Kart Wii/Unused Code & Parameters
This is a sub-page of Mario Kart Wii.
- 1 Unused Code
- 1.1 Sub-Pages
- 1.2 Player Number on the Minimap
- 1.3 Exception Handler
- 1.4 Alternative Main Loop with Performance Monitor
- 1.5 Network Debug Messages "DWC_Log"
- 1.6 Draggable Blue Shells
- 1.7 Double-Sized Green Shells
- 1.8 Unused Competition/Tournament Game Mode
- 1.9 Online Squish Command
- 1.10 Scrapped Character Sound Method
- 1.11 Unused _Dif Files
- 1.12 BDOF File Extra Functions
- 1.13 BFOG and BFOBJ Files
- 1.14 Multiplayer-exclusive Skybox Models
- 1.15 Date of creation of ghosts
- 1.16 Unused Speed Increase Behaviour
- 2 Unused Parameters
| Unused Collision Type Effects|
Unused course collision type effects.
Player Number on the Minimap
There's a disabled feature in the minimap icons to display a line with the player number on it, similar to Double Dash!!. It is very big, and player icon headlights are rendered on top of it, making it invisible when they overlap. The colors for each player also seem to be in line with the Wii's default, rather than the different format the game uses.
The following Gecko code will enable this feature:
C27EB160 0000000B 8803002D 7C060775 7C7C1B78 41800044 38BF00DC 38610020 38800020 4CC63182 3D808001 618C1938 7D8903A6 4E800421 387E00A8 38810020 3D80805E 618C8368 7D8903A6 4E800421 38000001 980300BB 807C0034 00000000
C27E18B4 0000000B 8803002D 7C060775 7C7C1B78 41800044 38BF00DC 38610020 38800020 4CC63182 3D808001 618C0DD8 7D8903A6 4E800421 387E00A8 38810020 3D80805D 618C1C7C 7D8903A6 4E800421 38000001 980300BB 807C0034 00000000
C27EA7CC 0000000B 8803002D 7C060775 7C7C1B78 41800044 38BF00DC 38610020 38800020 4CC63182 3D808001 618C185C 7D8903A6 4E800421 387E00A8 38810020 3D80805E 618C7C44 7D8903A6 4E800421 38000001 980300BB 807C0034 00000000
C27D9520 0000000B 8803002D 7C060775 7C7C1B78 41800044 38BF00DC 38610020 38800020 4CC63182 3D808001 618C19A0 7D8903A6 4E800421 387E00A8 38810020 3D80805D 618C6504 7D8903A6 4E800421 38000001 980300BB 807C0034 00000000
When the game crashes, press the following buttons (in order, from left to right) on the 1st Wii Remote (Vertical) to bring up an exception handler:
Up, 1, Down, 2, Right, -, Left, +, B, A
Use the D-Pad to scroll.
Alternative Main Loop with Performance Monitor
Mario Kart Wii has two main game loops. The used one is game-specific, but there is an extra unused loop included in the EGG library, shared across multiple games (EGG::ConfigurationData::run(void), which starts at RAM address 0x8024269c in PAL). The following differences are known:
- There's an instance of EGG's ProcessMeter, with three bars on the bottom of the screen. The green one measures the CPU sending commands to the GPU, the blue one shows the GPU rendering from said commands, and the red one displays the total frame time. It is disabled by default. The code below enables it.
- The title screen lacks gameplay demos or the opening movie, but the music still fades out expecting the scene to switch.
- Some sound effects don't play properly, including: selecting the final OK button to start the race, the item siren, the item roulette, etc.
- Races are missing several sound effects like wheelies, shells, Lakitu's sounds, etc.
- A lot of sounds don't have a delay, which makes a lot of them play quicker than usual. For example, characters will immediatly play their "recover" sound upon being respawned by Lakitu (instead of waiting a little bit). Other sound play faster as well, such as the "driving above wood" sound effect.
- If playing on 3/4 player multiplayer, the game will noticeably slow down, and the players won't be able to see anything, aside of some graphical effects and the HUD.
The following Gecko code allows you to play on this unused game loop and enables the performance monitor:
04008F8C 818C0070 04238F14 4E800020 0424271C 4800001C 04242730 48000008 04242834 48000014
04008F4C 818C0070 04238B90 4E800020 04241860 4800001C 04241874 48000008 04241978 48000014
04008EE8 818C0070 04238E34 4E800020 0424263C 4800001C 04242650 48000008 04242754 48000014
040090DC 818C0070 04239288 4E800020 04242A90 4800001C 04242AA4 48000008 04242BA8 48000014
This Gecko code displays the performance monitor without having to access the unused game loop:
C200960C 00000006 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0008 7D8903A6 4E800421 81950000 60000000 00000000 C200962C 00000006 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0010 7D8903A6 4E800421 60000000 00000000 C200968C 00000006 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0014 7D8903A6 4E800421 60000000 00000000 C20097A4 00000007 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 39800001 9983010A 81830000 818C000C 7D8903A6 4E800421 60000000 00000000
C20095CC 00000006 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0008 7D8903A6 4E800421 81950000 60000000 00000000 C20095EC 00000006 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0010 7D8903A6 4E800421 60000000 00000000 C200964C 00000006 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0014 7D8903A6 4E800421 60000000 00000000 C2009764 00000007 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 39800001 9983010A 81830000 818C000C 7D8903A6 4E800421 60000000 00000000
C2009568 00000006 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0008 7D8903A6 4E800421 81950000 60000000 00000000 C2009588 00000006 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0010 7D8903A6 4E800421 60000000 00000000 C20095E8 00000006 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0014 7D8903A6 4E800421 60000000 00000000 C2009700 00000007 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 39800001 9983010A 81830000 818C000C 7D8903A6 4E800421 60000000 00000000
C2009714 00000006 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0008 7D8903A6 4E800421 81950000 60000000 00000000 C2009734 00000006 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0010 7D8903A6 4E800421 60000000 00000000 C2009794 00000006 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 81830000 818C0014 7D8903A6 4E800421 60000000 00000000 C20098AC 00000007 4E800421 81950000 7EA3AB78 818C0018 7D8903A6 4E800421 39800001 9983010A 81830000 818C000C 7D8903A6 4E800421 60000000 00000000
Network Debug Messages "DWC_Log"
Get an image that actually displays DWC messages in the console and possibly a video. Copy the table with all the strings from the Wiiki source into here.
DWC_Log is a method providing logging functionality to the DWC library, which is the library used for online mode (Nintendo WFC). When online, the game outputs messages like "I am New Server!!" to the non-existent console. The developers of the game would have had a cable connected to the console allowing them to view the log on development software. The game also contains debugging messages using the printf method, which are also sent to the non-existent console.
Draggable Blue Shells
Blue Shells seemed to have been once intended to be held behind the player before they use it. The game contains a list of values for each item that define what the item does when the player uses it; for example, Red Shell uses 0x01, which means that the item is held behind the player and fires when they let go of it. An item like Star would be 0x00, for the game to immediately use the item as the button is pressed. For some odd reason, Blue Shell is listed as 0x01, which means the item should be held behind the player like a red shell, though the game has code to prevent this and instead have the player immediately fire it. Disabling this code reveals that the Blue Shell has an unused animation for being held. There's also an unused action for when a player hits it, which works even if the game is modified so that the blue shell lands on the ground if someone loses it. Here is an AR/Gecko code to enable it:
Double-Sized Green Shells
In one of the routines that sets up items, there is code that scales up the green shells (including their hitbox) to double their size when fired (and also when they're stationary in the ground), but only if the course has defined the Big Pokey object (with ID 0x1AB). This version of the enemy was only used in one competition/tournament, and even then, the only items present there were Bob-Ombs, leaving this functionality unused.
The code that performs these changes starts at 0x80790d1c in RAM (PAL). You can use the following Gecko code to enable this functionality outside of this competition/tournament:
Unused Competition/Tournament Game Mode
The competition/tournament file format (RKC) supports an additional game mode that was never present in any competition/tournament released by Nintendo: hit CPUs with items to increase the score (ID 0x07). The items needed for the score to increase are projectiles (shells, etc.). Stars, Mushrooms, Mega Mushrooms and Bullet Bills do not score.
This mode is also present in the unused Mission Mode.
Online Squish Command
Find out where this unused bit is found in the online protocol. It's likely part of RACEDATA.
In online matches, players can only get squished if they are hit on their point of view. This is also explains why sometimes, if you're on a Mega Mushroom and hit somebody, they will continue as normal even if in your screen it looks like they've been stomped (because on the other player's screen, they haven't actually been hit).
However, the online protocol has an unused bit that can make players squished on command. So, for example, if you have a Mega Mushroom and you manage to hit somebody, the player that has been attacked will get squished on their screen, even if on their screen they haven't been hit by the Mega Mushroom player.
In the video on the right, a cheat code was used by the opponent to force flipping this unused bit towards the victim. The game then sees this bit as 'Victim has been hit by a Mega Mushroom', and so all of the sudden they get squished.
Scrapped Character Sound Method
Add the information from the video here.
In the game's code, there is a definition of a BRASD folder inside of the character archive files.
Unused _Dif Files
The game supports loading variants of the existing course files ending with "_Dif.szs". These files were meant to be used to replace / load additional course information into the original course file without modifying it. The way these files have to be named is by taking the original course filename and adding "_Dif" on it, then placing said file in /Race/Course. For example, for Luigi Circuit (stored in /Race/Course/beginner_course.szs), its "_Dif" file would need to be stored in /Race/Course/beginner_course_Dif.szs
When a "_Dif.szs" file is found, the game loads the original course file as a base, and then it will load the contents of the "_Dif" file, which will either replace the subfiles from the original course archive (if a subfile is found in the "_Dif" archive that matches the name of another subfile in the original course) and/or will load additional subfiles into it.
While a similar approach was used for competitions/tournaments, as well as in the unused Mission mode, it uses a different set of files there, none of which have "_Dif" in their filenames. In addition, in multiplayer modes, only the course files ending with "_d.szs" are loaded (the game never loads the original course file nor any "_Dif" files there).
BDOF File Extra Functions
BDOF (Binary Depth Of Field) is a post-effect file that controls effects like focus, sharpness, and blur in tracks.
There is unused code that allows the usage of a secondary BDOF file, named posteffect.bdof_demo. This one has the same format as a normal BDOF file, and it seems to be used only in the course introduction if present.
BFOG and BFOBJ Files
BFOG and BFOBJ Files (which are meant to control the fog in the courses) are defined in the code, but the game only uses BFG Files instead, probably because they have a simpler format. This may be a remnant from New Super Mario Bros. Wii, as both games share the same EGG library.
Multiplayer-exclusive Skybox Models
The game supports loading files named vrcorn_d_model.brres, which would have been low-poly versions of the skybox models intended for the multiplayer version of the courses (for reference, the low-poly multiplayer versions of the course models are named "course_d_model.brres"). In the final game, there're no files named "vrcorn_d_model.brres", only "vrcorn_model.brres" (the regular skybox model), which are found in both the single and multiplayer versions of the courses.
Date of creation of ghosts
When players create a Time Trial ghost, the year, month and day it was created is saved in the file (coming from the Wii's settings). This date is never seen in-game, however.
Unused Speed Increase Behaviour
When using a Star or a Mega Mushroom / Thundercloud, your vehicle's base speed will be set to 105 and 95 respectively, ignoring the original speed. However, unused data suggests that the speed increase was not a fixed value originally, but +25% your base speed.
If this was used, the faster vehicles could have surpassed the 105 / 95 limit without the need of mushrooms / boost panels / slipstreams (which also use multipliers). In the example above, the base speed changes to 84.54 (Spear / Torpedo base speed) + 25% = 105.68, and 118.36 while doing a wheelie. In the regular game, in both cases, the speed is fixed at 105.
The unused multiplier value for the Star can be found at 0x808b5c64, while the one for Mega Mushroom / Thundercloud is at 0x808b5c74 (PAL). The code that uses these values starts at 0x80588e24 (PAL).
Unused kartCameraParam.bin Parameters
kartCameraParam.bin in /Race/Common.szs has 3 additional duplicated entries for camera entities that are never used.
In /Scene/UI/ are a bunch of unused .bin files that seem to be very slightly early versions of the used .bin files (located in /Race/Common.szs), which control several parameters in the game.
This file controls the statistics of the vehicles.
Three "Tilt Strength" values for certain karts have been lowered in the final game.
|Kart||Early Value||Final Value|
|Standard Kart L||0.02||0.015|
This file controls the statistics of the characters.
Several "Slippery Road Type 2" speed values were changed as well.
|Character||Early Value||Final Value|
This file controls the position of the camera for the vehicles.
Two camera parameters have been ever-so-slightly changed.
|Early Near Camera 1||Final Near Camera 1|
|Early Near Camera 2||Final Near Camera 2|
Unused Mini Beast exhaust pipes
The Mini Beast has unused position data for an extra set of exhaust pipes, placed below the first set, defined in Race/Common.szs/kartPartsDispParam.bin This goes unused because the parameter that tells what type of exhaust pipes should be displayed (for the extra pipes) is -1, meaning "don't display".
|Exhaust set 2 XYZ position||
Unused ItemSlot.bin entries
ItemSlot.bin contains a set of tables that control the item roulette probabilities. One table that it contains is the "special" table, which has item probabilities used in some specific scenarios (for example, one entry in this table is used in the item boxes in the center of Chain Chomp Wheel, so that the player can always get a Star).
The last four entries of this table are empty and unused.