Arcade Controls on Raspberry Pi


When I first heard of Raspberry Pi, I knew it would be a great platform for retro-gaming. I grew up in the golden age of arcade video games, and for me, a big part of the experience is the feel of arcade joysticks and buttons. My first arcade mod was to put arcade buttons in parallel with specific keys on the keyboard on my first computer, a Commodore PET. Since then, I’ve worked with a variety of methods of connecting joysticks and input buttons to a variety of computers. When MAME was new, it was common to hack PS/2 keyboards by reverse-engineering the key matrix and to wire joysticks and buttons in place of the conductive sheets found in most cheap keyboards. While this was inexpensive, keyboard microcontrollers weren’t designed for large amounts of simultaneous keystrokes, so the next step up was to use a standalone keyboard encoder that was designed to work with emulators like MAME. Shortly after this, ready-to-use arcade control systems were brought to market by a number of vendors, and one of the first one of these was the HanaHo HotRod.

Now, 10 years later, PS/2 keyboards are becoming a dusty memory. “Modern machines”, Raspberry Pi included, only come with USB for keyboards, mice, joysticks, and other peripherals. Fortunately, there’s a device that came out of this transition that is still useful for using older arcade controls: active PS/2-to-USB converters. Certain mice and keyboards are smart enough to work with passive PS/2-to-USB converters which are merely plastic plugs that connect power, ground, and two data lines between a female PS/2 connector and a male USB-A connector. They work because the microcontroller in the peripheral recognizes both PS/2 and USB traffic and works with either interface. Older PS/2 peripherals (like the microcontroller in the HotRod) only “speak” PS/2 protocol, so they require a “smart” converter. The one I happened to have on hand is the Inland MA3303.


There’s nothing particularly special about the MA3303 except that it’s available at computer stores in town for under $10. It’s likely that any active PS/2-to-USB converter would work as well.

While it’s possible to upgrade the HotRod, I wanted to see the HotRod work with my Raspberry Pi before spending more money on it. On top of that, the friend who sold me the HotRod told me that he never got it to work with any PS/2-to-USB converter (giving him a reason to buy a newer Arcade Controller and a reason to sell the HotRod). My first tests with the MA3303 confirmed his experience – my Raspberry Pi didn’t respond to any joystick wiggling or button pressing on the HotRod. After googling around a bit and finding the documentation, I discovered that the microcontroller inside the HotRod required a PS/2 keyboard to be plugged into the far side of the HotRod. Once I dug out and attached an old keyboard, the HotRod sprung to life on my Raspberry Pi.

Since then, I’ve set up AdvanceMAME on my R-Pi with a few free ROMs, but because the firmware in the HotRod spits out old MAME keystrokes (years ago, MAME changed from ’1′ and ’2′ to ’5′ and ’6′ for 1-player and 2-player events, among other changes), I have to reconfigure input events for each game. So it all works together, but for convenience, I may still upgrade the guts of the HotRod to work directly with USB. If you have an old iPAC or other PS/2-only arcade controller, an MA3303 or similar active converter may work for you.

Update: while working on this entry, I learned that a new version of AdvanceMAME for Raspberry Pi was just released today.

About these ads

5 responses to “Arcade Controls on Raspberry Pi

  1. Pingback: MAKE | Arcade Controls on Raspberry Pi·

  2. Pingback: Arcade Controls on Raspberry Pi·

  3. Pingback: » Adding MAME support to Raspberry Pi Fuzzy Hypothesis Online·

  4. Hi Ethan – I’m working on the same hardware configuration (Raspberry Pi with PS/2 Hotrod) … however, mine does not seem to want to communicate properly. The PS/2 -> USB converter seems to work since the keyboard plugged into the hotrod will type. However, the hotrod itself will not do anything.

    Two Quick Questions:
    1. What is the output amperage on the power supply you are using for the Raspberry?

    2. Did you have to do anything special, or use a powered USB hub, etc. when connecting the Hotrod?

    Thank you!!

    • I typically use a 1A cell phone charger PSU with my Pi, but I’ve used 800mA supplies too. What I did have to do to get the Hotrod working was to plug in a PS/2 keyboard on the far side of the it. I don’t think it communicates with _any_ host (including desktop PCs) if it doesn’t have a keyboard attached to it.

Leave a Reply

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

You are commenting using your 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