the cutting room mirror

Unused Objects & Models

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

SOMETIMES I SEE A TEXT BOX AND I JUST CAN'T HELP MYSSDFGFFDHFGDJGGFSHGDFH

This page sucks.
If you could make it suck less, that would be awesome.
Specifically: Several object descriptions need a rewrite, also provide evidence beyond just words for objects existing (add labels from the source code).

To do:

  • Check every stage to find any unused stage models.
  • Lethal Lava Land has unused LOD versions of the two bridge segment types used in the level. Used early in development?
  • The reason the unused 3D parts for Goomba, Bully, etc. are oversized is because they are swapped into billboard graph nodes, which counteract the model's scaling. Changing the graph nodes' type to a simple display node with extra codes should fix the issue.
  • 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 "Blood" Particles and Unused Mario parts.
  • Metal Wing Cap has a ground model.

Unused Objects#

Unused Enemies & Hazards#

APNG

Blargg#

The game contains an unfinished model for Blargg, an enemy from Super Mario World. It is eyeless and untextured. It uses model ID 84. It has a handful of animations associated with it that show it floating in lava and jumping out. Interestingly, the spines on it back are ordered in a way that allowed them to have a separate color, despite them not using one. No behavior exists in the final, however code for its behavior was found during the 7/25 Gigaleak, last updated on November 20th, 1995. The file is named "pathunbaba.p" with 'unbaba' being Blargg's name in Japanese. Blargg's model is scaled to twice the size, and when the object activates, it will wait until the player is closer than 600 in-game units or less. Once the player is in its 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)

Motosman#

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

{bhvStub1D0C, MODEL_UNKNOWN_58, 0},

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

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

Small Chill Bully#

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.

e_ice_otos:
   p_initialize(enemyA)
   p_setbit(flag,stf_moveON| stf_YangleSAME )
   p_set_pointer(skelanime,ice_otos_anime)
   p_BGcheckYset
   p_save_nowpos
   p_setd(work0,0x10)
   p_program(s_otos_init)

   p_while
       p_hitON
       p_program(s_otos_event)
   p_loop

Swaying Fire#

Unused behavior exists for a type of fire that would sway side to side, and lacks collision.

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;

}

Water Mine#

This unused water mine is found with other water-related objects, and could be seen underwater around Bowser's Sub in the SpaceWorld 1995 version of Dire, Dire Docks. It looks similar to the bombs seen in Bowser levels, albeit slightly smaller. Interestingly this is not the first time a water mine was scrapped from a Mario game. An unused sound definition exists for an underwater explosion, which is not used for this object. Internally labeled as e_kirai.

Unused Items#

2D 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 uses the star model and, in the code, appears before the final star's behavior does.

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

Boo Key#

Mario64_Scan_BooKey.png
This Boo Key was shown in early footage, where it was obtained by defeating a Big Boo. The Key uses model ID 85. 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 an earlier one that does not increment the key counter and only spawns coin collection sparks. In the leaked code, a commented out location for the old key exists. Speculating, it appears the Bookshelf was originally meant to open using a key, based on how the key functions when it is restored in the game. Another possibility is that was meant to open the old chest, being right next to it in a leftover object header file from Mid 1995, and the old chest having collision.

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)

The Boo Key has three alternate color variants. To view these keys in-game with 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

Boo Key - Green

Boo Key - Blue


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);
}

Hoot's Egg#

SM64-YoshiEgg.gif

This unused egg with model ID 87 bears a striking resemblance to a Yoshi Egg features a bouncing animation. In the code it is labelled bird_egg, which is the same prefix that Hoot uses. This is confirmed to be Hoot's egg due to a deleted object next to Hoot existing labeled e_bird_egg. Based on overall evidence in the leak it appears Hoot originally hatched from the egg instead of being in a tree.

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, dated before the SpaceWorld 1995 demo, and it is listed as a regular path while the used chest is listed as iwapath, each coded by a different 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

Yellow Switch & Transparent Box#

While red, blue, and green switches and transparent boxes are used in the final game, these yellow versions go unused.

There is a single switch object in the game, whose model and behavior is defined by the second behavior parameter. They are 0, 1, 2, 3 for red, green, blue, yellow. While the model is correctly defined for the unused switch variant as a yellow looking switch, the behavior isn't: to get and set its pressed state save flag, it uses the 4th entry into a 3 entry long table of flags causing out of bounds behavior and such the save flags that it uses appear to be random.

As for the box object, the 4th entry into the box contents table is the Koopa Shell box, which might be what would have originally been unlocked by this switch.

   static s32 sCapSaveFlags[] = {
       SAVE_FLAG_HAVE_WING_CAP,
       SAVE_FLAG_HAVE_METAL_CAP,
       SAVE_FLAG_HAVE_VANISH_CAP,
   };


   static s16 sBooHitRotations[] = {
       6047, 5664, // wrongfully used as save flags.

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 Platforms#

Cracked Ice#

Forgotten and left in a Deep Freeze.
This object once concealed the "In the Deep Freeze" star, and you needed to ground pound to access the Power Star. The intended model is ID 55, and was identified during the 7/25 Gigaleak, when a stubbed object placement for Snowman's Land had a Model with the ID 55 and unused behavior data with the name e_ice placed above the Star.

/*     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();

}

Floating 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, possibly at the water's surface.

e_wd_kibako:
   p_initialize(moveBG)
   p_setbit(flag,stf_moveON)
   p_setshapeinfo(kibakocheck_info)
   p_save_nowpos

   p_while
       p_program(s_wd_kibako_main)
       p_program(stMainMoveBG)
   p_loop


extern void s_wd_kibako_main(void)
{


   obj_worldY = obj_attY + sin(obj_timer*0x400)*10;


}

Test Lift#

Name: "gfx_testlift"

At 0x08026260 in RAM an unused display list for a small yellow square platform. It turns out this is actually for a now removed object that was made to test out lift functions, like the ones in Lethal Lava Land.

(Source: ProjectRevoTPP - Discovery, AltoXorg - In-game render)

Trampoline#

TOTWC_with_Unused_Trampoline.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 won'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", though the code is blanked out in the source code. The file refers to it as "pathjumpbg", and "bane". SM64-EarlyTrampoline.png

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 going to have a sound effect for when the player activated it.

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);
}

(Source: Marionova & Alieneer)

Yajima Lift#

An unused checkerboard-platform lift that could be controlled by editing the enemy params, named after its programmer (Hajime Yajima).

extern void s_yjlift(void)
{

   if ( enemy_p0 == 1 ){
       s_set_angle(execstp,0,0,0);
       obj_anglespeedX = 0;
       obj_anglespeedY = 0;
       obj_anglespeedZ = 0;
   }

   if ( enemy_p0 == 2 ){

       obj_animeangleX = enemy_p1 * 0x1000;
       obj_animeangleY = enemy_p2 * 0x1000;
       obj_animeangleZ = enemy_p3 * 0x1000;
   }


   obj_anglespeedX = enemy_p4;
   obj_anglespeedY = enemy_p5;
   obj_anglespeedZ = enemy_p6;

   if ( enemy_p0 == 3 ){
       obj_animeangleX += obj_anglespeedX;
       obj_animeangleY += obj_anglespeedY;
       obj_animeangleZ += obj_anglespeedZ;
   }

}

Miscellanous#

Paintings#

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 an identical destination in the final game, this functionality goes unused.

Prototype Fish Easter Egg#

Using a level editor, an area in Whomp's Fortress shows an unused object, seen next to the cannon, that does 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 an earlier build's fish water walking effect worked in Super Mario 64. In the final game, the game does a 1/256 roll every time Mario makes a splash to see if a fish splashes alongside him. In the SpaceWorld 1995 Mario 64 footage, the same fish can be spotted at the exact spot of the unused object. The exact reason for the change is unknown, but it is likely that it was made because having a random effect associated with an object meant an object slot was taken up, where as a simple 1/256 roll removed the need for these objects in memory. The rest of the object's 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);

}

(Source: Game Zero's Shoshinkai 1995, Nintendo 64 and Super Mario 64 Demonstrations)

Player Fire#

The leftovers of a projectile attack Mario could do, possibly fireballs thrown by the player. Anchors itself 300 units in front of the player, and damages objects that collide with it, an ability that was present in the earlier game series (except for Super Mario World).

e_plfire:
   p_initialize(plfire)
   p_setbit(flag,stf_moveON | stf_YangleSAME | stf_playerdistON )
   p_softspritemodeON
   p_save_nowpos
   p_sethitbox(100,300)
   p_hitON
   p_while
       p_animeinc
       p_program(s_plfire)
   p_loop


extern void s_plfire(void)
{

   s_posoffset_mother(player1stp,0,30,300);

   execstp->myobj_R        = 100+effect_p0;   
   execstp->myobj_height   = 300+effect_p1;

   s_fire_hitcheck(execstp);

}

Unused Models#

Alternate Mario Head Parts#

Name: "RCP_mario_head4, RCP_mario_head5, RCP_mario_head6, RCP_mario_head7, RCP_mario_nohat4, RCP_mario_nohat5, RCP_mario_nohat6, RCP_mario_nohat7"

These are unused display lists for Mario's head, featuring the unused eye textures for looking right, left, up, and down. It's currently unknown what these were for, but it's possible that they were meant for when Mario is sidestepping, or climbing.

Looking Right

Looking Left

Looking Up

Looking Down

Alternate Koopa Head, Shoes, and Shell#

To do:
Add codes for replacing head using given addresses.

Name: "RCP_nokonoko_down0, RCP_nokonoko_down2, RCP_nokonoko_down8, RCP_nokonoko_down9"

The Koopa model has unused vertex-colored variants of the head, shell, and shoe parts. The most notable difference geometry-wise is the slightly taller shell. The shell and shoes can be loaded by overriding the values at US-version offsets 0x1D7EF2 and 0x1D7EFE with BE80 (head), 0x1D7ED6 with C240 (shell), 0x1D7F2E with B6E0 (left shoe), and 0x1D7F62 with B6E0 (right shoe). The vertex-colored Koopa may have been repurposed for Mario Artist Polygon Studio.

Used

Unused

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#

To do:
Body appears too big when swapped because of the billboard node.

Name: "RCP_otos_basedata4"

Located within the geometry for the Bullies is a large round 3D ball, which was later replaced with a 2D billboard. It 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

Heave-Ho - Tire Geometry#

To do:
Tires appear too big when swapped because of the billboard nodes.

Name: "omu_tire_shape"

Heave Ho has three unreferenced sphere meshes, once used for Heave-Ho's tires. The final model uses 2D tires, which are easier on memory. To load in the 3D wheels in the US Version, replace the value 0x132C02 with 4188, 0x132C0E with 45D0, and 0x132C1A with 49A8.

Used

Unused

Unused Skeeter Parts#

To do:
Add codes for replacing parts using given addresses.

Name: "RCP_amembow_dash0, RCP_amembow_dash3, RCP_amembow_dash6, RCP_amembow_dash10, RCP_amembow_dash11, RCP_amembow_dash14, RCP_amembow_dash16, RCP_amembow_dash18"

Fully 3D model parts for Skeeter's body, eyes, and antenna can be found among the used model segments. They don't have any shading or color applied to them, despite a vertex-color array meant for them existing. Because of this, their color will actually change depending on their surroundings in-game (below is what they look like when no other visual geometry is being rendered in the scene). Also among these models are four unused foot parts meant for each foot on the enemy, which also lack shading and color. The four feet are identical to each other and very slightly different from the used foot. Included below is a mockup of what these parts could've looked like if their vertex-colors were applied.

The parts can be loaded by overriding the values at US-version offsets 0x1C3DFA with 0x5358 (body), 0x1C3E42 with 0x3FF0 (foot 1), 0x1C3E8A with 0x40A0 (foot 2), 0x1C3ED2 with 0x4150 (foot 3), 0x1C3F12 with 0x4200 (eye 1), 0x1C3F6A with 0x4678 (eye 2), 0x1C3FB2 with 0x45C8 (foot 4), and 0x1C4002 with 0x4A40 (antenna).

Unused

Mockup with Unused Vertex Colors Applied

Used

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 upon hitting a wall. The former would later take place in Super Mario 64 DS, when hit by Wario and or touched while using the Super Mushroom power-up. An unused sound definition exists for the giant snowball exploding (the rolling rock and giant snowball share the object).

(Source: pannenkoek2012)

Standard Rolling Rock Graphic

Unused Rolling Rock Graphic #1 (Scaled up 2x)

Unused Rolling Rock Graphic #2 (Scaled up 4x)

Klepto with Blue Star#

Name: "gfx_shadestar"

Klepto has three graphical variants: holding nothing, holding Mario's hat, and holding a Star. However, he has an unused fourth graphic in which he's holding a blue Star, which renders incorrectly due to being set as opaque instead of transparent.

(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

Used

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

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

Up & Down Block (3)#

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

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 and were one of the first objects created for SM64.

(Source: VL-Tone)

Unused Goomba Parts#

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 because of the billboard node.

Name: "RCP_kuribo_walk2, RCP_kuribo_walk3"

The Goomba has a variant with a darker head. Although it lacks textures, the color matches its feet. There is also unused 3D mesh for Goomba's body, later used as the basis of the 2D billboard. The unused 3D head mesh can be loaded in the US version of the game by replacing the value at offset 0x201021 with 01D0D0.

Unused

Used

Unused Amp Parts#

To do:
Add codes for swapping parts and changing the billboard node.

Amp has unused parts for an earlier, untextured version with a fully 3D body. Notably, all of the parts are slightly larger than in the used version, and there is one more mesh. Based on the extra mesh's position, it was likely meant for a separate anger mark texture. The electricity meshes are also considerably narrower. The light colors used by the body and face are unusual in that the "dark" color is lighter than the pure-black "light" color, giving the body a greenish glow.

To replace the existing Amp model with these in-game, replace the value at US-version offset 0x20092A with 3E00 (eyes), 0x200962 with 3910 (bolt 1), 0x20099E with 3940 (bolt 2), 0x2009DA with 3970 (bolt 3), 0x200A16 with 39A0 (bolt 4), 0x200A2E with 3DA8 (mouth), and 0x200A52 with 39D0 (body). Unfortunately, since there are more unused parts than used parts, it is not possible to see all of them at once just by swapping. By setting 0x20092A to 3DD8 instead, the extra anger mesh can be seen.

Unused

Used

Unused Wiggler Parts#

Inside Wiggler's data is a large set of vertex data. Unlike the other parts listed on this page, there are no commands for loading triangles or colors. The vertices correspond to a sphere, plus some extra squares that very closely match the ones used for Wiggler's eyes, mouth, and flower. The sphere is considerably smaller than Wiggler's final head, as shown by how far the squares float off the surface. Wiggler also has two unused light sets that likely belonged to placeholder spheres such as this one. There is an orange color (#EA8B16) for the body and a brown color (#6D1A00) for the nose. The image here is a mockup of what the polygons most likely would have looked like.

Whomp's Fortress Tower Platform Graphic Variant#

Name: "gfx_ca_n_lift0_0"

In Whomp's Fortress, there's an unused, trapezoid-shaped mesh for the platforms of the tower, which lack a shadow texture. It's likely that the static platforms, i.e. every other platform, were originally intended to use this model, as when it's loaded, there are no gaps between platforms surrounding the tower. They are similar to the ones used in the SpaceWorld 1995 demo. In the US version, this model can be loaded in place of the current tower platforms by overwriting the value in the offset 0x49E57A with EDC0.

(Source: pannenkoek2012)

Tower Platforms with Normal Graphics

Tower Platforms with Unused Graphics