72 lines
3.5 KiB
Markdown
72 lines
3.5 KiB
Markdown
# 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 | Not started |
|
|
| 0x3050 library | Not started |
|
|
| 0x39850 setup | About 50% identified |
|
|
| 0x4e850 rarezip | 2/8 functions done |
|
|
| 0x5032e game | Not started |
|
|
| 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 | Not started |
|
|
|
|
If you want to browse the stage setup files, use this table to find the filename:
|
|
|
|
| Stage | File |
|
|
| ---------------- | ------------------------------------ |
|
|
| Defection | [setupame.c](src/setup/setupame.c) |
|
|
| Investigation | [setupear.c](src/setup/setupear.c) |
|
|
| Extraction | [setupark.c](src/setup/setupark.c) |
|
|
| Villa | [setupeld.c](src/setup/setupeld.c) |
|
|
| Chicago | [setuppete.c](src/setup/setuppete.c) |
|
|
| G5 Building | [setupdepo.c](src/setup/setupdepo.c) |
|
|
| Infiltration | [setuplue.c](src/setup/setuplue.c) |
|
|
| Rescue | [setuplip.c](src/setup/setuplip.c) |
|
|
| Escape | [setuptra.c](src/setup/setuptra.c) |
|
|
| Air Base | [setupcave.c](src/setup/setupcave.c) |
|
|
| Air Force One | [setuprit.c](src/setup/setuprit.c) |
|
|
| Crash Site | [setupazt.c](src/setup/setupazt.c) |
|
|
| Pelagic II | [setupdam.c](src/setup/setupdam.c) |
|
|
| Deep Sea | [setuppam.c](src/setup/setuppam.c) |
|
|
| Defense | [setupimp.c](src/setup/setupimp.c) |
|
|
| Attack Ship | [setuplee.c](src/setup/setuplee.c) |
|
|
| Skedar Ruins | [setupsho.c](src/setup/setupsho.c) |
|
|
| MBR | [setupwax.c](src/setup/setupwax.c) |
|
|
| Maian SOS | [setupsev.c](src/setup/setupsev.c) |
|
|
| WAR! | [setupstat.c](src/setup/setupstat.c) |
|
|
| The Duel | [setupate.c](src/setup/setupate.c) |
|
|
| CI Training | [setupdish.c](src/setup/setupdish.c) |
|
|
| Common Functions | [setup.c](src/setup.c) |
|
|
|
|
There is also a stagetable.txt in the repository root which includes multiplayer stages.
|
|
|
|
## Compiling
|
|
|
|
Install the following:
|
|
|
|
* make
|
|
* mips build tools (Debian/Ubuntu: binutils-mips-linux-gnu, Arch: mips64-elf-binutils from AUR)
|
|
* Python 3
|
|
|
|
Then:
|
|
|
|
1. 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 be `0x80371240`).
|
|
2. Run `make extract`. This will create an `extracted/ntsc-final` containing assets from your ROM.
|
|
3. Make edits to the C files in the `src` directory if desired.
|
|
3. Run `make rom`. This will create a ROM file at `build/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.
|