GameCube Optical Disc
From WiiLi
The GameCube Optical Disc is a custom 8mm disc created for Nintendo by Matsushita. It is compatible with the Nintendo GameCube and the Wii. It uses MiniDVD technology which reads at a constant angular velocity (CAV) from edge to center. The capacity of the disc is 1.5 GB. The Wii Optical Disc, for comparison, has 4.7 GB of space.
Source: Wikipedia [1]
Contents |
[edit] Wii Compatibility
The GameCube discs are fully compatible with the Wii, even the Action Replay disc. Since both the GameCube and the Wii use similar technologies, most of the GameCube technologies are assumed to be compatible.
[edit] Disc Structure
Source: gc-linux.org
Total capacity of disc data is 1,459,978,240 bytes (1.5 GB approximately). That's exactly 712,880 DVD raw sectors (each 2048 bytes).
| start | end | size | Description |
|---|---|---|---|
| 0x00000000 | 0x0440 | Disk header ("boot.bin") | |
| 0x00000440 | 0x2000 | Disk header Information ("bi2.bin") | |
| 0x00002440 | (0x2000 ?) | Apploader ("appldr.bin") FST ('fst.bin') |
[edit] Disk Header
| start | end | size | Description |
|---|---|---|---|
| 0x0000 | 0x0003 | 0x0004 | Game Code 1 Console ID |
| 0x0004 | 0x0005 | 0x0002 | Maker Code |
| 0x0006 | 0x0001 | Disk ID | |
| 0x0007 | 0x0001 | Version | |
| 0x0008 | 0x0001 | Audio Streaming | |
| 0x0009 | 0x0001 | Stream Buffer Size | |
| 0x000a | 0x001b | 0x0012 | unused (zeros) |
| 0x001c | 0x001f | 0x0004 | DVD Magic Word (0xc2339f3d) |
| 0x0020 | 0x03ff | 0x03e0 | Game Name |
| 0x0400 | 0x0403 | 0x0004 | offset of debug monitor (dh.bin) ? |
| 0x0404 | 0x0407 | 0x0004 | addr (?) to load debug monitor ? |
| 0x0408 | 0x041f | 0x0018 | unused (zeros) |
| 0x0420 | 0x0423 | 0x0004 | offset of main executable DOL (bootfile) |
| 0x0424 | 0x0427 | 0x0004 | offset of the FST ("fst.bin") |
| 0x0428 | 0x042B | 0x0004 | size of FST |
| 0x042C | 0x042F | 0x0004 | maximum size of FST (usually its same as FST size) (*) |
| 0x0430 | 0x0433 | 0x0004 | user position (?) |
| 0x0434 | 0x0437 | 0x0004 | user length (?) |
| 0x0438 | 0x043b | 0x0004 | (?) |
| 0x043c | 0x043f | 0x0004 | unused (zeros) |
(*) multiple DVDs must use it, to properly reside all FSTs.
[edit] Disk Header Information
This is loaded to the address in 0x800000f4 when a disc is initialized by the IPL
| offset | size | Description |
|---|---|---|
| 0x0000 | 4 | Debug-monitor Size |
| 0x0004 | 4 | Simulated Memory Size |
| 0x0008 | 4 | Argument offset |
| 0x000c | 4 | Debug flag |
| 0x0010 | 4 | Track Location |
| 0x0014 | 4 | Track size |
| 0x0018 | 4 | Countrycode |
| 0x001c | 4 | ? |
[edit] Apploader
| offset | end | size | Description |
|---|---|---|---|
| 0x0000 | 0x0009 | Date (version) of the apploader in ASCII | |
| 0x000A | 0x000F | padding (0) | |
| 0x0010 | 0x0013 | 4 | Apploader entrypoint |
| 0x0014 | 0x0017 | 4 | size of the apploader (32 bit) (usually 0x2000) |
| 0x0018 | 0x001B | 4 | trailer size |
| 0x0020 | Apploader code (loaded to 0x81200000 in RAM) |
[edit] Format of the FST
| start | end | size | Description |
|---|---|---|---|
| 0x00 | 0x0c | 0x0c | Root Directory Entry |
| 0x0c | ... | 0x0c | more File- or Directory Entries |
| ... | ... | ... | String table |
[edit] Format of a File Entry
start end size Description 0x00 1 flags; 0: file 1: directory 0x01 3 filename, offset into string table 0x04 4 file_offset or parent_offset (dir) 0x08 4 file_length or num_entries (root) or next_offset (dir)
[edit] Links
- Understand Gamecube/ Wii disc: http://www.ingenieria-inversa.cl/?lp_lang_pref=en


