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

Development:Super Mario 64 (Nintendo 64)

From The Cutting Room Floor
Jump to navigation Jump to search

This page details development materials of Super Mario 64 (Nintendo 64).

On 25th July, 2020, a large amount of internal data owned by Nintendo was leaked to the public, apparently originating from either iQue-owned servers or a backup of them. This was a result of an earlier server breach in 2018, which resulted in the leaking of other assets, including but not limited to the Spaceworld 1997 and Spaceworld 1999 demos of Pokémon Gold and Silver and data for Pokémon Diamond and Pearl. The 25th July, 2020 leak included a portion of Super Mario 64's source code, featuring a large number of early and unused assets; while the code appears to specifically be for the Shindou Pak Taiou version of the game, it includes unused assets not seen in any released version, some of which seem to go as far back as 1995.

Hmmm...
To do:
  • Add full file paths for everything
  • Get transparent images of isolated models that don't yet have any (e.g. Luigi, both raw and reconstructed, Scuttlebug).
  • Insert information about text files in the source code that was previously on the main page.
  • There are many, many more models.
  • Add information about high-quality early screenshots and promotional art.
  • Add more information about the unused test levels.
  • Apply the early textures to the models and upload renders (or note if they don't line up).
  • There are some animations for Mario that aren't in the final game's data.
  • Remnants of many scrapped enemies and scrapped variants exist in behavior names and macro presets, The Angry Sun, Blargg, An ice variant, and the normal variant of Motosman are some of the ones identified there.
  • Add dates for any model shapes located if possible.
  • Identify the rest of the scrapped enemies in tagdecode.h using the source code, and create a section for it.
  • Document "star" a file in the base folder which contains positions for stars and item boxes for a prerelease build.
  • There is more data in "kimura.lzh" in the mk64 folder in the root of the bbgames depot
  • Stuff posted in "The Preservation Project" (SM64 Shoshinkai 1995 demo recreation) discord
  • Stuff posted by Alieneer/DerpDerp on the TCRF discord
  • Many screenshots here are taken in hacks with other unrelated stuff like proto HUD recreations and old mario models. Replace them with clean screenshots that only show what they need to, to reduce confusion.

Models

Luigi

Models for Luigi's head and body parts were discovered alongside textures for his hat emblem, mustache, and sideburns in sm64\shape\Player\Luigi. The finished model shown below is a reconstruction of Luigi using what was found, incorporating additional textures from Mario's model, based on "luigi.c" which indicates textures were reused. luigi.c is dated June 20th 1995, which indicates that the model is based on an older version of Mario_Old.

Models Raw model Sideburns Hat emblem Mustache Reconstructed model In-game modification
SM64-Prerelease-LuigiModels.png Raw Luigi.png SM64 Luigi Hair.png SM64 Luigi Hat.png SM64 Luigi Stache.png SM64 Luigi Transparent Model.png
SM64 luigi ingame.png

luigi.c

#include "../headers.h"

extern unsigned short meye1_txt[];
extern unsigned short meye2_txt[];
extern unsigned short meye3_txt[];
extern unsigned short meye4_txt[];
extern unsigned short meye5_txt[];
extern unsigned short m_button_txt[];

#define	SCALE	4
#define ShapeColor_luigi(R,G,B) {{R/SCALE ,G/SCALE ,B/SCALE ,0 ,R/SCALE ,G/SCALE ,B/SCALE ,0 },{ R, G, B, 0, R, G, B, 0, LIGHT_X, LIGHT_Y, LIGHT_Z, 0} }

#include "luigi/luigi_near_poly.sou"
#include "luigi/luigi_near_body.sou"
#include "luigi/luigi_near_head.sou"
#include "luigi/luigi_mid_poly.sou"
#include "luigi/luigi_mid_body.sou"
#include "luigi/luigi_far_poly.sou"
#include "luigi/luigi_swim_hand.sou"

static Hierarchy RCP_TitleLuigiHierarchy[] = {
		hmsJoint(RM_SURF, NULL, 0, 261-189, 0)									/* chn14_2_1	*/
		hmsBegin()
			hmsJoint(RM_SURF, RCP_luigi_near14, 0, 0, 0)							/* m_waist1_3_2	*/
			hmsBegin()
				hmsJoint(RM_SURF, RCP_luigi_near_body, 33, 0, 0)					/* m_body1_2	*/
				hmsBegin()

					hmsJoint(RM_SURF, NULL, 91, 0, 0)							/* m_head2		*/
					hmsBegin()
						hmsSelect(1, CtrlMarioEye)					/* for the eye animation	*/
						hmsBegin()
							hmsGfx(RM_SURF, RCP_luigi_head1)
							hmsGfx(RM_SURF, RCP_luigi_head2)
							hmsGfx(RM_SURF, RCP_luigi_head3)
							hmsGfx(RM_SURF, RCP_luigi_head4)
							hmsGfx(RM_SURF, RCP_luigi_head5)
						hmsEnd()
					hmsEnd()

					hmsJoint(RM_SURF, NULL, 63, -10, 65)							/* chn6			*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_near2, 0, 0, 0)				/* m_larmA1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_near1, 63, 0, 0)			/* m_larmB1_2	*/
							hmsBegin()
								hmsJoint(RM_SURF, RCP_luigi_near0, 71, 0, 0)		/* m_lhamd1_2	*/
							hmsEnd()
						hmsEnd()
					hmsEnd()

					hmsJoint(RM_SURF, NULL, 60, -10, -63)						/* chn10		*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_near5, 0, 0, 0)				/* m_rarmA1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_near4, 62, 0, 0)			/* m_rarmB1_2	*/
							hmsBegin()
								hmsJoint(RM_SURF, RCP_luigi_near3, 66, 0, 0)		/* m_rhand1_2	*/
							hmsEnd()
						hmsEnd()
					hmsEnd()

				hmsEnd()

				hmsJoint(RM_SURF, NULL, -34, -9, 39)								/* chn15		*/
				hmsBegin()
					hmsJoint(RM_SURF, RCP_luigi_near11, 0, 0, 0)					/* m_llegA1_2	*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_near10, 98, 0, 0)			/* m_llegB1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_near9, 81, 0, 0)			/* m_lfoot1_2	*/
						hmsEnd()
					hmsEnd()
				hmsEnd()

				hmsJoint(RM_SURF, NULL, -34, -9, -40)							/* chn17		*/
				hmsBegin()
					hmsJoint(RM_SURF, RCP_luigi_near8, 0, 0, 0)					/* m_rlegA1_2	*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_near7, 98, 0, 0)				/* m_rlegB1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_near6, 81, 0, 0)			/* m_rfoot1_2	*/
						hmsEnd()
					hmsEnd()
				hmsEnd()

			hmsEnd()
		hmsEnd()
	hmsEnd()
	hmsReturn()
};

static Hierarchy RCP_NearLuigiHierarchy[] = {
		hmsJoint(RM_SURF, NULL, 0, 261-189, 0)									/* chn14_2_1	*/
		hmsBegin()
			hmsJoint(RM_SURF, RCP_luigi_near14, 0, 0, 0)							/* m_waist1_3_2	*/
			hmsBegin()
 				hmsJoint(RM_SURF, RCP_luigi_near_body, 33, 0, 0)					/* m_body1_2	*/
				hmsBegin()

 					hmsJoint(RM_SURF, NULL, 91, 0, 0)							/* m_head2		*/
					hmsBegin()
						hmsCProg(1, CtrlMarioHead)
 						hmsRotate(0, 0, 0)								/* for control by program	*/
						hmsBegin()
							hmsSelect(1, CtrlMarioEye)					/* for the eye animation	*/
							hmsBegin()
								hmsGfx(RM_SURF, RCP_luigi_head1)
								hmsGfx(RM_SURF, RCP_luigi_head2)
								hmsGfx(RM_SURF, RCP_luigi_head3)
								hmsGfx(RM_SURF, RCP_luigi_head4)
								hmsGfx(RM_SURF, RCP_luigi_head5)
							hmsEnd()
						hmsEnd()
					hmsEnd()

					hmsJoint(RM_SURF, NULL, 63, -10, 65)							/* chn6			*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_near2, 0, 0, 0)				/* m_larmA1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_near1, 63, 0, 0)			/* m_larmB1_2	*/
							hmsBegin()
								hmsSelect(1, CtrlMarioHand)
								hmsBegin()
									hmsJoint(RM_SURF, RCP_luigi_near0, 71, 0, 0)		/* m_lhamd1_2	*/
									hmsJoint(RM_SURF, RCP_swim_hand_l, 71, 0, 0)
								hmsEnd()
							hmsEnd()
						hmsEnd()
					hmsEnd()

					hmsJoint(RM_SURF, NULL, 60, -10, -63)						/* chn10		*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_near5, 0, 0, 0)				/* m_rarmA1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_near4, 62, 0, 0)			/* m_rarmB1_2	*/
							hmsBegin()
								hmsSelect(1, CtrlMarioHand)
								hmsBegin()
									hmsJoint(RM_SURF, RCP_luigi_near3, 66, 0, 0)		/* m_rhand1_2	*/
									hmsBegin()
										hmsSucker(0,0,0, 1,CtrlMarioTaking)
									hmsEnd()
									hmsJoint(RM_SURF, RCP_swim_hand_r, 66, 0, 0)
									hmsBegin()
										hmsSucker(0,0,0, 1,CtrlMarioTaking)
									hmsEnd()
								hmsEnd()
							hmsEnd()
						hmsEnd()
					hmsEnd()

				hmsEnd()

				hmsJoint(RM_SURF, NULL, -34, -9, 39)								/* chn15		*/
				hmsBegin()
					hmsJoint(RM_SURF, RCP_luigi_near11, 0, 0, 0)					/* m_llegA1_2	*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_near10, 98, 0, 0)			/* m_llegB1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_near9, 81, 0, 0)			/* m_lfoot1_2	*/
						hmsEnd()
					hmsEnd()
				hmsEnd()

				hmsJoint(RM_SURF, NULL, -34, -9, -40)							/* chn17		*/
				hmsBegin()
					hmsJoint(RM_SURF, RCP_luigi_near8, 0, 0, 0)					/* m_rlegA1_2	*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_near7, 98, 0, 0)				/* m_rlegB1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_near6, 81, 0, 0)			/* m_rfoot1_2	*/
						hmsEnd()
					hmsEnd()
				hmsEnd()

			hmsEnd()
		hmsEnd()
	hmsReturn()
};

static Hierarchy RCP_MidLuigiHierarchy[] = {
		hmsJoint(RM_SURF, NULL, 0, 261-189, 0)									/* chn14_2_1	*/
		hmsBegin()
			hmsJoint(RM_SURF, RCP_luigi_mid14, 0, 0, 0)							/* m_waist1_3_2	*/
			hmsBegin()
 				hmsJoint(RM_SURF, RCP_luigi_mid_body, 33, 0, 0)						/* m_body1_2	*/
				hmsBegin()

					hmsJoint(RM_SURF, NULL, 91, 0, 0)							/* m_head2		*/
					hmsBegin()
						hmsCProg(1, CtrlMarioHead)
 						hmsRotate(0, 0, 0)								/* for control by program	*/
						hmsBegin()
							hmsSelect(1, CtrlMarioEye)					/* for the eye animation	*/
							hmsBegin()
								hmsGfx(RM_SURF, RCP_luigi_head1)
								hmsGfx(RM_SURF, RCP_luigi_head2)
								hmsGfx(RM_SURF, RCP_luigi_head3)
								hmsGfx(RM_SURF, RCP_luigi_head4)
								hmsGfx(RM_SURF, RCP_luigi_head5)
 							hmsEnd()
						hmsEnd()
					hmsEnd()

 					hmsJoint(RM_SURF, NULL, 63, -10, 65)							/* chn6			*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_mid2, 0, 0, 0)				/* m_larmA1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_mid1, 63, 0, 0)			/* m_larmB1_2	*/
							hmsBegin()
								hmsSelect(1, CtrlMarioHand)
								hmsBegin()
									hmsJoint(RM_SURF, RCP_luigi_mid0 , 71, 0, 0)		/* m_lhamd1_2	*/
									hmsJoint(RM_SURF, RCP_swim_hand_l, 71, 0, 0)
								hmsEnd()
							hmsEnd()
						hmsEnd()
					hmsEnd()

					hmsJoint(RM_SURF, NULL, 60, -10, -63)						/* chn10		*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_mid5, 0, 0, 0)				/* m_rarmA1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_mid4, 62, 0, 0)			/* m_rarmB1_2	*/
							hmsBegin()
								hmsSelect(1, CtrlMarioHand)
								hmsBegin()
									hmsJoint(RM_SURF, RCP_luigi_mid3 , 66, 0, 0)		/* m_rhand1_2	*/
									hmsBegin()
										hmsSucker(0,0,0, 1,CtrlMarioTaking)
									hmsEnd()
									hmsJoint(RM_SURF, RCP_swim_hand_r, 66, 0, 0)
									hmsBegin()
										hmsSucker(0,0,0, 1,CtrlMarioTaking)
									hmsEnd()
								hmsEnd()
							hmsEnd()
						hmsEnd()
					hmsEnd()

				hmsEnd()

				hmsJoint(RM_SURF, NULL, -34, -9, 39)								/* chn15		*/
				hmsBegin()
					hmsJoint(RM_SURF, RCP_luigi_mid11, 0, 0, 0)					/* m_llegA1_2	*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_mid10, 98, 0, 0)				/* m_llegB1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_mid9, 81, 0, 0)			/* m_lfoot1_2	*/
						hmsEnd()
					hmsEnd()
				hmsEnd()

				hmsJoint(RM_SURF, NULL, -34, -9, -40)							/* chn17		*/
				hmsBegin()
					hmsJoint(RM_SURF, RCP_luigi_mid8, 0, 0, 0)					/* m_rlegA1_2	*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_mid7, 98, 0, 0)				/* m_rlegB1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_mid6, 81, 0, 0)			/* m_rfoot1_2	*/
						hmsEnd()
					hmsEnd()
				hmsEnd()

			hmsEnd()
		hmsEnd()
	hmsReturn()
};

static Hierarchy RCP_FarLuigiHierarchy[] = {
		hmsJoint(RM_SURF, NULL, 0, 261-189, 0)									/* chn14_2_1	*/
		hmsBegin()
			hmsJoint(RM_SURF, RCP_luigi_far14, 0, 0, 0)							/* m_waist1_3_2	*/
			hmsBegin()
				hmsJoint(RM_SURF, RCP_luigi_far13, 33, 0, 0)						/* m_body1_2	*/
				hmsBegin()

					hmsJoint(RM_SURF, NULL, 91, 0, 0)							/* m_head2		*/
					hmsBegin()
						hmsCProg(1, CtrlMarioHead)
						hmsRotate(0, 0, 0)								/* for control by program	*/
						hmsBegin()
							hmsGfx(RM_SURF, RCP_luigi_far12)
						hmsEnd()
					hmsEnd()

					hmsJoint(RM_SURF, NULL, 63, -10, 65)							/* chn6			*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_far2, 0, 0, 0)				/* m_larmA1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_far1, 63, 0, 0)			/* m_larmB1_2	*/
							hmsBegin()
								hmsSelect(1, CtrlMarioHand)
								hmsBegin()
									hmsJoint(RM_SURF, RCP_luigi_far0 , 71, 0, 0)		/* m_lhamd1_2	*/
									hmsJoint(RM_SURF, RCP_swim_hand_l, 71, 0, 0)
								hmsEnd()
							hmsEnd()
						hmsEnd()
					hmsEnd()

					hmsJoint(RM_SURF, NULL, 60, -10, -63)						/* chn10		*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_far5, 0, 0, 0)				/* m_rarmA1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_far4, 62, 0, 0)			/* m_rarmB1_2	*/
							hmsBegin()
								hmsSelect(1, CtrlMarioHand)
								hmsBegin()
									hmsJoint(RM_SURF, RCP_luigi_far3 , 66, 0, 0)		/* m_rhand1_2	*/
									hmsBegin()
										hmsSucker(0,0,0, 1,CtrlMarioTaking)
									hmsEnd()
									hmsJoint(RM_SURF, RCP_swim_hand_r, 66, 0, 0)
									hmsBegin()
										hmsSucker(0,0,0, 1,CtrlMarioTaking)
									hmsEnd()
								hmsEnd()
							hmsEnd()
						hmsEnd()
					hmsEnd()

				hmsEnd()

				hmsJoint(RM_SURF, NULL, -34, -9, 39)								/* chn15		*/
				hmsBegin()
					hmsJoint(RM_SURF, RCP_luigi_far11, 0, 0, 0)					/* m_llegA1_2	*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_far10, 98, 0, 0)				/* m_llegB1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_far9, 81, 0, 0)			/* m_lfoot1_2	*/
						hmsEnd()
					hmsEnd()
				hmsEnd()

				hmsJoint(RM_SURF, NULL, -34, -9, -40)							/* chn17		*/
				hmsBegin()
					hmsJoint(RM_SURF, RCP_luigi_far8, 0, 0, 0)					/* m_rlegA1_2	*/
					hmsBegin()
						hmsJoint(RM_SURF, RCP_luigi_far7, 98, 0, 0)				/* m_rlegB1_2	*/
						hmsBegin()
							hmsJoint(RM_SURF, RCP_luigi_far6, 81, 0, 0)			/* m_rfoot1_2	*/
						hmsEnd()
					hmsEnd()
				hmsEnd()

			hmsEnd()
		hmsEnd()
	hmsReturn()
};

Hierarchy RCP_LuigiHierarchy[] = {
 	hmsShadow(100, 180, 99)
	hmsBegin()
		hmsScale(0.25f)
		hmsBegin()
			hmsSelect(1, CtrlMarioLOD)
			hmsBegin()
				hmsCall(RCP_NearLuigiHierarchy)
				hmsGroup()
				hmsBegin()
					hmsLOD(-2048,600)
					hmsBegin()
						hmsCall(RCP_NearLuigiHierarchy)
					hmsEnd()

					hmsLOD(600,1600)
					hmsBegin()
						hmsCall(RCP_MidLuigiHierarchy)
					hmsEnd()

					hmsLOD(1600,32767)
					hmsBegin()
						hmsCall(RCP_FarLuigiHierarchy)
					hmsEnd()
				hmsEnd()
			hmsEnd()
		hmsEnd()
	hmsEnd()
	hmsExit()
};

Hierarchy RCP_TitleLuigi[] = {
	hmsScale(0.25f)
	hmsBegin()
		hmsCall(RCP_TitleLuigiHierarchy)
	hmsEnd()
	hmsExit()
};


Luigi_Near_Poly

Hmmm...
To do:
Apply Luigi's textures onto Luigi_Near_Poly.

Another Luigi model, this is located in sm64\shape\Player\Luigi. He has a darker skin tone, doesn't have any textures, and his mustache is vertex painted onto the model (same with the buttons on his overalls). The model seems to be based on the Mario model used for the peace sign animation used in the 1995 B-Roll footage.

SM64 Luigi Near Poly.png
SM64 Luigi near poly in game.png

RCP_TitleLuigiHierarchy

RCP TitleLuigiHierarchy.png

Nothing really special, just a different Hierarchy for Luigi that makes him look bigger.

Mario_Old

Mario_old is an early version of Mario found in sm64/shape/Player/Mario_Old. This model can be seen in early builds of Super Mario 64, like the Shoshinkai '95 demo. The biggest difference found in this model is the lower poly head and hair. Based on the timeframe and the file date of December 7th, 1995 (Final: December 16th, 1995), it was likely created as a backup before cap variants and capless variants were added to the model. Here are a few notes with the model: The nose is hexagonal, the ears are smaller, the sideburn and mustache UV is messed up (one sideburn is smaller than the other), the cap brim is shortened and back hair has 2 colors. There is also a lighting setting meant for for this model (as well as Luigi's)

Mario_Old (Early Lighting) Mario_Old Final (With hat) Final (Hatless)
SM64-MarioOldEarlyLightingFront.png
SM64-MarioOldFront.png
SM64-MarioFront.png
SM64-MarioHatlessFront.png
SM64-MarioOldEarlyLightingBack.png
SM64-MarioOldBack.png
SM64-MarioBack.png
SM64-MarioHatlessBack.png

(Images: NeoGio64)

Sideburn
SM64 Mario old sideburn texture.png

Motos/Motosman

SM64 motos.png

There is an unused enemy internally referred to as モトス (Japanese name), motos and motosman in sm64\shape\EnemyTest\old\motos.sou. The Behavior file was last updated on October 17th, 1995. Some behavior names and an object shape's name, identify it as motosman, which is the most likely internal name. Objects that carry Mario appear to have descended from this enemy due to the grab function and object type being labeled as "MotosProc1" and "OBJNAME_MOTOS" respectively. The general structure and idea of this enemy involved into another scrapped enemy "katsugikun" It might also be related to Chuckya due to having similar names in the code, Chuckya (carryboy), Motos (motosman).

Body (p1) Body (p2) Face Arm/Leg Skin A Skin B Skin C Skin D
SM64-InternalMaterial-Motos body1 txt.png
SM64-InternalMaterial-Motos body2 txt.png
SM64-InternalMaterial-Motos eye txt.png
SM64-InternalMaterial-Motos parts txt.png
SM64-InternalMaterial-Motos skinA txt.png
SM64-InternalMaterial-Motos skinB txt.png
SM64-InternalMaterial-Motos skinC txt.png
SM64-InternalMaterial-Motos skinD txt.png

Behavior Code

#define ANM_motos_basedata_A    	0
#define ANM_motos_carry         	1
#define ANM_motos_carry_run     	2
#define ANM_motos_carry_start   	3
#define ANM_motos_down_recover  	4
#define ANM_motos_down_stop     	5
#define ANM_motos_pitch         	6
#define ANM_motos_safe_down     	7
#define ANM_motos_wait          	8
#define ANM_motos_walk          	9

#define ANM_motos_end          	ANM_motos_walk+1

e_motos:
	p_initialize(enemyA)
	p_setbit(flag,stf_moveON | stf_YangleSAME | stf_catchON | stf_playerdistON | stf_playerangleON )
	p_set_pointer(skelanime,motos_anime)
	p_setd(objname,OBJNAME_TAKE)
	p_sethitbox(100,100)
	p_setmovedata(30,-400,-50,1000,1000,200,0,0)
	p_makeobj_child(S_NULL,e_motos_hand)
	p_hitON
	p_while
		p_program(s_motos)
	p_loop

e_motos_hand:
	p_initialize(enemyA)
	p_setbit(flag,stf_moveON | stf_YangleSAME )
	p_softspritemodeON
	p_while
		p_program(s_motos_hand)
	p_loop

#define		motos_work	(execstp->s[stw_work0].d)

extern unsigned long MotosProc1(int code,MapNode *node, void *data)
{

	if (code == MAP_CBACK_EXEC) {

		AffineMtx	 modelmtx;	
	  	StrategyRecord	*stp = (StrategyRecord *)hmsActiveShape;

		if ( stp->childobj != NULL ){
			s_calc_skeleton_glbmtx(&modelmtx,(AffineMtx *)data,hmsActiveCamera->matrix);
			s_calc_skeleton_glbpos(modelmtx,stp->childobj);
			s_copy_worldXYZmappos(stp->childobj);
		}

	}

	return(0);

}

extern void s_motos_hand(void)
{

	StrategyRecord *firep;

	execstp->s[stw_skeletonX].f = 100;
	execstp->s[stw_skeletonY].f = 0;
	execstp->s[stw_skeletonZ].f = 150;

	obj_angleY = execstp->motherobj->s[stw_angleY].d;

	switch (execstp->motherobj->s[stw_imm].d ){
	 	case	0:
			break;
		case	1:
			s_copy_mapwork(player1stp,execstp);
			break;
		case	2:
			player1stp->s[stw_mail].d |= PLAYERMAIL_CARRYMODE_OFF;
			playerWorks[0].velocity = 50;
			execstp->motherobj->s[stw_imm].d = 0;
			break;
	}


#if 0
	if (execstp->motherobj->s[stw_imm].d != 0){
		execstp->motherobj->s[stw_imm].d = 0;
	 	firep = s_makeobj_nowpos(execstp,S_green_kame,e_enemyfire);
		firep->s[stw_speedF].f = 40;
		firep->s[stw_speedY].f = 20;
		firep->s[stw_angleY].d = execstp->motherobj->s[stw_angleY].d;
	}
#endif

}

static int s_ai_pitch(short angle,float dist)
{

	if ( (s_chase_angleY(obj_targetangle,angle)) && (obj_playerdist < dist) ) return(1);
	else																	  
return(0);

}

static void motos_wait(void)
{ 
	obj_speedF = 0;
	obj_speedY = 0;
	s_set_skelanimeNo(ANM_motos_wait);

	if ( obj_playerdist < 500 )	obj_mode = mode_motos_player_search;

}

static void motos_player_search(void)
{

	s_set_skelanimeNo(ANM_motos_walk);

	obj_speedF = 2;
	s_chase_angleY(obj_targetangle,300);

	if ( execstp->s[stw_mail].d & EMAIL_CARRYMODE_ON ){
		obj_mode = mode_motos_player_carry;
	 	execstp->s[stw_imm].d = 1;
	}

}

static void motos_player_carry(void)
{

	s_set_skelanimeNo(ANM_motos_carry_start);
	if ( s_check_animeend() )	obj_mode = mode_motos_player_pitch;

}

static void motos_player_pitch(void)
{

	obj_speedF = 0;
	s_set_skelanimeNo(ANM_motos_pitch);
	if ( s_check_animenumber(14) ){
		execstp->s[stw_imm].d = 2;		/* nageru shyn kan	*/
		execstp->hit_counter = 10;		/* hit time wait!!	*/
	}
	if ( s_check_animeend() ){
		obj_mode = mode_motos_wait;
		Mbitclr(execstp->s[stw_mail].d,EMAIL_CARRYMODE_ON);
	}

}

static void motos_carry_start(void)
{ 
	s_set_skelanimeNo(ANM_motos_carry_start);
	if ( s_check_animeend() ){
		if ( s_ai_pitch(0x200,500) ) obj_mode = mode_motos_pitch;
		else			   			 obj_mode = mode_motos_carry_run;
	}		

}

static void motos_carry_run(void)
{

	obj_speedF = 5;

	s_set_skelanimeNo(ANM_motos_carry_run);
	if ( s_ai_pitch(0x200,500) ) obj_mode = mode_motos_pitch;
	else			   			 obj_mode = mode_motos_carry_run;

}

static void motos_pitch(void)
{ 
	obj_speedF = 0;
	s_set_skelanimeNo(ANM_motos_pitch);

	if ( s_check_animenumber(14) ){
		execstp->s[stw_imm].d = 0;
	}
	if ( s_check_animeend() )	obj_mode = mode_motos_wait;

}

static void motos_fly(void)
{

	s_set_skelanimeNo(ANM_motos_walk);
	
	if ( obj_movestatus & MOVESTAT_BGTOUCH ) obj_mode = mode_motos_wait;

}

static void motos_main(void)
{

	s_enemybgcheck();						/*  monky bgcheck 	*/

	switch (obj_mode){
		case		mode_motos_wait:		motos_wait();		break;
		case		mode_motos_player_search:		motos_player_search();		break;
		case		mode_motos_player_carry:		motos_player_carry();		break;
		case		mode_motos_player_pitch:		motos_player_pitch();		break;
		case		mode_motos_carry_start:		motos_carry_start();		break;
		case		mode_motos_carry_run:		motos_carry_run();		break;
		case		mode_motos_pitch:		motos_pitch();		break;
		case		mode_motos_fly:		motos_fly();		break;
	default: rmonpf(("Error objmode motos\n")); }

	s_enemymove(-78);							/*	monky moving 	*/

}

extern void s_motos(void)
{
	float	f,y;
	f = 5;
	y = 0;

	s_set_scale(2.0);

	Mbitset(execstp->s[stw_enemyinfo].d,ENEMYINFO_CARRY);

	switch(execstp->s[stw_actionmode].d){
		case	CHILEDMODE_NO_CATCH:	motos_main();									break;
		case	CHILEDMODE_CATCH:		s_mode_catch(ANM_motos_walk,mode_motos_wait);	break;
		case	CHILEDMODE_THROW:		s_mode_throw(f,y,mode_motos_fly);				break;
	 //	case	CHILEDMODE_DROP:		s_mode_drop();									break;
		case	CHILEDMODE_DROP:		s_mode_throw(f,y,mode_motos_fly);				break;
	}
	s_erase_shape(obj_playerdist,2000);
 
}

Behavior Code

e_motos:
e_motosman:
	p_initialize(option)
	p_killshape

Early MIPS

Directory: "sm64\shape\keep\OLD\etc\rabbit.sou"

rabbit.sou Final
SM64 Old Mips.png SM64 MIPS Model.png

An early version of MIPS, labeled in the files as rabbit.sou. The most notable feature of this early model is that it was originally pink rather than the yellow seen in the final game. Interestingly, it has slightly different skeleton setup, as playing the final anims on the early model looks weird. Pink rabbits were later used in the DS remake.


(Source: Alieneer/DerpDerp from "The Preservation Project" Discord server)

mario_title

Directory: "sm64\sm_logo\multigen\newmario\ninten\objects\mario_title\"

An older rendition of the title screen seen during E3 1996.

SM64-Mario Title.png

Killer

Hmmm...
To do:
Re-do the screenshot because this one is in the wrong resolution.

Directory: "sm64/shape/keep/OLD/etc/killer.sou"

Killer.sou was seen in the B-roll footage. This model is mostly the same as the final game, with the only exception being that it lacks a shadow.

default

Walker

Directories: "sm64\shape\EnemyTest\walker.shape" & "sm64\shape\EnemyTest\old\walker.sou"

walker.sou is the Scuttlebug from the Spring 1996 build seen in E3 footage. Like the footage it has strangely colored eyes, due to the fact it calls for an invalid vertex color.

walker.sou Final
default SM64FinalScuttlebug.png

Wallman

Directory: "sm64\shape\EnemyTest\old\wallman.sou"

wallman.shape Final
SM64 Whomp Proto.png SM64FinalWhomp.png


wallman.sou is the early version of the Whomp seen in the Shoshinkai '95 demo. This version of Whomp is internally referred to as wallman, while the final Whomp is called ichiro.

Ichiro

Directory: "sm64\shape\enemy2_e\wallman\"

ichiro.sou is a very early version of the the final Whomp model.

SM64 Ichiro walk.c.png

Dosun

Directory: "sm64\shape\EnemyTest\old\dosun.sou"

dosun.sou is the early version of the Thwomp seen in the Shoshinkai '95 demo and 96 B-Roll.

dosun.sou Final
Urngh! Urngh!

Early Name

Directory: "sm64\map\title\shapes\"

SM64 ULTRA MARIO.png

Sm64Earlyname.png

sm64\map\title\shapes\ contains models related to an older design for the title screen. These models were later reused for the debug level select screen, however ULTRA is not referenced at all in the final level select screen.

Otos

Directory: "sm64\shape\keep\OLD\etc\otos.sou"

SM64 Old Otos In Game.png

otos.sou is an early version of the Bully model, with 1 horn instead of 2, making it look almost identical to Chill Bully. It has a different knockback animation compared to the Chill Bully, and the final model.

Yoshi

Directory: "sm64\shape\EnemyTest\old\yoshi.sou"

yoshi.sou Final
SM64-Yoshi.sou.png SM64 Yoshi Model.png

yoshi.sou is an early version of the Yoshi model. It has a few animations, but they are broken.

omurobo

Directory: "sm64\map\Stage32\omurobo.shape"

omurobo.shape Final
SM64-Omurobu.sou.png SM64 Final Heave-Ho.png

omurobo.shape is a textureless early version of Heave-Ho. It has a flag on its back instead of a wind-up key and is a slightly different shape compared to the final model. The filename for this early version is a portmanteau of "omurice" (a type of Japanese omelet) and "robot," playing off of its appearance.

carry_boy

Directory: "sm64\shape\basic_enemy\carryboy\carry_boy.sou"

carry_boy.sou Final
SM64-Carry boy.sou.png
SM64 Final Chuckya.png

Carry_boy.sou is an unused version of Chuckya. Like Heave-Ho, it is textureless and has a yellow body, but its body and hands are also rendered with polygons instead of billboards. The sphere on its head is purple instead of red. (Hey, that rhymed!)

Peach

Directory: "sm64\shape\EnemyTest\old\peach.sou"

SM64 Peach's Legs.png
peach.sou Final
SM64 Early Peach Model.png SM64 Peach Model.png

peach.sou is a textureless early model of Peach. Unlike in the final game, she has legs as well as a visible red belt around her waist. This oddity exists in the DS remake.

Nokonoko

Directory: "sm64\shape\EnemyTest\old\nokonoko.sou"

nokonoko.sou Final
SM64-Nokonoko.sou.png SM64 Koopa Model.png

nokonoko.sou is an early version of the Koopa Troopa model. Dated June 16, 1995. The biggest difference is the shell. The shell, shoes and head can be found in the final game's data.

Dokan

Directory: "sm64\shape\keep\OLD\unused\dokan.sou"

SM64 Dokan.png

dokan.sou is an early version of the pipe that Mario comes out at the beginning of the game. This shape is referenced in a outdated model list file dated May 11 1995, making this a very old leftover.

Ping

Directory: "sm64\shape\keep\OLD\etc\ping.sou"

tleft

ping.sou is an early version of the penguin that can be seen in this Shoshinkai 95 footage

This penguin is very different from its final version. Both its head and body have different shape. A similar-looking head can be found in the final version.

Hopper

Hmmm...
To do:
Upload the animations.

Directory: "sm64\shape\EnemyTest\old\hopper.sou"

hopper.sou seems to be a grasshopper enemy, not much is known about Hopper but it does have one animation and an empty path file associated with it.

Unused Lighting Transparent in-game model
SM64-InternalMaterial-HopperModel.png

SM64 hopper.png

Mario Cut-out

tleft tcenter

Seems to be a Mario head cut-out, either a 3D version of the power meter or based off the Mario head silhouette seen in the game.

Directory: "sm64/map/title/shapes/title_face.sou"

NOTE: this uses an early version of the GBI of the N64, but it's much easier to convert to a usable format.

NOTE: normals are messed up in this model

Autodoor

Directory: "sm64/shape/EnemyTest/old/autodoor.sou"

The model appears to be a cuboid with a cyan face, and the rest are red. Also contains a duplicated coin texture, used in a commented out display list (using #if 0's). Based on its appearance and name it's likely an early version of the star doors. The default model:

SM64-InternalMaterial-Autodoor.sou default model.png

The commented out display list:

SM64-InternalMaterial-Autodoor.sou textured model.png

Chair

Directory: "sm64\shape\EnemyTest\old\chair.sou"

A vertex colored version of the chair seen in Big Boo's Haunt.

SM64-InternalMaterial-Chair sou imported.png

Animed

Directory: "sm64\shape\enemy2_e\goal_flag\animed.sou"

animed.sou is an early version of the goal flag from the Koopa the Quick races.

Animed.sou.png

Hana

Hmmm...
To do:
  • Get pictures of the model.
  • Compare with final model.

Directory: "sm64\shape\EnemyTest\old\hana.sou"

This is an early version of the Wiggler, found in Tiny Huge Island. It has one animation, being the walk animation. It also has 3D body parts, while the final Wiggler has 2D body parts.

Test Lift

Directory: "sm64\shape\keep\OLD\etc\testlift.sou"

A yellow test platform that was created to test out how elevators would work, has an unused path file associated with it. Strangely a smaller .shape version of this model is leftover in the final game unused.

SM64-Testlift-InGame.png

Vanime

Directory: "sm64\shape\keep\OLD\unused\vanime.sou"

This is a very large red square with currently unknown purposes.

SM64-Vanime-InGame.png

mariotitle_cube

Directory: "sm64\map\title\shapes\mariotitle_cube.sou"

It's just a big square, probably a test model for the title screen.

Mariotitle cube.sou.png

And the colors change when you are far away.

Far away.png

Areamap remnants

Areamap.h

sm64\include\Areamap.h is the header file of Areamap.c.

Areamap's display list

sm64\data\tanidata.c has Areamap's display list, but with no textures, the files contains Areamap's arrow and the original Areamap textures' sizes (64x32 each texture).

Actor Placements

Snowman's Land - Cracked Ice

SM64 Internal CrackedIce.png

The mystery of the unused cracked ice texture that has long been at the center of speculation has now been solvedǃ In sm64/maps/stage10/Sstage10.s, a commented-out actor reveals that it belongs to the ice maze in Snowman's Land. Mario can do a ground pound to break right through to get his prize!

The line specifying the actor placementː

seqActor(S_movebg02,  4377,1843,4361,  0,0,0,  0,0,0,  e_ice)

Levels

Stage1

SM64 Unused Castle.png

SM64-Stage1.png
SM64-Stage1-Prerelease.png

sm64\map\stage1\castle\castle_shape.sou was a scrapped stage briefly seen in a Japanese Nintendo 64 promotional video from 1995. If the map and its object data are loaded into the retail build of the game, a textureless water plane is put in the channels on the bottom of the level, which is caused by the level utilizing an outdated version of the water system. There's a clone of the level in the stage99 folder which seemed to have been used as a test level (which originally was stage37, but it got replaced with another test level) where single coins are placed sporadically around, with a Power Star also spawning on the top blue platform, just outside of Mario's reach (Though this may be due to physics differences in the final build compared to the demo).

Stage2

SM64-Stage2 1.png
SM64-Stage2 2.png

Stage2 is what appears to be a terrain/movement testing level found in sm64/map/stage2/test/test_shape.sou. According to the graphics files, this stage is called "athletic." There are slopes of varying degrees placed about, different colored floors corresponding to different terrain types, and a spot with no floor possibly used for testing the effects of exposed ceilings or perhaps intended for a cannon. The graphical stage does not completely match its collision, as a few areas contain invisible floors. No objects are present in the course or its files. The surrounding area off the side of the stage is made up of lava.

Stage3

SM64-Stage3 1.png
SM64-Stage3 2.png

Stage3 appears to be some kind of dungeon or hub level found in sm64/map/stage3/donjon/donjon_shape.sou, referred to internally as "donjon," which means a great tower or castle. The stage consists of several different rooms and hallways with seemingly random textures placed on the walls, floors and ceilings. The general size of the level seems to be larger than areas in the final game with large slopes and high ceilings. No objects are present in the course or its files.

Stage32

Stage32 has several different models and data files associated with it, suggesting that its contents would be swapped out for testing various things. This is further supported by checks within the game by a few objects to behave differently if the current level is stage32. stage.dat contains object placement data for various switches, item boxes, pushable blocks, and enemies that Mario is able to grab such as Chuckya, the Monkey, and the unused Motos. The placement of many item boxes in a row makes it somewhat similar to a test level found in the DS version. Based on the numbering of the test map files, there were as many as ten test maps that would have been used in this level slot.

Stage32 - testmap1 v1

Features a plane with a block Mario can push.

SM64-Stage32.png

Stage32 - testmap2

The map located in sm64/map/stage32/stageyj/testmap2 features a raised checkerboard platform.

SM64 Internal testmap2.png

Stage32 - testmap10

Mario stands in the midst of a flat checkerboard plane in sm64/map/stage32/stageyj/testmap10.

SM64 Internal testmap10.png

Stage35

The stage consists of a flat ground with a green and white checkerboard pattern. This stage seems to have been made to test movement and not much else, due to the simplistic design.

SM64-Stage35.png

Stage37

Stage37 as seen in shape\EnemyTest\old\plane.flk (?)

SM64-plane-In-Game.png

Stage37 as seen in the map/stage37/stage37.flk file

SM64-Stage37.png

shape\EnemyTest\old\plane.sou is a plane that was used to test physics and enemies. There are two collision models for this, one in stage37/stage37.flk (the latter image), and one in shape\EnemyTest\old\plane.flk (the former image), which means that it used to inhabit stage37 as a test level. The model is dated sometime before January 18th, 1996 as stage37 was removed that day. (The latter image is a reconstruction, as there are no display lists present for it)

Stage37 is called "IWtest" in the source code.

Stage38

SM64-Stage38 1.png
SM64-Stage38 2.png

The stage consists of an octagon-shaped area with sand in various areas found in sm64/map/stage38/sand.sou, a hangable ceiling and a mirror for Mario's reflection. In addition, the object script for the stage has two coins with the warp behavior that teleport Mario to each other placed in the stage.

Stage99

A copy of Stage1 with a star on top of the stage, where Mario can't reach it.

Sprites

title_arrow.sou

"1P" and "2P" icons were discovered within the leaked source code in sm64\map\title\shapes\title_arrow.sou, tying in with developer comments in interviews that Luigi was intended to appear in a scrapped multiplayer mode. Of note is that these icons use the same orange-yellow gradient font seen in the Shoshinkai 1995 demo, rather than the more elaborate custom font seen in the final game, implying that multiplayer mode and Luigi were both taken out at around this time.

star.sou

An early version of the Power Star can be found in in sm64\shape\keep\OLD\etc\star.sou, with a unique collecting animation. It appears to be the same depiction seen in the Shoshinkai 1995 demo, later repurposed and recolored as a cosmetic element on the final game's title screen.

dotstar.sou

The dotted outline of a Power Star, likely an early version of the translucent blue star used to denote both incomplete missions on the mission select screen and already-collected Power Stars.

SM64 dotstar txt.png

m_start1.h

Hmmm...
To do:
Rip m_start2.h.

Another early version of the Power Star, taking on a more flat appearance.

The m_start2.h file contains a similar looking star to m_start1.h, however it appears to be an antialiased render (no sharp edges). Importing it in game leads to white borders appearing, as the image is RGBA5551 (only 1 bit is reserved for alpha).

SM64 m star 1.gif

M star2 in game.png

coin.sou

An early version of the coin found in sm64\shape\keep\OLD\etc\coin.sou, as seen in the Shoshinkai 1995 demo.

Sm64 early coin.gif

tree.sou

Several unused trees are present in sm64\shape\keep\OLD\etc\tree.sou and shape\keep\OLD\unused\sugitree.sou and \shape\keep\OLD\unused\B_tree.sou. Similar looking trees were later used in Mario Kart 64. main_tree1_txt and main_tree2_txt is the same tree that is used in pre-release footage such as the Shoshinkai '95 Demo.

sugitree.sou

SM64 sugi 2 txt.png

Another unique tree found in sm64\shape\keep\OLD\etc\sugitree.sou.

flag.sou

SM64 flag txt.png

shape\keep\OLD\unused\flag.sou is a flag graphic. It seems to resemble the castle's flags from the Shoshinkai 1995 demo by its coloring scheme. The available footage is too blurry to make a verdict, but a similar-looking flag can also be found in an image from the 1995 patent build (the similarity becomes more clear by converting this texture to black and white), so this texture is an old version of the castle's flags. Interestingly, this build's flags appear to have something drawn on them, over the stripes.

Image Close-up
SM64-patentcastle2.png SM64-patentcastle2-Flag.png

bombfire.shape

SM64 bomb1 txt.gif

sm64\shape\keep\bombfire.sou contains an unused explosion effect.

fireA.shape

SM64 f gun.gif

shape\keep\OLD\etc\fireA.sou was intended for a flamethrower-type hazard (be it the wall flamethrowers seen in some levels, Bowser's fire breath, or some other object/enemy).

tanidata.h

SM64 Internal SkullTransition.png
SM64 wipe docro txt.png

Among the graphics in data\Basic\tanidata.h is an unused skull wipe transition, likely an early version of the iris-out seen upon losing a life (which in the final version and all publicly shown early builds uses a silhouette of Bowser's face).

Early Final
SM64 wipe kopa-1.txt.png
SM64 wipe kopa.txt.png

An early version of the Bowser death transition, slightly larger and detailed. This version of the transition can be seen on the Spaceworld '95 demo

sac_A_txt - sac_D_txt

This appears to be an early version of the credits scroll text, dated January 18, 1996. The credits letters are called `sag_A_txt` to `sag_Z_txt`. Path: `/map/select/selectShape/font88col_txt.h`

SM64-InternalMaterial-Sac A-D txt.png

Textures

polygon_star.shape

Old polygon star.png

Sm64 early 3d star texture.png

shape\keep\OLD\etc\polygon_star.shape contains an early texture for the 3D Power Star that is longer than the final.

door.sou

SM64 rn 1 txt.pngSM64 rn 2 txt.pngSM64 rn 3 txt.pngSM64 rn 4 txt.png

In sm64\shape\keep\OLD\etc\door.sou are numbers 1-4. As the name suggests, these textures were intended for doors, possibly for the ones that need stars to be opened, also because the number 2 can be clearly seen in the Shoshinkai 1995 demo on a door in the castle. Weirdly, the number 3 is listed first, however, that is to be expected, as door #3 is at the far left end of the old Inside Castle map (which used to lead to CCM). The doors are listed from left to right, the door with the number 3 is at the far left, door 1 is at the left, door 2 is at the right and door 4 is at the far right (where DDD would be). The numbers on the doors mark the level number that would appear on the stage select (so level 2 is LLL)

wallman.sou

Part Texture
Face SM64 early thwomp front.png
Back Sm64 early thwomp back.png
Side Sm64 early thwomp side.png
Hand Sm64 early thwomp hand.png

shape\keep\OLD\etc\wallman.sou is an early version of the Whomp, as seen in the Shoshinkai 1995 demo. This version of Whomp is internally referred to as wallman, while the final Whomp is called ichiro.

dosun.sou

Part Texture
Front Sm64 early whomp face.png
Side Sm64 early whomp side.png
Top Sm64 early whomp top.png

shape\keep\OLD\etc\dosun.sou is an early version of the Thwomp, as seen in the Shoshinkai 1995 demo.

teresa.sou

Part Texture
Eyes Sm64 early boo eyes.png
Mouth
Sm64 early boo mouth.png

shape\keep\OLD\etc\teresa.sou is an early version of the Boo, as seen in all publicly shown pre-release builds of the game.

shark.sou

Part Texture
Eye Sm64 early sushi eye.png
Skin SM64 early sushi skin.png
Tooth Sm64 early sushi tooth.png

shape\keep\OLD\etc\shark.sou is an early version of Sushi, as seen in the Shoshinkai 1995 demo.

ping.sou

Part Texture
Beak Sm64 early penguin beak.png
Eyes Sm64 early penguin eyes.png

shape\keep\OLD\etc\ping.sou is an early version of the penguins, as seen in the Shoshinkai 1995 demo.

hagetaka_texture.h

Early Final
SM64 omeme2 txt.png SM64 klepto eye.png

An early version of Klepto's eye with smaller pupils can be found in sm64\shape\EnemyTest\hagetaka\hagetaka_texture.h.

ana.sou

There is a file called ana.sou that is located in shape/keep/OLD/unused. The model is a rectangle that would have the textures applied to it. One of the textures seems to be the checkerboard pattern used on the castle steps in prerelease footage.

castle_texture.h

maps/stage1/castle_texture.h and maps/stage99/castle_texture.h share the same textures.

test_texture.h

Found in sm64\map\stage2\test\test_texture.h.

donjon_texture.h

Found in sm64\map\stage3\donjon\donjon_texture.h. Many of these can be seen in Whomp's Fortress in the Shoshinkai 1995 demo. goldtile_txt seems to say "Ultra Mario Bros.".

SM64 Leftovers in Mario Kart 64 Leaked data

Unused Lighting

Unused lighting applied to Mario's model.

In depot/mk64/kimura.lzh/include/system.h in the MK64 directory from the same leak, there is an unused alternate lighting for Mario/Luigi. It works differently from final, it brightens the center of Mario and keeps the sides darker, making it appear as though there's a light source directly on Mario's face. This is likely the lighting used in an animation in the 1995 Nintendo 64 B-roll, which can be seen in this video. There is also early dropshadow rendering code in shade.c. This is the only bit of code that is confirmed to be meant for Super Mario 64.

//#define  LIGHT_X             0
//#define  LIGHT_Y             0
//#define  LIGHT_Z             127

Unused Font

Ripped MK64 font.png

In depot/mk64/kimura.lzh/sprite.c there is an unused font, dated February 20, 1996. It looks similar to the Shoshinkai '95 font, having outlined letters with a gradient inside, while Shoshinkai has a single color for the font, this has 4 colors, being green, blue, red and yellow, the font used is also different from the Shoshinkai font. However, this may not have been meant for Super Mario 64 and instead meant for Mario Kart 64.

Debug Content

DEVELOP Build Map Select

SM64 Internal DevelopBuildMapSelect.png

The develop build can be created by specifying it in sm64/include/project.h. When applied, a map select appears at the game's launch with two debug parameters called CODE and ULIB that don't exist in any debugging features in the final game.

English Shindou Version

In the directory release/pvt_20031022/eng of the depot folder, which contains the full leak, the file sm.rom is a ROM image of the 1997 Shindou Pak Taiou version with English text. It doesn't seem to be a re-translation of the game, but rather just the Japanese base version compiled with the 1996 version's English text using the LOCALE=LOCALE_US compile option. A version of Shindou with the original English text would eventually be released through Super Mario 3D All-Stars, although that would be accomplished by patching in English text during emulation rather than English text being in the ROM itself, mostly being text from the original 1996 release, along with few from the DS remake to keep consistent with the times.

Japanese version English version
こんにちは! Hello!
SM64 Japanese Shindou Intro.png SM64 English Shindou Intro.png

References