NCSD: Difference between revisions
→Development Card Info Header Extension: ID1 is unobtainable from userland |
→InitialData: Fix struct being too large caused by having redundant data |
||
(One intermediate revision by one other user not shown) | |||
Line 235: | Line 235: | ||
| 0xCD6 | | 0xCD6 | ||
| Reserved | | Reserved | ||
|- | |||
| 0x1000 | |||
| 0x200 | |||
| InitialData | |||
|} | |||
=== InitialData === | |||
This data is returned by [[Gamecards|16-byte cartridge command]] 0x82. | |||
{| class="wikitable" border="1" | |||
|- | |||
! OFFSET | |||
! SIZE | |||
! DESCRIPTION | |||
|- | |||
| 0x00 | |||
| 0x10 | |||
| Seed (keyY used to decrypt the title key - keyX is keyslot 0x3B for production cards, or a key of all zeroes for development cards), consisting of the title ID (little-endian) followed by reserved data (normally all-zero) | |||
|- | |||
| 0x10 | |||
| 0x10 | |||
| TitleKey (AES-CCM encrypted) | |||
|- | |||
| 0x20 | |||
| 0x10 | |||
| AES-CCM MAC | |||
|- | |||
| 0x30 | |||
| 0xC | |||
| AES-CCM nonce | |||
|- | |||
| 0x3C | |||
| 0xC4 | |||
| Reserved (normally all-zero) | |||
|- | |||
| 0x100 | |||
| 0x100 | |||
| NcchHeader (copy of the first NCCH header, excluding the RSA signature) | |||
|} | |} | ||
Line 243: | Line 282: | ||
! SIZE | ! SIZE | ||
! DESCRIPTION | ! DESCRIPTION | ||
|- | |- | ||
| 0x1200 | | 0x1200 | ||
Line 297: | Line 332: | ||
Some dumping tools, notably GodMode9 as of 2024-05-26, erroneously always write 0x00000000 into the position of the Cartridge ID2. This is presumably because the cartridge ID2 is always zero for retail carts. | Some dumping tools, notably GodMode9 as of 2024-05-26, erroneously always write 0x00000000 into the position of the Cartridge ID2. This is presumably because the cartridge ID2 is always zero for retail carts. | ||
=== TestData === | === TestData === |