NACP
Roughly equivalent to non-gfx areas of 3DS SMDH. All strings for language-entries are UTF-8, unlike SMDH which uses UTF-16.
Total size is 0x4000-bytes.
Structure
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x2400 | Language entries |
| 0x2400 | 0xC00 | Normally all-zero? Maybe more language entries? |
| 0x3000 | 0x24 | Zeros? |
| 0x3024 | 0x4 | ? |
| 0x3028 | 0x4 | ? |
| 0x302C | 0x4 | ? |
| 0x3030 | 0x4 | ? |
| 0x3034 | 0x4 | ? |
| 0x3038 | 0x8 | Application titleID |
| 0x3040 | 0x20 | ? |
| 0x3060 | 0x10 | Application version string, encoding unknown. |
| 0x3070 | 0x8 | Base titleID for DLC, set even when DLC is not used. Usually app_titleID+0x1000? |
| 0x3078 | 0x8 | Application titleID |
| 0x3080 | 0x4 | ? |
| 0x3084 | 0x4 | ? |
| 0x3088 | 0x4 | ? |
| 0x308C | 0x24 | Zeros? |
| 0x30B0 | 0x8 | Application titleID |
| 0x30B8 | 0x38 (0x8*0x7) | Array of application titleIDs, normally the same as the above app-titleIDs. Only set for game-updates? |
| 0x30F0 | 0x4 | ? |
| 0x30F4 | 0x4 | ? |
| 0x30F8 | 0x8 | Application titleID. Only set for game-updates? |
| 0x3100 | 0x40 | BCAT passphrase, all-zero when unused. |
| 0x3140 | 0xEC0 | Normally all-zero? |
Language Entry
Total size is 0x300-bytes.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x200 | Application name string |
| 0x200 | 0x100 | Application developer string |
Entry index for each language:
| Entry-index | Icon language filename |
|---|---|
| 0 | "AmericanEnglish" |
| 1 | "BritishEnglish" |
| 2 | "Japanese" |
| 3 | "French" |
| 4 | "German" |
| 5 | "LatinAmericanSpanish" |
| 6 | "Spanish" |
| 7 | "Italian" |
| 8 | "Dutch" |
| 9 | "CanadianFrench" |
| 10 | "Portuguese" |
| 11 | "Russian" |
| 12 | "Korean" |
| 13 | "Taiwanese" |
| 14 | "Chinese" |
Official apps tend to have the language entries' strings set to only English. Some apps don't have certain language entries set at all.