diff --git a/README.md b/README.md index e06d32d39..493a26c6a 100644 --- a/README.md +++ b/README.md @@ -7,11 +7,11 @@ This repository contains a work-in-progress decompilation of Perfect Dark for th | Section | Progress | | --------------- | ----------------------------------------- | | 0x40 rspboot | Won't disassemble as source is likely ASM | -| 0x1000 boot | Not started | -| 0x3050 library | Not started | +| 0x1000 boot | 5/34 functions done (14.71%) | +| 0x3050 library | 1/684 functions done (0.15%) | | 0x39850 setup | About 50% identified | -| 0x4e850 rarezip | 2/8 functions done | -| 0x5032e game | Not started | +| 0x4e850 rarezip | 2/8 functions done (25.00%) | +| 0x5032e game | 95/4101 functions done (2.32%) | | Lang files | Done | | Setup files | Done | | Prop files | Not started | @@ -25,46 +25,55 @@ 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) | +| Defection | [setupame.c](src/files/setup/setupame.c) | +| Investigation | [setupear.c](src/files/setup/setupear.c) | +| Extraction | [setupark.c](src/files/setup/setupark.c) | +| Villa | [setupeld.c](src/files/setup/setupeld.c) | +| Chicago | [setuppete.c](src/files/setup/setuppete.c) | +| G5 Building | [setupdepo.c](src/files/setup/setupdepo.c) | +| Infiltration | [setuplue.c](src/files/setup/setuplue.c) | +| Rescue | [setuplip.c](src/files/setup/setuplip.c) | +| Escape | [setuptra.c](src/files/setup/setuptra.c) | +| Air Base | [setupcave.c](src/files/setup/setupcave.c) | +| Air Force One | [setuprit.c](src/files/setup/setuprit.c) | +| Crash Site | [setupazt.c](src/files/setup/setupazt.c) | +| Pelagic II | [setupdam.c](src/files/setup/setupdam.c) | +| Deep Sea | [setuppam.c](src/files/setup/setuppam.c) | +| Defense | [setupimp.c](src/files/setup/setupimp.c) | +| Attack Ship | [setuplee.c](src/files/setup/setuplee.c) | +| Skedar Ruins | [setupsho.c](src/files/setup/setupsho.c) | +| MBR | [setupwax.c](src/files/setup/setupwax.c) | +| Maian SOS | [setupsev.c](src/files/setup/setupsev.c) | +| WAR! | [setupstat.c](src/files/setup/setupstat.c) | +| The Duel | [setupate.c](src/files/setup/setupate.c) | +| CI Training | [setupdish.c](src/files/setup/setupdish.c) | There is also a stagetable.txt in the repository root which includes multiplayer stages. -## Compiling - -Install the following: +## Installation Requirements * make * mips build tools (Debian/Ubuntu: binutils-mips-linux-gnu, Arch: mips64-elf-binutils from AUR) * Python 3 -Then: +## Extracting the base ROM + +Before you do anything you need an existing ROM to extract assets from. 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`. +2. Run `make extract`. This will create an `extracted/ntsc-final` directory 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 your stage setup and lang files into an existing ROM. + +The project does NOT build a full ROM using the C code yet. + +* Run `make` to build the individual ucode binaries. These files will be written to `build/ntsc-final`. +* Run `make rom` to build a ROM from the stage setup and lang files. The ROM will be written to `build/ntsc-final/pd.z64`. ## How do I know the built files are matching?