|
1 | | -decomp-toolkit Project Template |
2 | | -=============================== |
| 1 | +Ratatouille |
| 2 | +[![Build Status]][actions][![Discord Badge]][discord] |
| 3 | +============= |
3 | 4 |
|
4 | | -If starting a new GameCube / Wii decompilation project, this repository can be used as a scaffold. |
| 5 | +<!-- |
| 6 | +Replace with your repository's URL. |
| 7 | +--> |
| 8 | +[Build Status]: https://github.com/SamuraiOndo/RatDecomp/actions/workflows/build.yml/badge.svg |
| 9 | +[actions]: https://github.com/SamuraiOndo/RatDecomp/actions/workflows/build.yml |
| 10 | +[Discord Badge]: https://img.shields.io/discord/888080380752707624?color=%237289DA&logo=discord&logoColor=%23FFFFFF |
| 11 | +[discord]: https://discord.gg/cgUVpB6GNc |
5 | 12 |
|
6 | | -See [decomp-toolkit](https://github.com/encounter/decomp-toolkit) for background on the concept and more information on the tooling used. |
| 13 | +A work-in-progress decompilation of Ratatouille. |
7 | 14 |
|
8 | | -Documentation |
9 | | -------------- |
| 15 | +This repository does **not** contain any game assets or assembly whatsoever. An existing copy of the game is required. |
10 | 16 |
|
11 | | -- [Dependencies](docs/dependencies.md) |
12 | | -- [Getting Started](docs/getting_started.md) |
13 | | -- [`symbols.txt`](docs/symbols.md) |
14 | | -- [`splits.txt`](docs/splits.md) |
15 | | -- [GitHub Actions](docs/github_actions.md) (new!) |
| 17 | +Supported versions: |
16 | 18 |
|
17 | | -General: |
| 19 | +- `GLLE78`: Rev 0 (USA) |
18 | 20 |
|
19 | | -- [Common BSS](docs/common_bss.md) |
20 | | -- [`.comment` section](docs/comment_section.md) |
| 21 | +Dependencies |
| 22 | +============ |
21 | 23 |
|
22 | | -References |
| 24 | +Windows |
23 | 25 | -------- |
24 | 26 |
|
25 | | -- [Discord: GC/Wii Decompilation](https://discord.gg/hKx3FJJgrV) (Come to `#dtk` for help!) |
26 | | -- [objdiff](https://github.com/encounter/objdiff) (Local diffing tool) |
27 | | -- [decomp.me](https://decomp.me) (Collaborate on matches) |
28 | | -- [frogress](https://github.com/decompals/frogress) (Decompilation progress API) |
29 | | -- [wibo](https://github.com/decompals/wibo) (Minimal Win32 wrapper for Linux) |
30 | | -- [sjiswrap](https://github.com/encounter/sjiswrap) (UTF-8 to Shift JIS wrapper) |
31 | | - |
32 | | -Projects using this structure: |
33 | | - |
34 | | -- [zeldaret/tww](https://github.com/zeldaret/tww) |
35 | | -- [zeldaret/oot-gc](https://github.com/zeldaret/oot-gc) |
36 | | -- [zeldaret/ss](https://github.com/zeldaret/ss) |
37 | | -- [PrimeDecomp/prime](https://github.com/PrimeDecomp/prime) |
38 | | -- [PrimeDecomp/echoes](https://github.com/PrimeDecomp/echoes) |
39 | | -- [DarkRTA/rb3](https://github.com/DarkRTA/rb3) |
40 | | -- [doldecomp/melee](https://github.com/doldecomp/melee) |
41 | | -- [doldecomp/sadx](https://github.com/doldecomp/sadx) |
42 | | -- [InputEvelution/wp](https://github.com/InputEvelution/wp) |
43 | | -- [NWPlayer123/AnimalCrossing-dtk](https://github.com/NWPlayer123/AnimalCrossing-dtk) |
44 | | -- [Rainchus/marioparty4](https://github.com/Rainchus/marioparty4) |
45 | | -- [Rainchus/ttyd_dtk](https://github.com/Rainchus/ttyd_dtk) |
46 | | -- [Sage-of-Mirrors/zmansion](https://github.com/Sage-of-Mirrors/zmansion) |
47 | | -- [bfbbdecomp/bfbb](https://github.com/bfbbdecomp/bfbb) |
48 | | -- [EstexNT/rhf-dtk](https://github.com/EstexNT/rhf-dtk) |
49 | | - |
50 | | -Features |
51 | | --------- |
| 27 | +On Windows, it's **highly recommended** to use native tooling. WSL or msys2 are **not** required. |
| 28 | +When running under WSL, [objdiff](#diffing) is unable to get filesystem notifications for automatic rebuilds. |
| 29 | + |
| 30 | +- Install [Python](https://www.python.org/downloads/) and add it to `%PATH%`. |
| 31 | + - Also available from the [Windows Store](https://apps.microsoft.com/store/detail/python-311/9NRWMJP3717K). |
| 32 | +- Download [ninja](https://github.com/ninja-build/ninja/releases) and add it to `%PATH%`. |
| 33 | + - Quick install via pip: `pip install ninja` |
| 34 | + |
| 35 | +macOS |
| 36 | +------ |
| 37 | + |
| 38 | +- Install [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages): |
| 39 | + |
| 40 | + ```sh |
| 41 | + brew install ninja |
| 42 | + ``` |
| 43 | + |
| 44 | +- Install [wine-crossover](https://github.com/Gcenx/homebrew-wine): |
| 45 | + |
| 46 | + ```sh |
| 47 | + brew install --cask --no-quarantine gcenx/wine/wine-crossover |
| 48 | + ``` |
| 49 | + |
| 50 | +After OS upgrades, if macOS complains about `Wine Crossover.app` being unverified, you can unquarantine it using: |
| 51 | + |
| 52 | +```sh |
| 53 | +sudo xattr -rd com.apple.quarantine '/Applications/Wine Crossover.app' |
| 54 | +``` |
| 55 | + |
| 56 | +Linux |
| 57 | +------ |
| 58 | + |
| 59 | +- Install [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages). |
| 60 | +- For non-x86(_64) platforms: Install wine from your package manager. |
| 61 | + - For x86(_64), [wibo](https://github.com/decompals/wibo), a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used. |
| 62 | + |
| 63 | +Building |
| 64 | +======== |
| 65 | + |
| 66 | +- Clone the repository: |
| 67 | + |
| 68 | + ```sh |
| 69 | + git clone https://github.com/SamuraiOndo/RatDecomp.git |
| 70 | + ``` |
| 71 | + |
| 72 | +- Copy your game's disc image to `orig/GLLE78`. |
| 73 | + - Supported formats: ISO (GCM), RVZ, WIA, WBFS, CISO, NFS, GCZ, TGC |
| 74 | + - After the initial build, the disc image can be deleted to save space. |
| 75 | + |
| 76 | +- Configure: |
| 77 | + |
| 78 | + ```sh |
| 79 | + python configure.py |
| 80 | + ``` |
| 81 | + |
| 82 | +- Build: |
| 83 | + |
| 84 | + ```sh |
| 85 | + ninja |
| 86 | + ``` |
| 87 | + |
| 88 | +Diffing |
| 89 | +======= |
| 90 | + |
| 91 | +Once the initial build succeeds, an `objdiff.json` should exist in the project root. |
| 92 | + |
| 93 | +Download the latest release from [encounter/objdiff](https://github.com/encounter/objdiff). Under project settings, set `Project directory`. The configuration should be loaded automatically. |
| 94 | + |
| 95 | +Select an object from the left sidebar to begin diffing. Changes to the project will rebuild automatically: changes to source files, headers, `configure.py`, `splits.txt` or `symbols.txt`. |
52 | 96 |
|
53 | | -- Few external dependencies: Just `python` for the generator and `ninja` for the build system. See [Dependencies](docs/dependencies.md). |
54 | | -- Simple configuration: Everything lives in `config.yml`, `symbols.txt`, and `splits.txt`. |
55 | | -- Multi-version support: Separate configurations for each game version, and a `configure.py --version` flag to switch between them. |
56 | | -- 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). |
57 | | -- REL support: RELs each have their own `symbols.txt` and `splits.txt`, and will automatically be built and linked against the main binary. |
58 | | -- No manual assembly: decomp-toolkit handles splitting the DOL into relocatable objects based on the configuration. No game assets are committed to the repository. |
59 | | -- Progress calculation and upload script for [frogress](https://github.com/decompals/frogress). |
60 | | -- Integration with [objdiff](https://github.com/encounter/objdiff) for a diffing workflow. |
61 | | -- CI workflow template for GitHub Actions. |
62 | | - |
63 | | -Project structure |
64 | | ------------------ |
65 | | - |
66 | | -- `configure.py` - Project configuration and generator script. |
67 | | -- `config/[GAMEID]` - Configuration files for each game version. |
68 | | -- `config/[GAMEID]/build.sha1` - SHA-1 hashes for each built artifact, for final verification. |
69 | | -- `build/` - Build artifacts generated by the the build process. Ignored by `.gitignore`. |
70 | | -- `orig/[GAMEID]` - Original game files, extracted from the disc. Ignored by `.gitignore`. |
71 | | -- `orig/[GAMEID]/.gitkeep` - Empty checked-in file to ensure the directory is created on clone. |
72 | | -- `src/` - C/C++ source files. |
73 | | -- `include/` - C/C++ header files. |
74 | | -- `tools/` - Scripts shared between projects. |
75 | | - |
76 | | -Temporary, delete when done: |
77 | | - |
78 | | -- `config/GAMEID/config.example.yml` - Example configuration file and documentation. |
79 | | -- `docs/` - Documentation for decomp-toolkit configuration. |
80 | | -- `README.md` - This file, replace with your own. For a template, see [`README.example.md`](README.example.md). |
81 | | -- `LICENSE` - This repository is licensed under the CC0 license. Replace with your own if desired. |
| 97 | + |
0 commit comments