ModSDK. (noun) A toolkit that allows you to create mods for Crash Team Racing (1999) in C.
This repository also houses an effort to fully decompile and reverse-engineer CTR in C.
This SDK requires the installation of mateusfavarin's psx-modding-toolchain. You can check the repo's readme for instructions on the installation and additional documentation on its usage. All python and pip steps are mandatory.
After setting up psx-modding-toolchain, clone this repository into the local directory psx-modding-toolchain/games:
$ git clone https://github.com/CTR-Tools/CTR-ModSDK.git
- You can find example mods in our repo.
- Each mod folder includes a
readme.txt
file on what the mod does and how to use it.
As mentioned earlier, this repository is also used for an attempt at decompiling the original CTR assembly into human-readable C code. Our decompilation targets non-matching code that still functions identically compared to the original code.
Are you interested in contributing? Have any experience in C programming language? You're welcome to join!
- Make sure you have cloned this repo and installed the requirements.
- Choose a .c file from the ghidra folder. Each file represents a code section or category. All non-numbered .c files are parts of the main EXE while the numbered files are overlays.
- Choose a function in that section to rewrite. Read the documentation comments on what the function does and what's the address.
- Set up a compile folder for your rewritten function using psx-modding-toolchain. Please refer to the above section for its installation and usage.
* Build codenames:
common: All versions;
926: USA Retail;
1006: Japan Trial;
1020: Europe Retail;
1111: Japan Retail.
** Code region:
exe: main EXE;
221-233: Overlays (use the original .c filename number)
- Run
build.bat
and choose "Compile", "Build ISO", then test the game. - After you've confirmed that it's functional, add your new function .c file to the decompile directory.
- Feel free to make a pull request after everything is working!
If you have any questions, reach us out in our Discord server.