Sega Saturn CD interface:
20 Pin version:
| Pin | Description | Source | IC Connection |
| 20 | MPU Reset | sat | p17 64337 |
| 19 | GND | ||
| 18 | CD STATUS DATA | cd | p60 64337 |
| 17 | Command DATA | sat | p59 64337 |
| 16 | Output Enable | cd | p63 64337 |
| 15 | Clock | sat | p58 64337 |
| 14 | Start Strobe | cd | p64 64337 |
| 13 | GND | ||
| 12 | 8.3 MHZ Clock | cd | p16 HD4923/p15 64337 |
| 11 | GND | ||
| 10 | DATA 16 bit audio endian swapped without subcode data | cd | p19 HD4923 |
| 9 | Clock | cd | p20 HD4923 |
| 8 | L/R | cd | p21 HD4923 |
| 7 | GND | ||
| 6 | ??? parity error | cd? | p26 HD4923 |
| 5 | MPX L/R multiplex strobe | cd | p29 HD4923 |
| 4 | CKX 2.12 MHZ | cd | p27 HD4923 |
| 3 | DAS (data) | cd | p28 HD4923 |
| 2 | GND | ||
| 1 | LED Activity light | cd | p48 64337 |
Transaction
is initiated by the cd drive by asserting Start then asserting
Enable.
Enable is deasserted after each 8 bits are transferred. Enable is
low for ~175us.
During the transaction the cd drive provides its current status
on the "status data" line while command bytes are sent
on the "saturn command data" line.
Data is valid at the rising edge of the clock.
Bytes are sent least significant bit first.

STATUS DATA (LSBit first):
--Dervied mostly of Q subcode data
Current CD operations:
--IDLE: 0x46
--Stopped: 0x12
--seeking: 0x22
--Lid Open:0x80
--Read DATA Sectors: 0x36
--reading audio data: 0x34
--0x30 unkown - error reading audio sector?
--seek security ring: 0xB2/0xB6
| Byte Number | Description |
| 1 | Current CD operation |
| 2 | Q subcode (4 bits CONTROL|4bits Mode) |
| 3 | Track Number |
| 4 | Index Field |
| 5 | MIN |
| 6 | SEC |
| 7 | FRAME |
| 8 | ZERO field (but 0x04 usually) |
| 9 | Absolute MIN |
| 10 | Absolute SEC |
| 11 | Absolute FRAME |
| 12 | parity= NOT(sum of bytes 1-11) |
| 13 | 00 |
Command DATA (LSBit first):
00=NOP
02,09=Seek
03=read TOC
04=Stop DISC
06=read data at LBA
--if lba=0 and byte 10=0 then resume play at current offset
08=stop pending commands (pause)
0A=scan forward audio cd
0B=scan backwards
| Byte number | Description |
| 1 | command |
| 2 | LBA-MSB |
| 3 | LBA |
| 4 | LBA-LSB |
| 5 | 00 |
| 6 | 00 |
| 7 | 00 |
| 8 | 00 |
| 9 | 00 |
| 10 | 00 |
| 11 | 00=NOP, 02=command |
| 12 | parity= NOT(sum of bytes 1-11) |
| 13 | 00 |
Timing Diagrams for audio and
sector data:



MISC INFO:
raw modchip data with subcode
audio part of modchip data only
raw captured sector data during real disc
authenticate
text file with modchip command/status log and notes
homebrew modchip:
modchip
schematics
MODCHIP
VHDL
CD_emulator/modchip
pics,2
sega cd patent describes how the security protection works and
how the logo is printed using sector data
security ring data(as generated by the modchip):
0000: 00 FF FF FF-FF FF FF
FF-FF FF FF 00-71 82 02 62 ............q..b
0010: 00 28 28 1E-80 08 48 06-A0 66 A0 66-A8 59 A8 59
.((...H..f.f.Y.Y
0020: A8 59 A8 59-A8 59 A8 59-A8 59 A8 59-A8 59 A8 59
.Y.Y.Y.Y.Y.Y.Y.Y
.... repeats, ends with:
0910: A8 59 A8 59-A8 59 A8
59-A8 59 A8 59-A8 59 A8 59 .Y.Y.Y.Y.Y.Y.Y.Y
0920: A8 59 A8 59-A8 59 A8 59-A8 59 A8 59-72 DD E5 99
.Y.Y.Y.Y.Y.Yr...
The security ring above is how it appears when it comes off the
disc or modchip.
Bytes 12 thru 2352 of a sector in mode 1,2 etc data is
scrambled(xor) with LFSR, so to record your own security like the
above you need to
XOR
it before you write it to your ISO or bin/cue file or whatever.
A
dump of real security ring data.(0x59 is background data, 0xA8 is logo data, check
ecma-130.pdf for efm bit patterns)
F/B sync byte
start of sector=40 C0 C0 C0 C0 C0
rest of sector=00 80 80 80 80 80
Sub code byte:
same 8 bit pattern is repeated for 1 frame : starts at R1 and
wraps around into next frame R0
so you should only see patterns that are multiple of 6
(Appears as though the saturn ignores all F/Bsync and subcode
data,since that info is provided in the status data)
example subcode bytes:
00F0: 40 40 40 00-00 00 00
00-00 40 40 40-40 40 40 40 @@@......@@@@@@@
0100: 40 40 40 40-40 40 40 40-40 40 40 00-00 00 00 00
@@@@@@@@@@@.....
0110: 00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00
................
0120: 00 00 00 40-40 40 40 40-40 9F 9F 9F-9F 9F 9F FD
...@@@@@@.......
0130: FD FD FD FD-FD 00 00 00-00 00 00 40-40 40 40 40
...........@@@@@
0140: 40 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00
@...............
21 Pin version (unconfirmed):
| Pin | Description | Source | IC Connection |
| 21 | 8mhz clock | ||
| 20 | GND | ||
| 19 | CD STATUS DATA | ||
| 18 | Command DATA | ||
| 17 | Output Enable | ||
| 16 | Start Strobe | ||
| 15 | Clock | ||
| 14 | GND | ||
| 13 | |||
| 12 | |||
| 11 | |||
| 10 | GND | ||
| 9 | MPX L/R multiplex strobe | ||
| 8 | Clock | ||
| 7 | DAS (data) | ||
| 6 | GND | ||
| 5 | |||
| 4 | |||
| 3 | LED activity light | ||
| 2 | |||
| 1 |