With my Sega Genesis arcade stick, and a more recent Master System/C64 stick I put together, I have been increasingly unhappy with commercial Genesis to USB converters. The one I have essentially assumes a 6-button Genesis Pad, and doesn't do proper detection. This means nuisance extra button presses when using a less capable device, which is no good. So I decided to make my own.
For this project, I decided on the Teensy 2.0, which gives me a small size, good IO complement, nice USB features, and most importantly: 5 volt logic.
Mechanical design was pretty basic: just a small project box, a DE9 connector, wiring to the Teensy and some drilling/dremelling. The Teensy, however, seems to be designed to mount directly by pins into a protoboard/breadboard. Since I was wiring directly to the board, I needed a different solution. Thankfully, I already had some Scotch Brand mounting tape, which works extremely well for securing small PCBs into a project.
When assembled and programmed, the converter works the way a converter of this type should work. If a 1-button C64/Atari stick is inserted, that button registers as the primary button 1 only. If a 2-button Master System stick is inserted, those two buttons become buttons 1 and 2. For the 3-button Genesis pad, the buttons are 1, 2, 3 and 10, which is a customary position for the start button on Windows games. The 6-button pad therefore adds buttons 4, 5, 6 and 9 to fill out the set. Buttons 7 and 8 positions are unused; most software would expect those to be L2/R2 buttons which have no equivalent.
For source code and more information on the software, check out the github project page. Per the project page readme, I am intentionally maintaining several branches depending on the desired USB device type. Please see the readme for more information and select the branch of interest.