perfect_dark/README.md

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.