Tuesday, June 7, 2016

SEGA Genesis Joypad Adapter for CoCo3

In earlier posts on this blog, I have covered a couple of options for building a digital joystick to work with the Tandy Color Computer (i.e. CoCo) or for hacking an existing controller for the same purpose. One complaint I receive is that people want to use their existing (either purchased or home-built) digital controllers without having to modify them for use with a CoCo. Fear not -- there is a solution! Just read on...

Design Basics

This joypad adapter design is fundamentally based upon the design described in "Atari Joystick Adapter" on page 135 of the February 1984 edition of Color Computer Magazine. The direction signals are identical between the "standard" 80's-era Atari joystick and the later SEGA joypads, so an identical circuit handles both types of controllers with regard to direction control.

Schematic blatantly "borrowed" from vrai.net -- thanks!

The schematic above shows a single button (labelled as "F") with a "straight-through" connection. That works fine for the single button on an Atari joystick. When using a CoCo3, a 2nd "straight-through" connection will handle use of the 2nd button on a SEGA Master System controller as well. Unfortunately, SEGA Genesis (aka Mega Drive) controllers complicate matters...

Genesis Buttons

The hardware used to multiplex the buttons on the Genesis joypad does not merely pull-down the button signal.  Instead it drives the signal either low or high depending on the state of the button presses. This works fine for the Genesis where presumably the button lines are not shared for any other purpose. But on the CoCo, those lines are also used when scanning the keyboard. Using a "straight-through" connection to a Genesis controller will cause some keys on the keyboard to appear "dead" (i.e. unresponsive). Adding reverse-biased diodes in-line with each button signal will prevent the Genesis controller from driving the lines high, thereby avoiding any interference with the keyboard scan on the CoCo. The circuit continues to work fine with Atari joysticks and SEGA Master System controllers as well, of course.

More Is Better

The CoCo3 only supports two buttons on its joystick inputs, so we could stop here. But a little research reveals that the Genesis controller only uses two lines for button inputs, and a third line to drive a multiplexer that switches between B/C and A/Start. If the CoCo3 could drive that multiplexer, then the CoCo3 could also read those extra buttons!

The only easily accessible digital output on the back of the CoCo is the "Transmit" line on the RS-232 serial port. That signal is not electrically compatible with the input to the Genesis controller's multiplexer, but a simple circuit using an NPN transistor and a couple of resistors can condition the CoCo's RS-232 "Transmit" line suitably for the multiplexer. Now the CoCo3 can select the active button pair with the equivalent of a "POKE 65312,0" or "POKE 65312,2". This allows the CoCo3 to read all four buttons on the Genesis controller.

If you are interested in more technical details, please refer to the schematic online.

A dual-joypad version of this adapter was produced and built by my podcasting partner Neil Blanchard.  He had it available for sale at CoCoFEST!, and he continues to take orders for them by email. This device uses the design described above and will support use of all of the buttons on the standard "3-button" SEGA Genesis joypad on the CoCo3. I believe these items have sold well, so now there is a "critical mass" of these items out in the community waiting to be used effectively. Hopefully we all can think of ways to make use of 3 action buttons (plus Start) in a CoCo3 game -- what will you write?  What will I write? Well, stay tuned...