Super Mario 64 (Nintendo 64)/Debug Content
This is a sub-page of Super Mario 64 (Nintendo 64).
To do:
|
Several debug menus and tools remain in the final game. These can be activated via hacking or GameShark codes. Because some characters in the font used for the debug text were overwritten for the North American release, players using this version to test out debug features will find a few letters don't display properly.
Contents
Classic Debug Display
This debug menu was one of the first found in-game with the use of a GameShark. It displays information on Mario's angle, speed, and action, as well as memory info.
Labelled as DebugMessage in the source code.
Access
To enable the classic debug display, enter the appropriate GameShark code for your version of the game.
Japan | USA | Europe | Japan (Shindou) | iQue | LodgeNet | 64DD |
---|---|---|---|---|---|---|
A032C658 0059 |
A032D598 0059 |
A02F9748 0059 |
A030CCC8 0059 |
A030F228 0059 |
A030187C 0059 |
804A7768 0059 |
Items
Label | Meaning | Description |
---|---|---|
ANG | Angle | The steepness of the floor Mario is standing on. |
SPD | Speed | Mario's current speed. |
STA | State | Mario's current action (in hex). Shows only the 9 least significant bits of a 32-bit value. |
MEM | Memory | Current RAM usage. |
BUF | Buffer | Size of the display list buffer. |
Complex Debug Display
This more comprehensive debug display depicts everything from map information to the current number of loaded objects.
Labelled as yjdebug in the source code, after one of the object programmers "Hajime Yajima".
To do: Add yoshielectron's info. |
Access
To enable the complex debug display, enter the appropriate GameShark code for your version of the game.
Japan | USA | Europe | Japan (Shindou) | iQue | Lodgenet | 64DD |
---|---|---|---|---|---|---|
8033BEF3 0001 D0339C30 0008 8032FF34 0001 D0339C30 0001 8032FF34 0002 D0339C30 0004 8032FF34 0003 D0339C30 0002 8032FF34 0004 D0339C31 0020 8032FF34 0005 |
8033D263 0001 D033AFA0 0008 80330E94 0001 D033AFA0 0001 80330E94 0002 D033AFA0 0004 80330E94 0003 D033AFA0 0002 80330E94 0004 D033AFA1 0020 80330E94 0005 |
8030AE93 0001 D0309260 0008 802FD054 0001 D0309260 0001 802FD054 0002 D0309260 0004 802FD054 0003 D0309260 0002 802FD054 0004 D0309261 0020 802FD054 0005 |
8031F423 0001 D031D560 0008 803105C4 0001 D031D560 0001 803105C4 0002 D031D560 0004 803105C4 0003 D031D560 0002 803105C4 0004 D031D561 0020 803105C4 0005 |
80321DD3 0001 D0320610 0008 80312B24 0001 D0320610 0001 80312B24 0002 D0320610 0004 80312B24 0003 D0320610 0002 80312B24 0004 D0320610 0020 80312B24 0005 |
80310D43 0001 D030F110 0008 80305174 0001 D030F110 0001 80305174 0002 D030F110 0004 80305174 0003 D030F110 0002 80305174 0004 D030F111 0020 80305174 0005 |
804B7C13 0001 D04B60C0 0008 804AAC54 0001 D04B60C0 0001 804AAC54 0002 D04B60C0 0004 804AAC54 0003 D04B60C0 0002 804AAC54 0004 D04B60C1 0020 |
Options
D-Right - Map Info
Press D-Right to display the "MAPINFO" screen.
Option | Meaning | Description | Notes |
---|---|---|---|
AREA | Area | What cell of the collision grid Mario is in. | |
WX | World X | Mario's current X coordinate. | |
WY | World Y | Mario's current Y coordinate. | |
WZ | World Z | Mario's current Z coordinate. | |
BGY | Boundary Ground Y | Y coordinate of the ground below Mario. | |
ANGY | Angle Y | Y angle of the ground below Mario. | |
BGCODE | Boundary Ground Code | Type of the triangle below Mario. | Terrain types can denote slipperyness, camera mode, special properties (sand, snow, wind, water flow), special triangles (painting entrances) |
BGSTATUS | Boundary Ground Status | Status bits of triangle below Mario. | 1 means the triangle is part of an object, 2 means the camera won't collide with this triangle. 3 means both apply. |
BGAREA | Boundary Ground Area | Which room the floor triangle belongs to. | In the castle, Hazy Maze Cave and Big Boo's Haunt the area is split up into rooms which are defined by this property of triangles. |
DPRINT OVER | Debug Print Overflow | Appears when text doesn't fit on the screen anymore. | |
WATER | Water level | Y coordinate of surface of water if Mario is standing or swimming in it | Only appears when you ensure DPRINT OVER doesn't happen |
OBJ | Objects | Number of objects currently loaded. | Only appears when you ensure DPRINT OVER doesn't happen |
D-Down - Stage Info
Press D-Down to display the "STAGEINFO" screen.
Option | Meaning | Description | Notes |
---|---|---|---|
STAGE PARAM | Stage Parameter | At what time you entered Tick-Tock Clock. | 0 means that the long hand was pointing to 3, resulting in slow time; 1 means that the long hand was pointing to 9, resulting in fast time; 2 means that the long hand was pointing to 6, resulting in things moving at random; 3 means that the long hand was pointing to 12, resulting in a still stage. |
OBJ | Objects | Number of objects currently loaded. |
D-Left - Effect Info
Press D-Left to display the "EFFECTINFO" screen.
Option | Meaning | Description | Notes |
---|---|---|---|
A | ? | Currently unknown. | Value does not seem to change. |
A0 | ? | Currently unknown. | Value does not seem to change. |
A1 | ? | Currently unknown. | Value does not seem to change. |
A2 | ? | Currently unknown. | Value does not seem to change. |
A3 | ? | Currently unknown. | Value does not seem to change. |
A4 | ? | Currently unknown. | Value does not seem to change. |
A5 | ? | Currently unknown. | Value does not seem to change. |
A6 | ? | Currently unknown. | Value does not seem to change. |
A7 | ? | Currently unknown. | Value does not seem to change. |
OBJ | Objects | Number of objects currently loaded. |
D-Up - Check Info
Press D-Up to display the "CHECKINFO" screen. This screen shows info related to collision checking.
Option | Meaning | Description | Notes |
---|---|---|---|
AREA | Area | What cell of the collision grid Mario is in. | |
DG | Data Ground? | Amount of floor triangle checks / such triangles in Mario's area. | Two columns |
DW | Data Wall? | Amount of wall triangle checks / such triangles in Mario's area. | |
DR | Data Roof? | Amount of ceiling triangle checks / such triangles in Mario's area. | |
LISTAL | List Area Length? | Amount of triangle nodes loaded. | |
STATBG | Static Boundaries | Amount of level triangles loaded. | |
MOVEBG | Moving Boundaries | Amount of object triangles loaded. | |
NULLBG | Null Background | How often a floor-check couldn't find a triangle this frame. | |
OBJ | Objects | Number of objects currently loaded. |
L - Enemy Info
Some of the values were used to set enemy parameters for debugging. A debug function (try_modify_debug_controls in debug.c in decomp) was implemented to allow the values to be changed in-game with the controller. Changing the parameters would activate certain debug checks/functions used for debugging enemies. It's referred to as yjeditor, named after one of the object programmers "Hajime Yajima".
One example remaining in the code is in boo.inc.c in decomp. The code checked the value of B0 to determine whether Big Boo should spawn. This code was active only for the Japanese version and is a remnant of debugging code.
Press L to display the "ENEMYINFO" screen.
Option | Meaning | Description | Notes |
---|---|---|---|
B | ? | Currently unknown. | Value does not seem to change. |
B0 | ? | Currently unknown. | Value does not seem to change. |
B1 | ? | Currently unknown. | Value does not seem to change. |
B2 | ? | Currently unknown. | Value does not seem to change. |
B3 | ? | Currently unknown. | Value does not seem to change. |
B4 | ? | Currently unknown. | Value does not seem to change. |
B5 | ? | Currently unknown. | Value does not seem to change. |
B6 | ? | Currently unknown. | Value does not seem to change. |
B7 | ? | Currently unknown. | Value does not seem to change. |
OBJ | Objects | Number of objects currently loaded. |
Debug Resource Meter
This function causes colored bars to appear along the bottom of the screen, which serve as a visual representation of the time different threads take. The bottom four bars are for reference and each mark 1/60 of a second. On top, the time of the audio thread (red), game logic thread (yellow) and video thread (orange) are plotted. When the top bars reach the orange reference bar, processing the frame took longer than 1/30 of a second and a lag frame is introduced. A little red bar appears in the middle whenever this happens. Labelled as ProcessMeter in the source code.
Japan | USA | Europe | Japan (Shindou) | iQue | LodgeNet | 64DD |
---|---|---|---|---|---|---|
8032C654 0001 |
8032D594 0001 |
802F9744 0001 |
8030CCC4 0001 |
8030F224 0001 |
80301878 0001 |
804A7764 0001 |
Debug Spawn
This function causes various objects to spawn that alter Mario's movement. Press the D-Pad buttons to spawn either nothing, a normal Koopa Shell, a water Koopa Shell, or a Crazy Box. Don't try to use it inside the castle, though, or the game might crash. Labelled as s_debug in the source code.
Japan | USA | Europe | Japan (Shindou) | iQue | Lodgenet | 64DD |
---|---|---|---|---|---|---|
8032FF34 0003 8133BF6E 0001 |
80330E94 0003 8133D2DE 0001 |
802FD054 0003 8130AF0E 0001 |
803105C4 0003 8131F49E 0001 |
80312B24 0003 81321E4E 0001 |
80305174 0003 81310DBE 0001 |
804AAC54 0003 804B7C8F 0001 |
Free Movement Mode
This function enables a free-movement mode that lets Mario zoom about freely, though not pass through obstacles because floor checks and wall checks are still done. When holding B, you go fast enough to clip through the hitboxes though. Labelled as FREEMOVE in the source code.
Controls:
- D-Right+Z: Enable free-movement mode.
- Joystick: Move Mario horizontally.
- D-Up: Move Mario up.
- D-Down: Move Mario down.
- B: Multiply movement speed by 4.
- L: Multiply movement speed by 0.01.
- A: Exit free-movement mode.
Japan | USA | Europe | Japan (Shindou) | iQue |
---|---|---|---|---|
D1339C30 2100 8126976E 5F0D D1339C30 8000 8126976E 97D1 |
D133AFA0 2100 81269BDA 5FAB D133AFA0 8000 81269BDA 98D5 |
D1309260 2100 8125E0FA 3FCE D1309260 8000 8125E0FA 6CE2 |
D131D560 2100 81266456 6045 D131D560 8000 81266456 8DA2 |
D1320610 2100 812668F6 616D D1320610 8000 812668F6 8ECA |
Object Movement Status Display
To do:
|
An old debug display can be seen here. It was meant to be used for object movement flags. For the debug display to function it needs to be attached to an object. With the code on, press the GS Button while in-game to enable it. Don't press it at the main menus. It's referred to as disp_movestat.
The text means as follows
- Bound: Object has landed.
- Touch: Object is on the ground.
- Takeoff: Object has left the ground.
- Dive: Object has entered water.
- S Water: Object is moving at the water's surface.
- U Water: Object is moving below the water's surface.
- B Water: Object is moving on the ground in water.
- Sky: Object is moving in the air.
- Out Scope: Removed movement flag, unknown what this was for, probably would have been used when an object has either unloaded or is out of the camera's view. In order to display this correctly, you must not be in Big Boo's Haunt, Hazy Maze Cave, or inside the castle.
If you're using Project 64 for this code, it will only work on 2.0 or higher.
Japan | USA | Japan (Shindou) |
---|---|---|
89248BB8 0000 89248BBA 0000 89248BE2 2A2D 8833BEF3 0001 812CA8CC 0000 812CA8CE 0000 812CA8FC 0000 812CA8FE 0000 812CA92C 0000 812CA92E 0000 812CA95C 0000 812CA95E 0000 812CA98C 0000 812CA98E 0000 812CA9BC 0000 812CA9BE 0000 812CA9EC 0000 812CA9EE 0000 812CAA1C 0000 812CAA1E 0000 812CAA4C 0000 812CAA4E 0000 |
89248BE8 0000 89248BEA 0000 89248C12 2CE5 8833D263 0001 812CB3AC 0000 812CB3AE 0000 812CB3DC 0000 812CB3DE 0000 812CB40C 0000 812CB40E 0000 812CB43C 0000 812CB43E 0000 812CB46C 0000 812CB46E 0000 812CB49C 0000 812CB49E 0000 812CB4CC 0000 812CB4CE 0000 812CB4FC 0000 812CB4FE 0000 812CB52C 0000 812CB52E 0000 |
8924BC04 0000 8924BC06 0000 8924BC1A CCE1 8831F423 0001 812B33A8 0000 812B33AA 0000 812B33C8 0000 812B33CA 0000 812B33EC 0000 812B33EE 0000 812B3410 0000 812B3412 0000 812B3434 0000 812B3436 0000 812B3458 0000 812B345A 0000 812B347C 0000 812B347E 0000 812B34A0 0000 812B34A2 0000 812B34C4 0000 812B34C6 0000 |
Level Select
Access
Originally, this was able to be accessed by holding C-Left + C-Right + Z + Start on the Mario Head screen, this button combo can still be used to exit the level select in the final however.
Japan | USA | Europe | Japan (Shindou) | iQue | LodgeNet | 64DD |
---|---|---|---|---|---|---|
A032C64C 0001 |
A032D58C 0001 |
A02F973C 0001 |
A030CCBC 0001 |
A030F21C 0001 |
A0301870 0001 |
804A775C 0001 |
Options
Please elaborate. Having more detail is always a good thing. Specifically: Elaborate on "gigaleak code" |
This level select features an early version of the title screen. When enabled, it replaces the file select screen. The courses are listed in the order that their data appears in the game's memory.
When a level is selected, Mario will automatically be sent to the first Star, bypassing the Star selection screen. Exiting a course via Star collection, death, or the pause menu will bring you back to the level select screen. Attempting to access one of the removed entries causes the game to reset. However, thanks to gigaleak code, it was discovered that the 7 missing entries were test levels. These levels names are only present in their models or other references to that stage. For consistency reasons the names of these test levels will be listed along with the used level names. Labelled as DebugSelect in the source code.
Controls:
- A: Scroll forward by 1.
- B: Scroll backward by 1.
- D-Up: Scroll forward by 1.
- D-Down: Scroll backward by 1.
- D-Right: Scroll forward by 10.
- D-Left: Scroll backward by 10.
- Start: Enter level.
- Z + C-Left + C-right + Start: Reboot game without level select.
No. | Name | Literal Translation | Final Location |
---|---|---|---|
1 | STAGE 1 | - | Castle |
2 | STAGE 2 | - | Athletic |
3 | STAGE 3 | - | Donjon |
4 | TERESA OBAKE | Boo Apparition | Big Boo's Haunt |
5 | YYAMA1 % YSLD1 | Snow Mountain 1 & Snow Slide 1 | Cool, Cool Mountain |
6 | SELECT ROOM | Select Room | Inside Peach's Castle |
7 | HORROR DUNGEON | Horror Dungeon | Hazy Maze Cave |
8 | SABAKU % PYRMD | Desert & Pyramid | Shifting Sand Land |
9 | BATTLE FIELD | Battlefield | Bob-omb Battlefield |
10 | YUKIYAMA2 | Snow Mountain 2 | Snowman's Land |
11 | POOL KAI | Pool Stage | Wet-Dry World |
12 | WTDG % TINBOUTU | Water Dungeon & Sunken Ship | Jolly Roger Bay |
13 | BIG WORLD | Big World | Tiny-Huge Island |
14 | CLOCK TOWER | Clock Tower | Tick Tock Clock |
15 | RAINBOW CRUISE | Rainbow Cruise | Rainbow Ride |
16 | MAIN MAP | Main Map | Outside the Castle |
17 | EXT1 YOKO SCRL | Extra 1 - Side-Scroller | Bowser in the Dark World |
18 | EXT7 HORI MINI | Extra 7 - Moat (Mini) | Vanish Cap Under the Moat |
19 | EXT2 TIKA LAVA | Extra 2 - Basement Lava | Bowser in the Fire Sea |
20 | EXT9 SUISOU | Extra 9 - Fish Tank | The Secret Aquarium |
21 | EXT3 HEAVEN | Extra 3 - Heaven | Bowser in the Sky |
22 | FIREB1 % INVLC | Fire Bubble & In the Volcano | Lethal Lava Land |
23 | WATER LAND | Water Land | Dire, Dire Docks |
24 | MOUNTAIN | Mountain | Whomp's Fortress |
25 | ENDING | Ending | "The End" Image/EXT10 |
26 | URANIWA | Back Garden | Castle Courtyard |
27 | EXT4 MINI SLID | Extra 4 - Mini Slider | The Princess's Secret Slide |
28 | IN THE FALL | In the Fall | Cavern of the Metal Cap |
29 | EXT6 MARIO FLY | Extra 6 - Mario Fly | Tower of the Wing Cap |
30 | KUPPA1 | Bowser 1 | Bowser in the Dark World (Boss) |
31 | EXT8 BLUE SKY | Extra 8 - Blue Sky | Wing Mario Over the Rainbow |
32 | STAGE 32 | - | Yajima Land |
33 | KUPPA2 | Bowser 2 | Bowser in the Fire Sea (Boss) |
34 | KUPPA3 | Bowser 3 | Bowser in the Sky (Boss) |
35 | STAGE 35 | - | Dummy |
36 | DONKEY % SLID2 | Monkey & Slide 2 | Tall Tall Mountain |
37 | STAGE 37 | - | IWtest |
38 | STAGE 38 | - | Sand/Cave Dungeon |
For some reason, if Peach's Castle is entered via the level select, no background music will play there. Also, it is impossible to drown in any level entered via the level select, as Mario's health meter doesn't deplete when he is underwater.
While bonus levels marked "EXT1" to "EXT9" are present (standing for "extra"), "EXT5" and "EXT10" are missing. Source code reveals that EXT5 was missing from the entry for Cavern of the Metal Cap, as the stage model folder is labelled ext5_in_fall, while EXT10 was supposed to be ending screen stage.
The use of "Donkey" for "Monkey" is a tongue-in-cheek reference to Donkey Kong.
Unused Crash Handler
In these versions of Super Mario 64 (Europe, Shindou and iQue), there exists unused thread code (from 80241850 to 802422F0 in Europe) for the same crash handler found in Paper Mario; however, it's not initialized in neither of the versions mentioned, so it's not used. The only notable difference between both handlers is that Paper Mario prints the MM value, whereas Super Mario 64 does not.
The error cause texts are located at 0xC2820 in Europe, 0xCEF10 in Shindou and 0xD1860 in iQue.
This handler does not exist in the USA, Japanese or DD versions.
Mario Head Guide Cubes
To do: Add the line of code. |
Pink cubes mark areas where Mario's face can be grabbed on the title screen. Normally, these cubes are invisible, but changing a single line of code reveals them. Using the GameShark codes below will make them visible.
Japan | USA | Europe | Japan (Shindou) | iQue | LodgeNet |
---|---|---|---|---|---|
8018F2E3 0000 |
8018F423 0000 |
8018E453 0000 |
8018E8A3 0000 |
8018F6E3 0000 |
8018DC53 0000 |