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".
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
|
Offset
|
Size
|
Description
|
0x0
|
0x4
|
Extended Data Size
|
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Patch ID
|
0x8
|
0x4
|
Required System Version
|
0xC
|
0x4
|
Required Application Version
|
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Application ID
|
0x8
|
0x4
|
Required System Version
|
0xC
|
0x4
|
Extended Data Size
|
0x10
|
0x8
|
Reserved
|
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Application ID
|
0x8
|
0x4
|
Required Application Version
|
0xC
|
0x4
|
Reserved
|
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
|
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
|
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:
If the Version field is 2, the format is:
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
|
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
|
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
|