|
| 1 | +# CCBUtils |
| 2 | + |
| 3 | +CCBUtils is a pair of utilities that handle the proprietary CyberConnect2 Batch (CCB) archives found within Solatorobo: Red the Hunter. |
| 4 | +For the first time, these utilities make it possible to not only extract these files, but reconstruct them with modifications. |
| 5 | + |
| 6 | +## What do these tools do? |
| 7 | + |
| 8 | +CCB Extractor can extract every file from every CCB file in the game* and decompress it appropriately. Correct extraction and decompression |
| 9 | +was verified by comparing the extracted files with those extracted by Console Tool, which was the only existing tool that could properly work |
| 10 | +with these archives. The output is identical. |
| 11 | + |
| 12 | +CCB Constructor can compress files appropriately and create CCB archives that can be re-inserted into the game's ROM. Even when modified, these files are seen as valid |
| 13 | +by the game engine and are 100% compatible with the game's code. |
| 14 | + |
| 15 | +## What do these tools NOT do? |
| 16 | + |
| 17 | +CCB Extractor does not currently have the option to leave extracted files in their compressed state, it will always decompress them before writing. |
| 18 | + |
| 19 | +CCB Constructor does not produce output CCB files that are perfectly byte-matching with the originals, even when no modifications have been made to them. |
| 20 | +This is due to differences in the exact compression algorithms used by me for this project and those used by the game's developers. This likely cannot be |
| 21 | +fixed without trial and error, and will <i>not</i> be a priority to fix, as the compressed data is still valid and decompresses perfectly. |
| 22 | + |
| 23 | +Neither of these tools allow you to extract files from or re-insert files within a DS ROM. You must use an external tool for that. |
| 24 | + |
| 25 | +## What questions are still to be answered? |
| 26 | + |
| 27 | +No tests have been done yet on a ROM without an anti-piracy patch, and there does not seem to be much available information on how exactly the game's |
| 28 | +anti-piracy check works. |
| 29 | + |
| 30 | +I made the bold claim earlier that CCB Extractor and CCB Constructor work perfectly with every CCB archive in the game. This has not been tested fully, |
| 31 | +and it is not currently known if there are any CCB files that differ in some way from the expected format. |
| 32 | + |
| 33 | +## Build instructions |
| 34 | + |
| 35 | +This project was designed to be built with MinGW for Cygwin for Windows binaries, or Linux using the g++ compiler. However, it will likely compile under any |
| 36 | +C++ compiler. |
| 37 | + |
| 38 | + ### Cygwin instructions |
| 39 | + |
| 40 | + ``` |
| 41 | + x86_64-w64-mingw32-g++ --static -o CCB[UTIL_NAME].exe CCB[UTIL_NAME].cpp |
| 42 | + ``` |
| 43 | + |
| 44 | + ### Linux instructions |
| 45 | + |
| 46 | + ``` |
| 47 | + g++ --static -o CCB[UTIL_NAME] CCB[UTIL_NAME].cpp |
| 48 | + ``` |
| 49 | + |
| 50 | +## Special Thanks |
| 51 | + |
| 52 | +I would like to take a moment to thank @PeterLemon for taking the time to put together his <a href="https://github.com/PeterLemon/Nintendo_DS_Compressors">Nintendo_DS_Compressors</a> |
| 53 | +repository. I can take absolutely no credit for the LZ11 and RLE compression and decompression functions used in these utilities as they are almost exactly the same as the original |
| 54 | +code written by @PeterLemon. Using this C code saved me so much time, and allowed me to focus on my goal of actually documenting and modding this game rather than trying to wrap |
| 55 | +my thick skull around binary compression algorithms. |
0 commit comments