If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Mario Kart: Double Dash!!/July 5th, 2004 Debug Build

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of Mario Kart: Double Dash!!.

Forestofillusion.com logo.png  This was documented on Forest of Illusion.

Hiddenpalace.org logo.png  This prototype is documented on Hidden Palace.

MKDDDebug Title.png
The NR disc with a TDEV serial number of No. 04629. Sourced from Forest of Illusion on Internet Archive.

A debug build of Mario Kart: Double Dash!! was released on May 13, 2022 by Forest of Illusion. This build has a date of July 5th 2004 at 13:04:10, nearly 8 months following the final game's release. Almost all of the game's files are identical to that from the final release, but has a debug menu and various debug functions enabled, most of which are not present in the retail game. Although this build's purpose is unknown with its post-release build date, the NR disc that this build originates from has a sticker noting it belonged to Nintendo's Research & Engineering Division, or RED in short.

Debug Menu

Gamecube-MKDD-Debug MainMenu-1.png

To enter the debug menu (or Main Menu(kari) by its first menu), press Z + Start/Pause together on the title screen or any subsequent menus. This doesn't work during gameplay.

From left to right, you've got the following options:

  • Race: The main racing mode.
  • Test: Allows the user to easily access various screens.
  • Record: Allows the user to turn flags on/off.

Race

The first section is for setting up a race. The second row allows you to set the amount of other players, while the third row lets you pick between the following modes:

  • TimeAttack - Time Trials; can only be played with one player and defaults to 150cc.
  • GrandPrix - Grand Prix; can be played by up to two players. The settings here defaults to 8 players at 100cc.
  • Versus - Self-explanatory; defaults to 100cc.
  • Battle - Self-explanatory; defaults to 50cc.

Setting the player count to 2 will disable Time Trials. Anything above will also disable Grand Prix.

Player Select(kari)

Gamecube-MKDD-Debug PlayerSelect-1.png

This menu is brought up after selecting either of the four options under Race. It allows you to modify the player roster (including those from CPU's), the engine speed and what players should share a kart together. Up to eight players will show up on this menu depending on the amount of players you've selected.

Part of the controls are shown on the menu itself:

  • Control stick left/right - The kart that will be used by the player.
  • L + Control stick left/right - The kart that will start the race in the front, driving.
  • R + Control stick left/right - The kart that will start the race in the back, using items.
  • Y - Change which player(s) will control which characters. Choices are: one player controlling one kart, two players controlling one kart, and CPU-controlled kart.
  • X - Defaults up to the first four karts to 2 players in each kart. (This option does not show up on the menu.)
  • Z - Change the engine speed between 50cc, 100cc, 150cc or Mirror.

The characters' debug names are based on their Japanese names, with each kart's ID correspond to its owner.

It is interesting to note that King Boo is called Boss Teresa, the Japanese name of the King Boo in Super Mario Sunshine (and several contemporary appearances of Big Boo) in this menu, and not the final retail name King Teresa, the name used in Luigi's Mansion and all future appearances of King Boo.

Debug Name Character Corresponding Kart Default Characters To Corresponding Kart
Mario Mario Red Fire Mario & Luigi
Donkey Donkey Kong DK Jumbo Donkey Kong & Diddy Kong
Yoshi Yoshi Turbo Yoshi Yoshi & Birdo
Nokonoko Koopa Troopa Koopa Dasher Koopa Troopa & Paratroopa
Peach Peach Heart Coach Peach & Daisy
BabyMario Baby Mario Goo-Goo Buggy Baby Mario & Baby Luigi
Wario Wario Wario Car Wario & Waluigi
Koopa Bowser Koopa King Bowser & Bowser Jr.
Luigi Luigi Green Fire Luigi & Daisy
Diddy Diddy Kong Barrel Train Diddy Kong & Bowser Jr.
Catherine Birdo Turbo Birdo Birdo & Waluigi
Patapata Paratroopa Para-Wing Paratroopa & Baby Luigi
Daisy Daisy Bloom Coach Daisy & Mario
BabyLuigi Baby Luigi Rattle Buggy Baby Luigi & Bowser Jr.
Waluigi Waluigi Waluigi Racer Waluigi & Mario
KoopaJr Bowser Jr. Bullet Blaster Bowser Jr. & Paratroopa
Kinopio Toad Toad Kart Toad & Koopa Troopa
Kinopico Toadette Toadette Kart Toadette & Koopa Troopa
BossTeresa King Boo Boo Pipes Koopa Troopa & Koopa Troopa
BossPakkun Petey Piranha Piranha Pipes Koopa Troopa & Koopa Troopa
Extra N/A Parade Kart Mario & Peach

Map Select(kari)

Gamecube-MKDD-Debug CourseSelect-1.png

The screen after the character select is the map / course select. 62 courses are listed in total, with only 22 being playable. Pushing anywhere on the control stick lets you freely go through the list, with the A button loading up the selected course. If Grand Prix is chosen, the cup will be set to the Mushroom Cup. As a result of the debug menu failing to write some crucial data to memory (specifically to the SequenceInfo object) where the usual character selection screen would, the game will crash when trying to load the Award Ceremony at the end of the cup, since the ceremony mode will read invalid data.

Do note that if the course files don't exist, or you select a Battle course within Grand Prix (or vice versa), the game will crash.

Debug name Course Associated File
Luigi Luigi Circuit (Mushroom Cup 1) Luigi.arc (50cc)
Luigi2.arc (100cc or more)
Peach Peach Beach (Mushroom Cup 2) Peach.arc
Baby Baby Park (Mushroom Cup 3) BabyLuigi.arc
Nokonoko Mushroom Bridge (Flower Cup 1) Nokonoko.arc
Desert Dry Dry Desert (Mushroom Cup 4) Desert.arc
Daisy Daisy Cruiser (Flower Cup 3) Daisy.arc
Snow Sherbet Land (Star Cup 1) Snow.arc
Mario Mario Circuit (Flower Cup 2) Mario.arc
Patapata Mushroom City (Star Cup 2) Patapata.arc
Waluigi Waluigi Stadium (Flower Cup 4) Waluigi.arc
Donkey DK Mountain (Star Cup 4) Donkey.arc
Koopa Bowser's Castle (Special Cup 3) Koopa.arc
Diddy Dino Dino Jungle (Special Cup 2) Diddy.arc
Yoshi Yoshi Circuit (Star Cup 3) Yoshi.arc
Wario Wario Colosseum (Special Cup 1) Wario.arc
Rainbow Rainbow Road (Special Cup 4) Rainbow.arc
Mini 1 Luigi's Mansion (Battle C) Mini1.arc
Mini 2 Nintendo GameCube (Battle D) Mini2.arc
Mini 3 Block City (Battle B) Mini3.arc
Mini 5 Tilt-a-Kart (Battle F) Mini5.arc
Mini 7 Cookie Land (Battle A) Mini7.arc
Mini 8 Pipe Plaza (Battle E) Mini8.arc

The remaining 40 unplayable courses are as follows:

Debug name Associated File Description
Test 1 ... Test 27 Test1.arc ... Test27.arc 27 of the various courses meant for testing purposes.
E3 90% E3.arc Something related to E3, but otherwise unknown.
A3 A3.arc Unknown.
Dekoboko Dekoboko.arc Used to test courses in a rough state. The European
kiosk demo
accidentally left in an early version of
Sherbet Land.
Mini 4 Mini4.arc Scrapped Battle course #1.
Mini 6 Mini6.arc Scrapped Battle course #2.
Rev 1 ... Rev 8 Reverse1.arc ... Reverse8.arc 8 of the scrapped Reverse Cup courses.

Test

Gamecube-MKDD-Debug MainMenu-2.png

The second option on the menu is meant for quickly jumping to various menus or functions in the game. You're given the choice between five options: Scene, View, Award, Movie and Ending.

Scene

Gamecube-MKDD-Debug SceneTest-1.png

This function takes you to diverse menus. Pressing up and down on the left control stick lets you change your selection, and A sends you to the selected option. Note that some menus only properly function if they've already been loaded before.

  • TITLE - Title screen.
  • MENU - Main menu; player amount.
  • OPTION - Options; crashes the game for some reason, though only if you enter it through the debug menu. This screen does not crash in the demos.
  • COURSE - Course selection screen; only works if you've already been in this menu before, otherwise the game will crash. A crash will also occur if you return to the character selection screen.
  • MAP_SELECT - Battle map selection screen. If the race mode value is not set to any of the 3 battle modes, usually done in the main menu, the mode icon texture defaults to the Tilt-A-Kart texture while the mode text texture defaults to the Balloon Battle text. Selecting anything or going back to the character selection screen is prone to crashing the game depending on whether this screen has already been navigated through normal means or not.
  • RECORD - Records; much like the options menu, it crashes when entering. This screen does not crash in the demos.
  • GP_NEXT - Next course; goes to the next track in the cup lineup. Only works after already having played a track, otherwise the game will crash.
  • GHOST_LOAD_SAVE - Ghost Data screen; only works if you've already selected a course with Ghost Data before, though it'll display a screen with just a scrolling background. Loading the game without having been in this menu before crashes the game.
  • LAN_ENTRY - LAN Mode entry screen.
  • SECRET - Unlock screen; skips over the unlock, sends you back to the title screen.

View

Gamecube-MKDD-Debug ViewMessage-1.png

Allows you to view various error messages and prompts from three different categories. These categories are:

  • Error - Notices related to game errors.
  • Progressive - Mainly progressive scan-related assets.
  • MemoryCard - Mainly save data-related notices.
Error
Gamecube-MKDD-Debug ViewError-1.png

This group contains fatal disc and LAN related errors. All error messages under this group are using a red message box with no way to continue. Some duplicate error messages are present here too.

String Message
1:Cover Open
The Disc Cover is open.
To continue playing,
please close the Disc Cover.
2:No Disk
Please insert
a MARIO KART: DOUBLE DASH!!
Game Disc.
3:Wrong Disk
Please insert
a MARIO KART: DOUBLE DASH!!
Game Disc.
4:Retry Error
The Game Disc could not be read.
Please read the Nintendo GameCube
Instruction Booklet for more information.
5:Fatal Error
An error has occurred.
Turn the power OFF and
check the Nintendo GameCube
Instruction Booklet
for further instructions.
6:LA_ERROR_2
Data could not be properly transferred to
other Nintendo GameCube systems.
(Please see the Mario Kart: Double Dash!!
Instruction Booklet for more details.)
7:LA_ERROR_2
Data could not be properly transferred to
other Nintendo GameCube systems.
(Please see the Mario Kart: Double Dash!!
Instruction Booklet for more details.)
8:LA_ERROR_3
Check router and other settings.
(Please see the Mario Kart: Double Dash!!
Instruction Booklet for more details.)
9:LA_ERROR_1
Make sure only
Nintendo GameCube systems
are connected to the LAN link cables.
(Please see the Mario Kart: Double Dash!!
Instruction Booklet for more details.)
10:LA_ERROR_0
Check LAN cable connections
and other settings. (Please see
the Mario Kart: Double Dash!!
Instruction Booklet for more details.)
11:LA_DISCONNECTING
Disconnecting LAN link...
Do not touch the LAN cable
or the POWER Button.
12:LA_DISCONNECTING_ERROR
Linking error.

Disconnecting LAN link...
Do not touch the LAN cable
or the POWER Button.
Progressive
Gamecube-MKDD-Debug ViewProgressive-1.png

This group contains all messages related to turning progressive scan mode on or off. Note that the Nintendo logo is included as the fourth option, but doesn't display the Dolby Surround logo whatsoever.

String Message
0:SHOW_PG
Would you like to display
in Progressive Scan Mode?
1:SET_PG
Progressive Scan Mode
has been turned on.
2:SET_IL
Progressive Scan Mode
has been turned off.
3:LOGO Nintendo logo (no text).
MemoryCard
Gamecube-MKDD-Debug ViewMemoryCard-1.png

This group contains an assortment of prompts an error messages related to the Memory Card, Ghost Data and LAN Mode and other miscellaneous stuff, ranging from screens where you're given the option to select between yes or no, messages where you have to press the A button, messages where you have to wait and a few error messages where you have to press A to continue. It seems like LAN Mode and other unrelated things were added late in development, as these messages weren't only placed in the wrong category, but also lack strings.

String Message Prompt
0:MC_NO_CARD_CONTINUE
No Memory Card found in Slot A.
Continue without saving game data?
Yes / No.
1:MC_NO_USE_CONTINUE
The device inserted in Slot A
is not a Memory Card.
Continue without saving game data?
Yes / No.
2:MC_WITHOUT_MK_CONTINUE
The Memory Card in Slot A
does not correspond to this game.
Continue without saving game data?
Yes / No.
3:MC_BROKEN_NO_SAVE_CONTINUE
The Memory Card in Slot A
is damaged and cannot be used.
Continue without saving game data?
Yes / No.
4:MC_BROKEN_GO_FORMAT
The Memory Card in Slot A
is corrupted and
needs to be formatted.
Would you like to format
the Memory Card now?
Yes / No.
5:MC_NO_FILE_NO_SAVE
The Memory Card in Slot A does not
contain the save file you last used.
Continue without saving game data?
Yes / No.
6:MC_GAME_SAVING_NO_TOUCH
Saving game data.
Do not touch the Memory Card
or the POWER Button.
No inputs.
7:MC_GST_SAVING_NO_TOUCH
Saving ghost data.
Do not touch the Memory Card
or the POWER Button.
No inputs.
8:MC_MISS_SAVED
An error may have
occurred during saving.
A to continue, red text box.
9:MC_IN_CARD_PUSH_BUTTON
Insert a Memory Card into Slot A
and press the A Button.
A to continue.
10:MC_CHANGE_CARD_PUSH_BUTTON
Insert a different Memory Card into
Slot A and press the A Button.
A to continue.
11:MC_MISS_FORMAT
The Memory Card
could not be formatted.
A to continue with red text box.
12:MC_FORMAT_LOST
Formatting the Memory Card
will erase all previously saved data.
Do you want to format?
Yes / No.
13:MC_FORMAT_NO_TOUCH
Formatting.
Do not touch the Memory Card
or the POWER Button.
No inputs.
14:MC_NO_SAVE_CONTINUE
Continue without saving?
Yes / No.
15:MC_MAKE_FILE
Would you like to create data for
MARIO KART: DOUBLE DASH!!
on the Memory Card in Slot A?
Yes / No.
16:MC_MAKE_FILE_NO_TOUCH
Now creating data...
Do not touch the Memory Card
or the POWER Button.
No inputs.
17:MC_MADE_FILE
Data has been
created.
No inputs.
18:MC_MISS_MAKE_FILE
Data could not be created.
A to continue with red text box.
19:MC_NO_SPACE_GO_IPL
There's not enough empty space
on the Memory Card in Slot A.
This game requires 1 file and
3 empty blocks to save.
Manage Memory Card?
Yes / No.
20:MC_TOO_MANY_FILE_GO_IPL
There are too many files
on the Memory Card in Slot A.
This game requires 1 file and
3 empty blocks to save.
Manage Memory Card?
Yes / No.
21:MC_NO_USE
The device is
not a Memory Card.
No inputs.
22:MC_WITHOUT_MK
The Memory Card
is not compatible
with this game.
No inputs.
23:MC_BROKEN_NO_USE
The Memory Card
is damaged and
cannot be used.
No inputs.
24:MC_BROKEN_NEED_FORMAT
The Memory Card
is corrupted and
must be formatted.
No inputs.
25:MC_GST_LOAD
Would you like
to load?
Yes / No, small text box.
26:MC_LOADED
Load complete.
No inputs, small text box.
27:MC_NO_SPACE_NO_SAVE
There's not enough
empty space.
Ghost data requires
1 file and 5 blocks
to save.
No inputs.
28:MC_TOO_MANY_FILE
There are
too many files.
Ghost data requires
1 file and 5 blocks
to save.
No inputs.
29:MC_GST_SAVE
Would you like
to save?
Yes / No, small text box.
30:MC_SAVED
Saving complete.
No inputs, small text box.
31:MC_GST_OVERWRITE
Overwrite?
Yes / No, small text box.
32:MC_NO_GST
There is
no ghost data
that can be loaded.
No inputs.
33:MC_GST_NO_LOAD
The ghost data
could not be loaded.
A to continue with red text box.
34:MC_GST_BROKEN_NO_LOAD
This ghost data is corrupted
and cannot be loaded.
Go to the Memory Card Management
screen and delete this ghost data.
A to continue with red text box.
35:MC_BROKEN_NO_LOAD
This game data is corrupted
and cannot be loaded.
If you save new game data,
it will overwrite the corrupted data.
A to continue with red text box.
36:MC_TOO_MANY_FILE_CONTINUE
Begin LAN setup.
OK?
Yes / No.
37:MC_NO_SPACE_CONTINUE
Disconnect LAN link.
OK?
Yes / No.
38:
Disconnecting LAN link...
Do not touch the LAN cable
or the POWER Button.
No inputs.
39:
Quit? Are you sure?
Yes / No, small text box.
40: Black screen. N/A.

Award

This plays the Award Ceremony. The game will use its own default settings to set up the award ceremony cutscene.

  • The cup is taken from the variable RaceInfo::sAwardDebugCup, which is set to 0 - the Mushroom Cup.
  • The engine class is taken from RaceInfo::sAwardDebugLevel, which is set to 2 - 150cc.
  • The final placement is taken from RaceInfo::sAwardDebugRank, which is set to 1 - first place.
  • The characters and karts that appear in the ceremony are read from the tables RaceInfo::sAwardDebugKartIDTable, RaceInfo::sAwardDebugDriver1IDTable and RaceInfo::sAwardDebugDriver2IDTable.
    • The values in the tables correspond to Mario and Luigi on the Parade Kart (as 1st racers are always on this kart), Bowser and Bowser Jr. on the Koopa King and Peach and Daisy on the Heart Coach.

There is also separate data set up that can potentially overwrite any data saved for the Records screen. This corresponds to 1st place, 150cc, the Mushroom Cup, Mario and Luigi on the Red Fire, an end time of 1:59:999 and a score of 0 points.

Movie

This was supposed to show the opening sequence with Lakitu and the game's intro FMV, however nothing appears to happen and the game gets stuck on a black screen instead. Resetting the GameCube to go to the title screen is the only way to leave this black screen. The reason why this happens is because the Debug Menu does not create the MoviePlayer object to play the opening FMV. As a results, the static variable MoviePlayer::sPlayer remains as a null pointer and the MovieApp::calc function cannot do any productive work nor progress as it depends on this variable being initiated. Interestingly, this Movie option does work in the kiosk demos because those demo builds do not have any opening movie to show after the Lakitu animation.

Ending

This plays the game's credits, without the true ending meaning the final picture will always be Mario and Peach on the Red Fire, even if the Special ending flag has been set.

Record

Gamecube-MKDD-Debug MainMenu-3.png

Allows you to change the game's unlock triggers, though it doesn't necessarily let you save these changes immediately. Pressing Y inverts the selections of all the selected choices per row, meaning to unlock everything, you have to press per option the Y button.

GameFlag

Toggles which unlockable content is unlocked or not.

  • Kinopio combi - Toad and Toadette.
  • Boss combi - Petey Piranha and King Boo.
  • Mirror - Mirror Mode.
  • Special cup - Special Cup.
  • All cup tour - All Cup Tour.
  • Ending - Unused, the game normally sets this flag when placing 1st, 2nd or 3rd in any Special Cup.
  • Special ending - Alternate title screen and alternate picture at the end of the credits.
  • Mini Luigi - Luigi's Mansion.
  • Mini Mario - Tilt-A-Kart.

SecretKart

Toggles which unlockable kart is unlocked or not.

  • Baby luigi - Rattle Buggy.
  • Patapata - Para-Wing.
  • Diddy - Barrel Train.
  • KoopaJr - Bullet Blaster.
  • Kinopio - Toad Kart.
  • Kinopico - Toadette Kart.
  • Luigi - Green Fire.
  • Daisy - Bloom Coach.
  • Catherine - Turbo Birdo.
  • Waluigi - Waluigi Racer.
  • Pakkun - Piranha Pipes.
  • Teressa - Boo Pipes.
  • Extra - Parade Kart.

GP rank

Toggles which Grand Prix cups have been unlocked or not. The Y button is disabled here, though a few new options come into play:

  • Control stick left/right - Changes the cup rank. You have the option between 1st place (gold), 2nd place (silver) and 3rd place (bronze).
  • C-stick left/right - Go through the available cups, with options between the Mushroom Cup, Flower Cup, Star Cup, Special Cup and All Cup Tour in order.
  • C-stick up/down - Change the engine speed (cc). You have the option between 50cc, 100cc, 150cc and Mirror Mode.

Pressing the A button will confirm your selection. The cup cannot be removed unless a hard reset is performed.

On the Records screen, the game will present preset data when a Grand Prix cup is set. This preset data is a time of 2:03:456 with 30 points. Mario is set as the front driver, Peach as the backseat driver and Red Fire as kart. The default initials are "OSK", which might refer to Satoru Osako, who is credited for programming.

Unused Test Screen

MKDD-DebugMenu-Unused-TestApp.png

The game's program is divided into several different applications. One of which, TestApp (ID 0xf) is completely unused. It's a very basic application that simply prints the word test to the screen, and can go to the main debug menu if the B button is pressed on a controller in port 1. Usually this screen would be initiated by calling TestApp::call, but according to debugInfoM.map on line 64268, this function is unused and not present in the game's code at all, meaning no references to this function were made, and the compiler had omitted this function. This menu is also inaccessible in the debug menus found in the North American kiosk demo and the European kiosk demo.

In-Game Debug Pages

Gamecube-MKDD-Debug USRPAGEExample-1.png

To activate additional debug pages in-game, press Z + R together on a second controller plugged into port 2, with all the button prompts mentioned below also using the second controller. Text and a process bar will appear on screen. To toggle between menus, press L or R.

The process bars will always stay on screen, even after closing the debug pages. A hard reset must be performed to disable them. During certain scenarios, you can hold Start/Pause during moments with lots of resource power (such as when Memory Map is opened) to show the bars in greater length. These bars indicate the following:

  • Green: Total system resources used.
  • Red: Resources used by the CPU.
  • Gray: Resources left available.

USR PAGE:#

This page stays empty on other screens, but displays information during a race. Pressing the C-stick left/right lets you toggle between different pages, with the page number going up or down with it.

Page 0 shows information about racers on the track, what controller ports they're attached to (PORT# or NULL) and whether they're a player (KIND MAN), CPU (KIND COM) or ghost player (KIND GHOST).

Page 1 shows variables about player 1 during the current race, such as how close you are to the finish line, your position, laps, position of the player, surface type, camera type, rank, and more.

Page 2 shows preset variables about the player and enemy kart(s) when racing against other opponents. The eight columns correspond to up 8 positions in the race or battles, and the 27 columns represent the different items that can be obtained. In Grand Prix, the table used for the CPUs is also shown.

Anything beyond page 2 is an empty page.

PROC TIME

Gamecube-MKDD-Debug PROCTIME-1.png

This is the first page you'll see when pressing the combination for the first time. This page is used for monitoring and measuring CPU and other resources being used. Pressing the C-stick down starts a measurement for getting an average of the CPU and total resources being used by each frame. Press the stick down again to stop measuring, and again to clear the results. Pressing Y toggles another process bar with extra information on calculations, updates per frame and more.

MEMORY MAP

Gamecube-MKDD-Debug MEMORYMAP-1.png

This page allows you to view parts of memory, split up in various sections with each section showing how much memory is left. Pressing the C-stick up/down allows you to select another item on the menu, with the A button opening up Heap Spec to show additional information. ROOT and JSYSTEM are the only parts of memory with defined names.

HEAP SPEC

Gamecube-MKDD-Debug HEAPSPEC-1.png

This page shows up after selecting an item with Memory Map, and will not appear when pressing either triggers such as with the other menus. It shows additional information about the selected item in a more readable way showing a defined name, memory type, addresses, total size of memory and total available memory. Some pages have "NO HEAP INFO" written, though no heap info appears anyway when this text isn't present. Pressing the B button goes back to the Memory Map.

Exception Handler

If the game crashes at any point, an exception handler will automatically appear without the need of pressing a button combination. Thanks to the inclusion of debugInfoM.map (not to be confused with debugInfoS.map), addresses are resolved into function names.

The game's executable also includes file names for source files. These result in shorter crash logs where the game will only hang for three seconds after the crash occurred. These don't use the aforementioned debug info maps however.

Miscellaneous Features

Disable BGM

To disable all of the game's background music, press L + D-Pad down together. This feature was probably used during the video capturing process to get video previews and b-roll, as quite a few clips released around E3 2003 feature previews with the game's title theme overlapped or with no music at all. Once the background music is disabled, there's no way to re-enable it without performing a hard reset.

Additionally, holding these buttons down during bootup will crash the game, because the function names that are pointed to (specifically updateBgmVolume and setBgmVolume) haven't been set yet.

Build Date Print

Gamecube-MKDD-Debug Logo-1.png

On the Nintendo / Dolby Surround logos and the Progressive Scan screen, the game's build date of July 5th, 2004 is displayed. This build date is pulled from the game's executable file, which can be found in this build at 0x35D8E0.

Lakitu Intro Triggers

In the game's intro screens are three scenarios for Lakitu holding onto something before the intro movie plays; a traffic light, a Cheep Cheep and a large Cheep Cheep. Normally, these are triggered at random, but in this build, while on the Nintendo / Dolby Surround screen, it's possible to trigger one of the three animations by holding down one of the directional buttons for a controller plugged into port 1.

  • D-Pad Left - Traffic light (70% chance of appearing).
  • D-Pad Up - Cheep Cheep (20% chance of appearing).
  • D-Pad Right - Large Cheep Cheep (10% chance of appearing).

Force Laps

Before the next course is loaded, pressing Z + X together will force the races to only run through 1/2 laps, with Z + Y forcing 1/1 laps, ignoring the game's common laps of 1/3 altogether. The static variable that sets this modified lap count is called RaceMgr::sForceTotalLapNum according to the symbol map. Once triggered, there's no way to revert back to 1/3 laps without performing a hard reset.

Frame Counter

MKDD-Debug-FrameCounter.png

A debug frame counter on the bottom of the screen can be toggled on and off during a race, demo, Award Ceremony or the credits sequence by pressing Z + D-Pad down on a controller plugged into port 1. This counter will start incrementing as soon as Lakitu starts counting down from 3, and finishes incrementing as soon as the race is finished. The counter will pause when the game is paused as well.

Award Ceremony & Credits (Inaccessible)

MKDD-DebugAwardCeremonyDebuggingInfo.png
MKDD-DebugCreditsDebuggingInfo.png

The Award Ceremony and credits sequence use the classes AwardDemoTimeKeeper and StaffRollTimeKeeper respectively to perform tasks related to timing, e.g. switching to the next camera. Both classes derive from the base class DemoTimeKeeper which has a halfword field that, when set to a nonzero value, will print debugging information to the screen about the Award Ceremony or the credits sequence. This field is returned by the function DemoTimeKeeper::isDispInfo.

There doesn't seem to be any way to set this flag in game, which is initailised to 0 in the DemoTimeKeeper::DemoTimeKeeper constructor function. However, this feature can be enabled with an Action Replay/Gecko code.

Encrypted (AR) Decrypted (Gecko)
9Z16-ANPU-8XF2N
F4TQ-ERKK-B3157
041cec9c 38000001

Due to the hierarchical nature of the two classes, there is debugging info that is printed for the Award Ceremony, credits sequence and for both situations. Details on each debugging variable are as follows:

  • NAME (Award Ceremony & credits) - The 4-letter name of the camera, as defined in .bol file associated with the award ceremony or credits sequence.
  • TIME (Award Ceremony & credits) - The number or frames that have been passed since the camera has been switched to. This word variable is referenced by the functions DemoTimeKeeper::updateCutTimer and DemoTimeKeeper::getCutTimer.
  • CUP (Award Ceremony) - The Grand Prix cup.
  • LEVEL (Award Ceremony) - The engine class of the Grand Prix.
  • MY KART (Award Ceremony) - The position that the best performing human player placed at the end of the Grand Prix. This value is zero-based, e.g. first place is shown as 0 and second place is shown as 1.
  • KART No.#:WARP(###) (Credits) - Prints information about the kart blur animation, with the numbers referring to the ID of the kart and parameter used for function StaffRollTimeKeeper::warpKart respectively. The height of this printed text is depends on the kart ID.

LAN Mode

Gamecube-MKDD-Debug LANMode-1.png

To toggle extra information about other connected GameCube systems on the LAN Mode connection screen, press Y. This will bring up whether the connections successfully initialized, how long it took and more. On the right side of the screen is the (local) IP addresses of all 15 other connected GameCube systems.

Details on each function is as follows:

  • LAN: Checks if the Broadband Adapter is connected. Can report Checking or OK.
  • DHCP: How long it takes to establish a LAN link locally. Can report OK or NG with a final time. This function will time out after approximately 30 seconds.
  • Auto-IP: How long it takes to establish a link over the network. Only starts once DHCP reports back NG, and otherwise gets skipped over with 0 seconds counting. Can report OK.
  • IPAddr: Displays your local IP address after successfully finding a local LAN link, or displays your public IP address when connecting over the network.
  • M-Search: How long it takes to connect to other GameCube systems. Can report Done after a successful connection.
  • Link: The amount of other connected GameCube systems. Can report OK when everything is connected.
  • Sync: The IP address that will be synced with other GameCube systems. The IP address only appears right before the fadeout after pressing the A button.
  • Disconnecting...: How long it takes to disconnect the Broadband Adapter after pressing B to return to the title screen.

Additionally, if no other connected systems are found within 10 seconds, the GameCube will start selfhosting and let you play on your own. This is enabled by default and cannot be circumvented.

Inaccessible State

MKDDDebug-LanEntryScreenDebugState.png

This screen has an inaccessible debug state that remained in the retail versions, but this build has the extra feature of printing the debug name of the messages. This can be entered by using the following decrypted Action Replay/Gecko code.

Encrypted (AR) Decrypted (Gecko)
YYV7-DM6F-3Z4NU
B6DH-75N8-66UT7
668F-JQP7-1ZKC5
04191d54 3800000b
04191cbc 3800000b

When this debug state is active, the extensive LAN information that is usually toggled by pressing Y will never be printed to the screen.

Revisional Changes

Game Title

Rather than the game using its regular title found in the retail game, that being Mario Kart Double Dash! with one exclamation mark, it mentions the disc image's original filename, which consists of a number and the same build date seen on the Nintendo logo.

43 2004.07.05 MarioKartUM.gcm

What the number 43 or UM stand for are unknown, though it's likely the latter is a shortened version of an early name for the game.

Ghost Data Incompatibilities

Gamecube-MKDD-Debug GhostDataDesync-1.png

Ghost Data created in any retail build of the game will not work correctly in this debug build and vice versa. Between the release of the final Japanese build and when this build was created, something was changed in the game's executable file that modified how Ghost Data plays back. Because of this, after completing the first lap, there's a chance that the ghost you're racing - either a normal ghost recorded on the retail game or a Staff Ghost - will desync to a point that it'll start slamming into walls and eventually come to a complete standstill. Whether these changes were intended or are issues caused by timing with the extra debugging code is unknown.

Japanese Item Slot Probability Lists

Hmmm...
To do:
Insert a link to a list of item probability revisions (once that is complete).

This build uses the item slot files from the final Japanese build (MRAM.arc/item) rather than the final US build. Between the completion of the US and Japanese builds, item probabilities were tweaked.

  • itemslotlist.dat
  • itemslotlist1.dat
  • itemslotlist2.dat