Coder Social home page Coder Social logo

usb4gc's Introduction

USB4GC

What is this

USB4GC is an adapter which translates between a GameCube controller port and a USB Game controller. You can use it to play gamecube games on nintendo hardware with an xbox or playstation controller, or even a keyboard. No controller modding is required, the adapter is a full USB host. No external power supply is required either. It is easy to build your own using a Seeeduino Xiao microcontroller dev board and a couple passive components.

Supported Controllers:

  • Xbox 360 Wired
  • Xbox One via USB micro B port
  • DualShock 3 (playstation 3 controller)
  • DualShock 4 (playstation 4 controller)
  • Keyboard (fixed bindings)

Tested on GameCube, Wii, and PC through Mayflash Adapter.

Video Demonstration

How to

Step 1: Tools and Materials

Tools Comment
Wire stripper/cutter knockoff GameCube cable wires are usually very thin, so a 20-30 AWG wire stripper is recommended.
Multimeter for continuity testing knockoff GameCube cable wires are often correctly color coded, but the only way to know for sure is to test them. Assembling the wire is the hardest part of this build and a continuity tester will make this a lot easier.
USB-C - USB-A cable for programming the Seeeduino Xiao
Soldering iron it is possible to do without one, but you will need a JST crimping tool and a preassembled Seeeduino Xiao
JST-XH Crimping tool it is possible to do without one, but you will need to do some difficult soldering and your cable will be much weaker.
X-Acto knife or equivalent you will need a good amount of precision to remove the cable insulation.
Materials Comment
Seeduino Xiao Most of these will need soldering to attach the header pins, if you do not want to solder make sure the Xiao you are purchasing has header pins already attached.
USB-C to USB-A Adapter
solderless breadboard The tutorial build uses a 1/2 size standard breadboard for clarity but everything can pretty easily fit on a 17 row mini breadboard.
PNP transistor
GameCube controller cable to sacrifice I recommend using a cheap GCC extension cable to avoid killing a controller, but dead (or mad catz) controllers will work too, just make sure the cable wasn't the point of failure.
Breadboard pluggable wires I use 22 gauge solid core wires in the instructions.
JST-XH 5 position socket, plug, and appropriate crimping tool This is for attaching the GameCube controller cable to the breadboard. There are a few other ways to achieve this, detailed in step 2.

Step 2: Cable Preparation

This is the hardest assembly step. The goal here is to be able to plug a breadboard into a GameCube controller port. I found that the best method for me was to crimp a JST-XH plug to the end of the cable, and plug that into a socket on my breadboard. This connection could also be achieved in a less compact form factor with screw terminals, or improvised by soldering the wires directly to a header pin strip.

Connectors.png

While you are preparing your cable, check for continuity through each wire to the gamecube plug. Many 3rd party cables follow the nintendo color code, but the only way to know that yours does is to test it. When probing the GameCube plug, do not jam your probe into the opening in the middle. This can damage the spring contacts and break the plug. Instead, get a paperclip, jumper wire, or other small bit of wire and poke it gently into the slot above each pin of the plug. It is much easier to isolate a single wire this way as well.

Probing.png

If your cable does not follow the following color code chart, then write down which color is which plug pin before moving to the next part.

Probing.png

Pin # Color Name Comment
1 Green GND Can safely be tied to the other ground.
2 Red DATA This line is pulled to 3.5v by the GameCube, and pulsed low to send data in either direction.
3 Yellow 5v This powers the rumble motor on a regular GCC, but we'll use it for usb power.
4 Blue 3.5v, or 3V5 This is logic power. The console can get reset if this is shorted to ground.
5 Not Connected
6 White GND Can safely be tied to the other ground. I have reused white as TX on the breadboard.
7 Black Shield The metal part around the outside of the plug. Can be ignored or tied to ground. In the extension cables I've bought, this was left uninsulated.

Step 3: Breadboard Assembly

Now we just need to lay everything out on the breadboard. I color code and pre-bend all the wires for a clean, readable look. Here is a guide on how to achieve this from the legendary Ben Eater.

Here is the schematic. Schematic.png

And here are two example assemblies, with highlighted circuit paths. BBExample.png

The wire colors, in order that they should be placed are:

  1. Green: Ground
  2. Red: Data
  3. Yellow: 5v
  4. Blue: 3.5v
  5. White: TX
  6. Black: No electrical purpose, helps keep the USB C-A adapter straight in it's socket to reduce strain on the Xiao's USB port.

Step 4: Programming

Do not connect the adapter to your console yet.

Go to this github repository's releases page and download the latest release's firmware binary. It will be named USB4GC_FW_xx.UF2.

Connect the Xiao to your computer via the USB-C cable.

Plug a jumper wire into ground (row 25 is easily accessible) and with the other end, tap the "RST" pad on the Xiao twice. The onboard LED should begin to pulsate, and the Seeeduino should appear as a removable storage device on your computer.

Copy the USB4GC_FW_xx.UF2 file onto the Xiao. Once this step is successful, the storage device will disconnect and the amber LED on the Xiao will flash quickly.

You're done! Disconnect the programming cable before you plug into your console, and then use your USB A to C adapter to connect your controller of choice. If you want to use a keyboard, then you will need to plug it in once to switch to keyboard mode, then once more to proprerly initialize it. You will need to do the same to return to controller mode after.

Contact

If you would like to contribute, need help with some part of assembly, or just have a question, I'd be happy to help. feel free to contact me via Discord at BadRAM#6838

usb4gc's People

Contributors

badram avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.