This is the metadata file that ends in ".cnmt{.nca}"
or "meta0.ncd"
. This seems to replace the TMD format.
There's at least 9 different filenames used for ".cnmt":
- "Application_{lower-case hex titleID}.cnmt"
- "Patch_{lower-case hex titleID}.cnmt"
- "AddOnContent_{lower-case hex titleID}.cnmt"
- "SystemUpdate_{hex titleID}.cnmt"
- "SystemData_{lower-case hex titleID}.cnmt"
- "SystemProgram_{lower-case hex titleID}.cnmt"
- "BootImagePackage_{lower-case hex titleID}.cnmt"
- "BootImagePackageSafe_{lower-case hex titleID}.cnmt"
- "Delta_{lower-case hex titleID}.cnmt"
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Title ID
|
0x8
|
0x4
|
Version
|
0xC
|
0x1
|
Meta Type
|
0xD
|
0x1
|
Unused
|
0xE
|
0x2
|
Extended Header Size
|
0x10
|
0x2
|
Content Count
|
0x12
|
0x2
|
Content Meta Count
|
0x14
|
0x1
|
Attributes (0=None, 1=IncludesExFatDriver, 2=Rebootless)
|
0x15
|
0x3
|
Unused
|
0x18
|
0x4
|
Required Download System Version
|
0x1C
|
0x4
|
Unused
|
Offset
|
Size
|
Description
|
0x0
|
0x4
|
Extended Data Size
|
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Patch ID
|
0x8
|
0x4
|
Required System Version
|
0xC
|
0x4
|
Unused
|
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Application ID
|
0x8
|
0x4
|
Required System Version
|
0xC
|
0x4
|
Extended Data Size
|
0x10
|
0x8
|
Unused
|
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Application ID
|
0x8
|
0x4
|
Required Application Version
|
0xC
|
0x4
|
Unused
|
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Application ID
|
0x8
|
0x4
|
Extended Data Size
|
0xC
|
0x4
|
Unused
|
Content Records
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 Records
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Title ID
|
0x8
|
0x4
|
Version
|
0xC
|
0x1
|
Meta Type
|
0xD
|
0x1
|
Attributes (0=None, 1=IncludesExFatDriver, 2=Rebootless)
|
0xE
|
0x2
|
Unused
|
This is used for SystemUpdate, see here: NCM_services#ReadEntryMetaRecords.
SystemUpdate Extended Data
Offset
|
Size
|
Description
|
0x0
|
0x4
|
Version
|
0x4
|
0x4
|
Variation Count
|
0x8
|
0x4
|
Firmware Variation
|
0xC
|
0x1C * Variation Count
|
Unused
|
Patch Extended Data
Offset
|
Size
|
Description
|
0x0
|
0x10
|
Content Meta Record
|
0xC
|
0x1
|
Meta Type
|
0xD
|
0x1
|
Attributes (0=None, 1=IncludesExFatDriver, 2=Rebootless)
|
0xE
|
0x2
|
Unused
|
0x10
|
0x20
|
Digest
|
0x30
|
0x2
|
Content Info Count
|
0x32
|
0x6
|
Unused
|
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
|
Unused
|
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
|
Unused
|
0x20
|
0x2
|
Content Info Count
|
0x22
|
0x6
|
Unused
|
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
|
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
|
Unused
|
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
|
Unused
|
0x20
|
0x34 * Fragment Set Count
|
Fragment Sets
|
|
0x4 * Fragment Indicator Count (Fragment Set)
|
Fragment Indicators
|
Digest
Always found at the end of the file.
Offset
|
Size
|
Description
|
0x0
|
0x20
|
Digest
|