CNMT: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
| mNo edit summary |  Fix SystemUpdate Extended Data, change some names | ||
| Line 1: | Line 1: | ||
| This is the metadata file that ends in <code>".cnmt{.nca}"</code> or <code>"meta0.ncd"</code>. This seems to replace the TMD format. | This is the metadata file that ends in <code>".cnmt{.nca}"</code> or <code>"meta0.ncd"</code>. This seems to replace the TMD format. | ||
| The official name for CNMT is "PackagedContentMeta". | |||
| == Header == | == Header == | ||
| Line 21: | Line 12: | ||
| | 0x0 | | 0x0 | ||
| | 0x8 | | 0x8 | ||
| |  | | Program ID | ||
| |- | |- | ||
| | 0x8 | | 0x8 | ||
| | 0x4 | | 0x4 | ||
| |  | | Version | ||
| |- | |- | ||
| | 0xC | | 0xC | ||
| | 0x1 | | 0x1 | ||
| | [[NCM_services#Title_Types|Meta Type]] | | [[NCM_services#Title_Types|Content Meta Type]] | ||
| |- | |- | ||
| | 0xD | | 0xD | ||
| | 0x1 | | 0x1 | ||
| |  | | Reserved | ||
| |- | |- | ||
| | 0xE | | 0xE | ||
| Line 49: | Line 40: | ||
| | 0x14 | | 0x14 | ||
| | 0x1 | | 0x1 | ||
| | Attributes (0=None, 1=IncludesExFatDriver, 2=Rebootless) | | Content Meta Attributes (0=None, 1=IncludesExFatDriver, 2=Rebootless) | ||
| |- | |- | ||
| | 0x15 | | 0x15 | ||
| | 0x3 | | 0x3 | ||
| |  | | Reserved | ||
| |- | |- | ||
| | 0x18 | | 0x18 | ||
| Line 61: | Line 52: | ||
| | 0x1C | | 0x1C | ||
| | 0x4 | | 0x4 | ||
| |  | | Reserved | ||
| |} | |} | ||
| Line 93: | Line 84: | ||
| | 0xC | | 0xC | ||
| | 0x4 | | 0x4 | ||
| |  | | Required Application Version | ||
| |} | |} | ||
| Line 117: | Line 108: | ||
| | 0x10 | | 0x10 | ||
| | 0x8 | | 0x8 | ||
| |  | | Reserved | ||
| |} | |} | ||
| Line 137: | Line 128: | ||
| | 0xC | | 0xC | ||
| | 0x4 | | 0x4 | ||
| |  | | Reserved | ||
| |} | |} | ||
| Line 157: | Line 148: | ||
| | 0xC | | 0xC | ||
| | 0x4 | | 0x4 | ||
| |  | | Reserved | ||
| |} | |} | ||
| == Content  | == Packaged Content Info == | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| Line 186: | Line 177: | ||
| | 0x37 | | 0x37 | ||
| | 0x1 | | 0x1 | ||
| |  | | ID Offset | ||
| |} | |} | ||
| == Content Meta  | == Content Meta Info == | ||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| Line 199: | Line 190: | ||
| | 0x0 | | 0x0 | ||
| | 0x8 | | 0x8 | ||
| |  | | Program ID | ||
| |- | |- | ||
| | 0x8 | | 0x8 | ||
| Line 207: | Line 198: | ||
| | 0xC | | 0xC | ||
| | 0x1 | | 0x1 | ||
| | [[NCM_services#Title_Types|Meta Type]] | | [[NCM_services#Title_Types|Content Meta Type]] | ||
| |- | |- | ||
| | 0xD | | 0xD | ||
| | 0x1 | | 0x1 | ||
| | Attributes (0=None, 1=IncludesExFatDriver, 2=Rebootless) | | Content Meta Attributes (0=None, 1=IncludesExFatDriver, 2=Rebootless) | ||
| |- | |- | ||
| | 0xE | | 0xE | ||
| | 0x2 | | 0x2 | ||
| |  | | Reserved | ||
| |} | |} | ||
| Line 222: | Line 213: | ||
| == SystemUpdate Extended Data == | == SystemUpdate Extended Data == | ||
| If the Version field is 1, the format is: | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Offset | |||
| ! Size | |||
| ! Description | |||
| |- | |||
| | 0x0 | |||
| | 0x4 | |||
| | Version | |||
| |- | |||
| | 0x4 | |||
| | 0x4 | |||
| | Variation Count | |||
| |- | |||
| | 0x8 | |||
| | 0x20 * Variation Count | |||
| | [[CNMT#Firmware_Variation_Info_(Version_1)|Firmware Variation Info (Version 1)]] | |||
| |} | |||
| If the Version field is 2, the format is: | |||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| |- | |- | ||
| Line 237: | Line 249: | ||
| |- | |- | ||
| | 0x8 | | 0x8 | ||
| | 0x4 * Variation Count | |||
| | Firmware Variation ID | |||
| |- | |||
| |  | |||
| | 0x20 * Variation Count | |||
| | [[CNMT#Firmware_Variation_Info_(Version_2)|Firmware Variation Info (Version 2)]] | |||
| |- | |||
| |  | |||
| | 0x10 * Meta Count (From [[CNMT#Firmware_Variation_Info_(Version_2)|Firmware Variation Info (Version 2)]]) | |||
| | [[CNMT#Content_Meta_Info|Content Meta Info]] (If Refer To Base is True) | |||
| |} | |||
| === Firmware Variation Info (Version 1) === | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Offset | |||
| ! Size | |||
| ! Description | |||
| |- | |||
| | 0x0 | |||
| | 0x4 | | 0x4 | ||
| | Firmware Variation | | Firmware Variation ID | ||
| |-   | |- | ||
| |  | | 0x4 | ||
| | 0x1C  | | 0x1C | ||
| |  | | Reserved | ||
| |} | |||
| === Firmware Variation Info (Version 2) === | |||
| {| class="wikitable" border="1" | |||
| |- | |||
| ! Offset | |||
| ! Size | |||
| ! Description | |||
| |- | |||
| | 0x0 | |||
| | 0x1 | |||
| | Refer To Base (0=False, 1=True) | |||
| |- | |||
| | 0x1 | |||
| | 0x3 | |||
| | Reserved | |||
| |- | |||
| | 0x4 | |||
| | 0x4 | |||
| | Meta Count | |||
| |- | |||
| | 0x8 | |||
| | 0x18 | |||
| | Reserved | |||
| |} | |} | ||
| Line 279: | Line 337: | ||
| | 0x18 | | 0x18 | ||
| | 0x4 | | 0x4 | ||
| |  | | Reserved | ||
| |- | |- | ||
| | 0x1C | | 0x1C | ||
| Line 299: | Line 357: | ||
| |   | |   | ||
| | 0x18 * History Content Count | | 0x18 * History Content Count | ||
| | [[CNMT# | | [[CNMT#Packaged_Content_Info|History Content Info]] (Packaged Content Info without the Hash entry) | ||
| |- | |- | ||
| |   | |   | ||
| | 0x38 * Delta Content Count | | 0x38 * Delta Content Count | ||
| | [[CNMT# | | [[CNMT#Packaged_Content_Info|Delta Packaged Content Info]] | ||
| |- | |- | ||
| | | | | ||
| | 0x4 * Fragment Indicator Count (Fragment  | | 0x4 * Fragment Indicator Count (From [[CNMT#Fragment_Set|Fragment Sets]]) | ||
| | [[CNMT#Fragment_Indicator|Fragment Indicators]] | | [[CNMT#Fragment_Indicator|Fragment Indicators]] | ||
| |} | |} | ||
| Line 320: | Line 378: | ||
| | 0x0 | | 0x0 | ||
| | 0x10 | | 0x10 | ||
| | Content Meta Key (Slightly different Content Meta Info) | |||
| |- | |- | ||
| | 0x10 | | 0x10 | ||
| Line 344: | Line 390: | ||
| | 0x32 | | 0x32 | ||
| | 0x6 | | 0x6 | ||
| |  | | Reserved | ||
| |} | |} | ||
| Line 377: | Line 423: | ||
| | 0x20 | | 0x20 | ||
| | 0x8 | | 0x8 | ||
| |  | | Reserved | ||
| |} | |} | ||
| Line 410: | Line 456: | ||
| | 0x1A | | 0x1A | ||
| | 0x6 | | 0x6 | ||
| |  | | Reserved | ||
| |- | |- | ||
| | 0x20 | | 0x20 | ||
| Line 418: | Line 464: | ||
| | 0x22 | | 0x22 | ||
| | 0x6 | | 0x6 | ||
| |  | | Reserved | ||
| |} | |} | ||
| Line 451: | Line 497: | ||
| | 0x2E | | 0x2E | ||
| | 0x1 | | 0x1 | ||
| | Content Type (0=Meta, 1=Program, 2=Data, 3=Control, 4=[[Internet_Browser|HtmlDocument]], 5=[[Internet_Browser|LegalInformation]], 6=[[NCA_Format|DeltaFragment]]) | | Fragment Target Content Type (0=Meta, 1=Program, 2=Data, 3=Control, 4=[[Internet_Browser|HtmlDocument]], 5=[[Internet_Browser|LegalInformation]], 6=[[NCA_Format|DeltaFragment]]) | ||
| |- | |- | ||
| | 0x2F | | 0x2F | ||
| Line 459: | Line 505: | ||
| | 0x30 | | 0x30 | ||
| | 0x4 | | 0x4 | ||
| |  | | Reserved | ||
| |} | |} | ||
| Line 509: | Line 555: | ||
| | 0x1A | | 0x1A | ||
| | 0x6 | | 0x6 | ||
| |  | | Reserved | ||
| |- | |- | ||
| | 0x20 | | 0x20 | ||
| Line 516: | Line 562: | ||
| |- | |- | ||
| | | | | ||
| | 0x4 * Fragment Indicator Count (Fragment  | | 0x4 * Fragment Indicator Count (From [[CNMT#Fragment_Set|Fragment Sets]]) | ||
| | [[CNMT#Fragment_Indicator|Fragment Indicators]] | | [[CNMT#Fragment_Indicator|Fragment Indicators]] | ||
| |} | |} | ||
Revision as of 17:59, 5 March 2020
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 | Program 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 | 
| 0x20 | 0x10 | Content ID | 
| 0x30 | 0x6 | Size | 
| 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 | Program 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 True) | 
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 |