- Few external dependencies: Just `python` for the generator and `ninja` for the build system. See [Dependencies](docs/dependencies.md).
- Simple configuration: Everything lives in `config.yml`, `symbols.txt`, and `splits.txt`.
- Multi-version support: Separate configurations for each game version, and a `configure.py --version` flag to switch between them.
- Feature-rich analyzer: Many time-consuming tasks are automated, allowing you to focus on the decompilation itself. See [Analyzer features](https://github.com/encounter/decomp-toolkit#analyzer-features).
- REL support: RELs each have their own `symbols.txt` and `splits.txt`, and will automatically be built and linked against the main binary.
- No manual assembly: decomp-toolkit handles splitting the DOL into relocatable objects based on the configuration. No game assets are committed to the repository.
- Progress calculation and upload script for [frogress](https://github.com/decompals/frogress).
- Integration with [objdiff](https://github.com/encounter/objdiff) for a diffing workflow.
- (TODO) CI workflow template for GitHub Actions.
Project structure
-----------------
-`configure.py` - Project configuration and generator script.
-`config/[GAMEID]` - Configuration files for each game version.
-`config/[GAMEID]/build.sha1` - SHA-1 hashes for each built artifact, for final verification.
-`build/` - Build artifacts generated by the the build process. Ignored by `.gitignore`.
-`orig/[GAMEID]` - Original game files, extracted from the disc. Ignored by `.gitignore`.
-`orig/[GAMEID]/.gitkeep` - Empty checked-in file to ensure the directory is created on clone.
-`src/` - C/C++ source files.
-`include/` - C/C++ header files.
-`tools/` - Scripts shared between projects.
Temporary, delete when done:
-`config/GAMEID/config.example.yml` - Example configuration file and documentation.
-`docs/` - Documentation for decomp-toolkit configuration.