jle-santos

Electrical Engineering - Computer Vision Enthusiast

Arcade Stick Controller

Game Controller
ArcadeStick
Date September 2019 - December 2019
Language C, Python
Board Texas Instruments Piccolo F28027
Program Code Composer Studio, PyCharm
Peripherals N/A
Github Joystick-Project

Utilizing sys/bios, Texas Instrument’s real-time operating system or RTOS, we aim to create an arcade stick to control any computer game by emulating the X-input standard used across all Windows-based video games.

In essence, the C2000 will read inputs from our 3D-printed arcade stick and then prepare the data to be sent over the USB-UART connection the C2000 normally uses to communicate with Code Composer Studio. Once the data is received by the computer though a COM port, a python script will capture and decode the data over to the X-input standard, which can easily be interpreted by any modern video game on the windows platform.

Videos

Overview

The arcade stick consists of 12 buttons, eight face buttons and four directional buttons in the joystick. Beside the controller is an analog joystick that is sampled by the ADC. These data are arranged in a specific order fitting our control protocol before being sent out via serial communication to the PC.

Overview

Python Program

The PC runs our custom Serial to Joystick program to parse the inputs as button commands. We utilized the vJoy API to interface with Windows. Under this API we convert our button commands into X-Input commands understood by games in Windows.

Testing

In the following figure you can that as I push the button on our controller, the frame on the screen is changing which would indicate that our device’s input delay is lower than the speed at which the monitor refreshes its contents. This is expected, as the monitor is refreshing at 60Hz and our design is polling at 100Hz.

Game Testing