the cutting room mirror

Super Mario 64 (Nintendo 64)

Featured articleThis article has a talk page!
view on tcrf.net

Super Mario 64 is one of the best 3D plumbing simulators around and one of the three launch titles for the Nintendo 64. It introduced the third dimension to the Mario universe and revolutionized the Mushroom Kingdom.

The game is also notable for the sheer level to which it's been dissected, to the point of getting successfully decompiled and unofficially ported to PCs...not just that, but several other consoles as well.

Unused Animations#

The names are from sm64/data/Anime/aaa in the leaked source code.

Mario#

Mario has a total of 209 animations, indexed from 0 to 208. Some of these are unused in the game.

HatWaitEnd

File Date: December 26, 1995 Animation #56. This unused animation appears to be Mario putting on his hat faster than normal.

JumpStep3

File Date: August 25, 1995 Animation #81. This unused animation appears to be Mario transitioning from freefall to a forward spin. It may have been an early triple jump according to the name.

LandBoard

File Date: December 26, 1995 Animation #84. According to the iQue build's source code, it would have been used when landing from a jump on a Koopa shell.

OshinWait1, OshinWait2, OshinWait3

File Dates: February 6, 1996

Animations #98, #99, #100. "Oshin" translates to "nausea". According to the source code, it would have been related to an environmental effect, possibly standing on the ship in JRB. An animation called OshinWalk also exists in the code.

TurnCont

File Date: July 18, 1995

Animation #115. A duplicate running animation that appears to be identical to the normal running animation. According to the name, this appears to be a placeholder for when Mario circles around or when Mario is turning around quickly as it does not appear to have a file associated. TurnCont likely means "Turning Continuously" or "Turning Control".

SM64_Used_Mario_Animation_Sitting.gif SM64_Final_Sitting_Animation.png

Slip, Slipping

Slip File Date: March 18, 1996 Slipping File Date: December 19, 1995

Left: Animation #145. This is the normal sitting animation. Right: Animation #142. This unused animation appears to be Mario sitting motionless. Perhaps this was the original sitting animation before they decided to have Mario move his arms to make the animation more visually interesting when sliding. This animation can be seen in the Shoshinkai 1995 footage.

SM64_Early_Sideflip_Animation.gif SM64_Unused_Mario_Animation_Forward_Flip.gif

UJumping, JumpBack

UJumping File Date: December 19, 1995 JumpBack File Date: August 23, 1995 Left: Animation #191. This is the normal side flip animation. Right: Animation #73. According to the source code, it would've been used for side flipping.

Bully#

otos_jump

The Bullies have an unused animation that depicts them jumping forward. It might have been meant for a jump attack, possibly being removed when its object code was redone. The internal name of this animation is otos_jump.

To replace the used animation with the unused one, enter the following GameShark code in the US version of the game.

812EB25E 0002

MIPS#

APNG

rabbit_down

In an official strategy guide interview, producer/director Shigeru Miyamoto revealed that "Mario was able to throw the rabbit" at one point during development. Code meant for when MIPS gets thrown by Mario still exists in the final game but goes unused due to Mario not being allowed to throw holdable NPCs. The code also triggers an otherwise unused animation depicting MIPS bouncing on the ground while recovering from a fall. The internal name of this animation is rabbit_down.

To allow Mario to throw MIPS, enter the following GameShark code in the US version of the game.

812F857A 0000
812F8C26 0000

The only way to see the unused animation without hacks is if you use glitches to bring MIPS into the water-draining room.

void bhv_mips_thrown(void) {

    obj_enable_rendering_2();
    o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;
    o->oHeldState = HELD_FREE;
    o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;
    SetObjAnimation(2);
    obj_become_tangible();
    o->oForwardVel = 25.0f;
    o->oVelY = 20.0f;
    o->oAction = MIPS_ACT_FALL_DOWN;
}

Piranha Plant#

pakun_damage

Animation #1. Shows the Piranha Plant quickly flinching after being hit, which appears to have been meant to play right before the dying animation (animation #2), which is internally called pakun_down.

SM64_pakun_eat_base_anm.gif SM64_pakun_miss_eating_anm.gif

pakun_eat_base, pakun_miss_eating

Animations #3 & #5. These appear to show a scrapped "eating" attack. Interestingly, the animation for the fire spitting Piranha Plants (animation #4) is internally called pakun_eating, indicating the fire spitting animation was meant to be part of this scrapped attack, and later got repurposed.

In-game

Shoshinkai 1995

pakun_sleep_tmp

Animation #7. An unused placeholder animation that is similar to the sleeping animation (animation #8, pakun_sleeping), as seen in the Nintendo Shoshinkai 1995 footage. It features the plant showing its teeth as it sleeps, although it differs from the Shoshinkai demo since Piranha Plant occasionally bobs its head like it is having a sleep reflex.

To replace the used animation with the unused one, enter the following GameShark code in the US version of the game.

812BDF12 0007

pakun_wait

Animation #9. An older duplicate of the biting animation (animation #0, pakun_angry), in which the teeth clip through the Piranha's mouth as its head moves up. This earlier variant can be briefly seen in prerelease footage.

Ukiki#

The monkey has 4 unused animations.

monky_N_run

Animation ID 1 shows Ukiki walking, in the final game he always runs. The internal name of this animation is monky_N_run.

monky_base_data

Animation ID 2 shows Ukiki standing motionless in a default A-pose. The internal name of this animation is monky_base_data.

monky_down

Animation ID 3 shows Ukiki being thrown, but unlike MIPS no code related to being thrown by Mario exists. The internal name of this animation is monky_down.

monky_jump

Animation ID 6 shows Ukiki doing a quick jump. The used jump animations are #7 monky_jump_end (landing) and #8 monky_jump_start (start jumping). The internal name of this animation is monky_jump.

To view these in-game, enter the following GameShark code in the US version of the game.

812BA9B8 2408
812BA9BA 0004
812BAB3A 000X where X is desired animation ID

Koopa#

S_run

Wake_up

Bowser#

kopa_G_swing_down2

Animation #2. This is a slightly different standing up animation that includes a small bounce in the beginning.

Click to view Bowser's suffering move

kopa_body_tmp

Animation #5. This is a placeholder animation the developers forgot to remove in the final version. It has only one joint in its animation table, unlike other animations.

kopa_down

Animation #6. An unused defeat animation. The only defeat animation used is when he is flipped upside down.

kopa_jump

Animation #8. A short jump. The only used jump animations are #9 kopa_jump_end (stop/land from jumping) and #10 kopa_jump_start(start jumping).

Chuckya#

carry_boy_wait

An animation that shows Chuckya balancing itself, meant for when it is idle. Based on the name, it appears to be an animation of a now removed action that was leftover from Motosman, where it would go idle if the player was far enough away.

Unused Level Effects#

Blizzard#

Name: "Blizzerd"

An unused, faster version of the snowfall animation, making it look more akin to a blizzard. Can be triggered in a level via the "Environment Effect" option in Messiaen's program, OBJ Importer, or setting "geo_envfx_main" to 3 in a level's "geo.inc.c" file in the decomp. It is purely aesthetic and interacts with Mario in the same way as normal snowflakes do. In the source code, this effect is referred to as "Blizzerd".

Flowers#

SM64-FlowerAni.gif
Name: "Flower"

An unused effect that, when enabled, causes a bunch of small happy bouncing flowers to spawn around Mario, their spawn point radius dependent on his position. They attach themselves to a level's solid, horizontal surfaces. It is another purely aesthetic level effect that, much like the blizzard, can also be spawned in a level via the "Environment Effect" option in OBJ Importer. Oddly enough, the flower graphic is found among the resources for Lethal Lava Land, which in turn is due to it being grouped with the "bubble" environmental effects, which include Lethal Lava Land's bubbling lava. Setting "geo_envfx_main" to 11 in in a level's "geo.inc.c" file in the decomp triggers the effect. In the source code, this effect is referred to as "Flower".

(Source: Messiaen)

Unused Text#

Blanked-Out Text#

To do:
Link to code in decomp for 100-Coin star usage

A number of messages present in the Japanese version were blanked out for the overseas releases, preventing them from being localized.

Japanese

Translation

100まいコインの スター

100-Coin Star

マウンテンのへやが ひらく!

The mountain room opens!

みずとゆき2つのへやが ひらく!

The water and snow rooms open!

おおきなほしの ドアがひらく!

The Big Star Door opens!

クッパへの とびらがひらく!

The door to Bowser is open!

3がいへの とびらがひらく!

The door to the third floor is open!

These lines are found after the rest of the Star names.

The first message is actually programmed to appear on the course complete screen if the last collected star is the 100 coin star. Since 100 coin stars always keep you in the course this is impossible to see in the final game, but it suggests earlier in development 100 coin stars would have kicked you out of the course upon collecting them.

Japanese

Translation

おいしいケーキ

Delicious Cake

This little message is found between the lines "THE SECRET AQUARIUM" and "CASTLE SECRET STARS". This is assigned to the level that contains the cake end screen, implying it was originally a bonus level.

Boo's Taunt#

Original Scripts

Literal Translation

Japanese

クックック・・
 とりついてやる。
    ヒッヒッヒ!
カベも とおりぬけてやる。
こんなこと できるか?
     ケッケッケ!
Eh he he...
 I'm gonna haunt you.
    Hee hee hee!
And I'm gonna go through the wall.
Can you do that?
     Heh, heh, heh!

English

Eh he he...
You're mine, now, hee hee!
I'll pass right through
this wall. Can you do
that? Heh, heh, heh!
Eh he he...
You're mine, now, hee hee!
I'll pass right through
this wall. Can you do
that? Heh, heh, heh!

French

Hé...hé...hé...
Ciao bello Mario!
Moi j'traverse les murs!
Tu peux le faire, toi?
Hin...hin...hin...
Heh...heh...heh...
Bye bye my dear Mario!
I can go through walls!
You can't do that, can you?
Nyeh...heh...heh...

Chinese (IQue Version)

哦呵呵…
你是我的了。
哼哼!
我可以安然无恙
地穿过这面墙,
你能吗?
呵呵…呵呵……
Oh ho ho...
You're mine.
Hmm!
I can pass through this wall
without hurting myself,
Can you?
Hehe...hehe......

This message comes after the greeting that appears when Mario enters Big Boo's Haunt for the first time. When the unused message is activated, a short Boo laugh plays as the text box appears. While it was translated in the English and French versions of the game and was even translated into Chinese for the iQue Player release, it was, strangely, never translated for the German release (until the DS remake, in which English and German were the only languages it was translated to). Interestingly, a leftover file in the source code contains older code used for the boos; based on that file, the text was originally used when the Ghost Hunt Boos were defeated.

To view the text in-game, enter the following GameShark codes:

Version

Gameshark code

Japan

80330420 0000
81330424 0063

USA

80331480 0000
81331484 0063

Europe

802FD640 0000
812FD644 0063

Japan (Shindou)

80310AB0 0000
81310AB4 0063

iQue

8031310C 0000
81313110 0063

The first line makes the text appear white over a translucent black background, and the second line sets the message ID.

(Source: Mattrizzle - Discovery of Unused Value)

Shoshinkai '95 Level Select#

Japanese

Translation

STAGE SELECT
つづける?
1 マウンテン
2 ファイアーバブル
3 スノースライダー
4 ウォーターランド
クッパ1ごう
もどる


PAUSE
つづける?
やめる ?
STAGE SELECT
Continue?
1: Mountain
2: Fire Bubble
3: Snow Slider
4: Water Land
Koopa 1
Back


PAUSE
Continue?
Quit?

Located at the beginning of the game's text, in all versions of the game except for EU, is dialog data for a level select and an early pause menu that were present in the playable demo featured at Shoshinkai '95. The level select is not the same as the functional Level Select that remains in the final game. It was likely only made for the demo, as the source code indicates that the final Level Select was finished before the Shoshinkai '95 Demo; the date is September 6th, 1995, two months before the demo.

The levels accessible from this menu were:

  • Mountain - Whomp's Fortress
  • Fire Bubble - Lethal Lava Land
  • Snow Slider - Cool, Cool Mountain
  • Water Land - Dire, Dire Docks
  • Koopa #1 - Bowser in the Dark World

(Source: eientei95 - Discovery, Joe & GlitterBerri - Translation)

Map Select

Shoshinkai 1995

Pause Menu

Shoshinkai 1995

(Source: Game Zero's Shoshinkai 1995, Nintendo 64 and Super Mario 64 Demonstrations (6:21), ニンテンドウ64世界初公開当時の模様 (14:51))

The original functionality has been "#if 0"'d out, but has been found in sm64\Message\message.sou in the leak. It works similarly to the save dialogs after collecting certain stars.

Trying to load them in the US version of the game results in corrupted text due to kana script characters being repurposed or removed.

SM64_debugMenu_Final_US.png SM64_pauseMenu_Final_US.png

To see the dialogs in game, enter the following GameShark codes.

Version

Gameshark code

Japan

81072FCA 8858
81072FCE 8868

USA

81075A48 0200
81075A4A 7D08
81075A4C 0200
81075A4E 7D18

These replace the 1 star door and 3 star door dialogs with level select and pause menu dialogs respectively.

Shifting Sand Land Pyramid Explosion Cutscene#

Name: "CAM_DEMO_PYLEXP"

In the camera cutscene table, there is an entry that is never called and not associated with a level. According to code labels, it was meant for the Shifting Sand Land Pyramid Explosion sequence, which in the final has no cutscene associated with it. Camera shake data exists for this cutscene, and additional data was found commented out in the Pyramid actor, likely meaning it was intentionally removed.

Luigi/Multiplayer Remnants#

To do:
Find the code for this.

The decompilation and the iQue build's source code reveal some code that appears to be leftover from when Luigi was intended to be in the game.

In several files in the code, a pointer to a second player struct appears right after the pointer to Mario's struct. Within the code for handling shadows, there exists a switch-case block with two cases, one of which sets a variable to the Mario struct and the other sets a variable to the aforementioned second player struct. In the leaked source code, Model ID 2 is labeled as "Luigi". The camera for locking it is labeled as "2P camera", and it was mentioned in an interview that the fixed camera was intended for a Multiplayer Mode. A section of memory is labeled as "Luigi Animations" in the source code. However, in the final, the section is completely empty. Unused labels mention a third game mode, "Game_Mode2P". Similarly, Player 2 can still control the camera to some extent.

References#


  1. In-game credits, mentions "EAD Staff" and "All Nintendo Personnel" under "Special Thanks to"↩︎
  2. 1997 현대 컴보이 64 올 소프트 리스트! Korean Nintendo 64 - All Soft List!↩︎
  3. Game Champ 게임챔프 1997-08, pg. 74 - 현대 컴보이 64 발매일↩︎
  4. Game Champ 게임챔프 1997-09, pg. 56 - 현대 컴보이 64, 성공적 판매 전↩︎
  5. Nintendo 64 Came Out 20 Years Ago. Here’s How a Teenaged Me Reviewed It↩︎
  6. iQue Ltd.↩︎
  7. NINTENDO64 - nintendo.co.jp↩︎
  8. The Nintendo 64 turns 20 in Europe | Eurogamer.net↩︎
  9. Nintendo Magazine System (AU) #46, pg. 6↩︎