We just released a prototype of the cancelled SNES port of Puggsy! Take a look!
As always, thank you for supporting The Cutting Room Floor on Patreon!

Development:Super Mario 64 (Nintendo 64)/Models

From The Cutting Room Floor
Jump to navigation Jump to search

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

Hmmm...
To do:
  • Alot of stuff from the source code needs to be documented here, Pronto!
  • Most objects that use 2d Spheres have 3d spheres commented out.
  • Find if there is any code for the models, Except for Luigi’s model that got leaked 24 years and one month ago.

Luigi_Near_Body

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 (specifically, his eyes and overall buttons), 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. This model has a few breaks such as a broken hand, bad collision (He floats in some animations), along with the shoulders being too high.

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

…Another Luigi model, 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. This means that the low poly models of Mario had actually 2 more, But it was changed to only being one possibly because of the game’s limitations.

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

Luigi_Mid_Body

Hmmm...
To do:
I have to retrieve a few more screenshots such as blender view models, and pics of him with beta shading and maybe one with his broken pieces being fixed. I also need to check for any mistakes in the future.

A Luigi model located in sm64/shape/Player/Luigi. This model is a model intended for when Luigi is at a mid-way distance from the camera. This model uses the same kind of shading and color scheme that high poly Luigi uses. This model has several breaks such as an enlarged glove, and thigh.

SM64 Mid poly luigi final.png

Luigi_Far_Poly

Hmmm...
To do:
Try to import the model into the game.

A textureless lower-poly Luigi model, which was intended to be used when the camera is far away from him. Due to his appearance being somewhat broken, most often call him a "Low poly Mario re-color" however, when the model is properly fixed and reconstructed, it is discovered that the model is a little thinner than Mario, with the only re-use of low poly Mario's model being his head. His bottom torso looks like it's missing due to the model clipping into the top torso. Like most of Luigis models, this model has several breaks such as the left forearm appearing to be colored red instead of green, as well as having some parts either floating or clipping into the model due to outdated display lists. Like Luigi_Near_Poly, he uses an older color palette that predates the Shoshinkai 95' build. The bottom right arm is not green and it’s actually just red.

SM64 Low Poly Luigi.png

RCP_TitleLuigiHierarchy

Hierarchy????

A different Hierarchy for Luigi that makes him look bigger. It is thought that this Hierarchy could have been used for an old version of the title screen, due to the name following the title model format. Though it is unknown what this model is actually used for.

Mario_Old

Hmmm...
To do:
The images need to be replaced, They need to not be screenshots from the game.

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 on 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 the back hair has 2 colors. There is also a lighting setting meant 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

Rabbit

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

rabbit.sou Final
SM64 Old Mips.png SM64 MIPS Model.png
Animations
SM64 PinkRabbitIdle.gif SM64 PinkRabbitRunning.gif SM64 PinkRabbitGetUp.gif SM64 PinkRabbitIdleTurning.gif SM64 PinkRabbitHolding.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 a slightly different skeleton setup, as the final animations do not play correctly on the early model. 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. It references textures that no longer exist. It is unknown what textures where used, or it might be referencing textures the wrong way because of a coding error in the model’s code.

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.

SM64-Killer.sou.png

Walker

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

walker.sou walker.sou (Fixed Vertex Color) Final
SM64 ScuttlebugOld.png SM64 ScuttlebugOld White.png SM64FinalScuttlebug.png

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 that it calls for an invalid vertex color. Three of the legs's vertexes are only visible if looking at the back of the model.

Wallman

Directory: "sm64/shape/keep/OLD/etc/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/"

SM64Internal Ichiro.png

ichiro.sou is a very early version of the final Whomp model. The model somewhat resembles Wallman, but without the textures.

Dosun

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

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

dosun.sou Final
BetaUrngh! Urngh!

Early Title Screen 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 one horn instead of two, making it look almost identical to Chill Bully. It has a different knockback animation compared to the Chill Bully and the final model. This same type of bully was seen during Shoshinkai 95' except it was the small varient.

Yoshi

Hmmm...
To do:
  • Document if there is any leftover code behavior for Yoshi.
  • If found, Paste the leftover code in here.

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

yoshi.sou (Early Yoshi Model) Final Yoshi Model
SM64-Yoshi.sou.png SM64 Yoshi Model.png
Animations
SM64 YoshiOldWalking.gif SM64 YoshiOldIdle.gif

yoshi.sou is an early version of the Yoshi model. This model is pretty much the same as the final version except that this model is textureless and has somewhat higher polygons, especially on the bottoms of the shoes. It has a few animations, being the base data, animation setup, running, and being idle.

omurobo

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

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

omurobo.shape is an early, textureless 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! Ahem…)

Bom

Hmmm...
To do:
  • Find footage of what it looks like in-game. If not, Record footage of it.

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

bom.sou bom.sou (2D body) Final
SM64 BobombOld.png SM64 BobombOld2D.png SM64-Bob Omb.png

bom.sou is an early version of the Bob-omb. It lacks eyes and can switch between using a 3D Ball, or a 2D Ball in the header. Animations are completely different, and animations for being held, and exploding exist.

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
Walking Animation Waving Animation
SM64 PeachOldWalking.gif
SM64 PeachOldWaving.gif
SM64 PeachOldWalking Feet.gif
SM64 PeachOldWaving Feet.gif

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. But the legs were scrapped cause you wouldn’t actually see it in-game and or obscured in Peach’s dress. There are only two animations available in this code, one where she walks and the other one where she is waving to something, persumably to the camera.

The similar thing with the legs also exist 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 16th, 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 an outdated model list file dated May 11th, 1995, making this one of the oldest leftovers in the source code.

Ping

Hmmm...
To do:
Add comparison image please.

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

SM64 Early Ping Model.png

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, as both its head and body have different shapes. A similar-looking head can be found in the final version.

Weirdly, this early design seems to have been used as reference for the odd-looking penguins used in Kellogg's 1996 Frosted Mini-Wheats promotion.

Hopper

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

Unused Lighting Transparent in-game model Hopping Animation
SM64-InternalMaterial-HopperModel.png SM64 hopper.png SM64 GrasshopperHopping.gif

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.

Mario Cut-out

SM64InternalMaterial Mariocutout.png SM64-Title face.sou in game.png

Seems to be a Mario head cut-out, likely meant for an early version of the title screen, due to the name and folder it's in. This uses an early version of the GBI of the N64, but it's much easier to convert to a usable format. The normals in the model are broken.

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

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

Hmmm...
To do:
  • Record footage of what it looks like in-game.

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

A vertex-painted 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. Interestingly animation source files are intact for this model.

SM64Internal-AnimedAnimation.gif

Hana

Hmmm...
To do:
  • Record footage of what it looks like in-game.

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

Unpatched Patched vertex color Walk Animation Final version Wiggler
SM64 WigglerOld.png SM64 WigglerOld White.png SM64 WigglerOldWalking.gif SM64-FINAL-WIGGLER.png

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

Vanime

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

This is a very large red square of a currently unknown purpose.

SM64-Vanime-InGame.png

mariotitle_cube

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

It's just a big square. Used as a test model for testing the title screen animation.

Mariotitle cube.sou.png

It’s colors change when viewed from a distance. Possibly for testing color change shading.

Far away.png

bom_king

Directory: "sm64/shape/enemy1_c/bom_king/bom_king.sou"

bom_king.sou bom_king.sou (Fixed vertex color) Final
SM64-Bomking.png SM64-BomKing White.png King-Bob-omb-SM64.png

bom_king.sou is an early version of the Big Bob-omb seen in Bob-omb Battlefield. At this point, he is textureless, has less animations, bigger eyes, and is rendered with polygons instead of billboards

Furafura

Directory: "sm64/shape/enemy1_g/furafura/furafura.sou"

furafura.sou Final
SM64 SpindriftOld.png SpindriftFinalSM64.png

furafura.sou is an early version of the Spindrift. Its model is identical to the final except for a 3D mouth (that is happy) being present and it being rendered with polygons instead of billboards. It also lacks eyes. Interestingly a more complete leaf and smiling mouth are hidden within the final models transparent pixels.

Bat

Directory: "sm64/shape/enemy2_h/bat/bat.sou"

bat.sou Final version Swooper
SM64 SwoopOld.png SM64-FinalSwooper.png

bat.sou is an early version of the Swooper. Its model is identical to the final except for it being rendered with polygons instead of billboards and having slightly different vertexes.

Snow_man

Directory: "sm64/shape/enemy1_g/snow_man/snow_man.sou"

Unpatched Patched vertex color Final version Mr. Blizzard
SM64 SnowmanOld.png SM64 SnowmanOld White.png SM64-MR-BLIZZARD.png

snow_man.sou is an early version of the Mr. Blizzard. His model is identical to the final except for it being rendered with polygons instead of billboards and notably having a blue mitten.

Wanwan

Directory: "sm64/shape/enemy2_e/wanwan/wanwan.sou"

Unpatched Patched vertex color Final Version Chain Chomp
SM64 ChainChompOld.png SM64 ChainChompOld White.png SM64-Chain-Chomp.png

wanwan.sou is an early version of the Chain Chomp seen in Bob-omb Battlefield. Its model is identical to the final, Except for it being rendered with polygons instead of billboards. It also has vertex eyes that not only are just orange squares with black lighting, but also are closer to the body.

Shark

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

shark.sou Final
SM64-SushiOld.png SM64-SushiFinal.png

shark.sou is an early version of Sushi as seen in the 1995 Shoshinkai version. Its model is much darker and has white lines on its top. It also contains 7 textures instead of the final 3.