3ds To Cia Converter For Mac

For support in English, ask for help at Nintendo Homebrew on Discord.

3dsconv.py is a Python 3 script that converts Nintendo 3DS CTR Cart Image files (CCI, '.cci', '.3ds') to the CTR Importable Archive format (CIA). 3dsconv can detect if a CCI is decrypted, encrypted using original NCCH (slot 0x2C), or encrypted using zerokey. Encryption requires pyaes (pip install pyaes). Converts CIA (CXI Installed Application) a.k.a. EShop games or DLC to 3DS (Self-Explanitory) Cartridge Format - davFaithid/CIA-to-3DS-Rom-Converter.

If you appreciate this guide, we accept Donations.

For support (in English) with GodMode9, as well as help with scripting and to get updates and info, join GodMode9 on Discord.

Required Reading

GodMode9 is a full access file browser for the Nintendo 3DS console, giving you access to your SD card, the FAT partitions inside your SysNAND and EmuNAND, and basically anything else. Among other functionality, you can copy, delete, rename files, and create folders.

Note that if you have any payload files other than GodMode9.firm in the /luma/payloads/ folder on your SD card, holding (Start) on boot will display a “chainloader menu” where you will have to use the D-Pad and the (A) button to select “GodMode9” for these instructions.

GodMode9 is powerful software that has the capability to modify essentially anything on your console. Though many of these modifications are locked behind a permissions system, and it is impossible to accidentally perform dangerous actions without deliberately unlocking permissions, you should still follow instructions carefully and keep backups just in case.

Updating GodMode9

Some of the instructions below are only applicable to the latest version of GodMode9, and as such you should follow this section to update your copy before continuing. Overwrite any existing files.

What You Need

  • The v1.9.2pre1 release of GodMode9

Instructions

  1. Power off your device
  2. Insert your SD card into your computer
  3. Copy GodMode9.firm from the GodMode9 .zip to the /luma/payloads/ folder on your SD card
  4. Copy the gm9 folder from the GodMode9 .zip to the root of your SD card
  5. Reinsert your SD card into your device

Creating a NAND Backup

  1. Launch GodMode9 by holding (Start) during boot
  2. Press (Home) to bring up the action menu
  3. Select “Scripts…”
  4. Select “GM9Megascript”
  5. Select “Backup Options”
  6. Select “SysNAND Backup”
  7. Press (A) to confirm
    • This process will take some time
    • If you get an error, make sure that you have at least 1.3GB of free space on your SD card
  8. Press (A) to continue
  9. Press (B) to return to the main menu
  10. Select “Exit”
  11. Press (A) to relock write permissions if prompted
  12. Hold (R) and press (B) at the same time to eject your SD card
  13. Insert your SD card into your computer
  14. Copy <date>_<serialnumber>_sysnand_###.bin and essential.exefs from the /gm9/out/ folder on your SD card to a safe location on your computer
    • Make backups in multiple locations (such as online file storage)
    • These backups will save you from a brick and/or help you recover files from the NAND image if anything goes wrong in the future
  15. Delete <date>_<serialnumber>_sysnand_###.bin and <date>_<serialnumber>_sysnand_###.bin.sha from the /gm9/out/ folder on your SD card after copying it
  16. Reinsert your SD card into your device
    • If your SD card was not detected, hold (R) and press (B) at the same time to remount it

Restoring a NAND Backup

  1. Launch GodMode9 by holding (Start) during boot
  2. Hold (R) and press (B) at the same time to eject your SD card
  3. Insert your SD card into your computer
  4. Copy <date>_<serialnumber>_sysnand_###.bin from your computer to the /gm9/out/ folder on your SD card
  5. Reinsert your SD card into your device
  6. Press (Home) to bring up the action menu
  7. Select “Scripts…”
  8. Select “GM9Megascript”
  9. Select “Restore Options”
  10. Select “SysNAND Restore (safe)”
  11. Select your NAND backup
  12. Press (A) to unlock SysNAND (lvl3) writing, then input the key combo given
    • This will not overwrite your boot9strap installation
    • This process will take some time
  13. Press (A) to continue
  14. Press (B) to return to the main menu
  15. Select “Exit”
  16. Press (A) to relock write permissions if prompted
3ds To Cia Converter For Mac

Injecting any .CIA app into Health & Safety

For organizational purposes, copy the .cia file you wish to inject to the /cias/ folder on your SD card

Note that it is not possible to inject files into Health & Safety that are larger than it (including games and other large applications)

  1. Launch GodMode9 by holding (Start) during boot
  2. Navigate to [0:] SDCARD -> cias
  3. Press (A) on your .cia to select it, then select “CIA image options…”, then select “Mount image to drive”
  4. Press (A) on the .app file, then select “NCCH image options”, then select “Inject to H&S”
  5. Press (A) to unlock SysNAND (lvl1) writing, then input the key combo given
  6. Press (A) to continue
  7. Press (A) to relock write permissions if prompted

Restoring Health & Safety after injecting a .CIA app

This will only work if the Health & Safety injection was performed by GodMode9 (not Decrypt9 or Hourglass9).

  1. Launch GodMode9 by holding (Start) during boot
  2. Press (Home) to bring up the action menu
  3. Select “More…”
  4. Select “Restore H&S”
  5. Press (A) to unlock SysNAND (lvl1) writing, then input the key combo given
  6. Press (A) to relock write permissions if prompted

Dumping a Game Cartridge

Insert the game cartridge you intend to dump into your device

  • 3DS game cartridges will be dumped to an installable .cia format
  • NDS game cartridges will be dumped to a non-installable .nds format compatible with flashcarts and emulators
  1. Launch GodMode9 by holding (Start) during boot
  2. Navigate to [C:] GAMECART
  3. Follow the steps applicable to your game cartridge:
    • 3DS Game Cartridge: Press (A) on [TitleID].trim.3ds to select it, then select “NCSD image options…”, then select “Build CIA from file”
    • NDS Game Cartridge: Press (A) on [TitleID].trim.nds to select it, then select “Copy to 0:/gm9/out”
  4. Your installable .cia or non-installable .nds formatted file will be outputted to the /gm9/out/ folder on your SD card

Dumping a Title

  1. Launch GodMode9 by holding (Start) during boot
  2. Hover over the drive applicable to the type of title you wish to dump:
    • User Installed Title: [A:] SYSNAND SD
    • System Title: [1:] SYSNAND CTRNAND
  3. Hold (R) and press (A) at the same time to open the drive options
  4. Select “Search for titles”
  5. Press (A) to continue
  6. Press (A) on the .tmd file to select it, then select “TMD file options…”, then select “Build CIA (standard)”
  7. Your installable .cia formatted file will be outputted to the /gm9/out/ folder on your SD card

Converting a .3DS to .CIA

  • For organizational purposes, copy each .3ds file you wish to convert to the /cias/ folder on your SD card
    • Note that if you wish to convert a .3ds file that is already on a flashcart, you should follow Dumping a Game Cartridge
  1. Launch GodMode9 by holding (Start) during boot
  2. Navigate to [0:] SDCARD -> cias
  3. Press (A) on your .3ds file to select it, then select “NCSD image options…”, then select “Build CIA from file”
  4. Your installable .cia formatted file will be outputted to the /gm9/out/ folder on your SD card

Backup GBA VC Saves

The game will be outputted to the /gm9/out/ folder on your SD card with the name <TitleID>.gbavc.sav.

To identify a <TitleID>.gbavc.sav file’s Title ID, you can get a listing of all games on the system and their corresponding Title IDs by hovering over [A:] SYSNAND SD, holding (R) and pressing (A) at the same time, then selecting “Search for titles”.

  1. Do the following process for each GBA VC game that you want to backup the save for:
    • Launch the GBA VC game
    • Exit the GBA VC game
    • Boot your device while holding (Start) to launch the Luma3DS chainloader menu
    • Launch GodMode9 by pressing (A)
    • Navigate to [S:] SYSNAND VIRTUAL
    • Press (A) on agbsave.bin to select it
    • Select “AGBSAVE options…”
    • Select “Dump GBA VC save”
    • Press (A) to continue
    • Press (Start) to reboot your device

Restore GBA VC Saves

To identify a <TitleID>.gbavc.sav file’s Title ID, you can get a listing of all games on the system and their corresponding Title IDs by hovering over [A:] SYSNAND SD, holding (R) and pressing (A) at the same time, then selecting “Search for titles”.

  1. Do the following process for each GBA VC game that you want to restore the save for:
    • Launch the GBA VC game
    • Exit the GBA VC game
    • Boot your device while holding (Start) to launch the Luma3DS chainloader menu
    • Launch GodMode9 by pressing (A)
    • Navigate to [0:] SDCARD -> gm9
    • Press (Y) on the <TitleID>.gbavc.sav file you wish to restore to copy it
    • Press (B) to return to the main menu
    • Navigate to [S:] SYSNAND VIRTUAL
    • Press (A) on agbsave.bin to select it
    • Select “AGBSAVE options…”
    • Select “Inject GBA VC save”
    • Press (A) to continue
    • Press (Start) to reboot your device
    • Launch the GBA VC game
    • Exit the GBA VC game

Format an SD card

Note that this will erase the contents of your SD card!

  1. Launch GodMode9 by holding (Start) during boot
  2. Press (Home) to bring up the action menu
  3. Select “More…”
  4. Select “SD format menu”
  5. Select any EmuNAND options you wish to use
    • Most users will want to select “No EmuNAND”
  6. Select “Auto”
  7. Press (A) to accept the label GM9SD
    • Optionally, you may input a custom name for the SD card
  8. When prompted, input the key combo given to confirm
Cia

Encrypting / Decrypting a .CIA file

For organizational purposes, copy each .cia file you wish to encrypt / decrypt to the /cias/ folder on your SD card

  1. Launch GodMode9 by holding (Start) during boot
  2. Navigate to [0:] SDCARD -> cias
  3. Press (A) on the .cia file to select it, then select “CIA image options…”
  4. Select the option to perform the desired function:
    • Encrypt to 0:/gm9/out: Create an encrypted copy of the selected .cia file in the /gm9/out/ folder on your SD card
    • Decrypt to 0:/gm9/out: Create a decrypted copy of the selected .cia file in the /gm9/out/ folder on your SD card
    • Encrypt inplace: Replace the selected .cia file with an encrypted version
    • Decrypt inplace: Replace the selected .cia file with a decrypted version
  5. Your encrypted / decrypted .cia will be outputted to the desired location

Removing an NNID without formatting your device

  1. Launch GodMode9 by holding (Start) during boot
  2. Press (Home) to bring up the action menu
  3. Select “Scripts…”
  4. Select “GM9Megascript”
  5. Select “Scripts from Plailect’s Guide”
  6. Select “Remove NNID”
  7. Press (A) to continue
  8. Press (A) to unlock SysNAND (lvl1) writing, then input the key combo given
  9. Press (A) to continue
  10. Press (B) to return to the main menu
  11. Select “Exit”
  12. Press (A) to relock write permissions if prompted
  13. Press (Start) to reboot your device
makerom
General
Author(s)3dsguy
TypePC utility
Version0.15
Links
Download
Source


makerom is a tool which can be used to create NCCH, CCI, and CIA files.

  • 1Format Overviews
    • 1.2CCI
    • 1.3CIA
  • 2Using Makerom
    • 2.1Command line

Format Overviews[edit]

NCCH[edit]

The native format storing code binaries and data archives for the 3DS is NCCH. NCCH files are comprised of:

  • code/exheader/plainregion (used for code execution) (plainregion just lists included SDK library add-ons)
  • icon (app title text, icon, homemenu settings, see here
  • banner (cbmd + cwav, i.e. the upper screen banner/sound shown on the homemenu)
  • logo (the splash screen displayed after an application is launched from the homemenu)
  • romfs (read-only filesystem used to store resources)

Typical uses for NCCH files include:

  • Executable image (code+exheader+icon+banner+logo+romfs)
  • e-Manual archive (accessed from homemenu) (romfs)
  • DLP child CIA archive (accessed from application) (romfs)
  • Update Data archive (romfs)
  • Standalone data archive (romfs)
  • DLC index archive (icon+romfs)
  • DLC archive (romfs)

CCI[edit]

The native format for gamecard images is CCI and is a NCCH container format. CCI files are limited to containing 8 NCCH files, and can contain NCCH files for applications titles only.

NCCH configuration for CCI[edit]

NCCHRequiredIndex
Executable imageYES0
e-Manual archiveNO1
DLP child CIA archiveNO2
Update Data archiveNO7
Mac

CIA[edit]

The native format for packaging NCCH files for install is CIA, which is also a NCCH container format. CIA files are limited to containing 65535 NCCH files and can be used to contain NCCH files for any title type. CIA files also contain signed data used by the 3DS for general title management and DRM. Installing custom CIA files on a 3DS which also uses eShop/SysUpdates is unwise as conflicts will likely occur.

NCCH configurations for CIA[edit]

Applications (Application/DlpChild/Demo/Patch/SystemApplication):

NCCHRequiredIndex
Executable imageYES0
e-Manual archiveNO1
DLP child CIA archiveNO2

System Applet/Module:

NCCHRequiredIndex
Executable imageYES0

System Data Archives:

NCCHRequiredIndex
Data archiveYES0

DLC:

The number of DLC data archives in DLC varies for each DLC.

3ds
NCCHRequiredIndex
DLC index archiveYES0
DLC data archiveYESVaries

Using Makerom[edit]

Command line[edit]

General Arguments

ArgumentAcceptable valuesNotes
-f <format>'ncch'/'cxi'/'cfa'/'cci'/'cia'Specify the output file format. 'ncch'/'cxi'/'cfa' has no affect, probably parsed without error for legacy support.
-o <path>Valid file path.Specify name/path for output file. Makerom will decided a name if this is not specified.
-vnot requiredEnables verbose output.

RSF Arguments

ArgumentAcceptable valuesNotes
-rsf <path>Valid file pathSpecify the path to Rom Specification File(RSF). See below for creating RSF.
-D<NAME>=<VALUE>This is used to substitute where '$(<NAME>)' exists in the RSF files with '<VALUE>'. (Uppercase isn't a requirement)

Crypto Arguments

ArgumentAcceptable valuesNotes
-target <target>'t'/'d'/'p'Specify key-chain. This affects encryption, signing and '-desc' template availability. t=test, suitable for homebrew. d=devkit(incomplete), suitable for devkits. p=retail(unusable), suitable for signing retail software?
-ckeyid <index>Any value between 0-255 (inclusive).Overrides the default common key used to encrypt CIA title keys.
-showkeysnoneDumps loaded key-chain to stdout.

NCCH Build Arguments

ArgumentAcceptable valuesNotes
-elf <file>Valid file pathSpecify ELF. See below for creating ELF.
-icon <file>Valid file pathSpecify icon.
-banner <file>Valid file pathSpecify banner.
-desc <apptype>:<fw><apptype>='app'/'ecapp'/'demo'/'dlpchild'. <fw>='kernel version minor'.Use a template for exheader/accessdesc. These are hard-coded, so not all firmwares have a template. A value from 1-7 can be used in place of 'kernel version minor'. A template shouldn't be used if the title needs 'special' permissions, the RSF must be configured fully.
-exefslogononeInclude logo in ExeFS. Required for usage on <5.0 systems.

Arguments useful for rebuilding a NCCH file:

ArgumentAcceptable valuesNotes
-code <file>Valid file pathSpecify decompressed/plaintext exefs code binary.
-exheader <file>Valid file pathSpecify plaintext exheader binary.
-logo <file>Valid file pathSpecify logo.
-plainrgn <file>Valid file pathSpecify NCCH plain-region.
-romfs <file>Valid file pathSpecify an unencrypted RomFS binary.

CCI Arguments

ArgumentAcceptable valuesNotes
-content <path>:<index><path>=Valid file path. <index>=Any value between 0-7 (inclusive)Include a built NCCH file in the CCI container. '-i' can be used instead of '-content'.
-devccinoneBuild a debug CCI?
-nomodtidnoneDon't modify the TitleIds of NCCH files included to match NCCH0
-alignwrnoneAlign the offset for the Card2 writable region to the end of the last NCCH in the CCI.

CIA Arguments

ArgumentAcceptable valuesNotes
-content <path>:<index>:<id><path>=Valid file path. <index>=Any value between 0x0-0xFFFF (inclusive). <id>=Any value between 0x0-0xFFFFFFFF (inclusive)Include a built NCCH file in the CIA container. If <id> isn't specified, it will be generated randomly. '-i' can be used instead of '-content'.
-major <version>Any value between 0-63 (inclusive)Specify the version major for the title. This cannot be used with '-dver'.
-minor <version>Any value between 0-63 (inclusive)Specify the version minor for the title. This cannot be used with '-dver'.
-micro <version>Any value between 0-15 (inclusive)Specify the version micro for the title.
-dver <version>Any value between 0-4095 (inclusive)Specify the or '-minor'.
-dlcnoneSpecify this flag when building a DLC CIA.
-randnoneUse a random title key to encrypt CIA content.

Examples[edit]

General examples:

3ds To Cia Converter Rar

Create CXI

Create CFA

Create CCI

Create CIA


Makerom supports building a NCCH file and including it automatically (as index 0) into a NCCH container:

Create CCI and CXI at the same time and include a CFA

Create CIA and CXI at the same time and include a CFA

Rebuilding CXI:

Creating RSF files[edit]

3ds To Cia Converter For Mac Download

Inspired by Nintendo's format for their makerom, a yaml configuration file is required for creating NCCH files. CIA/CCI can be created without using a RSF file, but default settings will be used.

For CXI, RSF files can be used to specify permissions, and access control settings. Makerom can use default settings by use of the '-desc' option, which removes the requirement for specifying them in the RSF file.

Sample RSF to be used with '-desc': download (link broken)

Sample RSF to be used without '-desc': download

Creating ELF files[edit]

The latest devkitARM used in conjunction with ctrulib can create ELF files compatible with makerom.

ELF files that are created using the official SDK are also supported by makerom.

Compiling Source[edit]

For Windows a MinGW-W64/MSYS build setup is required.

For Linux, gcc/g++/make must be installed.

All additional libraries used by makerom (polarssl/libyaml) are included in the source, and are linked statically.

Retrieved from 'https://www.3dbrew.org/w/index.php?title=Makerom&oldid=17471'