This is an ongoing work-in-progress port of the decompilation of original Nintendo game, Super Mario 64, to native Javascript (no emulation or web assembly). The project involved creating a Javascript WebGL port of N64 Fast 3D Renderer, originally implemented with OpenGL in C. This project also includes the development of online mass multiplayer versions of sm64js and other custom multiplayer game modes.
- Node.js
# Clone the source code
git clone https://github.com/sm64js/sm64js.git && cd sm64js
# Install node packages
npm install
# Launch wepback dev server
npm run start
# update folder (be inside sm64js)
git pull
# Launch server
npm run start
You should now be able to access the website with the game from a web browser by typing "localhost" into the address bar.
- Windows - Install Instructions
- Mac - Install Instructions
- Linux - Install Instructions
# Create and start lightweight docker container with NodeJs
docker run --name mySm64JsServer -dp 80:80 node:13 tail -f /dev/null
# Connect to the docker container's shell
docker exec -it mySm64JsServer /bin/sh
# Install additional prerequisites
apk update && apk add git
# Clone the source code
git clone https://github.com/sm64js/sm64js.git && cd sm64js
# Install node packages, build, and serve
npm run build
npm run serve
You should now be able to access the website with the game from a web browser by typing "localhost" into the address bar.
Because of a good portion of the game existing under the gLinker object within the window object, you can manipulate these portions of code to make certain things happen.
Drain the Castle Grounds moat:
const gEnvironmentRegions = gLinker.ObjectListProcessor.gEnvironmentRegions
gEnvironmentRegions[6] = -800
gEnvironmentRegions[12] = -800
Access Mario's state:
gLinker.LevelUpdate.gMarioState.key = value
With this, you can make Mario fly, go fast, and a lot of other things.
- Team that decompiled the original Super Mario 64 ROMs into C source code
- Team that ported the decompiled project to PC
- OpenGL Implementation of a 3D renderer for the Nintendo 64's graphics (For this project, it was re-implemented in Javascript and WebGL)