mirror of https://github.com/n64decomp/007.git
180 lines
5.4 KiB
Markdown
180 lines
5.4 KiB
Markdown
# Goldeneye 007
|
|
|
|
[![NTSC-Status][NTCS-badge]][NTCS-link]
|
|
[![JP-Status][JP-badge]][JP-link]
|
|
[![PAL-Status][PAL-badge]][PAL-link]
|
|
|
|
[NTCS-link]: https://kholdfuzion.github.io/goldeneyestatus/
|
|
[NTCS-badge]: ../../workflows/NTSC-Status/badge.svg
|
|
|
|
[JP-link]: https://kholdfuzion.github.io/goldeneyestatus/JPN.htm
|
|
[JP-badge]: ../../workflows/JP-Status/badge.svg
|
|
|
|
[PAL-link]: https://kholdfuzion.github.io/goldeneyestatus/EU.htm
|
|
[PAL-badge]: ../../workflows/EU-Status/badge.svg
|
|
|
|
|
|
This is a WIP decompilation of Goldeneye 007!
|
|
|
|
It builds the following ROMs:
|
|
|
|
* ge007.u.z64 `sha1: abe01e4aeb033b6c0836819f549c791b26cfde83`
|
|
* ge007.j.z64 `sha1: 2a5dade32f7fad6c73c659d2026994632c1b3174`
|
|
* ge007.e.z64 `sha1: 167c3c433dec1f1eb921736f7d53fac8cb45ee31`
|
|
|
|
**Note: This repository does not include all assets necessary for compiling the ROMs. A prior copy of the game is required to extract the assets.**
|
|
|
|
## Installation
|
|
|
|
### Linux (Native or under WSL / VM)
|
|
|
|
#### Step 1: Install build dependencies
|
|
|
|
The requirements for Debian / Ubuntu should be:
|
|
|
|
```bash
|
|
sudo apt-get update
|
|
sudo apt-get install binutils-mips-linux-gnu make git python3
|
|
sudo apt-get install libcapstone-dev pkg-config
|
|
```
|
|
|
|
If you don't have host development tools already installed then you will also need to install `build-essential`:
|
|
|
|
```bash
|
|
sudo apt-get install build-essential
|
|
```
|
|
|
|
Optionally [qemu-irix](https://github.com/n64decomp/qemu-irix/releases) is needed. Download the package to a desired location and install with:
|
|
|
|
```bash
|
|
sudo dpkg -i qemu-irix-2.11.0-2169-g32ab296eef_amd64.deb
|
|
```
|
|
|
|
#### Step 2: Clone the repository
|
|
|
|
Clone this repository where you wish to have the project, with a command such as:
|
|
|
|
```bash
|
|
git clone https://github.com/kholdfuzion/goldeneye_src
|
|
```
|
|
|
|
#### Step 3: Recompile IDO
|
|
|
|
Recompile IDO for your platform for increased compile speed
|
|
```bash
|
|
cd tools/ido5.3_recomp
|
|
make
|
|
```
|
|
|
|
#### Step 4: Prepare baserom(s) for asset extraction
|
|
|
|
Place an unmodified copy of your existing NTSC (US) ROM inside the root of this repository with the name `baserom.u.z64`.
|
|
|
|
To extract the baserom assets run:
|
|
|
|
```bash
|
|
./extract_baserom.u.sh
|
|
```
|
|
|
|
For JP and PAL (EU) versions support, place each existing ROM in the root of this repository with the name `baserom.<VERSION>.z64` (where `<VERSION>` is the country code, `j`, or `e`).
|
|
|
|
Extracting NTSC (US) baserom assets is mandatory before extracting JP or PAL assets.
|
|
|
|
To extract JP assets run:
|
|
|
|
```bash
|
|
./extract_baserom.u.sh && ./extract_diff.j.sh
|
|
```
|
|
|
|
To extract PAL assets run:
|
|
|
|
```bash
|
|
./extract_baserom.u.sh && ./extract_diff.e.sh
|
|
```
|
|
|
|
Other options to extract baserom assets or extract diff:
|
|
|
|
```bash
|
|
./extract_baserom.u.sh /path_to/rom.n64 # ROM in another directory
|
|
./extract_baserom.u.sh /mnt/e/Goldeneye.n64 # ROM located on EverDrive
|
|
./extract_baserom.u.sh files # Extract files only
|
|
./extract_baserom.u.sh images # Extract images only
|
|
```
|
|
|
|
Note: If you are upgrading from an old repository, run:
|
|
|
|
```bash
|
|
./clean_baserom.sh && ./extract_baserom.u.sh && make clean
|
|
```
|
|
|
|
## Build the ROM
|
|
|
|
Run `make` to build the ROM (defaults to `VERSION=US`).
|
|
|
|
```bash
|
|
make
|
|
```
|
|
|
|
If all goes well, resulting artifacts can be found in the `build` directory and the following text should be printed:
|
|
|
|
```bash
|
|
build/u/ge007.u.z64: OK
|
|
```
|
|
|
|
Other examples:
|
|
|
|
```bash
|
|
make VERSION=JP -j4 # build JP version instead with 4 jobs
|
|
make VERSION=EU COMPARE=0 # build PAL (EU) version but do not compare ROM hashes
|
|
```
|
|
|
|
The full list of configurable variables are listed below, with the default being the first listed:
|
|
|
|
* ``VERSION``: ``US``, ``JP``, ``EU``
|
|
* ``COMPARE``: ``1`` (compare ROM hash), ``0`` (do not compare ROM hash)
|
|
* ``IDO_RECOMP``: ``YES`` (build with IDO recomp), ``NO`` (build using [qemu-irix](https://github.com/n64decomp/qemu-irix/releases))
|
|
* ``FINAL``: ``YES`` (builds final version with -O2 optimization), ``NO`` (debug)
|
|
* ``VERBOSE``: ``0`` (quiet), ``1``
|
|
|
|
Additional documentation of the build process can be found [here](readme-build.md).
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
goldeneye_src
|
|
|-- .github/workflows: GitHub use only
|
|
├── assets: game assets
|
|
│ ├── font: font data
|
|
│ ├── images: image data
|
|
│ │ └── split: split image data
|
|
│ ├── music: music data
|
|
│ ├── obseg: animation data
|
|
│ │ ├── bg: bg data
|
|
│ │ ├── brief: briefing data
|
|
│ │ ├── chr: c model data
|
|
│ │ ├── gun: g model data
|
|
│ │ ├── prop: p model data
|
|
│ │ ├── setup: setup data
|
|
│ │ ├── stan: stan data
|
|
│ │ └── text: text data
|
|
│ └── ramrom: demo data
|
|
├── bin: files that haven't been touched
|
|
├── build: output directory
|
|
├── include: header files
|
|
├── rsp: Custom GBI code (Assembly) (C0 and 4Tri)
|
|
├── src: C source code for game
|
|
│ ├── game: core ge specific code 0x7f000000 range
|
|
│ ├── inflate: statically linked initial decompression code
|
|
│ ├── libultra: currently used libultra.s
|
|
│ └── libultrarare: libultra modified by Rare
|
|
└── tools: build tools
|
|
```
|
|
|
|
Documentation has been moved to https://github.com/kholdfuzion/goldeneye_docs/tree/master/notes
|
|
|
|
Style Guide is https://github.com/kholdfuzion/goldeneye_src/blob/AIListLogic/notes/StyleGuide.md
|
|
|
|
This decompilation was only made possible thanks to many awesome 00 Agents who will be revealed only if they wish.
|
|
|
|
GE and PD documentation made by Zoinkity.
|