What Is rom_tool?
'rom_tool' is a tool designed to check/manipulate CTR Cartridge Image (CCI) files, mainly for use with Gateway 3DS and associated clones. CCI files are better known to the 3DS Scene as 3DS ROM Dumps, but as "CCI" is the correct term, I'll be using it in place of "ROM".
What Can Be Done With rom_tool?
Main uses:
- Read CCIs, and print information about them, including actual CCI data size, and minimum required 3DS FW etc.
- Reduce the size of CCIs, by removing unused bytes (CCI Trimming), and be able to restore them again (CCI Restoring).
- Extract the partitions from CCIs.
NOTE: You can remove about 30MB extra from a CCI by removing the update data(in versions prior to rom_tool 3.0, this was referred to as "Super Trimming"). However unlike regular CCI trimming, this is a PERMANENT modification, and cannot be reversed. So use with caution and only when space is scarce. CCIs which have had their update data removed will only work with Gateway3DS v1.1 and above.
Predicting CCI Compatibility with 3DS Flashcards (R4i Gold 3DS Deluxe 2.0 / Gateway Firmware 1.2):
Use rom_tool to view CCI Info. If any of the following are true, then the CCI will not work:
- If "Media Type:" is "CARD2" (Flashcards can currently only emulate cards of type CARD1)
- If "SDK Version:" is "5.0.0 Release" or greater. (Firmwares < 5.0.0-11X, fail with the new format)
Use rom_tool to view CCI Info. If any of the following are true, then the CCI will not work:
- If "Media Type:" is "CARD2" (Flashcards can currently only emulate cards of type CARD1)
Using rom_tool
As rom_tool is a command line tool, you need to put "rom_tool" into the same directory as your CCI dumps. Then you need to open a command window (or terminal if your using MAC OS X) in that directory (search google for how to do this). Once you've done that you are ready to use rom_tool. Command line usage:
View CCI Info:
rom_tool -i Test.3ds
View CCI Partition Info:
rom_tool -p Test.3ds
Extract CCI Partitions:
rom_tool -x <directory for extracted files> Test.3ds
Trim CCI:
rom_tool -t Test.3ds
Restore CCI (Untrim):
rom_tool -r Test.3ds
Remove Update Data from CCI:
rom_tool -u Test.3ds
GUI - 3DSExplorer
Eli Sherer already implemented the basic features of rom_tool into 3DSExplorer. But I decided to implement all of rom_tool v3.1, and decided to improve 3DSExplorer while I was doing it. I based it on Eli Sherer's most recent release which has unfortunately has broken Ticket/TMD code, which I noticed after finishing the modifications. Using 3DSExplorer is easy, if you can get access to CCI dumps, you will be able to use 3DSExplorer.
Executable package and source code links are in the download section. My C# isn't the best, I mainly write in C, so don't be surpised if you find some hacky work a rounds in there.
* Automatic detection of CSU/CCI and CXI/CFA
* Writable Region can be saved from full sized CCI CARD2 dumps.
* The logo can be saved from SDK 5.0.0+ CXIs
* "CCI" Tab only appears if the CCI can be trimmed/restored
* Detects NCSD/NCCH data in the same way as rom_tool
* CIA displays Meta Dependency list properly.
* Various NCSD/NCCH Structures updated
* ICN Flags read properly.
* Writable Region can be saved from full sized CCI CARD2 dumps.
* The logo can be saved from SDK 5.0.0+ CXIs
* "CCI" Tab only appears if the CCI can be trimmed/restored
* Detects NCSD/NCCH data in the same way as rom_tool
* CIA displays Meta Dependency list properly.
* Various NCSD/NCCH Structures updated
* ICN Flags read properly.
Donwload Links
rom_tool (command line tool):
Executable (Windows 32/64-bit and Mac OS X): FileTrip (v3.1 Released: 8/11/13)
Source Code: GitHub
Modified 3DSExplorer (GUI):
Executable (Windows 32/64-bit): Dropbox
Source Code: GitHub
Release Notes
- rom_tool currently fails on Linux.
- When compiling on Windows, use MinGW.