This project attempts to create exact decompilations of the Snowboard Kids games released on the Nintendo 64: Snowboard Kids and its sequel, Snowboard Kids 2. For me, this is an attempt to learn more about these games, the decompilation process, and (eventually) to experiment with porting features and content between these two games.
- The goal of this decompilation project is to have (almost) all code in C as clear and concise as possible, and all assets such as textures, models, sounds and music sequences separated out into distinct files. This is in service of allowing anyone to modify either of the two games and build a fully functional N64 ROM file that includes their changes. If no changes are made to the files, the resulting ROM files shall completely match the original ROM file it was decompiled from.
- The goal of managing a decompilation of both Snowboard Kids 1 and Snowboard Kids 2 together is to help encourage communication around and consistency in the code of the two projects.
This project still is in its earliest stages and does not (yet) allow re-creating a ROM file for either of these games.
Snowboard Kids and Snowboard Kids 2 are snowboarding racers released for the Nintendo 64 and developed by Racdym. An enhanced port of the original Snowboard Kids, known as Snowboard Kids Plus, was also released for Sony's Playstation exclusively in Japan. Snowboard Kids Plus included a new title screen, updated menus, additional characters, and animated video sequences.
Here is a list of the various releases of Snowboard Kids and Snowboard Kids 2:
- Snowboard Kids [N64, NTSC-J]: December 12, 1997
- Snowboard Kids [N64, NTSC-U]: March 13, 1998
- Snowboard Kids [N64, PAL]: March 16, 1998
- Snowboard Kids Plus [PS1, NTSC-J]: January 21, 1999
- Snowboard Kids 2 [N64, NTSC-J]: February 19, 1999
- Snowboard Kids 2 [N64, NTSC-U]: March 1, 1999
- Snowboard Kids 2 [N64, PAL]: April 30, 1999
- /tools/ ← tools within this directory are automatically downloaded
- m2c/
- splat/
- ultralib/
- /sbk1/ ← Snowboard Kids 1 decompilation
- decomp/ ← generated by this project
- asm/ decompiled ASM code
- assets/ binary assets (everything but code)
- src/ C code converted from assembly
- calltree.sbk1.txt
- sbk1.us.z64 ← You must provide your own copy of this ROM file
- snowboardkids.yaml ROM data locations
- symbol_addrs.txt
- decomp/ ← generated by this project
- /sbk2/ ← Snowboard Kids 2 decompilation
- decomp/ ← generated by this project
- asm/ ← decompiled ASM code
- assets/ ← binary assets (everything but code)
- src/ ← C code converted from assembly
- sbk2.us.z64 ← You must provide your own copy of this ROM file
- snowboardkids2.yaml ROM data locations
- decomp/ ← generated by this project
- Makefile
This project is being developed in Linux and it makes extensive use of Linux command line tools. As such, Linux is recommended, WSL may work as well but is not tested or supported by me at this time.
As this project makes use of splat and python, you will need to prepare a virtual environment to handle the python dependencies you will be installing.
To create and activate your virtual environment:
python3 -m venv .venv
source .venv/bin/activate
After creating your virtual environment for this project you will only need to run the command source .venv/bin/activate
when opening a new terminal window.
Next, run make check-requirements
. This will validate that your environment has git, python3, and pip3, that your virtual environment is active, and validate (or install if they are missing) splat's python dependencies.
In order to decompile you will need to provide a NTSC-U ROM file of one or both of the following games. Place your ROM files into the project's root directory, and ensure that the filenames and sha1sums expected by this project match with the files you are providing:
- Snowboard Kids 1 (NTSC-U) rom file
sbk1.us.z64
with sha1sum:583bacc9046a360df8ea4d536942155247e154c
- Snowboard Kids 2 (NTSC-U) rom file
sbk2.us.z64
with sha1sum:5ce896fd64276948bc2b8cccd8cd51c25a9f32aa
If your sha1sums do not match, depending on how you've backed up your ROM file you may need to byteswap it. The versions in use by this project are in the big endian format. A tool such as hack64's Rom Swapper can be used to convert from other formats (such as little endian).
With your ROMs in place you are ready to get started.
make decomp_all
for creating a (work in progress) decompilation of both game's ROMs.make decomp_sbk1
will decompile only Snowboard Kids 1.make decomp_sbk2
will decompile only Snowboard Kids 2.
make clean_all
will clear alldecomp
files produced in both projects.
This decompilation project makes use of the following external tools: