Line 6:
Line 6:
The GameCube and Wii check for these marks on disc boot by checking for null regions. Homebrew discs can therefore identify as Wii discs by nulling out these regions through software, although some software may need modification to avoid warning messages. [[Freeloader]] exploited this to not require a [[drivechip]].
The GameCube and Wii check for these marks on disc boot by checking for null regions. Homebrew discs can therefore identify as Wii discs by nulling out these regions through software, although some software may need modification to avoid warning messages. [[Freeloader]] exploited this to not require a [[drivechip]].
−
XOR Encryption is done using discID and a random seed by the Disc Controller Firmware, Panasonic MN103S
+
XOR Encryption is done using discId and a random seed by the Disc Controller Firmware, Panasonic MN103S and BCA Check by System Controller MN102H
−
== Random Seed List ==
+
== Data Frame ==
−
0 0x0003
+
u32 id; // PSN(Physical Sector Number)
−
8 0x0030
+
u16 ied; // ID Error Detection Code, CRC16
−
1 0x7f00
+
u8 userdata[2048]; // Sector Data
−
9 0x7001
+
u8 cpr_mai[6]; // Copyright Management Information(Not used)
−
2 0x0006
+
u32 edc; // Error Detection Code, CRC32
−
A 0x0060
+
// 2064B
−
3 0x7e00
+
−
B 0x6003
+
== RandomKeys ==
−
4 0x000c
+
0: 3
−
C 0x00c0
+
1: 48
−
5 0x7c00
+
2: 32512
−
D 0x4007
+
3: 28673
−
6 0x0018
+
4: 6
−
E 0x0180
+
5: 69
−
7 0x7800
+
6: 32256
−
F 0x000f
+
7: 24579
+
8: 12
+
9: 192
+
10: 31744
+
11: 16391
+
12: 24
+
13: 384
+
14: 30720
+
15: 15
+
+
== DiscId ==
+
char gamecode[4];
+
char makercode[2];
+
u8 diskNumber;
+
u8 version;
+
u8 streaming;
+
u8 streamingBufferSize;
+
u8 pad[14];
+
u32 gcMagic;
+
u32 rvlMagic;
== Burst Cutting Area ==
== Burst Cutting Area ==
−
// UserData(64 Bytes)
+
// UserData(unencrypted), 64B
u8 optionalInfo[52];
u8 optionalInfo[52];
−
u8 manufacturerCode[2];
+
u8 manufacturer[2];
−
u8 recorderDeviceCode[2];
+
u8 recorderDevice[2];
−
u8 APMRecorderDeviceCode;
+
u8 bcaSerial;
−
u8 discManufactureDate[2];
+
u8 discDate[2];
−
u8 discManufactureTime[2];
+
u8 discTime[2];
u8 discNumber[3];
u8 discNumber[3];
−
// KeyData(16 Bytes)
+
// SecureData(unencrypted), 12B
−
u8 bcakey[8];
+
u8 key[8];
−
u8 bcaSerial[8];
+
u8 id[4];
−
// Encrypted(48 Bytes)
+
// AuthenticationData(encrypted), 48B
−
u64 psn[6]; //BCA mark positions
+
u64 psn[6]; // 6 sector locations
−
// 188 Total Bytes
+
// 188B
== Disc Physical Format ==
== Disc Physical Format ==
// Leadin Area
// Leadin Area
−
PhysicalFormatInfo m_pfi;
+
PhysicalFormatInfo pfi;
−
DiscManufacturingInfo m_dmi;
+
DiscManufacturingInfo dmi;
PhysicalFormatInfo
PhysicalFormatInfo
Line 69:
Line 88:
u8 discStructure; // The value is fixed on 1.
u8 discStructure; // The value is fixed on 1.
u8 recordedDensity; // The value is fixed on 0.
u8 recordedDensity; // The value is fixed on 0.
−
DataAreaAllocation m_dataAreaAllocation;
+
DataAreaAllocation dataAreaAllocation;
u8 bcaDescriptor; // The value is fixed on 128.
u8 bcaDescriptor; // The value is fixed on 128.
u8 reversed2[1983];
u8 reversed2[1983];
Line 80:
Line 99:
u16 endSector; // 909487
u16 endSector; // 909487
u8 reversed3[3];
u8 reversed3[3];
−
// 12 Bytes
+
// 12B
== "System Area" ==
== "System Area" ==