for SNES & Saturn pads using on original xbox and gamecube.
Copyright (C) 2015,2017 Maximaas
Version 1.0 - completed on 2015.12.09
http://www.int03.co.uk/crema/hardware/gamecube/gc-control.htm
Gamecube controlle protocol explanation.
http://www.raphnet.net/electronique/x2wii/index_en.php
N64/Snes/Nes controller to gamecube/Wii conversion project
https://github.com/brownan/Gamecube-N64-Controller
I directly used the gamecube communication code from this project with just a little modification. It helps me greatly, without this I will never done my work.
http://www.brunofreitas.com/node/41
https://github.com/bootsector/usb-retropad-adapter
A very powerful adapter, I directly used the Xbox pad communication code from this project or I will never got my project work on original xbox.
I bought several SNES to PC adapters to make use of its case and snes female connector.
My work uses USB connector as the output in order to adapt both Xbox and GC.
Interface cable. Female USB connector to Xbox and GC controller port.
The PCB I designed with the size fits with the SNES to PC adapter case. And a bit of hand craft work should be done to accommodate the Saturn and USB connectors.
Parts | Model | Remark |
---|---|---|
MCU | ATMEGA8-16PU | Can be replaced with ATMEGA328p for more program memory |
CRYSTAL | 16 MHz | |
R_RST | 120 Ohm | |
R_LED | 220 Ohm | |
R_USB | 1.5K Ohm | |
R_D+ | 68 Ohm | |
R_D- | 68 Ohm | |
C1 | 22 pf | |
C2 | 22 pf | |
C3 | 4.7 uf | |
D1 | 1N4148 | |
D2 | 1N4148 | |
SWITCH | Reset Switch | |
LED | Any 5v LED | |
USB-A | / | USB-A Male connector |
SFC | / | SFC conenctor |
SS | / | SS connector |
GC Cable | / | NGC extesion cable |
XB Cable | / | XBOX extension cable |
USB | / | USB-A female connector |
The eagle files of the hardware part are included. The PCB have both ICSP and Serial interfaces on it, for bootloader and firmware programming.
The software part is standard Arduino sketch codes, can be compiled and uploaded with Arduino IDE.
With the parts assembled, upload the "optiboot_atmega8" bootloader by ICSP which can be found in Arduino IDE releases.
The firmware can be uploaded by either ICSP or Serial interface. For Serial way, the reset button need to be hit right after you clicked the upload button in Arduino IDE.
BTW, I'm using Sloeber IDE(http://eclipse.baeyens.it/) to help keeping my Arduino projects well organized.
Here's a picture of male usb connector, I named the 4 pins to U1/U2/U3/U4, then wired them to the consoles' controller port.
- Xbox
Just follow the image above.
- Gamecube
It is the view of the controller port on Gamecube.
pin1 --> U1
pin2 --> U3
pin4&5 --> U4
The D- line is left empty.
- The turning on of the LED on the adapter means the handshaking process is over and the adapter is funtional. Unlike the Gamecube, the Xbox will not do the handshaking process with the controller until the power on video clip is finished. When cold-plugged to the Xbox the adapter will be funtional after the console started.
- The adapter can not work with Game Boy Interface (a replacement to the official Gameboy Player application) because of a different handshaking protocol. The ATMEGA8-16PU only have 8KB memory, adding any fix codes will cause it reachs it's physical limit.