Programmable Stick: Part 1

Skynet

For a long time I've wanted to create an interface to automate gameplay on consoles, but my electrical know-how was next to non-existent (I want to blame a bad experience with attempting to repair an Amiga 500 PSU to my hesitation to play with anything that had an electrical current). To do this, I needed a way to interface each of the controllers input circuits and complete the connection to fire off the request, which is easy enough in theory, but when you pull apart a controller these days, the circuitry is a little more compact than the controllers back in the day.

Enter the PS360+ which has the ability to interface a myriad of different consoles, and more recently the Brook Universal Fighting Board's ability to interface with Xbox One and Playstation 4. Both these boards have easy to use screw terminals, a place to mount a 20 pin IDC header, and universal ground. They are primarily used for arcade stick creation / restoration, so they are perfect for what I'm attempting to do.

 

Overview

The plan is to have a web interface which will allow you to create a playlist of inputs with delays. You will be able to dump that playlist through to the console via a few different pieces of hardware. The setup currently looks like this:

Wazawai Setup

The Web Interface is provided by a NodeJS application running on the Raspberry Pi. Via the NodeJS application, the Raspberry Pi communicates with the Arduino Uno over serial to send commands (I might be able to minimise this stage of the flow as long as I'm able to use the Raspberry Pi's GPIO in the same way as how they are being used on the Arduino Uno). The Wazawai board (which is a the custom board I'll be describing in detail in future posts) controls the button inputs opening and closing the circuits on the PS360+/Brook UFB which in turn sends the commands onto the Console.

The example above is 90% there with only the Web Interface being the remaining piece left to be finished. I'm currently able to push data to the Arduino Uno via the Web Interface in a debugging mode, so the rest shouldn't be an issue. Publishing custom code directly to the Arduino Uno allows me to successfully interface with the console, but the plan is to only push one piece of code that the Raspberry Pi will interface with so that we don't have to republish code every time we want to execute a playlist.

To allow non-electrical minded people (like myself) to attempt this on their own, in future parts of this article I will try to go into as much detail as possible to help everyone understand the different development stages of the Wazawai board, component usage, and code.