Tools and libs to modify CRIWARE file formats, rewritten in Rust.
These tools and libs are supposed to do its job at extracting/creating/patching the CriTable containers the best it can. If you are looking for the sound (ADX/DSP) convertion tools, you should find it somewhere else.
The Midday version of the programs can be found on GitHub Actions.
More or less suitable for use versions are planned to be published on GitHub's release page.
Please note that most of the CLI tools support the --help flag to show help.
- Only CSB/CPK files are supported.
- If you are looking for ACB/AWB file support, try using this: https://github.com/seiunx-dev/cridecoder (I haven't tested it but it looks promising).
- If you are looking for an arbitrary high-level abstraction over the CRI tables, try using this: https://crates.io/crates/criware-utf (I haven't tested it, again).
- It contains only CLI tools, not GUI tools.
- Decompression of files is not supported.
- Ahead-of-time values loading is implemented instead of lazy-loading (I mean the file is read fully in one iteration instead of jumping on the stream in the memory between the pointers and values).
- For the simplification purposes, only the "latest" version of CPK files is supported (so far I haven't seen games with other versions of CPK).
- Added support for DSP/ADPCM_WII (mono) audio files.
- Pure Rust implementation.
A tool for a convenient examination of arbitrary CriTable files (CSB, CPK). You can use the hexpat for ImHex alongside.
A tool to fully extract, re-create, and patch CSB files (supports related CPK files)
| Game | Platform(s) | Table Read | Structure Read | Extraction | Re-creation | Patching | Notes |
|---|---|---|---|---|---|---|---|
| Sonic and the Black Knight | Wii | ✅ | ✅ | ✅ | ✅¹ | ✅ | ¹, ³ |
| Sonic Free Riders | XBOX 360 | ✅ | ✅ (CPK WIP) | ✅ | ❓ | ❓ | Not tested |
| Sonic 4 Episode 1 | PC | ✅ | ⏳ | ⏳² | ❌ | ❌ | ², WIP |
| Sonic 4 Episode 2 | PC | ✅ | ⏳ | ⏳² | ❌ | ❌ | ², WIP |
| Sonic Generations | PC | ✅ | ⏳ | ⏳² | ❌ | ❌ | ², WIP |
| Sonic Lost World | PC | ✅(CPK table read) | ⏳ | ❌ | ❌ | ❌ | Low-tier WIP |
| Sonic Forces | PC | ✅(CPK table read) | ⏳ | ❌ | ❌ | ❌ | Low-tier WIP |
- "Table Read" means that the files can be read with
cri-table2jsonand its underlying libraries such ascri-table. - "Structure Read" means that the files can be read/extracted with a higher-level abstraction tools and libs such as
csb-rsandcri-rs-lib.
¹ - Please note that this game heavily expects the file to be almost exactly byte-to-byte correct, so that's why you should try patching the CSB file first instead of trying to recreate it from the extracted directory.
² - Last time it properly worked in v0.1.0.
³ - Only one-channel (mono) audio is currently extracted and imported properly.
Your game is not in the list and is not working? Try creating an issue with game's name and platform and I'll think about it. Please, don't share proprietary/retail files.
Contributions welcome to the Rust rewrite.
You can also create issues if you find that something doesn't work properly.
If you want to contribute to the original C# project, please follow the original project's repository.
Special thanks to Skyth for the original C# tools and for licensing them under the MIT license. Btw check out the original project's wiki to understand what's going on with the CSB format.
The word "slop" is not what I want to achieve with this project, so I prepared an AI usage policy and contribution guide.
Currently, AI assistance from SourceCraft Code Assistant helped in a few ways:
- Helped debugging the rewritten library and tools in the cases that I overlooked due to inattention.