Changes

206 bytes added ,  21:46, 31 May 2018
RE'd from GameCardWriter
Line 1: Line 1: −
=Header=
+
= Header =
The header is 0x200-bytes, at Gamecard+0.
+
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 - 0x200.
+
| RSA-2048 PKCS #1 signature over the XCI header (data from 0x100 to 0x200)
 
|-
 
|-
 
| 0x100
 
| 0x100
Line 18: Line 18:  
| 0x104
 
| 0x104
 
| 0x4
 
| 0x4
| Offset of Secure partition (Size of non-secure data?), in Media Units (0x200 bytes for switch gamecarts)
+
| Write Size (size of non-secure data in Media Units which are 0x200 bytes)
 
|-
 
|-
 
| 0x108
 
| 0x108
Line 30: Line 30:  
| 0x10D
 
| 0x10D
 
| 0x1
 
| 0x1
| Cartridge Size. 0xF8 = 2 GB, 0xF0 = 4 GB, 0xE0 = 8 GB, 0xE1 = 16 GB, 0xE2 = 32 GB
+
| 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 of the Gamecart, in Media Units
+
| Gamecard Size (in Media Units which are 0x200 bytes)
 
|-
 
|-
 
| 0x120
 
| 0x120
 
| 0x10
 
| 0x10
| ?
+
| Gamecard Initial Data IV (reversed)
 
|-
 
|-
 
| 0x130
 
| 0x130
 
| 0x8
 
| 0x8
| Offset of HFS0 FS partition
+
| HFS0 partition offset
 
|-
 
|-
 
| 0x138
 
| 0x138
| 8
+
| 0x8
| HFS0 Header size
+
| HFS0 header size
 
|-
 
|-
 
| 0x140
 
| 0x140
Line 82: Line 82:  
| 0x18C
 
| 0x18C
 
| 0x4
 
| 0x4
| Offset of Secure partition (Size of non-secure data?), in Media Units, again.
+
| Duplicate Write Size (size of non-secure data in Media Units which are 0x200 bytes)
 
|-
 
|-
 
| 0x190
 
| 0x190
 
| 0x70
 
| 0x70
| Encrypted data/hashes of some kind
+
| 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 gamecarts contain three partitions: "update", "normal", and "secure".
+
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.