---
The GC motherboard interfaces with the DVD drive assembly through the P9 connector on the motherboard. YAGCD has this info on the pinout.
Code: Select all
pin Signal
1 AISLR (audio bus)
2 5V
3 AISD (audio bus)
4 5V
5 AISCLK (audio bus)
6 5V
7 DIHSTRB
8 5V
9 DIERRB
10 Ground
11 DIBRK
12 DICOVER
13 DIDSTRB
14 DIRSTB
15 DIDIR
16 Ground
17 DID7
18 Ground
19 DID6
20 Ground
21 DID5
22 Ground
23 DID4
24 Ground
25 DID3
26 Ground
27 DID2
28 MONI
29 DID1
30 MONOUT
31 DID0
32 Ground
Pins 11, 28 and 30 need direction / definition
---Pin: Signal
--- Streaming Audio ---
1: AISLR ("Audio: Stereo L/R")
3: AISD ("Audio: Data")
5: AISCLK ("Audio: Clock")
--- Data Communication ---
7: DIHSTRB ("Host Strobe")
13: DIDSTRB ("Device Strobe")
15: DIDIR ("Direction Line": indicates who drives the Data Bus)
17, 19, 21, 23, 25, 27, 29, 31: DID0-7 (8-bit bidirectional Data Bus)
--- Interrupt ---
14: DIRSTB ("Reset": Cube may instruct the DVD drive to "reset")
9: DIERRB ("Error State": indicates drive error to mainboard)
12: DICOVER ("Door/Cover State": indicates door/cover is open, to mainboard)
11 DIBRK
--- Other ---
28 MONI
30 MONOUT
--- Power/Ground ---
2, 4, 6, 8: +5V
10, 16, 18, 20, 22, 24, 26, 32: Ground
Ok, that covers the electrical connections... On to PROTOCOL.
On power-up the Gamecube will raise DRSTB, which starts the DVD processor working. The DVD drive should be reading from DID0-7 in Input mode, and it should also monitor DIHSTRB and DIDIR. (Any time the GC raises DIDIR, it wants the DVD to run the data bus. Any time it drops to Low, the DVD should stop what it's sending, and flip from output to input.)
When the Cube wants to talk to the Drive, it will send a 12-byte transaction, sometime after raising DIHSTRB first. Timing looks something like this: STRB lines are latched on a low->high transition, so as you can see in this chart twelve strobes occur. The drive is safe to raise DIDSTRB after receiving 9 bytes; this indicates to the Cube that the DVD drive wants to talk. Wait for the cube to lift DIDIR ("DVD drives the bus") and drop DIHSTRB ("Cube not requesting write now"), and then the DVD drive may respond.
DVD to GC communication works the same way, but the signals are reversed: DVD drive will strobe DIDSTRB and clock data out on the bidi bus. Drop DIDSTRB if you are out of data to send, or if the Cube raises DIHSTRB or drops DIDIR.
Gamecube will speak to DVD drive at a rate of ~20 MHZ (DIHSTRB rate). The DVD drive typically responds at 13.5 MHZ. Different (slower) rates are OK. The system becomes unstable at ??.??? Mhz, because the DVD drive is sending data too fast for the GC FIFO and it overflows. There is no way to check for this condition.
Those signaling details aside, here are the messages the DVD drive might get from the Gamecube: http://www.gc-forever.com/wiki/index.ph ... DICommands