CNMT: Difference between revisions

Shchmue (talk | contribs)
Meta records: broken link
Liam (talk | contribs)
Update header and extended header - next is extended data
Line 12: Line 12:
* "Delta_{lower-case hex titleID}.cnmt"
* "Delta_{lower-case hex titleID}.cnmt"


It starts with a header:
== Header ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 20: Line 20:
|-
|-
| 0x0
| 0x0
| 8
| 0x8
| Title ID
| Title ID
|-
|-
| 0x8
| 0x8
| 4
| 0x4
| u32 [[Title_list|title-version]]
| [[Title_list|Version]]
|-
|-
| 0xC
| 0xC
| 1
| 0x1
| Type (see [[NCM_services#Title_Types|Title Types]])
| [[NCM_services#Title_Types|Meta Type]]
|-
|-
| 0xD
| 0xD
| 1
| 0x1
|
| Unused
|-
|-
| 0xE
| 0xE
| 2
| 0x2
| Offset to table relative to the end of this 0x20-byte header.
| Extended Header Size
|-
|-
| 0x10
| 0x10
| 2
| 0x2
| Number of content entries
| Content Count
|-
|-
| 0x12
| 0x12
| 2
| 0x2
| Number of meta entries
| Content Meta Count
|-
|-
| 0x14
| 0x14
| 12
| 0x1
|
| Attributes (0=None, 1=IncludesExFatDriver, 2=Rebootless)
|-
| 0x15
| 0x3
| Unused
|-
| 0x18
| 0x4
| Required Download System Version
|-
| 0x1C
| 0x4
| Unused
|}
|}


With SystemUpdate, the 4-bytes at offset 0xE are zero, with the entry-count field located at offset 0x12 instead(header size is the same).
== SystemUpdate Extended Header ==
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x4
| Extended Header Size
|}


An optional header can follow, depending on the title type.
== Application Extended Header ==
 
{| class="wikitable" border="1"
At the end of the file following the entries is a 0x20-byte block, presumably a hash.
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x8
| Patch ID
|-
| 0x8
| 0x4
| Required System Version
|}


With Patch-format, there's additional data after the end of the entries specified in the header and before the ending hash.
== Patch Extended Header ==
 
== Application header ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 67: Line 99:
! Description
! Description
|-
|-
| 0x20
| 0x0
| 8
| 0x8
| Patch Title ID
| Application ID
|-
| 0x8
| 0x4
| Required System Version
|-
| 0xC
| 0x4
| Extended Data Size
|-
|-
| 0x28
| 0x10
| 8
| 0x8
| Minimum system version
| Unused
|}
|}


== Patch header ==
== AddOnContent Extended Header ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 83: Line 123:
! Description
! Description
|-
|-
| 0x20
| 0x0
| 8
| 0x8
| Original title ID
| Application ID
|-
| 0x8
| 0x4
| Required Application Version
|-
|-
| 0x28
| 0xC
| 8
| 0x4
| Minimum system version
| Unused
|}
|}


== Add-on content header ==
== Delta Extended Header ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 99: Line 143:
! Description
! Description
|-
|-
| 0x20
| 0x0
| 8
| 0x8
| Application title ID
| Application ID
|-
| 0x8
| 0x4
| Extended Data Size
|-
|-
| 0x28
| 0xC
| 8
| 0x4
| Minimum application version
| Unused
|}
|}


== Content records ==
== Content records ==
Each entry is 0x38 bytes:


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 119: Line 165:
|-
|-
| 0x0
| 0x0
| 32
| 0x20
| Hash
| Hash
|-
|-
| 0x20
| 0x20
| 16
| 0x10
| NcaId [same as first 16-bytes of hash]
| Content ID
|-
|-
| 0x30
| 0x30
| 6
| 0x6
| Size, same as the output from [[NCM_services#GetSizeFromContentId]].
| Size
|-
|-
| 0x36
| 0x36
| 1
| 0x1
| Type (0=Meta, 1=Program, 2=Data, 3=Control, 4=[[Internet_Browser|HtmlDocument]], 5=[[Internet_Browser|LegalInformation]], 6=[[NCA_Format|DeltaFragment]])
| Title Type (0=Meta, 1=Program, 2=Data, 3=Control, 4=[[Internet_Browser|HtmlDocument]], 5=[[Internet_Browser|LegalInformation]], 6=[[NCA_Format|DeltaFragment]])
|-
|-
| 0x37
| 0x37
| 1
| 0x1
|
| Id Offset
|}
|}


== Meta records ==
== Meta records ==
Each entry is 0x10 bytes:


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 150: Line 194:
|-
|-
| 0x0
| 0x0
| 8
| 0x8
| Title ID
| Title ID
|-
|-
| 0x8
| 0x8
| 4
| 0x4
| Title version
| Version
|-
|-
| 0xC
| 0xC
| 1
| 0x1
| Type (see [[NCM_services#Title_Types|Title Types]])
| [[NCM_services#Title_Types|Meta Type]]
|-
|-
| 0xD
| 0xD
| 1
| 0x1
| ? bit0 set = don't install?
| Attributes (0=None, 1=IncludesExFatDriver, 2=Rebootless)
|-
|-
| 0xE
| 0xE
| 2
| 0x2
| Unused?
| Unused
|}
|}