XCI: Difference between revisions
Pineapples61 (talk | contribs) m →Header |
RE'd from GameCardWriter |
||
Line 1: | Line 1: | ||
=Header= | = Header = | ||
The header is 0x200-bytes | The header is 0x200-bytes at offset 0 in the Gamecard. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 10: | Line 10: | ||
| 0x0 | | 0x0 | ||
| 0x100 | | 0x100 | ||
| RSA-2048 PKCS #1 signature over the data from 0x100 | | RSA-2048 PKCS #1 signature over the XCI header (data from 0x100 to 0x200) | ||
|- | |- | ||
| 0x100 | | 0x100 | ||
Line 18: | Line 18: | ||
| 0x104 | | 0x104 | ||
| 0x4 | | 0x4 | ||
| | | Write Size (size of non-secure data in Media Units which are 0x200 bytes) | ||
|- | |- | ||
| 0x108 | | 0x108 | ||
Line 30: | Line 30: | ||
| 0x10D | | 0x10D | ||
| 0x1 | | 0x1 | ||
| | | Gamecard Type (0xFA = 1GB, 0xF8 = 2GB, 0xF0 = 4GB, 0xE0 = 8GB, 0xE1 = 16GB, 0xE2 = 32GB) | ||
|- | |- | ||
| 0x10E | | 0x10E | ||
Line 38: | Line 38: | ||
| 0x10F | | 0x10F | ||
| 0x1 | | 0x1 | ||
| | | Gamecard Options (bit0 = AutoBoot, bit1 = HistoryErase) | ||
|- | |- | ||
| 0x110 | | 0x110 | ||
Line 46: | Line 46: | ||
| 0x118 | | 0x118 | ||
| 0x8 | | 0x8 | ||
| Size | | Gamecard Size (in Media Units which are 0x200 bytes) | ||
|- | |- | ||
| 0x120 | | 0x120 | ||
| 0x10 | | 0x10 | ||
| | | Gamecard Initial Data IV (reversed) | ||
|- | |- | ||
| 0x130 | | 0x130 | ||
| 0x8 | | 0x8 | ||
| | | HFS0 partition offset | ||
|- | |- | ||
| 0x138 | | 0x138 | ||
| | | 0x8 | ||
| HFS0 | | HFS0 header size | ||
|- | |- | ||
| 0x140 | | 0x140 | ||
Line 82: | Line 82: | ||
| 0x18C | | 0x18C | ||
| 0x4 | | 0x4 | ||
| | | Duplicate Write Size (size of non-secure data in Media Units which are 0x200 bytes) | ||
|- | |- | ||
| 0x190 | | 0x190 | ||
| 0x70 | | 0x70 | ||
| | | Gamecard Initial Data (AES-128-CBC encrypted) | ||
|} | |} | ||
= Cert = | = Cert = | ||
This is for the CERT, located at Gamecard + 0x7000 (always?). This matches exactly the output from fsp-srv IDeviceOperator cmd 206 "GetGameCardDeviceCertificate". | This is for the CERT, located at Gamecard + 0x7000 (always?). This matches exactly the output from fsp-srv IDeviceOperator cmd 206 "GetGameCardDeviceCertificate". | ||
Line 191: | Line 190: | ||
The string table is 00-padded to align the start of raw filedata with a sector/media unit boundary (usually?). | The string table is 00-padded to align the start of raw filedata with a sector/media unit boundary (usually?). | ||
=Typical Cartridge Layout= | = Typical Cartridge Layout = | ||
Observed | Observed gamecards contain three partitions: "update", "normal", and "secure". | ||
The update partition (Gamecard partition 0 for fsp-srv cmd 31) contains .cnmt.nca + .nca files for the entire system update required to play the game. Launch day carts contain a full copy of 1.0 ncas, newer carts contain newer sysupdate NCAs etc. | The update partition (Gamecard partition 0 for fsp-srv cmd 31) contains .cnmt.nca + .nca files for the entire system update required to play the game. Launch day carts contain a full copy of 1.0 ncas, newer carts contain newer sysupdate NCAs etc. | ||
Line 201: | Line 200: | ||
The entire rest of the gamecard after the secure partition ends is all FF padding. | The entire rest of the gamecard after the secure partition ends is all FF padding. | ||
[4.0.0+] The "normal" partition is now empty and a new partition "logo" was added. |