Tools and docs for using a SEGA Mega Drive controller port in serial mode
When the ROM starts, it:
- Enables Serial Mode on Port 2
- Sets speed to 4800 bps
- Receives data into a 2K buffer on hardware interrupt (can be configured to poll instead, but is not reliable at speeds greater than 1200 bps)
- Send a continuous stream of
0123456789\n - Prints any received data to the screen.
Docker:
./docker-makeLinux (requires cmake & gendev):
make| Pin | Parallel Mode * | Serial Mode | I/O Reg Bit |
|---|---|---|---|
| 1 | Up | UP (D0) | |
| 2 | Down | DOWN (D1) | |
| 3 | Gnd / Left | LEFT (D2) | |
| 4 | Gnd / Right | RIGHT (D3) | |
| 5 | +5VDC | +5VDC | |
| 6 | Button A / Button B | Tx | TL (D4) |
| 7 | Select | ||
| 8 | Gnd | Gnd | |
| 9 | Start / Button C | Rx | TR (D5) |
* Pins in parallel mode can have two interpretations, depending on if Select has been set low or high (L / H) from the console.
Looking directly at plug (Female 9-pin Type D)
-------------
\ 5 4 3 2 1 /
\ 9 8 7 6 /
---------
From the datasheet:
| Colour | Name | Type | Description |
|---|---|---|---|
| Black | GND | GND | Device ground supply pin. |
| Brown | CTS# | Input | Clear to Send Control input / Handshake signal. |
| Red | VCC | Output or input | Power Supply Output except for the TTL-232RG-VIPWE were this is an input and power is supplied by the application interface logic. |
| Orange | TXD | Output | Transmit Asynchronous Data output. |
| Yellow | RXD | Input | Receive Asynchronous Data input. |
| Green | RTS# | Output | Request To Send Control Output / Handshake signal. |
| FTDI Cable | Mega Drive Port Pin |
|---|---|
| Orange (TXD) | 9 (Rx) |
| Yellow (RXD) | 6 (Tx) |
| Black (GND) | 8 (Gnd) |
