CNMT
For the content of the NCA FS which can be mounted, see here.
Metadata file
This is the file that ends in ".cnmt{.nca}"
or "meta0.ncd"
. This seems to replace the TMD format.
There's at least 3 different filenames used for ".cnmt":
- "Application_{lower-case hex titleID}.cnmt"
- "Patch_{lower-case hex titleID}.cnmt"
- "SystemUpdate_{hex titleID}.cnmt"
It starts with a header:
Offset | Size | Description |
---|---|---|
0x0 | 8 | Title ID |
0x8 | 4 | u32 title-version |
0xC | 1 | Type (see Title Types) |
0xD | 1 | |
0xE | 2 | Offset to table relative to the end of this 0x20-byte header. |
0x10 | 2 | Number of entries |
0x12 | 14 |
An optional header can follow, depending on the title type.
At the end of the file following the entries is a 0x20-byte block, presumably a hash.
With update-format, there's additional data after the end of the entries specified in the header and before the ending hash.
Application header
Offset | Size | Description |
---|---|---|
0x20 | 8 | Patch title ID |
0x28 | 8 |
Patch header
Offset | Size | Description |
---|---|---|
0x20 | 8 | Original title ID |
0x28 | 8 |
Add-on content header
Offset | Size | Description |
---|---|---|
0x20 | 8 | Application title ID |
0x28 | 8 |
Content records
Each entry is 0x38 bytes:
Offset | Size | Description |
---|---|---|
0x0 | 32 | Hash |
0x20 | 16 | NcaId [same as first 16-bytes of hash] |
0x30 | 6 | Size, same as the output from Content_Manager_services#GetEntrySize. |
0x36 | 1 | Type (0=meta, 1=program, 2=data, 3=control, 4=offline-manual html, 5=legal html) |
0x37 | 1 |
With SystemUpdate, each entry is 0x10-bytes, with the same format listed here: Content_Manager_services#GetUpdateTitleList.