Sega Mega Drive 6 button controller

From: Richard Atkinson (rga24_at_hermes.cam.ac.uk)
Date: 1999-07-05 12:07:44

Here's some info about a cool hack I did last night which may interest
some of you.

Yesterday, at my favourite car boot sale, as well as picking up an NTSC
Sears Tele-Games console and a Sinclair QL with 512K RAM expansion and
Cumana disk drives, I found a Sega Mega Drive on the cheap with a 6 button
controller. Finding a rather good article on the protocol of the 6 button
controller, I decided to hack it for use with the CBM computers. The
article is at:

http://www.tky.3web.ne.jp/~applause/md6bpad-e.html

After a small amount of thought and a good deal of luck, I came up with
the following pin configuration:

Pin  Wire colour  C64 control port  MD controller  Rewired controller
 1   Brown        Up                Up             Up
 2   Red          Down              Down           Down
 3   Orange       Left              Left           Left
 4   Yellow       Right             Right          Right
 5   Green        Pot Y             +5V            Fire 2
 6   Blue         Fire              Fire 1         Select
 7   Grey         +5V               Select         +5V
 8   Bare         GND               GND            GND
 9   White        Pot X             Fire 2         Fire 1


The rightmost column show the new pinout of the controller, the column to
the left of that shows the original Mega Drive pinout (for reference) and
the column to the left of that shows the C64 (Atari) pinout we all know
and love. Basically, by keeping the direction pad the same but using the
normal C64 Fire line to control the Select input of the control pad, the
strobe pulses of the protocol can be provided by setting bit 4 of the
relevant CIA port as an output and reading bits 3 - 0 as inputs. The
remaining lines are the fire buttons, which have to be read using the
analogue potentiometer registers of the SID chip. Unfortunately these are
only updated every 512 clock cycles, and since the protocol requires two
reads per controller, four reads are required to read both control ports. 

I tried this new controller design last night with a basic program using a
short machine code routine to do the high speed select strobing required
by the protocol, and I'm pleased to say it worked - the status of the Z,
Y, X and Mode buttons could definitely be read by the 64. Unfortunately
the presence of the control pad tends to mess up keyboard reading, since
the outputs of the multiplexor chip are not open-collector, but this has
always been the case with Mega Drive controllers.

Does anyone care to write a better driver? This pad would have been really
useful in games, and as a hardware hack it's pretty cool, even if I do say
so myself. Not sure whether I prefer it to my Super Nintendo - C64
controller hack though ;) 


Richard

-
This message was sent through the cbm-hackers mailing list.
To unsubscribe: echo unsubscribe | mail cbm-hackers-request@dot.tcm.hut.fi.

Archive generated by hypermail 2.1.1.