If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Super Mario 64 (Nintendo 64)/Unused Objects

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

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

Hmmm...
To do:
  • Move this page to "Unused Objects & Models".
  • Check every stage to find any unused stage models. One has already been found a long bridge for LLL that was used early in development.
  • Add the behavior code for all of the objects.
  • Check the behavior file in decomp for everything else.
  • Check the behavior code in the leaked source code for any behavior differences.
  • More model parts need to be added such as 3D Amp, 3D Skeeter, "Blood" Particles, and Unused Mario parts.

Unused Objects

"Bird" Egg

SM64-YoshiEgg.gif

This unused egg features a bouncing animation. It is labelled as a bird egg despite resembling the egg used by Yoshi. The behavior was removed but the name of it still exists within "stage99", "s_bird_egg" and "e_bird_egg", the filename of the texture and the 2D model is also bird_egg.

Blargg

SM64-Blargg.png

The game contains an unfinished model for Blargg, an enemy from Super Mario World. It is eyeless and untextured. It has a handful of animations associated with it that show it floating in lava and jumping out. No behavior exists in the final, however behavior code was found during the 7/25 gigaleak, the file is named "pathunbaba.o" with unbaba being blargg's name in japanese. The behavior data was last updated on November 20th, 1995. Blargg's model is scaled to twice the size, and the object activates, it then begins to wait until the player is within the radius of 600, once the player is in the radius it will attack Mario.

Use the code below to place it in Lethal Lava Land in (U) 1.0:

8133E9FC 8018
8133E9FE A15C
8133EA14 4000
8133EA18 4000
8133EA1C 4000
8133EA24 8014
8133EA26 9A10
8133EA88 C5A8
8133EA8C 421A
8133EA90 45B0
8033EB19 0020
8033EB6B 0002
8133EBE0 4406
#define		ANM_unbaba_swim	 	0
#define		ANM_unbaba_attack	1    	

e_unbaba:
	p_initialize(option)
	p_setbit(flag,stf_moveON | stf_YangleSAME | stf_FspeedON | stf_playerdistON | stf_playerangleON )
	p_set_pointer(skelanime,unbaba_anime)
	p_save_nowpos
	p_set_skelanime_number(0)
	p_while
		p_program(s_unbaba)
	p_loop

#define		unbaba_movemode	(execstp->s[stw_work0].d)
#define		unbaba_movecounter	(execstp->s[stw_work1].d)

static void unbaba_init(void)
{
	obj_mode++;
}

static void unbaba_swim(void)
{
	s_set_skelanimeNo(ANM_unbaba_swim);
	if ( obj_playerdist < 600 )	obj_mode = mode_unbaba_attack;
}

static void unbaba_attack(void)
{
	s_set_skelanimeNo(ANM_unbaba_attack);
	if ( s_check_animeend() )	obj_mode = mode_unbaba_swim;
}

static void *unbaba_modejmp[] = {
  
   unbaba_init,
   unbaba_swim,
   unbaba_attack
  
};

extern void s_unbaba(void)
{
	int	mode;

	s_set_scale(2.0);

	s_modejmp(unbaba_modejmp);

}


(Source: VL-Tone, yoshielectron, partial source code, and others)

Boo Key

Mario64 Scan BooKey.png


This Boo Key was shown in early footage, where it was obtained by defeating a Big Boo. There is an still unused key symbol among the HUD textures in the Japanese version of the game: SM64-keyhud.png However, this was replaced with a Ü in the European version, and removed completely from the US version. Interestingly there are two versions of the key, with one being earlier than the other, it does not increment the counter and only spawns coin sparks.

Use these codes to view the HUD in-game. Replace X with the amount of keys you'd like. (1-6)

USA Japan Europe Japan (Shindou)
8033B21C 000X
80339EAC 000X
803094DC 000X
8031DA6C 000X


(Source: Yoshiman & Others)
Boo Key

The Boo Key also has three alternate color variants. To view these keys in-game at the same setting as the screenshots below, replace the Haunted Cage with the key by replacing the value at US-version offset 0x2AC522 with 0188. Change the key color by replacing the value at US-version offset 0x16D766 with 6A68 (yellow key, there by default), 6A48 (red key), 6A28 (green key), or 6A08 (blue key).

Boo Key - Default Boo Key - Red
SuperMario64 BooKey Yellow.png SuperMario64 BooKey Red.png
Boo Key - Green Boo Key - Blue
SuperMario64 BooKey Green.png SuperMario64 BooKey Blue.png


Use these codes to replace the Boo's cage with the unused Boo Key.

USA Japan Europe Japan (Shindou)
802C5196 0017
802C5197 0044
802C51A3 0055
802C479E 0017
802C479F 0044
802C47AB 0055
802A05EE 0017
802A05EF 0044
802A05FB 0055
802AE78A 0017
802AE78B 0044
802AE797 0055
e_teresa_key:
	p_initialize(item)
	p_setbit( flag,stf_moveON )
	p_sethitbox(32,64)
	p_setmovedata(30,-400,-70,1000,1000,200,0,0)
	p_while
		p_program(s_teresa_key)
	p_loop

e_key:
	p_initialize(item)
	p_setbit( flag,stf_moveON )
	p_sethitbox(32,64)
	p_hitON
	p_while
		p_program(s_key)
	p_loop

extern void s_key(void)
{

	obj_animeangleZ += 0x200;
	obj_animeangleY += 0x200;

	if ( s_hitcheck(execstp,player1stp) ){	
		execstp->motherobj->s[stw_imm].d = 1;
		s_remove_obj(execstp);
		s_makeobj_nowpos(execstp,S_spark,e_coinspark);
	}
}

static void keycoin_bound(void)
{

	s_enemybgcheck();	/* BGcheck 	 Program */
	s_enemymove(78);	/* enemymove program */

	if ( obj_animepositionY < 26 )		 	 obj_animepositionY += 2;
	if ( (obj_animeangleZ & 0xffff ) != 0 ){
		 obj_animeangleZ &= 0xf800;
		 obj_animeangleZ += 0x800;
	}
	if ( obj_movestatus & MOVESTAT_BGTOUCH ){ obj_speedX = 0;	obj_speedZ = 0; }
	obj_animeangleY += 0x800;

	if ( ( obj_timer > 90 ) || (( obj_movestatus & MOVESTAT_BGBOUND )!= 0)  ){
		s_hitON();
		if ( s_hitcheck(execstp,player1stp) ){
			execstp->motherobj->s[stw_mail].d = 1;
			s_remove_obj(execstp);
			s_makeobj_nowpos(execstp,S_spark,e_coinspark);
		}
	}

}

static void keycoin_boundwait(void)
{

	short	playerY;
	float	playerspeed;
	
	StrategyRecord *mother = execstp->motherobj;	/* coin */
	s_copy_worldXYZ(execstp,mother);
	if ( obj_timer == 0 ){
		execstp->motherobj = mother->motherobj;		/* change mother shape */
		obj_mode 	= mode_keycoin_bound;
		playerY 	= (short)(player1stp->s[stw_angleY].d);
		playerspeed = 3;
		obj_speedX 	= playerspeed * sin(playerY);
		obj_speedZ 	= playerspeed * cos(playerY);
		obj_speedY 	= 40;
	}

	obj_animeangleY += 0x200;
	obj_animeangleZ += 0x200;

}

static void keycoin_take(void)
{

	StrategyRecord *mother = execstp->motherobj;	/* coin */
	s_copy_worldXYZ(execstp,mother);
	obj_worldY += 40;
	if ( mother->s[stw_imm].d != 0){	
		obj_mode = mode_keycoin_boundwait;
	}

	obj_animeangleZ += 0x200;
	obj_animeangleY += 0x200;

} 

static void *keycoin_modejmp[] = {
	
	 keycoin_take,
	 keycoin_boundwait,
	 keycoin_bound
	
};

extern void s_teresa_key(void)
{
	s_modejmp(keycoin_modejmp);
}

Circling Fire

Unused behavior exists for a type of fire that would circle around Mario, making it harder for him to platform. There is also a stubbed behavior script located near this one, indicating a removed object associated with the fire. Some who worked on the decomp of the game have speculated that this may be the remnants of a Fishing Boo enemy, like those in Super Mario World.

e_sidefire:
	p_initialize(enemyA)
	p_shapeDISABLE
	p_setbit(flag,stf_moveON )
	p_end
	p_while
		p_program(s_sidefire)
	p_loop

e_sidefireball:
	p_initialize(item)
	p_setbit(flag,stf_moveON|stf_FspeedON|stf_YangleSAME)
	p_softspritemodeON
	p_while
		p_program(s_sidefireball)
		p_animeinc
	p_loop

extern void s_sidefire(void)
{

	obj_playerdist 		= s_distanceXZ_obj2obj(execstp,player1stp);

	obj_worldY -=100;

	switch(obj_mode){
		case 0: 
	 	case 1:
	 	case 2:
	 	case 3:
	 	case 4:
	 	case 5:
	 	case 6:
	 	case 7:
			s_makeobj_nowpos(execstp,S_fireball_yellow,e_sidefireball);
			obj_mode++;
			break;
		case 8:
			break;
		case 9:
			obj_mode++; 
			break;
	}


}

extern void s_sidefireball(void)
{

	s_set_scale(5);
	obj_speedF 	= sin(obj_work0)*70;
	obj_work0 += 0x800;

}


(Source: SM64 Partial Source Code)

Checked Platforms

The checkerboard-patterned platforms have a variable that causes them to remain stationary, even when Mario is on them.

Cracked Ice

Forgotten and left in a Deep Freeze.
This object was once above the "In the Deep Freeze" star, the player originally had to ground pound the ice to get to the star. It would release ice particles once groundpounded. It was once speculated to be a generic platform that was able to be groundpounded. The intended model is ID 55. It used the otherwise unused cracked ice texture which was speculated to be for this object. It was finally identified during the 7/25 gigaleak, when a stubbed object placement had Model ID 55 and unused behavior data with the name e_ice.

/*		seqActor(S_movebg02,  4377,1843,4361,  0,0,0,  0,0,0,  e_ice)		*/
e_ice:
	p_initialize(moveBG)
	p_setbit(flag,stf_moveON )
	p_setshapeinfo(sf2_hip_check_info)
	p_save_nowpos
	p_while
		p_program(s_ice)
	p_loop

extern void s_ice(void)
{

	s_set_scale(1.02);

	if (obj_mode == 0 ){
		if ( s_checkplayer_hipaatack() ){
	 		s_kemuri();
			s_boxeffect(20,S_movebg03,3,0);
			obj_mode++;
		}
	} else {
	 	if ( obj_timer > 7 )	s_remove_obj(execstp);
	}

	stMainMoveBG();

}

Early Skull Box

There is a skull box at the top of the ship in Jolly Roger Bay that slides back and forth. An unused behavior causes it to float harmlessly in midair.

const BehaviorScript bhvJrbFloatingBox[] = {
   BEGIN(OBJ_LIST_SURFACE),
   OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
   LOAD_COLLISION_DATA(jrb_seg7_collision_floating_box),
   SET_HOME(),
   BEGIN_LOOP(),
       CALL_NATIVE(bhv_jrb_floating_box_loop),
       CALL_NATIVE(load_object_collision_model),
   END_LOOP(),
};

void bhv_jrb_floating_box_loop(void) {
   o->oPosY = o->oHomeY + sins(o->oTimer * 0x400) * 10.0f;
}

Flames

  • Unused behavior exists for a small flame that bounces in a straight line and can harm Mario on contact. It goes away if Bowser is near.
  • The flames positioned around the castle for light have an unused behavior that would cause nine of them to spawn inside of each other and do nothing but move back and forth. While the castle flames are normally able to hurt Mario, these ones don't.

Motosman

Recovered Model from the IQue builds source code

  • A removed object labelled bhvStub1D0C is mentioned in "object_macros.h" and "behavior_data.c" within decomp.
  • When comparing the stub to a file located in the IQue build's source code, it is revealed to be a perfect match for that object.
  • It even still contains the original model id and name, "0x58" and "S_motosman". Based on label similarities and the scrapped object e_motos calling for S_motosman, it appears to be a later revision of the unused enemy Motos.

Behavior Remnants

{bhvStub1D0C, MODEL_UNKNOWN_58, 0},

const BehaviorScript bhvStub1D0C[] = {
   BEGIN(OBJ_LIST_DEFAULT),
   DEACTIVATE(),
};

Source Code Remnants

seqActor(S_motosman			,	    0,    0, -1500,   0,0,0,  0,0,0, e_motos			)

#define	TAGCODE_e_motos                127

e_motos:
e_motosman:
	p_initialize(option)
	p_killshape

Paintings

SM64Paintings3warps.png

The paintings inside the castle are actually split into three vertical sections (similar to the three horizontal sections used to control the water level in Wet-Dry World), each of which can be independently set to any warp destination in the game. However, because the three sections are always set to the same destination in the final game, this functionality goes unused.

Prototype Chest

An unused behavior allows one to spawn a chest that doesn't emit numbers or shock Mario. It simply opens, from the front or the back, and releases a bubble. It's an early version of the chest due to being dated before the Shoshinkai '95 demo and, it is listed as a regular path while the used chest is listed as iwapath, both coded by a separate person.

extern void s_box1_init(void)
{
	s_change_shape(S_t_box1);
 	obj_angleY = Randomd();
 	obj_angleY = 0;
	s_makeobj_chain(0,0,424/8+44,(-328/8)-36,execstp,S_t_box2,e_box2);
}

extern void s_takarabox(void)
{
	s_player_slideout_RH(200,200);
}

extern void s_box(void)
{

	switch (obj_mode){
		case 0:
		  	if ( s_distance_obj2obj(execstp->motherobj,player1stp) < 300 )	obj_mode++;
			break;
		case 1:
			if ( obj_timer == 0 ){
				s_makeobj_chain(0,0,-80,120,execstp,S_bubble,e_random_bubble);
				AudStartSound(execstp,NA_SE2_BOXOPEN+NA_IN_WATER);
			}
			obj_animeangleX -= 0x400;
			if ( obj_animeangleX < -0x4000)		obj_mode++;
		case 2:
			break;		
	}

} 

e_tbox:
	p_initialize(option)
	p_setbit( flag,stf_moveON | stf_YangleSAME )
	p_BGcheckYset
	p_program(s_box1_init)
	p_while
		p_program(s_takarabox)
	p_loop


e_box2:
	p_initialize(option)
	p_setbit( flag,stf_moveON | stf_YangleSAME )
	p_save_nowpos
	p_while
		p_program(s_box)
	p_loop

Prototype Fish Easter Egg

In Whomp's Fortress, a level editor shows that an unused object can be seen next to the cannon that appears to do nothing. Looking at the script associated with the object reveals a clearly stubbed out function that only checks the water level associated with the object. This object is actually a relic of how the Fish Easter Egg in Super Mario 64 worked in the prototype build. In the final game, the game does a 1/256 roll every time Mario makes a splash to see if a fish splashes along with the puddle. In the Shoshinkai 1995 Mario 64 footage, the same can be seen at the exact spot of the unused object. The exact reason for the change is unknown, but it is likely that the change was made because having an easter egg associated with an object meant an object slot was taken up, where as a simple 1/256 roll removed the need for these objects. The rest of the object code was recovered during the 7/25 gigaleak.

e_funsui:
	p_initialize(option)
	p_setbit(flag,stf_moveON | stf_playerdistON )
	p_shapeDISABLE
	p_while
		p_program(s_funsui_main)
	p_loop

extern void s_funsui_main(void)
{

	int		i;
	float sc;
	StrategyRecord *stratp;
	float	waterY = mcWaterCheck(obj_worldX,obj_worldZ);

#if 0
switch(obj_mode){
	case	0:
		if ( obj_playerdist < 200 )	obj_mode++;
		break;
	case	1:
		if ( waterY > -10000 ){
			if ( beforeframe_objcount < ( NUM_STRATEGY - 28 )){
	
				if ( frameCounter % 32 == 0 )	objsound(NA_SE2_FISH);

				for(i=0;i<2;i++){
					
					if ( ( Randomd() & 0x1f ) == 0 ){
						stratp 	= s_makeobj_nowpos(execstp,S_fish,e_smallwaterdrop);
						s_set_skeletonobj(stratp,(void *)RCP_fishAnime,0);
					} else {
						stratp 	= s_makeobj_nowpos(execstp,S_waterdrop,e_smallwaterdrop);
						sc 						= Randomf()*1+0.5;
						stSetScale(stratp,sc,sc,sc);
						s_softspritemodeON(stratp);
					}

					stratp->s[stw_angleY].d = Randomd();
					stratp->s[stw_worldY].f = waterY;
					stratp->s[stw_speedF].f = Randomf()*3+2;
					stratp->s[stw_speedY].f = Randomf()*20+20;
				}
			}
		}

		if ( obj_playerdist > 300 )	obj_mode = 0;
		break;
}

Prototype Star

There is unused behavior for an early version of the star like the 2D ones seen in early builds, it can not be collected. It is likely to be the remnants of the early 2D star as it uses the star model and appears before the final star's behavior.

Behavior Data

e_star:
	p_initialize(option)
	p_setbit(flag,stf_moveON )
	p_while
		p_addd(animeangleX,0x100)
		p_addd(animeangleY,0x100)
	p_loop

Red Coins

Red coins have unused behaviors that allow them to both stay in front of Mario and remain at a fixed distance away from him at all times, baiting the player to chase after them.

Small Chill Bully

SM64-UnusedSmallChillBully.png

In the final game, normal Bullies come in both large and small sizes, as seen in Lethal Lava Land. However, the only Chill Bully in the game is the large one found in Snowman's Land, leaving this diminutive version unused.

Trampoline

Hmmm...
To do:
The trampoline appears in the cap stage object table next to the cap switch, so get a screenshot of it in one of the cap stages.
SM64-EarlyTrampoline.png


While the developers coded some behavior for it, the code doesn't work properly, as the functions it calls for are stubbed out and don't affect Mario. The trampoline's model is split into three parts, the top, the center, and the bottom. Unfortunately, the model doesn't load properly, but the collision for it does work. It appears in the cap stage object table with the cap switch, meaning that at one point it could have appeared in a cap stage. The leaked partial source code indicates it was last updated on November 18th, 1995. It calls for an unused function "DoTrampoline", the code appears to be removed in the source code as it is left blank. The file refers to it as "pathjumpbg", and "bane".


extern void s_bane_naka(void)
{ 

	float	sc;
	float	dist;

	s_copy_worldXYZ_angleXYZ(execstp,execstp->motherobj);
	s_copy_animeposY(execstp,execstp->motherobj);

	obj_worldY -= 75;

	if ( ( dist = obj_worldY - obj_attY ) >= 0 ){
		sc = (dist/ 10.0+1.0 );
	} else {
		dist = -dist;
		sc = 1.0-(dist/ 500.0);
	}

	stSetScale(execstp,1.0,sc,1.0);	

}

extern void s_jumpbg(void)
{

	StrategyRecord *stp;
	s_change_shape(S_bane_ue);

	if ( obj_timer == 0 ){
		stp = s_makeobj_nowpos(execstp,S_bane_naka,e_bane_naka);
		stp->s[stw_worldY].f -= 75;
		stp = s_makeobj_nowpos(execstp,S_bane_sita,e_stop);
		stp->s[stw_worldY].f -= 75 + 75 ;
	}

	if ( player1stp->ride_strat == execstp )	execstp->s[stw_work7].d = 1;
	else {
		execstp->s[stw_work7].d = 0;
		obj_worldY = obj_attY;
	}

	DoTrampoline();

}


(Source: VL-Tone, Kaze Emanuar, N64Decomp)

Trapdoor Sound

The trapdoor leading to Bowser in the Dark World was originally going to have a sound effect for when the player activated the trapdoor.

Behavior Data

void bhv_castle_floor_trap_open(void) {
    if (o->oTimer == 0)
        cur_obj_play_sound_2(SOUND_GENERAL_CASTLE_TRAP_OPEN);
    o->oAngleVelRoll -= 0x100;
    o->oFaceAngleRoll += o->oAngleVelRoll;
    if (o->oFaceAngleRoll < -0x4000) {
        o->oFaceAngleRoll = -0x4000;
        o->oAction = 2; // after opening is done, enable close detection
    }
}

The original sound remains in the game's files. However, the sound goes unused and does not play as the floor trap object is set to have rendering disabled. Sounds spawned by an object do not play when the object isn't rendered.

DISABLE_RENDERING(),
// Command 0x35: Disables rendering for the object.
// Usage: DISABLE_RENDERING()
static s32 bhv_cmd_disable_rendering(void) {
    gCurrentObject->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE; 
    gCurBhvCommand++;
    return BHV_PROC_CONTINUE;
} 
void cur_obj_play_sound_2(s32 soundMagic) {
    if (gCurrentObject->header.gfx.node.flags & GRAPH_RENDER_ACTIVE) {
        play_sound(soundMagic, gCurrentObject->header.gfx.cameraToObject);
}
Unused sound.


(Source: Marionova & Alieneer)

Water Mine

SM64 WaterMine.PNG

This unused mine is found with other water-related objects. It looks similar to the bombs seen in Bowser levels, albeit slightly smaller.

Yellow Switch & Transparent Box

SM64 YellowSwitch.png

While red, blue, and green switches and transparent boxes are used in the final game, these yellow versions go unused. When spawned, the yellow switch is always in its "pressed" state as there is no save file flag. It appears it the player would need to press the yellow switch to unlock boxed Koopa shells instead of being unlocked by default, based on box contents.

Behavior Data

void ActionActivateCapSwitch3() {
} // dead function
MakeIDJMP	itembox_table[] = {
 	{ ITEMCODE_HAT_WING 	,0,0,S_itemhat_wing		,e_itemhat_wing  	 },
 	{ ITEMCODE_HAT_METAL 	,0,0,S_itemhat_metal	,e_itemhat_metal 	 },
 	{ ITEMCODE_HAT_ERASE 	,0,0,S_itemhat_hat		,e_itemhat_erase 	 },
 	{ ITEMCODE_NOKO		 	,0,0,S_koura			,e_nokoboard 	 	 },
 	{ ITEMCODE_COIN_1		,0,0,S_coin				,e_player_coin 	 	 },
 	{ ITEMCODE_COIN_3		,0,0,S_NULL				,e_player_coin_3 	 },
 	{ ITEMCODE_COIN_10		,0,0,S_NULL				,e_player_coin_10 	 },
 	{ ITEMCODE_1UP			,0,0,S_oneup_kinoko		,e_1up_kinoko		 },
 	{ ITEMCODE_GOALSTAR		,0,0,S_polystar			,e_enemystar2		 },
 	{ ITEMCODE_1UP_ESCAPE	,0,0,S_oneup_kinoko		,e_1up_kinoko_escape },
 	{ ITEMCODE_GOALSTAR_1	,0,1,S_polystar			,e_enemystar2		 },
 	{ ITEMCODE_GOALSTAR_2	,0,2,S_polystar			,e_enemystar2		 },
 	{ ITEMCODE_GOALSTAR_3	,0,3,S_polystar			,e_enemystar2		 },
 	{ ITEMCODE_GOALSTAR_4	,0,4,S_polystar			,e_enemystar2		 },
 	{ ITEMCODE_GOALSTAR_5	,0,5,S_polystar			,e_enemystar2		 },
 	{ ITEMCODE_END			,0,0,0					,NULL 			 	 },
};

Unused Models

Alternate Koopa Shell and Shoes

Hmmm...
To do:
Unused Head Geometry "RCP_nokonoko_down8"

Name: "RCP_nokonoko_down9, RCP_nokonoko_down2"

The color of Koopa's alternate green mono-colored shoes and shell correlate with the unused small green shell in the screenshot above. These can be loaded by overriding the values at US-version offsets 0x1D7ED6 with C240 (shell), 0x1D7F2E with B6E0 (left shoe), and 0x1D7F62 with B6E0 (right shoe).

Used Model Unused Shell and Shoes
SuperMario64 usedShell Compare.PNG SuperMario64 unusedShell Compare.PNG

You can also use the following codes to view the old Koopa the Quick geometry in game.

USA Japan Europe Japan (Shindou)
801630A6 00C2
801630A7 0040
801630FE 00B6
801630FF 00E0
80163132 00B6
80163133 00E0
80160226 00C2
80160227 0040
8016027E 00B6
8016027F 00E0
801602B2 00B6
801602B3 00E0
801624A6 00C2
801624A7 0040
801624FE 00B6
801624FF 00E0
80162532 00B6
80162533 00E0
80160246 00C2
80160247 0040
8016029E 00B6
8016029F 00E0
801602D2 00B6
801602D3 00E0

Big Bully - Round Geometry

SuperMario64 3DBody BigBully 3878.PNG

Name: "RCP_otos_basedata4"

Located with the geometry for the Bullies is a large round 3D object, originally used before the prerendered texture was created. It is slightly larger than the round 2D body used by Big Bully in the game, and can be loaded by replacing the value at US-version offset 0x134C7A with 3878.

You can also use the following codes to view the old Big Bully geometry in game.

USA Japan Europe Japan (Shindou)
80149D3A 0038
80149D3B 0078
80146F4A 0038
80146F4B 0078
8014913A 0038
8014913B 0078
80146EDA 0038
80146EDB 0078

Early Test Platform

TestPlatformSM64.png

Name: "gfx_testlift"

At 0x08026260 in RAM an unused display list for a small yellow square platform can be seen in the screenshot. It is unknown what this was for, but it was likely for early level tests as it also has collision associated with it after the DL which is also unused.


(Source: ProjectRevoTPP - Discovery, Kaze Emanuar - Screenshot)

Heave Ho - Tire Geometry

SM64 HeaveHo UnusedTires.png

Name: "omu_tire_shape"

Heave Ho has three unreferenced spherical geometries, once used as Heave Ho's tires. They appear huge, because they aren't scaled correctly. The final model uses 2D tires, which are much more memory-conservative. To load the 3D wheels, replace the value at US-version offset 0x132C02 with 4188, 0x132C0E with 45D0, and 0x132C1A with 49A8.

Hazy Maze Cave Rolling Rocks Graphic Variant

Name: "gfx_rock_pieceA, gfx_rock_pieceB"

In Hazy Maze Cave, there are two unused graphics for the rolling rocks. These two graphics are smaller than the canonical rolling rock graphic, and have more jagged shapes. Perhaps the rolling rocks were intended to break up into these smaller pieces upon colliding with Mario, or break up over time. The former would later take place in Super Mario 64 DS, while playing as Wario and using the Super Mushroom power-up.


(Source: pannenkoek2012)
Standard Rolling Rock Graphic Unused Rolling Rock Graphic #1 (Scaled up 2x) Unused Rolling Rock Graphic #2 (Scaled up 4x)
SM64 HMC Rolling Rock Normal.gif SM64 HMC Rolling Rock Unused Graphic Large.gif SM64 HMC Rolling Rock Unused Graphic Small.gif

Klepto with Blue Star

SM64 SSL Klepto Blue Star.png

Name: "gfx_shadestar"

Klepto has 3 graphical variants: holding nothing, holding Mario's hat, and holding a yellow star. However, he has an unused fourth graphic in which he's holding a blue star. This suggests that originally, Klepto would have held a yellow star if the resulting star would be yellow, and a blue star if the resulting star would be blue. But later this was changed so that Klepto will hold a yellow star whether the resulting star is yellow or blue.


(Source: pannenkoek2012)

Penguin Head Variants

Name: "RCP_ping_base_data24"

This penguin head variant is larger, darker, and texture-less. It also features an orange beak. This head was seen in an early screenshot of the game. To view this in-game, replace the value at US-version offset 0x1658B2 with 7358.

Unused - 7358 Used
SM64 Penguin Head unused 7358.png SM64 Penguin Head used.png

Use these codes to replace the penguins head with the earlier revision.

USA Japan Europe Japan (Shindou)
80152AC2 0073
80152AC3 0058
8014FC32 0073
8014FC33 0058
80151EC2 0073
80151EC3 0058
8014FC62 0073
8014FC63 0058

Name: "RCP_ping_head_eye5"

Another unused penguin head containing a sad expression, with eyes that share some resemblance to those from the Nintendo Shoshinkai 1995 demo. To view this in-game, replace the value at US-version offset 0x1658B2 with 64E8.

Unused - 64E8 Shoshinkai 1995
SM64 Penguin 64E8.png SM64 earlypenguin.png

Use these codes to give the penguin the sad expression.

USA Japan Europe Japan (Shindou)
80152AC2 0064
80152AC3 00E8
8014FC32 0064
8014FC33 00E8
80151EC2 0064
80151EC3 00E8
8014FC62 0064
8014FC63 00E8

Pit Block Graphic Variant

Name: "gfx_mecha_obj08_b"

In Tick Tock Clock, there's a block that moves up and down near the star - The Pit and the Pendulums. This block has 2 vertical stripes on each of its sides. However, there's an unused variant that has 3 vertical stripes on each of its sides.


(Source: pannenkoek2012)
Used Unused
SM64 TTC Pit Block Normal.png
SM64 TTC Pit Block Unused Graphic.png

Small Koopa Shells

SM64RedShell.png


Date: "June 16, 1995"

Name: "RCP_GfxRedNoko, RCP_GfxGreenNoko"

These red and green Koopa shells feature unusual blue bottoms. They can be loaded in-game via codes or hacking, but they're completely non-functional. To replace the Koopa Shell with one of these shells in-game, replace the value at US-version offset 0x2AC356 with 0ADC for the red shell or 0B08 for the green shell. They were meant to be used with the unused throwing object.

(Source: VL-Tone)

Unused Goomba Parts

Hmmm...
To do:
Replace the 2D body with the 3D body. The 3D body can overwrite the 2D body by inserting at 01D360 at 0x200FFD, but it doesn't scale properly.

Name: "RCP_kuribo_walk2, RCP_kuribo_walk3"

Goomba has a darker variant of its head. Although it lacks textures, the color matches that of Goomba's feet. There is also unused round 3D geometry for Goomba's body, which was possibly replaced with the 2D body to increase the game's performance. The unused head can be loaded in-game by replacing the value at US-version offset 0x201021 with 01D0D0.

Unused Head Unused 3D Body
SuperMario64 Goomba 01D0D0 head.png
SuperMario64 Goomba 01D360 body.png

Whomp's Fortress Tower Platform Graphic Variant

Name: "gfx_ca_n_lift0_0"

In Whomp's Fortress, there's an unused graphic for the platforms of the tower. This unused graphic is a trapezoid instead of a rectangle. It's likely that the static platforms (i.e. every second platform) were originally intended to use this unused graphic. With this unused graphic, there's no empty space between consecutive platforms. It was used in the Shoshinkai 1995 demo. This model can be loaded in place of the current tower platforms by overwriting the value in the US-version offset 0x49E57A with EDC0.


(Source: pannenkoek2012)
Tower Platforms with Normal Graphics Tower Platforms with Unused Graphics
SM64 WF Tower Normal.png
SM64 WF Tower Unused Graphic.png