Hacking Emulation Homebrew [Release] rom-converto - 3DS ROM Converter, Compressor & Decryptor (CLI + GUI)

  • Thread starter Thread starter DevYukine
  • Start date Start date
  • Views Views 1,995
  • Replies Replies 2
  • Likes Likes 5

DevYukine

Member
Newcomer
Joined
Aug 21, 2020
Messages
8
Reaction score
10
Trophies
0
Age
25
Location
Berlin
XP
157
Country
Germany

rom-converto
Convert, decrypt, verify and compress your 3DS ROMs

Why?

I got tired of the existing cdn files to cia converter tools. Most of them are ancient, require Python to be installed, depend on some specific folder structure and or batch file setup, don't generate tickets automatically, have zero error handling and are painfully slow on larger libraries. I just wanted a single binary I could run (or a GUI I could drag files into) without dealing with any of that.

So I wrote my own from scratch in Rust.

What it does

  • Convert CDN content to CIA (single or recursive for batch)
  • Auto generates tickets if none are present
  • Decrypt .cia, .3ds, .cci and .cxi files for emulator use
  • Convert between CIA and CCI/3DS in both directions
  • Verify ROM integrity and legitimacy (classifies CIAs as Legit, Piratelegit or Standard)
  • Show ROM info: titles in all languages, region lock, age ratings and the embedded icon
  • Compress (and Decompress) decrypted ROMs to Z3DS format (seekable zstd) to save space (see Azahar Blog Post)
  • Decrypt + compress + cleanup in one step directly from CDN files
  • Batch mode for everything: decrypt, compress, decompress, verify and convert all take -R for whole directories

Comes as both a CLI and a desktop GUI app. The GUI has drag and drop, batch processing (drop a bunch of files at once), real time progress bars and works on Windows, macOS and Linux.

CLI Quick Start

Code:
rom-converto ctr cdn-to-cia <CDN_DIR>              # basic conversion
rom-converto ctr cdn-to-cia <CDN_DIR> -D -Z -R     # recursive, decrypt + compress
rom-converto ctr decrypt <INPUT> <OUTPUT>           # decrypt a ROM
rom-converto ctr compress <INPUT>                   # compress to Z3DS
rom-converto ctr convert <INPUT>                    # CIA <-> CCI/3DS
rom-converto ctr verify <INPUT>                     # check integrity and legitimacy
rom-converto ctr info <INPUT>                       # titles, region, ratings, icon

Downloads

Grab the latest builds from GitHub Releases.

Available for Windows, Linux, macOS and FreeBSD. CLI builds are named rom-converto-cli-*, GUI builds rom-converto-gui-*.

Source

https://github.com/DevYukine/rom-converto (MIT)

Post here or open a GitHub issue if you run into anything and feel free to give some feedback if you like it :)
 
Last edited by DevYukine,
Time for an update. I have kept working on rom-converto since the original post and shipped a few releases, several features were GitHub requests as well :).

New 3DS features
  • Format conversion: Convert between CIA and CCI/3DS in both directions. Direction is auto detected from the extension.
  • Verification: Check hashes and signatures of .cia, .3ds, .cci and .cxi files. CIAs get classified as Legit (ticket and TMD verify through Nintendo's cert chain), Piratelegit (TMD verifies, ticket is forged, i used this naming because other software already classifies it like this) or Standard. Works directly on compressed Z3DS files too.
  • ROM info: Inspect any ROM and print titles in all languages, region lock, age ratings and the embedded icon. Encrypted CIAs are decrypted on the fly so you see real header values. There is a --json flag and a --save-icon flag that exports the 48x48 icon as PNG.
  • Batch everything: decrypt, compress, decompress, verify and convert all take -R to process a whole directory in one go.
  • Faster Z3DS: Compression and decompression now run in parallel and the level is configurable.

Code:
rom-converto ctr convert <INPUT>        # CIA <-> CCI/3DS, auto detected
rom-converto ctr verify <DIR> -R        # verify a whole folder, one line per file
rom-converto ctr info <INPUT>           # titles, region, ratings, icon

Beyond the 3DS
rom-converto is not just a 3DS tool anymore:
  • Switch: Compress .nsp/.xci to .nsz/.xcz and back, plus NCA hash verification. Drop in replacement for the nsz tool.
  • Wii and GameCube: Compress .iso/.wbfs to Dolphin's .rvz and back, Drop in replacement for Dolphin's own tool.
  • Wii U: Decrypt NUS titles and bundle base, updates and DLC into Cemu's .wua archives.
  • CD images: Compress .bin/.cue to .chd and back, and merge multi bin dumps into a single bin/cue for emulators that cannot load split images.
  • The info command from above covers all of these as well.
As always, grab the latest builds from GitHub Releases. Some of the features above exist because people asked for them, so if something you need is missing, post here or open a GitHub issue and there is a good chance when i have time i'll get around integrating it ^^
 
  • Like
Reactions: cvskid

Site & Scene News

Popular threads in this forum