Video Game Controller Overview

After reverse engineering the OSR USB FX2 firmware, I wanted to build a USB based project.  I decided to build a game controller.  The controller has two processors, one for the USB interface and one for the analog data captures.  The analog stick information is transferred to the USB controller through the I2C communication lines.  All the buttons on the controller use hardware debouncing circuits.  The firmware for the USB controller is stored in an I2C based EEPROM and was assembled using my custom made 8051 assembler.


Video Game Controller Pictures

Video Game Controller PCBs Top View

Video Game Controller PCBs Top View

Video Game Controller PCBs Bottom View

Video Game Controller PCBs Bottom View

Video Game Controller Disassembled

Video Game Controller Disassembled

Video Game Controller Top View

Video Game Controller Top View

Video Game Controller Bottom View

Video Game Controller Bottom View

Video Game Controller Front View

Video Game Controller Front View


Video Game Controller Schematic

Video Game Controller Schematic Page 1

Video Game Controller Schematic Page 1

Video Game Controller Schematic Page 2

Video Game Controller Schematic Page 2


Video Game Controller PCB Designs

 
Video Game Controller PCB Top Layer

Video Game Controller PCB Top Layer

Video Game Controller PCB Bottom Layer

Video Game Controller PCB Bottom Layer

 
Video Game Controller PCB Power Layer

Video Game Controller PCB Power Layer

Video Game Controller PCB Ground Layer

Video Game Controller PCB Ground Layer

Video Game Controller PCB Top, Bottom and Silkscreen Layers

Video Game Controller PCB Top, Bottom and Silkscreen Layers


Video Game Controller CAD Design

Video Game Controller CAD Design

Video Game Controller CAD Design


Video Game Controller Firmware Source Files

The Atmel microcontroller firmware was written in C using AVR Studio.  The EZUSBFX2 firmware was written in assembly using my custom 8051 assembler.

ATMega128 Firmware source file:

Analog_Sticks.c

EZUSBFX2 Firmware source files:

OSR_USB_FX2_Controller.asm

OSR_USB_FX2_Controller.hex


Original Video Game Controller

Before I built the controller above, I built one with no printed parts.  The firmware is exactly the same and the schematic is nearly identical.  Below are pictures of the controller and its PCB design.

Old Controller Top View

Old Controller Top View

Old Controller Bottom View

Old Controller Bottom View


Original Video Game Controller PCB Design

Old Controller PCB Top Layer

Old Controller PCB Top Layer

Old Controller PCB Bottom Layer

Old Controller PCB Bottom Layer

 
Old Controller PCB Top, Bottom and Silkscreen Layers

Old Controller PCB Top, Bottom and Silkscreen Layers