Saturday, April 21, 2012


AMUSE (Arcade Modular USB System for Enthusiasts) is a board I designed and built some years ago to use it as an interface to build arcade controllers. It should work with any device compatible with USB HID (Human Interface Device) specification. I have tested it using Windows XP, Windows 7 and Linux, and it worked perfect in the 3 setups.

The features of the AMUSE interface are:
  • 64 digital inputs.
  • 4 Analog axes.
  • Video signal amplifer.
  • Video protection interface.
  • USB interface
  • Gets detected by the OS as a USB composite device with:
    • 4 joysticks with 2 digital axes, 1 analog axis and 12 buttons each.
    • A keyboard.
    • A  mouse.
  • Each digital input can be mapped to two different functions: primary funcion and alternate function (activated with a special input).
  • Each switch can be remapped to any keyboard key or joystick button.
  • Expansion port to connect trackballs and other hardware (not implemented).
  • No soldering needed for installation (you only need a screwdriver).
This board covers the needs for most PC based arcade cabinets, up to 4 players, analog and digital controls, up to 12 buttons per player... Maybe somebody will miss trackball support, but everything else is implemented. Trackball support was planned (for this reason the system is also enumerated as a mouse), but finally I never implemented it.

At first, I was planning to commercially launch this board, so I also implemented a bootloader capable of updating the firmware via USB. The firmware must be AES128 encrypted, and the bootloader inside the microcontroller decrypts it before flashing. The bootloader is also used to remap the controls, by writing non encrypted configuration data to the EEPROM inside the microcontroller.

The video interface features a video amplifer for arcade monitors (that usually use signals with a range greater than 1V) and a video protection circuit, that blanks the video output if the HSYNC signal is greater than 16 kHz (because these signals can kill some old arcade monitors).

This is the utility to configure gamepads in Windows. Plugging one AMUSE shows 4 joysticks (sorry about the text in spanish):

If we open the properties of any of the joysticks, we can see it has two digital axes, one analog axis, and 12 buttons:

As stated before, AMUSE enumerates also a keyboard and a mouse. This screen shows all the enumerated devices:

AMUSE works perfect also in Linux, and should work in OS-X too (but it is untested in this architecture).

These are photographs of one assembled AMUSE.

Some more technical details:

  • AMUSE uses only one microcontroller: a PIC18F4455 or PIC18F4550.
  • Digital inputs are read using a matrix, so only 16 GPIO pins are used to read the 64 digital inputs.
  • The only integrated circuits used are the PIC, a 74HC86 (for SYNC generation) and a OPA4354 for video amplification. If you are not interested in the video circuit, only the PIC is needed.
  • Inputs are read 120 times per second, and reported to the host only if they change.

You can find a manual I wrote in spanish here. If there's anybody interested, I can upload schematics, BOM, gerber files and source code (excepting the bootloader, that I'd like to keep closed by now).

Also if you are interested in getting one, I still have some PCBs and parts.

And this is the end of this post. I hope you found it amusing ;-). Thanks for reading!


  1. Hi,
    just wanted to say: 4p inputs on one board with video protection? That's awesome!

    How much are you asking for one of these?

    1. I'm not selling complete units. I can sell spare PCBs and all the components (including connectors) excepting the ones for the video amplification/protection.

      If you are interested write me an e-mail to esakaforever at gmail dot com, telling me if you want only the PCB or also the components, and I'll do some maths.

      Thanks for the comment!

  2. Hi Greetings,
    As this project is very interesting to build so may you please upload/mail schematics, BOM, gerber files and source code of this project?
    Thanks Doragasu!

    1. I'd like to release schematics and code. Unfortunately I would like to remove some stuff from the code before the release (a bootloader/updater with AES encryption support), and I'm extremely busy ATM to do it...