We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!

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 • ‎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.

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.

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 coloured 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.

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.

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

Hmmm...
To do:
Make codes for the other versions.

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.

Controls:

  • D-Down+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


(Source: dudaw)

Old Debug Display

Hmmm...
To do:
  • Find a way to attach this to an object.
  • Add Out Scope to the code.
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.

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.


If you're using Project 64 for this code, it will only work on 2.0 or higher.

USA
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
(Source: Punk7890)

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.

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 none - none
2 none - none
3 none - none
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 none - none
33 KUPPA2 Bowser 2 Bowser in the Fire Sea (Boss)
34 KUPPA3 Bowser 3 Bowser in the Sky (Boss)
35 none - none
36 DONKEY % SLID2 Monkey & Slide 2 Tall Tall Mountain
37 none - none
38 none - none

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. It may have been removed during development, or it may be that the label is simply missing from the entry for Cavern of the Metal Cap.

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

Unused Crash Handler

Ingame 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