Decompilation of Starfox 64
Go to file
petrie911 77894de848
Decomped and named Matrix functions, decomped some sf_ files, some other cleanup and naming (#19)
* threads galore

* something's up

* try this

* I don't even

* who knows

* I can't stop it

* let's try data for fun

* ok I think I've gone far enough

* well maybe a little more

* visual assets somewhat documented

* just keeps going

* forgot formatting

* let
's try bss

* too much?

* one fix

* even more things

* one quick thing

* oh come on
2023-11-12 19:49:03 -03:00
.github/workflows Update ci.yaml 2023-10-16 17:34:35 -03:00
.vscode Decomped and named Matrix functions, decomped some sf_ files, some other cleanup and naming (#19) 2023-11-12 19:49:03 -03:00
include Decomped and named Matrix functions, decomped some sf_ files, some other cleanup and naming (#19) 2023-11-12 19:49:03 -03:00
linker_scripts/us Decomped and named Matrix functions, decomped some sf_ files, some other cleanup and naming (#19) 2023-11-12 19:49:03 -03:00
src Decomped and named Matrix functions, decomped some sf_ files, some other cleanup and naming (#19) 2023-11-12 19:49:03 -03:00
tools Libultra headers and some decomp (#14) 2023-10-29 18:19:30 -03:00
yamls Decomped and named Matrix functions, decomped some sf_ files, some other cleanup and naming (#19) 2023-11-12 19:49:03 -03:00
.clang-format format style change: SpaceAfterCStyleCast: true 2023-10-18 10:50:51 -03:00
.clang-tidy Header fix (#9) 2023-10-23 17:02:01 -03:00
.gitignore correct version of gfxdis (#6) 2023-10-19 13:40:37 -05:00
.gitmodules add asm-differ submodule 2023-10-14 05:10:23 -03:00
diff_settings.py guLookAt & guLookAtF matching 2023-10-17 17:43:47 -03:00
Makefile Fully split and name libultra, and also decomp 3404 (#16) 2023-11-04 19:45:03 -03:00
README.md Update README.md 2023-10-30 03:54:38 -03:00
starfox64.us.md5 md5 for compressed rom 2023-10-15 18:00:11 -03:00
starfox64.us.uncompressed.md5 md5 for uncompressed rom 2023-10-15 18:00:16 -03:00

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

git submodule update --init --recursive

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.