mirror of
https://github.com/encounter/dtk-template.git
synced 2025-10-27 11:20:24 +00:00
This feature was designed as an experiment in Prime's build script, and ended up getting pulled into the initial dtk-template. It doesn't have proper configuration options or any usage in the wild. Projects aiming to port their code will use CMake or a similar build system instead.
decomp-toolkit Project Template
If starting a new GameCube / Wii decompilation project, this repository can be used as a scaffold.
See decomp-toolkit for background on the concept and more information on the tooling used.
Documentation
General:
References
- Discord: GC/Wii Decompilation (Come to
#dtkfor help!) - objdiff (Local diffing tool)
- decomp.me (Collaborate on matches)
- decomp.dev (Decompilation progress hub and API)
- wibo (Minimal Win32 wrapper for Linux)
- sjiswrap (UTF-8 to Shift JIS wrapper)
Nearly all active GC/Wii decompilation projects use this structure, and will be useful for reference. A list of active GC/Wii projects can be found on decomp.dev.
Features
- Few external dependencies: Just
pythonfor the generator andninjafor the build system. See Dependencies. - Simple configuration: Everything lives in
config.yml,symbols.txt, andsplits.txt. - Multi-version support: Separate configurations for each game version, and a
configure.py --versionflag to switch between them. - Feature-rich analyzer: Many time-consuming tasks are automated, allowing you to focus on the decompilation itself. See Analyzer features.
- REL support: RELs each have their own
symbols.txtandsplits.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 integration with decomp.dev.
- Integration with objdiff for a diffing workflow.
- 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.README.md- This file, replace with your own. For a template, seeREADME.example.md.LICENSE- This repository is licensed under the CC0 license. Replace with your own if desired.
Languages
Python
100%