4.2 KiB
Perfect Dark Decompilation (WIP)
This repository contains a work-in-progress decompilation of Perfect Dark for the Nintendo 64.
Roadmap
| Section | Progress |
|---|---|
| 0x40 rspboot | Won't disassemble as source is likely ASM |
| 0x1000 boot | 22/52 functions done (42.31%) |
| 0x3050 library | 27/950 functions done (2.84%) |
| 0x39850 setup | About 50% identified |
| 0x4e850 rarezip | 2/8 functions done (25.00%) |
| 0x4fc40 game | 478/4196 functions done (11.39%) |
| Lang files | Done |
| Setup files | Done |
| Prop files | Not started |
| Character files | Not started |
| Gun files | Not started |
| BG files | Not started |
| Pad files | Not started |
| Tile files | Done |
If you want to browse the stage setup files, use this table to find the filename:
| Stage | File |
|---|---|
| Defection | setupame.c |
| Investigation | setupear.c |
| Extraction | setupark.c |
| Villa | setupeld.c |
| Chicago | setuppete.c |
| G5 Building | setupdepo.c |
| Infiltration | setuplue.c |
| Rescue | setuplip.c |
| Escape | setuptra.c |
| Air Base | setupcave.c |
| Air Force One | setuprit.c |
| Crash Site | setupazt.c |
| Pelagic II | setupdam.c |
| Deep Sea | setuppam.c |
| Defense | setupimp.c |
| Attack Ship | setuplee.c |
| Skedar Ruins | setupsho.c |
| MBR | setupwax.c |
| Maian SOS | setupsev.c |
| WAR! | setupstat.c |
| The Duel | setupate.c |
| CI Training | setupdish.c |
There is also a stagetable.txt in the repository root which includes multiplayer stages.
Installation Requirements
- make
- mips build tools (Debian/Ubuntu: binutils-mips-linux-gnu, Arch: mips64-elf-binutils from AUR)
- Python 3
Extracting the base ROM
Before you do anything you need an existing ROM to extract assets from.
- Save your existing ROM file into the root of the repository with the name
pd.ntsc-final.z64. It should not be byteswapped (the first four bytes should be0x80371240). - Run
make extract. This will create anextracted/ntsc-finaldirectory containing assets from your ROM.
Compiling
The project can do the following:
-
Build individual ucode binaries (boot, library, setup, rarezip and game) which match the ones extracted from the base ROM.
-
Build a functioning ROM by splicing the C source into an existing ROM. Files in the "files" folder (eg. stage setup and lang) are not included yet. Additionally, the built ROM is not byte perfect yet, but is is functionally equivalent.
-
Run
maketo build the assets that will be included in the ROM. These files will be written tobuild/ntsc-finaland are matching what's in theextracted/ntsc-finalfolder. -
Run
make romto build a ROM from the C source. The ROM will be written tobuild/ntsc-final/pd.z64.
How do I know the built files are matching?
Run make followed by make test. If make test produces no output then everything is matching.