I have been working on all-in-one Rpi Pico joystick design. However, in the meantime, David and I have also designed a new PCB that provides enhanced joystick features without needing a Pico. We gave up on the previous iteration of a Rpi Zero because of cost... and I got overburdened at work... and because the Pico was released. Yadda yadda yadda.
Anyway, here is a PCB design that does not require any kind of microcontroller or driver to use. I have built this on a breadboard and it works. I've used the breadboard version to play River Raid, 7800 Baby Pacman, and 7800 Xenophobe. And I've tested it with my previous 4-fire button code for the 2600.
How it is to work: replace the PCB in the Hyperkin 2600 style joystick with our PCB presented here. Will require a new 9-wire joystick cable and a small amount of soldering. Our PCB will require two additional buttons be added to the case for multi-button support, and another button to be added to swap between joystick modes.
This will also require a case mod of the Hyperkin joystick. However, using a 3D digitizer, I will design a jig for drilling the appropriate size holes to allow for snap-in buttons. At some point I will provide an STL file for the jig, which could be 3D printed.
This board has 3 different modes:
- Serves as a Standard 2600 joystick with traditional 6-pin fire button, but also provides support for homebrew 9-pin and 5-pin fire buttons. From what I've read, some homebrews support 9/5-pin fire buttons. I apologize for not knowing much about the 9/5-pin fire buttons and their history or what games feature them.
- Serves as a Standard 7800 joystick, but also can serve as a homebrew 2600 joystick with four distinct fire buttons. At some point in the future I will release 2600 code that shows how this works, but is based on a 6/9/5-pin combination and moderate frame timing.
- Serves as an Enhanced 2600 joystick where 6-pin is joystick "right" and 4-pin activates a rumble motor in i/o mode with 4 distinct fire buttons based on 9/5-pins that utilize additional resistors and tight frame timing. I've released code for this in the past. However, this design has been modified slightly, so I will have to release new code to demo this mode.
This weekend, I'll upload my drawings for this PCB design.
One thing David and I have yet to test are potential clearance issues inside the case for the rumble motor, transistors and resistors. Will probably rub chalk on the case and see where it falls on a prototype PCB once the case is put together. I've been thinking we should probably also add some kind of LED to let the user know what mode it is in... which we haven't done yet.
We also intend to develop a version of this PCB for an SNES style controller layout... but it'll probably be a while before I post on that topic.