pdp.dev

JAMMA Input Display

I built an input display for my arcade cabinets by reading the GPIO pins on a Raspberry Pi using Node.js and socket.io.

The code is available on GitHub and here is a sample capture from me playing some Espgaluda:

I created an AMP-UP control panel wiring extender that splits off the input wires on my Astro City into the Raspberry Pi, but you could also split the wires off of the JAMMA harness. The needed 12-pin AMP-UP connectors are available from DigiKey.

Raspberry Pi with control panel extension

With Node up and running on the Raspberry Pi, you can just point a web browser at the server and see the inputs reflected there.

Button display

For streaming I just added the region of the desktop where the browser was being shown so that it would be shown in the stream.

I wanted to play around with Node.js and this project was what I thought of when reading about Node’s event-driven model. Streamers that play arcade games in MAME have the ability to use input displays and I wanted to be able to do that as well for an actual arcade cab.

NOTE: The display does sometimes freeze up, however refreshing the browser page typically solves this. I’m not sure what causes it, maybe I’ll figure it out.

UPDATE: Updating to a newer version of Socket.IO fixed the freezing.