GC- : a Miniature GameCube Controller

by senoravocado in Circuits > Microcontrollers

3442 Views, 21 Favorites, 0 Comments

GC- : a Miniature GameCube Controller

IMG_2510.JPG
IMG_2511.JPG
IMG_2512.JPG
IMG_2513.JPG
image0.jpg
GC + Penny Comparision.jpg
IMG_2514.JPG
IMG_2515.JPG
IMG_2517.JPG

First I want to tell you guys about my motivation for completing this project. In the last couple of years i have been wanted to become an electrical engineer, and have since been taking classes at FIU (Florida International University) to pursue that dream. In my spare time I got sucked into the portabilizing world (you can find out about it on this website) Bitbuilt and ended up making a Wii laptop that I could play wherever I wanted. It also aligned with a lot of the practical engineering skills i was learning about in the classroom. I found however that even though I loved the feel of my OEM controller, it was super bulky, and I often would end up playing Gameboy games on my phone instead of packing all the stuff that I needed to play the Wii laptop. My original plan was to somehow embed the controller somewhere onto the laptop so it could be one unit, and then I could remove it when I was ready to play but that became too complex too fast. I then decided to try and just make the smallest GameCube controller I could that still had a form factor that was comfortable.

The Gameboy SP was my childhood Gameboy, so I thought it would be the perfect form factor for a mini controller. So with this general idea in mind I created the below goals that I wanted to meet with my controller:

  1. To have a full featured GameCube controller minus rumble using a pic micro controller
  2. To use 3ds sliders as they are the flattest joysticks i could find
  3. To utilize the DS Lite buttons, membranes, shoulder buttons, shoulder tact switches, springs, screws, and the trimmed motherboard to use as the contacts.
  4. To simulate the analog triggers with a dual tactile switch system
  5. To design the shell in a CAD program like Fusion 360 and to 3d print it.
  6. To make the size in all dimensions as small as possible. (it ended up being 63mmx63mmx12mm)
  7. Minimal amount of hot glue!
  8. For it to look good. I like the all black look.

Lastly, this is a shout out for all the resources that made this project possible:

Bitbuilt - Has so much good information about portabilizing in general

GC+ - One of the modders in the community created a gamecube controller emulator and it is the heart of the whole project

Supplies

IMG_2519.JPG

Getting the supplies to projects like these is probably the least glamorous part. Waiting on a part to be delivered can really throw a wrench in your momentum.

Below are links to some of the materials I used to build this controller successfully:

PARTS:

  • Broken/Donor DS Lite (ebay is usually a good place to look)
  • This will have all the screws, buttons, dpad, rubber membranes, tact switches, and trigger assembly
  • 3DS Sliders https://www.ebay.com/itm/303941827293?hash=item46c4583add:g:GQoAAOSwl0BgZSOR
  • 3DS Slider Caps https://www.ebay.com/itm/174445237892?hash=item289dbf1684:g:0FMAAOSwp6ZfaIRZ
  • SMD Headphone Jack https://www.ebay.com/itm/172330866491?hash=item281fb8573b:g:LMYAAOSwrhhZ~Ycp
  • Squishy Tact Switch https://www.ebay.com/itm/185200074340?hash=item2b1ec8de64:g:qzoAAOSwWdVgwJxF
  • GameCube controller cable https://www.ebay.com/p/1100076456?iid=251355157572
  • 3.5 Male TRS jack https://www.ebay.com/itm/112674610555
  • PCB for Microcontroller https://oshpark.com/shared_projects/pEYojr6X
  • PIC18F25K22-I/SS in the SSOP28 Package (Mouser or Digikey are good places to look)
  • 15x 10K Ohm SMD 0805 Resistors (Ebay, Aliexpress, Mouser or Digikey are good places to look)
  • 1x 100nf SMD 0805 Capacitor (Ebay, Aliexpress, Mouser or Digikey are good places to look)
  • 3D printed parts (STL's linked later)

TOOLS:

  • Soldering Iron
  • Flux
  • Solder
  • Multimeter
  • 38 awg Magnet Wire https://www.ebay.com/itm/371713063254?hash=item568bd33956:g:m2UAAOSwLVZVw6-J
  • 30 awg colored wrapping wire https://www.ebay.com/itm/384551360559?hash=item59890c182f:g:5O8AAOSwBoVhpq-j
  • Tweezers
  • Hot Glue gun
  • Super Glue
  • 1/16 drill bit
  • 3D Printer or 3D Printing service
  • PICkit v3 https://www.ebay.com/itm/331564909365?hash=item4d32cf0335:g:EpUAAOSwtKVafr0T
  • Razor Blade
  • Dremel
  • Sand paper

These listed parts are just an example of what to look for, but you guys can be thrifty and find whatever may work!

3D Designing

Screenshot 2021-12-08 130433.png
Screenshot 2021-12-08 130710.png
Screenshot 2021-12-08 130511.png
Screenshot 2021-12-08 130810.png

I did all of the 3D modeling in Fusion 360. I don't have a step by step of each individual extrusion and sketch as this was my first foray into CAD software, and there was a lot of trial and error making sure that I got the pieces just right.

I spent a lot of time with my digital calipers, taking measures of the ds lite and the various parts to ensure I had the most compact fit I could possibly get.

Ultimately, I was able to it get it the size of 63mmx63mmx12mm

3D Printing

IMG_2521.JPG
IMG_2520.JPG
IMG_2522.JPG
IMG_2523.JPG
14.jpg
15.jpg
16.jpg
IMG_2524.JPG

Here I have attached the STL Files used in this project. I opted to not put all of the screw holes in the model as it would allow me to test fit the parts, and then use a 1/16 drill bit to manually create the holes. This was a little time consuming in the long run but allowed everything to be a the perfect match.

Whether or not you use your own printer or a 3D printing service, you should be able to print these with the large flat surfaces face down, to have the best surface finish on the parts.

The last couple pictures eventually show the shell printed on a Form Lab 3 resin printer, you can see it is a lot smoother and the tolerances are a lot tighter. A little logo was also laser engraved to give it that final professional look.

Preparing Parts From DS Lite

17.jpg
18.jpg
19.jpg
26.jpg
20.jpg
30.jpg

When tearing down the DS lite, I used the following iFixit website, it has really helpful step by step pictures.

https://www.ifixit.com/Device/Nintendo_DS_Lite

Below is the main list of materials that you will need to scavenge from the DS lite:

  • Trigger assembly (bumper, little metal rod and spring)
  • ABXY buttons and their rubber membrane
  • D-pad and its rubber membrane
  • Start and Select button and its rubber membrane
  • The trimmed clicky tactile switches from the shoulder buttons area of the motherboard
  • All the screws
  • The mother board contacts for the ABXY buttons and D-pad

After everything is dissembled, we get to now chop up the motherboard! you can see from some of the pictures of what general shape you will need to cut the pcb contacts. I recommend the following procedure when chopping up the motherboard:

  • Use a Dremel to get the general square shape (make sure you do it further out so that you can sand it smooth to the right shape
  • Try to remove any components that can get in your way with some sanding or by clipping them off with wire cutters
  • use files or sandpaper to cut out all the notches to fit in the 3d printed shell
  • hold the trimmed pcb in the shell and then drill through the spots seen in the picture with a 1/16th drill bit so that it goes through the pcb and 3d printed part at the same time. this will allow the holes to line up perfectly

Also, we will need to remove one of the slim clicky tact switches that came off of the select/start part of the motherboard so we can use it as our z-button. I found the easiest way is to use a extra sharp razor blade, and cut the legs off the tacts like you are trying to get your spatula under a pancake and then flip it.

We will also trim the start and select membranes so that they can fit in their respective spots

I accidently destroyed one of the tactile switches on my first try so I had to substitute in another tact switch and perf-board. you should however be able to trim out the pcb on one of the start/select tact switches and then screw it in to the 3d model like the other button contacts

Wiring to Trimmed Button Contacts

IMG_2532.JPG

I used the above pinout to solder the magnet wires to their respective test pads. You can also use a multimeter to test continuity to the vias if you want to solder to there.

  • P00 - A
  • P01 - B
  • P04 - Right
  • P05 - Left
  • P06 - Up
  • P07 - Down
  • R00 - X
  • R01 - Y

you will also want to have at least on wire connected to a ground point on the trimmed pcb

It is often helpful to scratch off any solder mask that may be covering the tented via so that you can get a strong connection when you solder.

You will want to make sure that you do this step before you start screwing things into the 3D printed case.

Preparing Triggers

28.jpg
29.jpg

After this I got to work on the triggers. You will want to super glue the smd tact you took off the DS lite motherboard to the spot shown on the right trigger. You will also need to sand/file that area a lot to make sure there is enough space for the button, membrane and tact switch. This is a lot of trial and error, but eventually you should get a nice feeling z button!


GC+ Micro Controller

IMG_2533.JPG
IMG_2525.JPG
23.jpg
image0.jpg

This part was a whole new world for me, I had never flashed a pic micro controller before. This part was crucial though to get everything in the small form factor that I needed.

First you are going to want to populate the board with the proper components. Since we will not be implementing the rumble feature in this build, we are able to leave off some of the components. I have those circled in red. You will want to populate the rest of the passive components as these are the pull up resistors and smoothing cap for the power supply.

Having a hot air station is helpful for this, but you can also use a soldering iron with a fine tip or do some drag soldering with some flux. I watched a couple YouTube tutorials and did the drag soldering method, it turned out well! Just make sure you clean up your board with some IPA afterwards as the flux can leave some residue

Once you have the board soldered up, it is time to flash the PIC chip! I followed the below instructions on the bitbuilt website:

https://bitbuilt.net/forums/index.php?threads/how-to-program-your-gc-board.2541/

You will need to use the hex file found at this Github:

GC+ Github https://github.com/Aurelio92/GCPlus

After you have confirmed that is successfully flashed, you will then want to trim the board so that it will fit in the 3D printed enclosure. The picture I have here has the top right part trimmed out, I wouldn't recommend doing that if you guys tackle this project.

Assembly

22.jpg
23.jpg
24.jpg
15.jpg
16.jpg
25.jpg
27.jpg
31.jpg

Now we get to put it all together!

First you are going to want to place the buttons, D-pad, start button, their respective membranes and screw the trimmed motherboards into place with the left over screws from the DS lite.

Then you will want to put in the 3ds caps and Sliders and screw those in too. You will need to cut off the flex pcb coming of the sliders as we will be soldering to those eyelets. You will also need to sand the main stick slider a little bit so that it will fit in the overhang where the screw to close the case goes

if anything is loose, feel free to secure it down with some hot glue.

next we are going to screw in that cross bar that is over the D-pad pcb and will hold the microcontroller pcb.

After that we will screw in the little bracket over the ABXY button board that will allow us close the case.

You can then plop in the SMD audio jack and secure it in there with a little glue. the little bracket is then glued and screwed into it to secure

Next we will want to super glue in the clicky tact switch trimmed from the ds lite and the grey squishy tact switch in their respective places as shown in the pictures. you will want to also to cut off two of the legs and get them as flush as possible.

You will also want to cut off the little post inside the trigger that used to actuate the switch on the DS lite. there will be some trial and error but you will put some tape in its place until you have the correct action, a half press that triggers the grey squishy switch and a full press that actuates the clicky switch.

After you wire the trigger buttons, you can then place the triggers with their metal rod and spring just like it was in the original DS Lite

Wiring

F3DU8MHKWXJLZH6.jpeg
s-l1600.jpg
IMG_2531.png

Next is wiring all of the contacts to the microcontroller! Most of the buttons are referenced to ground, so you will connect one end of the switch to ground, and the other to its respective pin on the micro controller.

you can see in my final wiring picture that I scraped off some of the solder mask on the ground plain to give more areas to connect to ground. Wire management is key here! Using your tweezers will help getting the cleanest outcome.

You will need to refer to this link when wiring the contact and what each pad does.

https://bitbuilt.net/forums/index.php?threads/gc-documentation.695/

"L" and "R" are referenced to 3.3V so make sure you wire that up correctly. For example, the grey squishy tacts will have 9ne leg connected to L and the other to 3.3v

Also, since this orientation of the 3ds sliders is not the normal, we will have to swap the x and y axis to their respective pads. The picture shows what is traditionally the pinout, in our circumstance we need to make sure that:

x-axis on main stick slider -> SY on GC+ pcb

y-axis on main stick slider -> SX on GC+ pcb

x-axis on c stick slider -> CY on GC+ pcb

y-axis on c stick slider -> CX on GC+ pcb

We will be able to adjust the stick settings later in the Wii homebrew configurator included in the GitHub

Also we are wiring up this audio jack in a very unorthodox way. I decided on this convention so that the 3.3v doesn't accidently get shorted to any of the other lines when you are inserting the custom GameCube cable that we will be making later on.

I have also provided a picture of my finished wiring and what you can expect yours to look like.

You should then be able to close it up with some more screws from the DS lite to finish it out!

Custom GameCube Controller Cable

IMG_2534.png
IMG_2529.JPG
IMG_2530.JPG

Since we used a headphone jack as the connector to the controller, we will have to create a custom cable that will allow us to connect it to our Wii or GameCube.

the easiest way is to get a low quality 3rd party controller, or a GameCube extension cable. I had a grimy GameStop controller that could be repurposed, so I lopped off it’s cable and used it.

I have the pin out of the GameCube connector shown here, you want to make sure that it is wired in the following convention:

3.3v goes to sleeve

Ground goes to ring

Data goes to tip.

You can use some electrical tape or shrink wrap to strengthen the connection too if you desire!

Configuring the Controller

Since 3ds sliders are not the typical joystick for the GameCube, the creator of GC+ Made a Wii homebrew application to configure the joy sticks. I won’t get to much into this as there is so much information about Wii homebrew, but essentially you will want to hack your Wii to get the homebrew channel, and then add the firmware from the GitHub to then tweak the settings.

After all of this, you should have a fully functioning mini GameCube controller minus the rumble to play anywhere you want!