Interface Protocol of SEGA MegaDrive's 6-Button-Controller

Pin Assign (D-SUB9P)
# SignalName |   Explanation (Direction)
   ----------+---------------------------------
    1. D0    | Data         (Controller -> Mainframe)
    2. D1    | Data         (Controller -> Mainframe)
    3. D2    | Data         (Controller -> Mainframe)
    4. D3    | Data         (Controller -> Mainframe)
    5. +5V   | PowerSupply  (Supplied to Controller by Mainframe)
    6. D4    | Data         (Controller -> Mainframe)
    7. Sel   | SelectSignal (Mainframe -> Controller)
    8. GND   | Ground
    9. D5    | Data         (Controller -> Mainframe)

# All signals are TTL compatible.


In Case of 3-Button-Controller Sel D0 D1 D2 D3 D4 D5 Low UP DW LO LO A ST High UP DW LF RG B C # LO --- Always Low # UP --- Up of Cross Key # DW --- Down of Cross Key # LF --- Left of Cross Key # RG --- Right of Cross Key # A ---- Trigger Button A # B ---- Trigger Button B # C ---- Trigger Button C # ST --- Start Button ## Low -> Pressed , High -> Not Pressed
Data Aquisition Sequence of 6-Button-Controller Sel D0 D1 D2 D3 D4 D5 Low UP DW LO LO A ST High UP DW LF RG B C Low UP DW LO LO A ST High UP DW LF RG B C # If there is two up-edge in 1.1 milli seconds, Low LO LO LO LO A ST # D0 - D3 go Low as Sel goes Low. High Z Y X MD HI HI # Make Sel High and read D0 - D3. Low HI HI HI HI A ST # Check that D0 - D3 go High as Sel goes Low. High UP DW LF RG B C # Once this sequence take place Low UP DW LO LO A ST # sequence can't be started for 1.8 milli seconds . # after the first up-edge of Sel. . # Only Datas read in 1.6 milli seconds from the . # first up-edge of Sel are reliable. # LO --- Always Low # HI --- Always High # UP --- Up of Cross Key # DW --- Down of Cross Key # LF --- Left of Cross Key # RG --- Right of Cross Key # A ---- Trigger Button A # B ---- Trigger Button B # C ---- Trigger Button C # X ---- Trigger Button X # Y ---- Trigger Button Y # Z ---- Trigger Button Z # ST --- Start Button # MD --- Mode Button ## Low -> Pressed , High -> Not Pressed Time parameters were measured by using my PC's timer. It seems that the time is measured by discharging of a capacitor in a 6-Button-Controller. It may mean parameters differ one by one controller. Please choose values you think proper for parameters.
Ein Terakawa

applause@@elfmimi.jp