Saturday, March 7, 2015

A better gamecube controller? (Part 2: Electrical Execution)

Please read part one if you missed it!

Planning out what you're going to do is fine and dandy, but this is where all the fun happens. We actually get to build and test stuff in this post!

Figure 1: Final concept for modified controller.

Cause you can't do cool electrical stuff without the right stuff.

The tools you need are:
  • TV & Gamecube with Melee
  • Multimeter
  • Sidecutters
  • Precision Tweezers
  • Soldering Iron/Station - You'll want to click this link, trust me....
  • Sand paper - fine grit (300?)
  • Heat gun or lighter
The materials you need are:
  • Gamecube controller
  • 7 24mm buttons
  • Wire - I use rainbow ribbon cable cause it's neat and automatically color codes your wiring for you
  • This and this - You could just solder wire straight to the buttons, but this makes it so that the user can freely move buttons around if they choose to.
  • 1.27 kΩ 1% resistor
  • 5.62 kΩ 1% resistor
  • heatshrink

We are going to be starting here because it can be a slightly tricky part of a pad hack. We plug our controller into the game console and start a match in training mode (characters and stage don't matter). This powers up our controller. The first thing we need to do is figure out the voltage levels for when the trigger is not pressed, the voltage when we are light shielding, and the resistance of the pot. From the back of the board we can clearly see the right trigger pot and the 3 pins on the front that correspond to it (figure 2). Using the multimeter to measure the voltage at each of its pin, we find that pin 3 is 3.44 volts (VCC), pin 2 is 0 volts (GND), and pin 1 changes as we move to pot so it is the pin that goes back to IC on the board. We also find that when we are not shielding the voltage on the pot is at ground (0 volts), and when we move it just enough to light shield the voltage on this pin reads 0.623 volts.
Figure 2: Controller pcb with potentiometer highlight and pin out marked.
We can now unplug the controller and measure the total resistance of the pot between the ground pin and the supply pin. We find it to be about 6.9 kΩ. With all the information we now know, we can use the equations from our first post to find what resistor values we need to use. 
R2 = 1.249 kΩ ≈ 1.27 

R1= 6.9-1.27
R1 = 5.63 kΩ  ≈  5.62 kΩ

In this case we need a 1.27 kΩ resistor and  5.62 kΩ resistor since those are our closest standard 1% resistor values.

We are now ready to build our circuit for the light shield button. We first need to remove the right trigger's pot. Since we don't need to save the pot, I'm just going to use a pair of sidecutters to carefully cut it off the board. I can then use the soldering iron and a pair of tweezers to remove the remaining bits of pins left in the pot's holes.

Figure 3: Schematic of light shield button design.

Now that the holes for the pot are free we can solder the resistors and 2 wires leading to a button to implement our design from part 1 (figure 3). Figures 4 and 5 shows how we need to connect the resistors to implement our design.

Figure 4: Drawing of how the resistors will connect to the pcb to implement light shield button.
Figure 5: Soldered light shield circuitry.

The all the buttons (except power shield and Z) can be seen on the pcb as black pads in figure 2. This black is a conductive material, and underneath it is copper. One side of the black pads corresponds to GND and the other side runs directly to a pin on the controller's integrated circuit. Using the multimeter we can find that the bottom half of each pad is ground and the top half is our signal the IC reads.

Since we want to solder our buttons in parallel with the existing buttons, we find a place we can solder our wires to the button's copper traces. The way to do this is simple use our sand paper to carefully sand away the black conductive materially on each button's pad. This will reveal the copper pad underneath that we can solder our wires to. NOTE: this copper is very thin, so don't over sand. Figure 6 shows the button pads after I sanded the black material away.

Figure 6: Gamecube controller with button pads sanded to copper and Z and shield buttons removed

Since all of the buttons connect directly to ground, we can solder our ground wire to just one spot marked in figure 6. Figure 7 shows the controller with all the button and light shield circuitry soldered.
Figure 7: All soldered buttons.
Since we are detaching the C-stick from the rest of the controller, we need to lengthen the wire used to connect it to the rest of the controller. We also need to further modify the C-stick circuitry to be able to rotate it 135 degrees in the original controller so that it will operate the most naturally in its new orientation on the final controller (up will be up, down will be down, etc.). This means we'll have to cut the awkward leg on the c-stick pcb (figure 8). Figure 9 shows this modification.

Figure 8: Top and bottom of unmodified C-stick pcb.
Figure 9: Top and bottom of  modified C-stick pcb.
Cutting off the leg also means we need to find a new location to solder our wires. Figure 10 shows this pin-out on both the main pcb and c-stick pcb.

Figure 10: Pin out of C-stick connections on main pcb and C-stick pcb.

TESTING IT ALL (a.k.a. "Show me your moves"):
The easiest way of testing is to start melee and make sure all our inputs are working properly.

Figure 11: Controller pcb after modifications. Non-conductive hot-glue was used on soldered wires for structural support.

Watch me stumble around with making a case! Yay for little to no woodworking experience... There's probably a good reason I'm an electrical engineer and not a mechanical engineer...

Part 3 is HERE!!

About a year ago my best friend's band released an album. I got to preview another album they plan on releasing soon, and am really excited for it. Give their last album a listen!


  1. Eagerly anticipating the final part! Thinking about possibly making one of these myself.

    1. Thanks Jowi,
      Hopefully will have it all written up in the next couple weeks. If you end up modding a controller you should post it somewhere. I'd love to see it.

    2. Do you know if it's possible to enable the shoulder triggers Analog on a GCC to trigger the shoulder's digital button? Enabling Air Dodge to be triggered with a light tap on the shoulder without having to go all the way down to trigger the digital.

    3. Will you be showing how you made your mold for the final build? That's the only thing I'm unsure of should I attempt this

    4. Mad, just remove the springs from your triggers. Your finger only has to travel a short distance (like you want) and there is also less resistance to your push (like you also want) since the spring isn't applying a backwards force. To reduce the resistance a slight bit more, have the trigger is in the fully pushed position and the potentiometer in the not pushed position when you put your controller back together so you don't have the resistance of moving the pot each time you press the trigger. This way the rubber cone of the digital trigger press will be the only resistance to your press, and this wears down overtime and becomes less resistant.

    5. Joel G, I actually frankenmodded the case, so I didn't have a mold. You'll see it very soon. It would be very cool to make a vacuum formed or roto-molded case though, but I don't have the resources for that. If you're interested in different case/mold construction techniques, the ben heck forums have a really good section on different case construction methods: