We just released a prototype of the cancelled SNES port of Puggsy! Take a look!
As always, thank you for supporting The Cutting Room Floor on Patreon!

Super Mario 64 (Nintendo 64)/Debug Content

From The Cutting Room Floor
Jump to navigation Jump to search
This page contains changes which are not marked for translation.
Other languages:
Deutsch • ‎English • ‎français • ‎polski • ‎português do Brasil • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어


This is a sub-page of Super Mario 64 (Nintendo 64).

Hmmm...
To do:
add Dennis's info

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.

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

SM64Debug.png

To enable the classic debug display, enter the appropriate GameShark code for your version of the game.

Japan USA Europe Japan (Shindou) iQue
A032C658 0059
A032D598 0059
A02F9748 0059
A030CCC8 0059
A030F228 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".

Hmmm...
To do:
Add yoshielectron's info.

Access

SM64Debug2.png

To enable the complex debug display, enter the appropriate GameShark code for your version of the game.

Japan USA Europe Japan (Shindou) iQue
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

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 Boundrary Ground Y Y coordinate of the ground below Mario.
ANGY Angle Y Y angle of the ground below Mario.
BGCODE Boundrary 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 Boundrary 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 Boundrary 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 Boundraries Amount of level triangles loaded.
MOVEBG Moving Boundraries 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.

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

SM64DebugSound.png

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
8032C654 0001
8032D594 0001
802F9744 0001
8030CCC4 0001
8030F224 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 ultracommand in the source code.

Japan USA Europe Japan (Shindou) iQue
8032FF34 0003
8133BF6E 0001
80330E94 0003
8133D2DE 0001
802FD054 0003
8130AF0E 0001
803105C4 0003
8131F49E 0001
80312B24 0003
81321E4E 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)
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


(Source: dudaw, AltoXorg)

Old Debug Display

Hmmm...
To do:
  • Find a way to attach this to an object.
SM64DebugOld.png

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 yjdebug, named after one of the object programmers "Hajime Yajima".

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
(Source: Punk7890, AltoXorg (Shindou))

Level Select

Access

Japan USA Europe Japan (Shindou) iQue
A032C64C 0001
A032D58C 0001
A02F973C 0001
A030CCBC 0001
A030F21C 0001

Options

SM64LevelSelect.png

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. When re-adding the unused levels in-game, the level names are revealed. For consistency reasons the names of the 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 & Submersion 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
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

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" is 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.

The use of "Donkey" for "Monkey" is a tongue-in-cheek reference to Donkey Kong.

Unused Crash Handler

In-game crash screen by editing PAL ROM and using file select erase file crash bug.

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

Hmmm...
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
8018F2E3 0000
8018F423 0000
8018E453 0000
8018E8A3 0000
8018F6E3 0000