Changes

3,149 bytes added ,  07:58, 11 January 2016
Added content metadata structure.
Line 5: Line 5:     
The titleID-low for DLC is: ((uniqueID<<8) | DLC_title_index). DLC_title_index starts at zero. Each DLC item is grouped under a DLC_title_index. Usually an application only has one DLC_title_index, but for applications which have a *lot* of DLC there's more than one DLC_title_index(JPN Home Menu for themes for example).
 
The titleID-low for DLC is: ((uniqueID<<8) | DLC_title_index). DLC_title_index starts at zero. Each DLC item is grouped under a DLC_title_index. Usually an application only has one DLC_title_index, but for applications which have a *lot* of DLC there's more than one DLC_title_index(JPN Home Menu for themes for example).
 +
 +
Every DLC title include [[NCCH]] partitions. The first one is always content metadata.
 +
 +
== Content metadata structure ==
 +
The first [[NCCH]] partition of a DLC title. It determines region, language and DLC icons. The ExeFS section of content metadata only contains [[SMDH|icon]] section. The RomFS section contains "icons" directory, MetaDataContentHeader.bin and some ContentInfoArchive file(s).
 +
 +
=== icons directory ===
 +
Contains DLC icons (.icn files).
 +
 +
=== MetaDataContentHeader.bin ===
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
|  0x0
 +
|  0x4
 +
|  Unknown
 +
|-
 +
|  0x4
 +
|  0x4
 +
|  Number of working DLC
 +
|-
 +
|  0x8
 +
|  0x4
 +
|  Number of available DLC
 +
|-
 +
|  0xC
 +
|  0x4
 +
|  Company Code
 +
|-
 +
|  0x10
 +
|  0x4
 +
|  Magic number, always 0xDEADBEEF (little endian)
 +
|-
 +
|  0x14
 +
|  0x4 * 7
 +
|  Region data (see below)
 +
|-
 +
|  0x30
 +
|  0x4
 +
|  Number of ContentInfoArchive file (n)
 +
|-
 +
|  0x34
 +
|  0x4 * n
 +
|  Region data of ContentInfoArchive files (see below).
 +
|}
 +
 +
==== Region data ====
 +
The first, the second and the third record of the main region data is often assigned to JPN, USA, EUR region respectively.
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
|  0x0
 +
|  0x2
 +
|  Region ID
 +
|-
 +
|  0x2
 +
|  0x2
 +
|  Language ID
 +
|}
 +
 +
==== Region IDs ====
 +
{| class="wikitable" border="1"
 +
|-
 +
!  ID
 +
!  Region code
 +
!  Region name
 +
|-
 +
|  0x0
 +
|  JPN
 +
|  Japan
 +
|-
 +
|  0x1
 +
|  USA
 +
|  North America
 +
|-
 +
|  0x2
 +
|  EUR
 +
|  Europe
 +
|}
 +
 +
==== Language IDs ====
 +
{| class="wikitable" border="1"
 +
|-
 +
!  ID
 +
!  Language code
 +
!  Language
 +
|-
 +
|  0x0
 +
|  ja
 +
|  Japanese
 +
|-
 +
|  0x1
 +
|  en
 +
|  English
 +
|-
 +
|  0x2
 +
|  fr
 +
|  French
 +
|-
 +
|  0x3
 +
|  de
 +
|  German
 +
|-
 +
|  0x4
 +
|  it
 +
|  Italian
 +
|-
 +
|  0x5
 +
|  es
 +
|  Spanish
 +
|-
 +
|  0x7
 +
|  ko
 +
|  Korean
 +
|-
 +
|  0x8
 +
|  nl
 +
|  Dutch
 +
|-
 +
|  0x9
 +
|  pt
 +
|  Portuguese
 +
|-
 +
|  0xA
 +
|  ru
 +
|  Russian
 +
|}
 +
 +
==== Example ====
 +
MetaDataContentHeader.bin in Fire Emblem Awakening DLC (EUR):
 +
 +
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
 +
 +
00000000  01 00 00 00 19 00 00 00 19 00 00 00 30 00 30 00  ............0.0.
 +
00000010  EF BE AD DE FF FF FF FF FF FF FF FF 02 00 01 00  ï¾.Þÿÿÿÿÿÿÿÿ....
 +
00000020  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
 +
00000030  08 00 00 00 02 00 01 00 02 00 05 00 02 00 02 00  ................
 +
00000040  02 00 03 00 02 00 04 00 02 00 08 00 02 00 09 00  ................
 +
00000050  02 00 0A 00                                      ....
 +
 +
=== ContentInfoArchive files ===
 +
The name of these files follow this format: ContentInfoArchive_<region code>_<language code>.bin (<region code> and <language code> are determined in MetaDataContentHeader.bin)
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
|  0x0
 +
|  0x4
 +
|  Unknown
 +
|-
 +
|  0x4
 +
|  0x4
 +
|  Number of DLC (n)
 +
|-
 +
|  0x8
 +
|  0x88 * n
 +
|  DLC data (see below)
 +
|}
 +
 +
==== DLC data ====
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
|  0x0
 +
|  0x40
 +
|  Content title (UTF-8)
 +
|-
 +
|  0x40
 +
|  0x80
 +
|  Content description (UTF-8)
 +
|-
 +
|  0xC0
 +
|  0x4
 +
|  Content ID
 +
|-
 +
|  0xC4
 +
|  0x4
 +
|  Unknown
 +
|}
    
== List ==
 
== List ==
Line 124: Line 316:  
| v0
 
| v0
 
|}
 
|}
 +
 +
== Tools ==
 +
* [https://github.com/Gericom/EveryFileExplorer EveryFileExplorer] Open .icn files.