The Game was made by Nintendo EAD and was released in Europe on March 1st, 1997.
The development team consisted of 2 system programmers and 3 main programmers with additions from Giles Goddard
responsible for the Mario face at the beginning and Takumi Kawagoe
responsible for the camera programming 1.
The source code is almost completely written in C and compiled with IDO C compiler 5.3.
The community has developed some excellent tools for modding Super Mario 64, so if you just want to change assets in the game you don’t need to use the full decompilation project, just load up one of these excellent tools.
Salmence100
has a twitch account where he streams his process for creating 3D worlds in Sketchup, exporting to .OBJ
and importing into Super Mario 64 Editor
, currently he is building new levels based on Mario Party 2.
You can view his videos on his Twitch channel: Salmence100’s Videos - Twitch
A newly imported object can appear very plain without any enemies or coins to collect, so lets add some objects!
You can use the program called “Toad’s Tool” to edit the objects for the level, It’s quite a simple tool, it allows you to view each world and edit the x,y,z coordinates of each object.
Also contains basic functionality for texture editing.
One thing you will notice with your newly imported level is that it will still have the background image (skybox) of the level you replaced in the ROM. This can be easily changed to give your level a much more unique feeling to it.
Mario wouldn’t be Mario without his pipes, let’s add some that warp from one part of the level to another!
Thanks to the 2 years of hard work by the Super Mario 64 decompilation team it is now possible to experience native ports of SM64, no emulator required!
Nintendo keeps taking down videos showing the DirectX 12 port of Super Mario 64, so the best way to see it is to compile it yourself and play on your own windows PC.
You can find the source code for the PSP port here: z2442/sm64-port: A port of https://www.github.com/n64decomp/sm64 for modern devices.
You can find the source code for the Vita port here: bythos14/sm64-vita: A port of https://www.github.com/sm64-port/sm64-port for the PS Vita
You can find the source code for the Playstation 2 port here: fgsfdsfgs/sm64-port at ps2
As you can see from the video, the sound and controller input has not been implemented yet but it is definitely a cool proof of concept! You can find the source code for the Playstation 3 port here: Comparing mkst:3ds-port…fgsfdsfgs:ps3 · mkst/sm64-port
This is more of a novelty port than anything else, it is not expected to be playable but it is a very cool tech demo! You can find the source code for the DOS port here: fgsfdsfgs/sm64-port: PS2 and DOS ports of sm64-port.
You can find the source code for the Dreamcast port here: Comparing sm64-port:master…mrneo240:master · sm64-port/sm64-port
Super Mario 64 was blown wide open when a full decompilation of the source code was achieved by a team of talented individuals.
The project can be rebuilt with the correct version of the IDO C compiler through QEMU-IRIX to produce a byte-identical ROM of the retail game for both North America and Japan.
This allows anyone with basic C-knowledge to hack around and change core gameplay elements, make the game easier/harder/add new mechanics etc.
Mountainflaw has released a tutorial that covers the basics of the Decompilation project and is the best way to get started for newcomers: Introduction to Super Mario64 Decomp
The project is released on Github: GitHub - n64decomp/sm64: A Super Mario 64 decompilation, brought to you by a bunch of clever folks. and can be built on Linux and Windows but for macOS you will need to use something like docker.
git clone https://github.com/n64decomp/sm64.git
The official source code for Super Mario 64 was leaked as part of the second Gigaleak which also contained source code for many other official N64 games including Mario Kart 64, Wave Race 64 and both Zelda titles.
Gigaleak 2 Electric Boogaloo - N64 Source Code Leak
For more information about Gigaleak 2 check out this post.