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
|
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 RecordsContent 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
|
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
|
Unused
|
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 Records (Content Records without the Hash entry)
|
|
0x38 * Delta Content Count
|
Delta Content Records
|
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Title ID
|
0x8
|
0x4
|
Version
|
0xC
|
0x1
|
Title Types
|
0xD
|
0x1
|
Attributes
|
0xE
|
0x2
|
Unused
|
0x10
|
0x20
|
Digest
|
0x30
|
0x2
|
Content Info Count
|
0x32
|
0x6
|
Unused
|
Delta History
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Source Title ID
|
0x8
|
0x8
|
Destination Title ID
|
0x10
|
0x4
|
Source Version
|
0x14
|
0x4
|
Destination Version
|
0x18
|
0x8
|
Download Size
|
0x20
|
0x8
|
Unused
|
Offset
|
Size
|
Description
|
0x0
|
0x8
|
Source Title ID
|
0x8
|
8
|
Destination Title 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
|
Title Types
|
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
|