Decompilation of Starfox 64
Go to file
Alejandro Asenjo Nitti 092b8fc169
fox_bo (BOLSE) Decompiled (#115)
* func_i4_8018BD60

* func_i4_8018C158

* func_i4_8018CC60

* func_i4_8018D278

* func_i4_8018D394

* func_i4_8018D414

* func_i4_8018D454

* func_i4_8018D584

* func_i4_8018D4F0 co-authored-by @inspectredc

* func_i4_8018D874

* func_i4_80192264

* func_i4_80191ED8 co-authored-by: @petrie911

* func_i4_80191DB0

* func_i4_80191BAC

* func_i4_80191AFC

* func_i4_80191AFC

* func_i4_80191180

* func_i4_80190FE8

* func_i4_80190F58

* func_i4_80190EE4

* func_i4_80190D98

* fix fake symbol

* func_i4_8018F94C

* func_i4_8018F94C refactor

* format

* function prototypes

* v

* func_i4_8018EAEC

* func_i4_8018ECB4

* func_i4_8018EC1C

* func_i4_8018EE4C

* func_i4_8018ED44

* func_i4_8018D960

* func_i4_8018CCE8

* func_i4_8018D008

* func_i4_8018D124

* func_i4_8018E710

* func_i4_801918E4

* func_i4_80191A6C

* func_i4_801912FC

* func_i4_8018EF6C

* func_i4_8018E870

* func_i4_8018CE5C

* func_i4_8018BEF8

* refact func_i4_8018D4F0

* func_i4_8018E3FC & func_i4_8018E05C co-authored-by: @inspectredc

* func_i4_8018DE8C

* func_i4_8018D9CC co-authored-by: @petrie911

* data imported

* import bss

* dec

* clean up

* PR review

* dec

* dec

* review
2024-02-05 16:52:41 -03:00
.github/workflows Discord matching progress inside CI (#64) 2023-12-30 17:33:27 -03:00
.vscode fox_aq decomped, some type cleanup (#112) 2024-02-02 00:05:17 -03:00
include fox_bo (BOLSE) Decompiled (#115) 2024-02-05 16:52:41 -03:00
linker_scripts/us fox_bo (BOLSE) Decompiled (#115) 2024-02-05 16:52:41 -03:00
src fox_bo (BOLSE) Decompiled (#115) 2024-02-05 16:52:41 -03:00
tools update m2c to array-indexing 2024-02-02 00:20:26 -03:00
yamls fox_bo (BOLSE) Decompiled (#115) 2024-02-05 16:52:41 -03:00
.clang-format format style change: SpaceAfterCStyleCast: true 2023-10-18 10:50:51 -03:00
.clang-tidy fox_rcp (#20) 2023-11-13 10:18:43 -06:00
.gitignore fox_hud & fox_me Decompiled (#95) 2024-01-21 13:27:47 -03:00
.gitmodules fox_effects decompiled (#77) 2024-01-13 10:43:04 -03:00
diff_settings.py finish overlay file renaming and split off their headers (#92) 2024-01-17 12:36:58 -03:00
diff.py sf_61B30 decomped (#25) 2023-11-18 12:44:33 -03:00
first_diff.py fox_versus decompiled, introduce first_diff.py to the project, fixed fox_option NON_MATCHING build (#71) 2024-01-10 11:55:08 -06:00
LICENSE.md add license (#86) 2024-01-15 00:16:47 -03:00
Makefile fix CI 2024-01-21 14:21:06 -03:00
mips_to_c.sh fox_effects decompiled (#77) 2024-01-13 10:43:04 -03:00
README.md Update README.md 2024-01-21 19:39:28 -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
sym_info.py Fixed and imported sym_info and name_fixer tools (#73) 2024-01-08 16:32:15 -03:00

Discord Invitation

Starfox 64 (US) REV 1.1

This is a WIP matching 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

1. Install build dependencies

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)

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

MacOS

Install Homebrew and the following dependencies:

brew update
brew install coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils

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 toolchain

5. Prepare a base ROM

Copy your ROM to 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, a new folder with the assembly as well as containing the disassembly 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.