*This is one of those "a work in progress" kind of projects that is also low on my priority list. *
This started as a web browser bookmark where someone reverse engineered a genesis 6 buttons controller. There was also an open discussion on how significantly more complicated it is compared to
the 3 button. It's a good read. The interesting part is how Sega didn't have the foresight to expand past a controller with 3-buttons (excluding "start"). It was the late 1980's, all Sega could do
was obsess about beating the NES. How did Sega fix this? Push double the input signals in the clock
time of the 3-button protocol. The 6-button compatible game cartridge is responsible for handling this faster polling routine. Unfortunately the most detailed contribution to this reverse engineering
is no longer available. I first found all this info on Chuck Rosenberg's webpage. He had a thorough and detailed explanation of the 6 button Sega Genesis (Megadrive) controller, but the link to the
project now returns a 404 error.
Fast forward a few months when I was submitting a PCB order for an arcade project. Since shipping is something like $46 on this PCB order, if I could squeeze some more projects in it would be worthwhile.
So I rushed some PCBs based on the loose schematics I found for 3-button controllers out in the wild. When I say rush job, I am foreshadowing.
The recessed DB9 connector is proving hard to reach with a standard PCB connector. My Jumper cable setup is giving me doubts. Off to ebay to order a controller extension cable... I ended up removing the metal shard on the DB9 connector. This gives the extra depth needed for the plug to seat into the controller extension cable.
A month later I solder this bad-boy up, plug in the IC and low-and-behold it doesn't not work. Well, it does show some sign of life: The start-button seems to be held-down, or at least the Genesis responds to it when plugged in.
Results: same are before. Something is wrong. Alright, so maybe it's the IC. I'm having a hell of a time tracking down a datasheet for this IC. I get the usual run-around with IC datasheet search results. Links to search queries on other datasheet sits but none come-through.
I pop open my Genesis controller and document the IC p/n. Off to ebay to purchase the closest thing possible to this- and I come very very close. Feeling like this is my big break I order 10, because how would this ever come to bite me?
New IC's arrive, plug them in and now nothing works. No signs of life from the controller.
At this point the project goes dormant due to frustration. I pick things up later when I decided to put my Sega away and look at this mess of an abandoned project. First thing I do is decide getting the documentation up to speed is wise is I ever want to come back to this. I open my genesis controller, check the IC part number and decide to (prepare your-self) check the schematic on my own accord. I probe every connection and draw the circuit as if I did all the work and didn't pull the schematic from the deep web. When doing this I realize something, my schematic is exactly what I found online. SO WHAT IS THE DEAL?
Oh, that rush job I did, I mistakenly swapped two pins, "START" and "C". Okay, this is a start. I cut traces on the PCB and retest- nothing. Alright. Considering I've discovered one error caused
by me, what are the chances I've left other errors elsewhere in my rush PCB job? Chances are high. I looked again at the eagle schematic and there it is, like an open wound on my pride. The VCC and
GND on the IC are floating. Eagle, in it's mighty glory did not route the VCC and GND in the auto route because I failed to 'invoke' these gate connections from the schematic view.
I wire these by hand on the PCB and things sorta work. But not very well. By random I swap back to the vanilla 74157n IC and success. Functions as intended. So here we are now.
This is the schematic for a 3-button Sega Megadrive / Genesis controller. The IC should be a 74157. If you are using a built-in package library from your PCB layout software, be more diligent than I.
I later found out that testing with the Ms Pac Man game (what I used) is one of those worse games to test with. This game apparently doesn't follow the rule of polling controller inputs once per frame and will get weird with your controller results. I switched to Wheel of fortune and this we're much better in the "hey this is normal" expected feedback.