Console Controllers for JAMMA Boards

Back in the day, and by that we mean the late 80s and early 90s, arcade machines started using the JAMMA standard, a means for a single arcade board to be wired in to the controllers, video output, and other ephemera found in arcade cabinets. Since then, quite a few people have amassed a collection of these vintage arcade boards. Putting them to use requires a means of providing power, video output and controller connections. The usual way of wiring in a joystick and buttons is with a wiring harness, but [Mike] and [Jasen] are connecting Xbox 360 and PS3 controllers to their machines with the help of a Raspberry Pi Hat.

[Mike] and [Jasen] created Project Kajitsu to replace the expensive ‘Supergun’ controllers arcade game collectors usually use to play Street Fighter, X-Men, and Battletoads. They’re using the USB ports on a Raspberry Pi B+ to listen to two XBox or PS3 controllers and translate button mashing into something these old games can understand.

The guys are using a custom Linux Kernel that boots in just a few seconds, providing the bare minimum of an OS to support the controllers. The board itself is extremely simple; just a few bus transceivers, caps, resistors, andย headers. They have an iPhone-quality vertical video proof of concept video (below), and although they’re still figuring out the best way to simplify the Bluetooth pairing process, they’re well on their way to supporting wireless controllers.

This board only provides controller input. If you have one of these old boards, you will need video output. That’s another project entirely, but very simple if you have an SCART monitor.

15 thoughts on “Console Controllers for JAMMA Boards

  1. Surely cost wasn’t the big reason here. If it was, you take a micro (a large-ish AVR/PIC, or maybe a 5V Kinetis) and two SNES/Genesis pads and call it a day. You don’t go “Hey, I need a RasPi!”
    I did mine with SNES controllers, and it was under $10 for the whole shebang.
    I’m sure there’s more to this, but their project page is down at the moment, so I can’t read the original. Maybe it’s the draw of one day making them wireless? Still seems like it could be WAY easier and cheaper to just make something that reads an old controller and transmits it wirelessly though.
    All that being said, just being able to read the input from these controllers can be a big hassle, so it’s a huge accomplishment to get that working!

    1. The reason this uses a RasPI vs. a cheaper microcontroller is the fact that not only does it support two joysticks, it supports two extremely common *USB* joysticks – namely the XBOX360 and PS3 controllers. Using something like a SNES pad for input would allow for simpler non-usb controllers to be used but you still need to hack up the snes controller cable and this is meant to be plug and play. At $35 for the RasPi and $5 in parts for our PiHat we figured this was by far the cheapest and easiest way to support two mainstream USB controllers on a Jamma Rig.

      Perhaps there is a cheaper way to support 2 USB joysticks and present their outputs over Jamma? Please let us know at http://www.freecade.org .

      Thanks,

      Mike Wolak

      1. Thanks, Mike.
        There are sites around that offer SNES controller connectors (I know RaphNet still carries them, and occasionally Adafruit has had them), so hacking up the controller’s connector is optional. Since there needs to be a way to connect the Pi to a JAMMA connector anyway, and SNES controllers go for $3 on eBay, it’s still very viable without asking the end-user to hack something up. ;)

    2. I thought the same thing. However, if you already have a RasPi and you’re looking to get something done as a proof of concept or prototype, then why not? It can always be simplified/reduced once you get something working and you know exactly what needs to be done.

    3. Part of the reason Mike and Jasen did this project this way is not for us technically included individuals, but for all of those everyday folks who wants to use there PS3 or Xbox 360 controllers with an arcade board at game tournaments (especially tournaments), exhibitions and such. At a tournament, the big thing there is bring your own controllers, which is fine on consoles, but for tournaments with actual arcade cabinets or a arcade board connected to a “super gun” your controller options are limited (using what ever wired to Jamma). Now there Another is a easy to implement work around for those who want to use USB devices on a arcade board designed for Jamma.

    1. It doesn’t really need to introduce much delay at all, if you think about it. If it really polls the heck out of the controllers over USB, the lag could be as small as 1-2 milliseconds. Given that the video game’s display is only updating every 1/60th of a second (i.e. once every 16~17 milliseconds), you can still react to anything you’re seeing before the next frame appears.

      1. Excellent points Kaz. The Kajitsu application runs at a realtime priority on the Pi, it’s multithreaded, and its only job is to aggressively read the USB joysticks and present their outputs on the GPIO pins. Pi GPIO is fast when implemented properly, ie using memory mapped I/O and accessed directly. It’s ability to light up pins is much faster than the common 8-bit controllers people tend to use for these sort of things and much faster than the best case 1-2ms protocol delay inherent to USB controller reads.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s