CD drive
The part that fails before everything else in CD systems. Made of a control board and an optical pickup.
The NeoGeo CD top-loading model drive was made by Sony. The CDZ one was made by Sharp ?
The control board has:
- A 4-bit mask ROM MCU (Sony CXP5084), taking care of operation sequencing and communication with the NeoGeo.
- A DSP (Sony CXD2500) to process analog data from the pickup.
- A servo controler (Sony CXA1372) to drive the pickup coils for tracking and focus.
- A spindle, sled (and tray) motor driver.
Connections
Some say the protocol was standard for the time, but clear information is hard to find. This was guessed from the system ROM disassembly, Sega MegaCD documents and a logic analyzer.
Top-loading model
Connector pinout, directions are from CDD (CD Drive) to CDC (CD Controller):
Pin # | Name | Type | Direction | Description |
1 | CDCK | Clock | Output | Communication clock to CDC |
2 | ? | ? | ? | High ? |
3 | /IRQ | Signal | Output | Asks the CDC for a data exchange (low pulse at ~64Hz) |
4 | ? | ? | ? | High ? |
5 | HOCK | Clock | Input | Communication clock from CDC |
6 | D0~3 | Data | Both | 4-bit command/status data bus |
7 | ||||
8 | ||||
9 | ||||
10 | ? | ? | ? | ? |
11 | BCLK? | Clock | Output | Serial bit clock, should be 44100 * 32 = 1.4112MHz |
12 | SDATA | Data | Output | Serial data |
13 | LRCK | Signal | Output | I2S word clock, should be 44100Hz. Audio L/R switch for the DAC. |
14 | D/M ? | Signal | Output | Data/Music. Low during music playback ? |
15 | GND | Power | - | Ground |
16 | 5V | Power | - | +5V for logic |
17 | 9V | Power | - | +9V for motors and coils |
18 | GND | Power | - | Ground |
Missing: /RESET, C2PO, and 16MHz.
Front-loading model
Connector pinout, directions are from CDD (CD Drive) to CDC (CD Controller):
Pin # | Name | Type | Direction | Description |
1 | SGND | Power | - | Ground |
2 | SVCC | Power | - | |
3 | VCC | Power | - | |
4 | WFCK | Clock | Output | Write Frame Clock |
5 | GND | Power | - | Ground |
6 | SCOR | Pulse | Output | Subcode sync |
7 | MUTE | ? | ||
8 | SBSO | Data | Output | Subcode data |
9 | EXCK | Clock | Input | Subcode clock |
10 | EMP | ? | ? | EMPty ? |
11 | DOUT | Data | Output | ? |
12 | 6MHz | Clock | ? | ? |
13 | LRCK | Clock | Output | DATA L or R channel (44100Hz) |
14 | DATA | Data | ? | Data stream |
15 | BCLK | Clock | Output | DATA bit clock (44100 * 24 * 2 = 2.12MHz) |
16 | C2PO | Data | Output | Error flag |
17 | DB0~3 | Data | Both | 4-bit command/status data bus |
18 | ||||
19 | ||||
20 | ||||
21 | HOCK | Clock | Input | Communication clock from CDC |
22 | RESET | Pulse | Input | The name says it all |
23 | /IRQ | Signal | Output | Asks the CDC for a data exchange |
24 | L-MUTE | ? | ||
25 | CDCK | Clock | Output | Communication clock to CDC |
Communication
CDD to CDC communication uses a special protocol handled by the system ROM. NEO-MGA provides the I/Os through registers REG_CDDCTRL, REG_CDDINPUT, REG_CDDOUTPUT.
- The CDD regularly (~64Hz not 75) sends a low pulse on its /IRQ output to initiate a data exchange.
- HOCK goes low, indicating that the CDC aknowledges the request. The 4-bit bus direction is set to CDD to CDC.
- CDCK goes low, indicating that the CDD is starting to send its status data (A).
- HOCK goes high and the CDC reads the status data (A).
- CDCK returns high.
- HOCK returns low.
- CDCK goes low again, the B word is ready.
- The cycle continues on for 10 words...
(The delay here is not necessary, it is seen on the NeoGeo CD because of the system ROM preparing stuff).
- HOCK goes low and the 4-bit bus direction is reversed (CDC to CDD). The first command word is set (K).
- CDCK goes low, indicating that the CDD has read the data (A).
- HOCK returns high.
- CDCK returns high.
- HOCK goes low again, the B word is ready.
- The cycle continues on for 10 words...
Status data (green)
- A: Status
- 0=Stop mode
- 1=Playing data or music
- 2=Seeking
- 4=Paused
- 5=Tray opened
- 6=Comm. checksum error
- 7=Command error
- 8=Function error (mech/laser ?)
- 9=Reading TOC
- 10=Sled moving
- 11=Couldn't focus, no disk
- 12=Sled at edge, end of disk
- 14=Tray moving
- 15=In test mode
- B: Status
- C: Minutes high digit
- D: Minutes low digit
- E: Seconds high digit
- F: Seconds low digit
- G: Frames high digit
- H: Frames low digit
- I: Extension
- J: Checksum (see below)
Command data (red)
- K: Command
- L~S: Depends on command (see below)
- T: Checksum (see below)
Checksum
The checksum digit is the sum of all 9 previous digits, + 5, XOR 15, modulo 15: ((sum + 5) ^ 0xF) & 0xF.
Commands
See CD drive commands.
Adjustment pots
To do !