> Note: This repository uses Git submodules. Don't forget to update them with `./dino.py submodules` or `git submodule update --recursive` after pulling changes to a submodule ref.
### Setup
1. Place an unmodified Dinosaur Planet ROM into the root of the repository as `baserom.z64` (MD5: `49f7bb346ade39d1915c22e090ffd748`).
2. Set up tools and extract the ROM:
-`./dino.py setup`
3. Build the ROM:
-`./dino.py build`
### Rebuilding
1. If any symbols or the splat config were changed, re-extract the ROM and rebuild the linker script:
-`./dino.py extract`
2. If any source files were added, removed, or renamed, re-configure the build script:
The repository comes with a bunch of tools for decompilation and managing the repository:
-`dino.py` - An all in one script for working with the repository. Some of the common commands:
-`build` - Builds the ROM and verifies that it matches.
-`configure` - Re-configures the build script.
-`extract` - Splits the ROM and unpacks DLLs.
-`clean` - Removes all extracted files, build artifacts, and build scripts for a fresh state.
-`diff` - Diff a function/address between the base and re-built ROM.
-`context` - Create a context file that can be used for mips2c/decomp.me.
-`tools/first-diff.py` - Find the first N differences between the base and re-built ROM.
-`tools/first_bin_diff.py` - Find the first N differences between two binary files.
-`tools/dlldump.py` - Dump headers, relocation tables, and assembly from a Dinosaur Planet DLL.
### Docker
If you prefer to develop inside of a Docker container instead of installing everything in your local environment, use the provided Dockerfile in the root of the repository.
Pull requests are welcome! Please see our [contribution guide](./CONTRIBUTING.md) for more information on how this project works and how to contribute.
If you're interested in contributing, please also consider joining us on Discord over at the [Dinosaur Planet Community server](https://discord.gg/H6WGkznZBc) in the `#decompilation` channel!