80053694ea
* Match func_80077240 * Apply changes from style guide * Match func_8007729C and style guide changes * Further style guide changes * Several matches courtesy of petrie911 * Match func_80077B84 * Run make format * Match func_80078038 * Match func_800780F8 * Match func_800783C0 * Match func_80078438 and func_800784B4 * Match func_80078550 * Match func_80078604 * Match func_8007868C * WIP func_80084194 * Rename funcs as required from merge with master. * Match func_8007879C * Match func_800788B0 and func_80084194 * Match func_80078A64 * Match 3 more funcs * Match func_80078C84 * Match func_80078D60 and func_80078CE8 * Match func_80078E50 * Match func_80078EBC * Match func_80078F78 * Add function prototypes to functions.h * (M_PI / 180.0f) to M_DTOR * Match func_8007905C * Match func_800794CC * Match func_8007953C * Match func_80079618 * Fix changes from master * Match func_8007968C * Match func_800798C4 * Match func_800798F0 * return -> break * Match func_8007A28C * Match func_8007A3C0 * Match func_8007A4B8 * Match func_8007A568 * Match two more funcs |
||
---|---|---|
.github/workflows | ||
.vscode | ||
include | ||
linker_scripts/us | ||
src | ||
tools | ||
yamls | ||
.clang-format | ||
.clang-tidy | ||
.gitignore | ||
.gitmodules | ||
diff_settings.py | ||
diff.py | ||
Makefile | ||
README.md | ||
starfox64.us.md5 | ||
starfox64.us.uncompressed.md5 |
Starfox 64 (US) REV 1.1
This is a WIP decompilation of Starfox 64. The purpose of the project is to recreate a source code base for the game from scratch, using information found inside the game along with static and/or dynamic analysis.
It currently builds the following ROM:
- starfox64.us.z64
MD5: 741a94eee093c4c8684e66b89f8685e8
This repo does not include any assets or assembly code necessary for compiling the ROM. A prior copy of the game is required to extract the required assets.
Installation
Windows
For Windows 10, install WSL and a distribution by following this Windows Subsystem for Linux Installation Guide. We recommend using Debian or Ubuntu 22.04 Linux distributions.
Linux (Native or under WSL / VM)
1. Install build dependencies
The build process has the following package requirements:
- make
- git
- build-essential
- binutils-mips-linux-gnu
- python3
- pip3
- libpng-dev
Under Debian / Ubuntu (which we recommend using), you can install them with the following commands:
sudo apt update
sudo apt install make git build-essential binutils-mips-linux-gnu python3 python3-pip clang-format-14 clang-tidy
2. Clone the repository
Create your own fork of the repository at https://github.com/sonicdcer/sf64
. Then clone your fork where you wish to have the project, with the command:
git clone https://github.com/<YOUR_USERNAME>/sf64.git
This will copy the GitHub repository contents into a new folder in the current directory called sf64
. Change into this directory before doing anything else:
cd sf64
3. Install python dependencies
The build process has a few python packages required that are located in /tools/requirements-python.txt
.
To install them simply run in a terminal:
python3 -m pip install -r ./tools/requirements-python.txt --break-system-packages
4. Update submodules & build toolchain
git submodule update --init --recursive
make -s -C tools
5. Prepare a base ROM
Copy your ROM to inside the root of this new project directory, and rename the file of the baserom to reflect the version of ROM you are using. ex: baserom.us.z64
6. Make and Build the ROM
To start the extraction/build process, run the following command:
make init
This will create the build folders as well as a new folder with the assembly as well as containing the disassemblies of nearly all the files containing code.
this make target will also build the ROM. If all goes well, a new ROM called "starfox64.us.z64" should be built and the following text should be printed:
741a94eee093c4c8684e66b89f8685e8 build/starfox64.us.z64
./build/starfox64.us.z64: OK
If you instead see the following:
./build/starfox64.us.z64: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
This means that something is wrong with the ROM's contents. Either the base files are incorrect due to a bad ROM, or some of the code is not matching.
From now on you should be able to build the rom by running make
.