Saturday, March 7, 2015

A better gamecube controller? (Part 1: Electrical Planning)

Recently my friend Fidi, who moved to Colorado, came back to Iowa for a visit. He has recently been suffering from hand issues. He has been playing Super Smash Bros competitive for several years now, but he had to recently cut back to not harm his hands further. We started talking about making a controller that would allow him to continue playing smash without hurting his hands. Something that would be similar to a fight stick, but still allow him to use the GCN controller's joysticks like normal. This sounded like a great project to me and I jumped on the opportunity to help him.

I plan on this project being posted in 5 parts: Electrical Planning, Electrical Execution, Case Planning, Case Execution, and a Reflection on the project as a whole once completed. I am going to try to explain things as fully as possible so people with very little electrical understanding can follow along and possibly mod their own controllers.

THE FINAL CONCEPT:
Figure 1 is a mock up of the end goal. The right-hand side of the gamecube controller has been replaced with a box with arcade style buttons. The buttons used will be 23mm buttons (as opposed to the normal 30mm) to allow for a slightly smaller form factor and allow the hand to rest more comfortably. The  c-stick from the gamcube controller is mounted sideways on the box to allow the users thumb to rest on the analog stick similar to how it would if you were holding a gamecube controller. The left hand side remains as a controller, but with the left-trigger (L) disabled.

Figure 1: Concept art for finished controller.

Since rolling your hand in towards the thumb is more natural than rolling out towards the pink, the button layout was chosen to allow for the most natural movement while playing. Common advanced tech are wave-dashing (X > R), waveshining(B > X > R > B > X > R >...), jump-cancel grab (Y > Z), rising arials (Y > A), etc. One thing you lose using buttons to replace the triggers is the ability to light shield where you only push the trigger in a little bit. I plan on replacing this with the (r) button.

THE ORIGINAL CONTROLLER:
Lucky for us, Nintendo still makes gamecube controllers. We will be dissecting one of these new gamecube controllers for this project.

Figure 2: New gamecube controller fresh out of the box.


The Unfortunate thing about Nintendo hardware is that it is a pain to get into without a tri-wing screwdriver. Luckily my friend Sam had one he could loan me. Below are what the insides of the controller.

Figure 3: What you see upon opening a gamecube controller

Look at those beautiful pcb's just ready to be analyzed and mutilated modified!!!!!!

After detaching the rumble motor and setting all the plastic bits aside, we are ready to plan out what we are going to do to the board electrically to get our end project. Figure 4 shows the front of our PCB.

Figure 4: Gamecube controller main printed circuit board (pcb).

THE ELECTRICAL PLAN:
At this point we need a basic understanding of how a controller recognizes button and trigger presses to make a good plan of how to succeed in a project like this. 

On every controller there is an integrated circuit (IC) that just reads the voltage of its pins and relays this information to the game console. Every pin on the IC corresponds to a different button on the controller. So all we have to do to have the controller recognize when we press a button it to have the button change the voltage of the pins. Figure 5 show a schematic of how we can accomplish having our buttons change the voltage on a pin.

Figure 5: Schematic of button press with equivalent circuit

Electrically the buttons are considered switches. A switch can either be open (not pressed) or closed (pressed). From Figure 5 we can see that, when our switch is open, the voltage of the IC pin is basically at our supply voltag,VCC (5 volts). However, when our button is pressed, the pin is basically connected directly to ground (0 volts). So if we want to replace the existing buttons with new buttons, all we have to do is wire our button in parallel with the existing button as seen in Figure 6.
Figure 6: How we plan to electrically attach our new buttons.
Now that we know how we're going to connect the buttons, the only other electrical modification we need to make so we can light shield by pressing a button (r). In smash you light shield by pressing on of the triggers in a very slight amount, so we need to know how the IC in the controller knows how far the trigger is pressed and how we can emulate this with a button press instead.

Since triggers can take a range of values, the voltage sent to the IC of the controller needs to also be able to take a range of values. This is accomplished with what is known as a potentiometer (pot). Think of a pot as a resistor with a movable tap in the middle of it. As the middle tap moves, the resistance on both sides of the tap move. This forms what's known as a voltage divider seen as the equivalent circuit in Figure 7. The voltage at our IC pin can be expressed as (R2/(R1+R2))*VCC. The resistance of R1 and R2 is the same as the total value of the pot (R1+R2=R) and the value of R2 changes linearly with the change in position of our pot's center tap (R2=position*R where position is between 0 and 1). Plugging those 2 formulas into our voltage divider formula we have that the voltage at our IC pin is position*VCC.

Figure 7: Schematic of gamecube controller's trigger circuit.

So when the trigger is not pressed at all, the pot position is either 0 or 1 and the pin voltage is either 0Vs or 5Vs. We can use a multimeter to measure this voltage to see which one it is, we are going to assume it is pulled to ground (0Vs) when not pressed (I'll change this post if I find it to be the other way). When we are light shielding, the pin voltage is some value between 0 and 5 volts. Figure 8 shows us a circuit that will let us use a button to light shield. 


Figure 8: Desired schematic for light shield button. 

When the button is not pressed no current is flowing, so our IC pin is essentially at 0Vs. When our switch is closed, we essentially have the equivalent circuit for our pot as seen in Figure 7. R2 and R1 are chosen so that their sum is close to the value of the pot (which we can find with a multimeter) and that they give us our desired voltage for light shielding (also found with the multimeter). Notice how the pot doesn't appear in our desired schematic. This means we're going to have to remove it from the PCB.

NEXT TIME:
In the next post we'll take a closer look at the gamecube controller's printed circuit board (pcb), decided where we need to solder our buttons, and then actually execute and test our changes. There will be plenty of pictures, and possibly video!!!!

Part 2: HERE

ADDED MUSIC BONUS:
My friend Ben from back home recently released an EP. It's awesome!!!! You can hear it here:

4 comments:

  1. Love it, I am thinking of doing something similar and this helps oodles

    ReplyDelete
  2. I tend to have a large amount of pain in my left hand due to moving the joystick, have you explored the idea of maybe reworking that side of the controller to help people who have pain similar to mine? I just want to be clear, I'm not criticizing I think the design is great, I just want to play melee again. Thanks.

    ReplyDelete
  3. I tend to have a large amount of pain in my left hand due to moving the joystick, have you explored the idea of maybe reworking that side of the controller to help people who have pain similar to mine? I just want to be clear, I'm not criticizing I think the design is great, I just want to play melee again. Thanks.

    ReplyDelete
  4. can u provide any information on on-circuit resistors and sinkholes?
    planning a custom mod with blinking buttons on-press

    ReplyDelete