Skip to content

CTR-tools/CTR-ModSDK

Repository files navigation

CTR-ModSDK

ModSDK. (noun) A toolkit that allows you to create mods for Crash Team Racing (1999) in C.

Contributors Discord Server

This repository also houses an effort to fully decompile and reverse-engineer CTR in C.

🏁 Modding CTR

Requirements

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.

Downloading the SDK

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.

CTR-in-C

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.

decompile progress

Decompile Overview

🤝 Contributing

Are you interested in contributing? Have any experience in C programming language? You're welcome to join!

How to rewrite functions:

  • 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.