Makerom: Difference between revisions
m Updating links |
Added relevant cli argument explainations. |
||
Line 55: | Line 55: | ||
=== CIA === | === CIA === | ||
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 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. | 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 ==== | ==== NCCH configurations for CIA ==== | ||
Line 123: | Line 123: | ||
=== Command line === | === Command line === | ||
makerom [general args] [rsf args] [crypto args] [ncch 0 build args] [cci args] [cia args] | |||
''' | '''General Arguments''' | ||
{| class="wikitable" | |||
|- | |||
! Argument | |||
! Acceptable values | |||
! Notes | |||
|- | |||
| -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. | |||
|- | |||
| -v | |||
| not required | |||
| Enables verbose output. | |||
|} | |||
'''RSF Arguments''' | |||
{| class="wikitable" | |||
|- | |||
! Argument | |||
! Acceptable values | |||
! Notes | |||
|- | |||
| -rsf <path> | |||
| Valid file path | |||
| Specify 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''' | |||
{| class="wikitable" | |||
|- | |||
! Argument | |||
! Acceptable values | |||
! Notes | |||
|- | |||
| -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. | |||
|- | |||
| -showkeys | |||
| none | |||
| Dumps loaded key-chain to stdout. | |||
|} | |||
'''NCCH Build Arguments''' | |||
{| class="wikitable" | |||
|- | |||
! Argument | |||
! Acceptable values | |||
! Notes | |||
|- | |||
| -elf <file> | |||
| Valid file path | |||
| Specify ELF. See below for creating ELF. | |||
|- | |||
| -icon <file> | |||
| Valid file path | |||
| Specify [[SMDH|icon]]. | |||
|- | |||
| -banner <file> | |||
| Valid file path | |||
| Specify banner. | |||
|- | |||
| -desc <apptype>:<fw> | |||
| <apptype>='app'/'ecapp'/'demo'/'dlpchild'. <fw>='kernel version minor'. | |||
| Use a template for [[Exheader|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. | |||
|- | |||
| -exefslogo | |||
| none | |||
| Include logo in ExeFS. Required for usage on <5.0 systems. | |||
|} | |||
Arguments useful for rebuilding a NCCH file: | |||
{| class="wikitable" | |||
|- | |||
! Argument | |||
! Acceptable values | |||
! Notes | |||
|- | |||
| -code <file> | |||
| Valid file path | |||
| Specify decompressed/plaintext exefs code binary. | |||
|- | |||
| -exheader <file> | |||
| Valid file path | |||
| Specify plaintext exheader binary. | |||
|- | |||
| -logo <file> | |||
| Valid file path | |||
| Specify logo. | |||
|- | |||
| -plainrgn <file> | |||
| Valid file path | |||
| Specify NCCH plain-region. | |||
|- | |||
| -romfs <file> | |||
| Valid file path | |||
| Specify an unencrypted RomFS binary. | |||
|} | |||
'''CCI Arguments''' | |||
{| class="wikitable" | |||
|- | |||
! Argument | |||
! Acceptable values | |||
! Notes | |||
|- | |||
| -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". | |||
|- | |||
| -devcci | |||
| none | |||
| Build a debug CCI? | |||
|- | |||
| -nomodtid | |||
| none | |||
| Don't modify the TitleIds of NCCH files included to match NCCH0 | |||
|- | |||
| -alignwr | |||
| none | |||
| Align the offset for the Card2 writable region to the end of the last NCCH in the CCI. | |||
|} | |||
'''CIA Arguments''' | |||
{| class="wikitable" | |||
|- | |||
! Argument | |||
! Acceptable values | |||
! Notes | |||
|- | |||
| -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 data-title version for the title. This cannot be used with "-major" or "-minor". | |||
|- | |||
| -dlc | |||
| none | |||
| Specify this flag when building a DLC CIA. | |||
|- | |||
| -rand | |||
| none | |||
| Use a random title key to encrypt CIA content. | |||
|} | |||
==== Examples ==== | |||
General examples: | |||
''' | '''Create CXI''' | ||
- | makerom -o sample.cxi -rsf sample.rsf -target t -elf sample.elf -icon sample.icn -banner sample.bnr -desc app:4 | ||
''' | '''Create CFA''' | ||
- | makerom -o sample.cfa -rsf sample.rsf -target t | ||
''' | '''Create CCI''' | ||
-f | makerom -f cci -o sample.cci -target t -i sample.cxi:0 -i sample.cfa:1 | ||
''' | '''Create CIA''' | ||
- | makerom -f cia -o sample.cia -target t -i sample.cxi:0:0 -i sample.cfa:1:1 | ||
Makerom supports building a NCCH file and including it automatically (as index 0) into a NCCH container: | |||
Create | '''Create CCI and CXI at the same time and include a CFA''' | ||
makerom -f cia - | makerom -f cci -o sample.cia -rsf sample.rsf -target t -elf sample.elf -icon sample.icn -banner sample.bnr -desc app:4 -i sample.cfa:1 | ||
'''Create CIA and CXI at the same time and include a CFA''' | |||
makerom - | makerom -f cia -o sample.cia -rsf sample.rsf -target t -elf sample.elf -icon sample.icn -banner sample.bnr -desc app:4 -i sample.cfa:1:1 | ||
Rebuilding CXI: | |||
makerom -o rebuild.cxi -rsf rebuild.rsf -target t -code rebuild/code.bin -exheader rebuild/exheader.bin -icon rebuild/icon.bin -banner rebuild/banner.bin -romfs rebuild/romfs.bin | |||
=== Creating RSF files === | === Creating RSF files === | ||
Line 162: | Line 331: | ||
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. | 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": [https://gist.githubusercontent.com/3DSGuy/83e12e0ae3dcccb9827f/raw/sample0.rsf download] | Sample RSF to be used with "-desc": [https://gist.githubusercontent.com/3DSGuy/83e12e0ae3dcccb9827f/raw/sample0.rsf download] (link broken) | ||
Sample RSF to be used without "-desc": [https://gist.githubusercontent.com/3DSGuy/83e12e0ae3dcccb9827f/raw/sample1.rsf download] | Sample RSF to be used without "-desc": [https://gist.githubusercontent.com/3DSGuy/83e12e0ae3dcccb9827f/raw/sample1.rsf download] (link broken) | ||
=== Creating ELF files === | === Creating ELF files === |