Mario Kart: Double Dash!!/July 5th, 2004 Debug Build
This is a sub-page of Mario Kart: Double Dash!!.
This was documented on Forest of Illusion.
This prototype is documented on Hidden Palace.
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.
Contents
Debug Menu
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.
- Balloon - Balloon Battle.
- Robbery - Leftover from a scrapped mode.
- Bomb - Bob-omb Blast.
- Escape - Shine Thief.
Setting the player count to 2 will disable Time Trials. Anything above will also disable Grand Prix.
Player Select(kari)
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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