CNMT: Difference between revisions
Jump to navigation
Jump to search
Myster-Tee (talk | contribs) |
|||
| Line 168: | Line 168: | ||
|- | |- | ||
| 0x30 | | 0x30 | ||
| 0x6 | | [15.0.0+] 0x5 ([1.0.0-14.1.2] 0x6) | ||
| Size | | Size | ||
|- | |||
| 0x35 | |||
| 0x1 | |||
| [15.0.0+] Content Attributes | |||
|- | |- | ||
| 0x36 | | 0x36 | ||
Revision as of 21:19, 11 October 2022
This is the metadata file that ends in ".cnmt{.nca}" or "meta0.ncd". This seems to replace the TMD format.
The official name for CNMT is "PackagedContentMeta".
Header
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | ID |
| 0x8 | 0x4 | Version |
| 0xC | 0x1 | Content Meta Type |
| 0xD | 0x1 | Reserved |
| 0xE | 0x2 | Extended Header Size |
| 0x10 | 0x2 | Content Count |
| 0x12 | 0x2 | Content Meta Count |
| 0x14 | 0x1 | Content Meta Attributes (0=None, 1=IncludesExFatDriver, 2=Rebootless) |
| 0x15 | 0x3 | Reserved |
| 0x18 | 0x4 | Required Download System Version |
| 0x1C | 0x4 | Reserved |
SystemUpdate Extended Header
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | Extended Data Size |
Application Extended Header
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Patch ID |
| 0x8 | 0x4 | Required System Version |
| 0xC | 0x4 | Required Application Version |
Patch Extended Header
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Application ID |
| 0x8 | 0x4 | Required System Version |
| 0xC | 0x4 | Extended Data Size |
| 0x10 | 0x8 | Reserved |
AddOnContent Extended Header
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Application ID |
| 0x8 | 0x4 | Required Application Version |
| 0xC | 0x4 | Reserved |
Delta Extended Header
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Application ID |
| 0x8 | 0x4 | Extended Data Size |
| 0xC | 0x4 | Reserved |
Packaged Content Info
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x20 | Hash (SHA256 of the referenced content) |
| 0x20 | 0x10 | Content ID |
| 0x30 | [15.0.0+] 0x5 ([1.0.0-14.1.2] 0x6) | Size |
| 0x35 | 0x1 | [15.0.0+] Content Attributes |
| 0x36 | 0x1 | Content Type (0=Meta, 1=Program, 2=Data, 3=Control, 4=HtmlDocument, 5=LegalInformation, 6=DeltaFragment) |
| 0x37 | 0x1 | ID Offset |
Content Meta Info
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | ID |
| 0x8 | 0x4 | Version |
| 0xC | 0x1 | Content Meta Type |
| 0xD | 0x1 | Content Meta Attributes (0=None, 1=IncludesExFatDriver, 2=Rebootless) |
| 0xE | 0x2 | Reserved |
This is used for SystemUpdate, see here: NCM_services#ReadEntryMetaRecords.
SystemUpdate Extended Data
If the Version field is 1, the format is:
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | Version |
| 0x4 | 0x4 | Variation Count |
| 0x8 | 0x20 * Variation Count | Firmware Variation Info (Version 1) |
If the Version field is 2, the format is:
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | Version |
| 0x4 | 0x4 | Variation Count |
| 0x8 | 0x4 * Variation Count | Firmware Variation ID |
| 0x20 * Variation Count | Firmware Variation Info (Version 2) | |
| 0x10 * Meta Count (From Firmware Variation Info (Version 2)) | Content Meta Info (If Refer To Base is False) |
Firmware Variation Info (Version 1)
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | Firmware Variation ID |
| 0x4 | 0x1C | Reserved |
Firmware Variation Info (Version 2)
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x1 | Refer To Base (0=False, 1=True) |
| 0x1 | 0x3 | Reserved |
| 0x4 | 0x4 | Meta Count |
| 0x8 | 0x18 | Reserved |
Patch Extended Data
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | History Count |
| 0x4 | 0x4 | Delta History Count |
| 0x8 | 0x4 | Delta Count |
| 0xC | 0x4 | Fragment Set Count |
| 0x10 | 0x4 | History Content Count |
| 0x14 | 0x4 | Delta Content Count |
| 0x18 | 0x4 | Reserved |
| 0x1C | 0x38 * History Count | History Headers |
| 0x28 * Delta History Count | Delta Histories | |
| 0x28 * Delta Count | Delta Headers | |
| 0x34 * Fragment Set Count | Fragment Sets | |
| 0x18 * History Content Count | History Content Info (Packaged Content Info without the Hash entry) | |
| 0x38 * Delta Content Count | Delta Packaged Content Info | |
| 0x4 * Fragment Indicator Count (From Fragment Sets) | Fragment Indicators |
History Header
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x10 | Content Meta Key (Slightly different Content Meta Info) |
| 0x10 | 0x20 | Digest |
| 0x30 | 0x2 | Content Info Count |
| 0x32 | 0x6 | Reserved |
Delta History
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Source Patch ID |
| 0x8 | 0x8 | Destination Patch ID |
| 0x10 | 0x4 | Source Version |
| 0x14 | 0x4 | Destination Version |
| 0x18 | 0x8 | Download Size |
| 0x20 | 0x8 | Reserved |
Delta Header
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Source Patch ID |
| 0x8 | 8 | Destination Patch ID |
| 0x10 | 0x4 | Source Version |
| 0x14 | 0x4 | Destination Version |
| 0x18 | 0x2 | Fragment Set Count |
| 0x1A | 0x6 | Reserved |
| 0x20 | 0x2 | Content Info Count |
| 0x22 | 0x6 | Reserved |
Fragment Set
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x10 | Source Content ID |
| 0x10 | 0x10 | Destination Content ID |
| 0x20 | 0x6 | Source Size |
| 0x26 | 0x6 | Destination Size |
| 0x2C | 0x2 | Fragment Indicator Count |
| 0x2E | 0x1 | Fragment Target Content Type (0=Meta, 1=Program, 2=Data, 3=Control, 4=HtmlDocument, 5=LegalInformation, 6=DeltaFragment) |
| 0x2F | 0x1 | Update Type (0=ApplyAsDelta, 1=Overwrite, 2=Create) |
| 0x30 | 0x4 | Reserved |
Fragment Indicator
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x2 | Content Info Index |
| 0x2 | 0x2 | Fragment Index |
Delta Extended Data
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x8 | Source Patch ID |
| 0x8 | 0x8 | Destination Patch ID |
| 0x10 | 0x4 | Source Version |
| 0x14 | 0x4 | Destination Version |
| 0x18 | 0x2 | Fragment Set Count |
| 0x1A | 0x6 | Reserved |
| 0x20 | 0x34 * Fragment Set Count | Fragment Sets |
| 0x4 * Fragment Indicator Count (From Fragment Sets) | Fragment Indicators |
Digest
Always found at the end of the file.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x20 | Digest |