Giant Retro Gamepad
So we decided to make a giant working gamepad... ¯\_(ツ)_/¯
The basic idea was to use up some scrap wood and add some inexpensive electronics to make it functional while keeping the overall costs low. I already had most of the materials lying around my garage but you should be able source most of this stuff fairly inexpensively from you local hardware store and popular web sites that sell electronics parts.
I decided to go for a fairly simple design by crossing the classic NES gamepad layout with the additional buttons of the SNES. I think this design fit well with the wooden construction and gave it a cool retro style.
Due to the simple design I didn't need to do a lot of up front sketching. I just marked out the cuts directly of the largest piece of board I had and worked loosely off the center lines rather than precisely measuring everything.
Woodwork Tools and Materials
WARNING: USE CAUTION AND APPROPRIATE SAFETY EQUIPMENT WHEN OPERATING POWER TOOLS
Tools
- Screwdriver and screws
- Table saw or circular saw
- Chop saw
- Jigsaw
- Drill and misc bits including 60mm & 25mm hole saws
- Sanding paper/blocks
- Steel wool
- Router and bits:
- Round corner
- Round cove
- Chamfer
- Straight
Materials
- 19mm (3/4") boards - I used laminated boards I had left over from cabinet work but ply or MDF would likely work as well with an appropriate finish.
- 60mm dowel for the face buttons - this was left over hand rail from my stairs. Alternatively you could cut these from the board with a hole saw and fill in the center hole with wood filler
- Wood stain, varnish and thinners
The D-Pad
I first marked out the D-Pad button on a piece of the laminated board by tracing around a piece of wood of roughly the size I was going for in both the horizontal and vertical orientation to make the plus shape.
I then cut it out using the jigsaw and sanded it down until it was smooth and fairly uniform. I also rounded off the top edges using the router with the corner rounding bit.
When I was happy with the overall shape I laid the D-Pad button on top of another larger board to be used for the top of the game pad.
I traced around the D-pad with a pencil to cut out the D-Pad shaped hole. When cutting this out I first marked out the corner points with small drill holes and then used the jigsaw to cut out the main shape.
I took some time to sand down the edges of both the D-Pad button and the hole to get it to slide in and out smoothly. You'll want it pretty loose but with minimal lateral movement.
The Buttons
Next I cut the face buttons from the 60mm dowel and the smaller pill shaped buttons for Start and Select from offcuts from the top board. I then cut equivalent holes in the top board using the 60mm hole saw for the larger buttons and the 25mm hole saw and the jigsaw for the start and select buttons.
I cut the dowel in a chop saw with a slightly dull blade so the face buttons got a little charred in the process as you can see in the pics but that didn't matter as I was planning to stain them in a dark color anyway.
To give the face buttons a nicer feel I rounded off their top edges using the router with the corner rounding bit. I just sanded down the top edges of the Start and Select buttons as they were a bit too small to work on with the router.
At this stage I also rounded off the corners on the top board using the jigsaw (marked out using a varnish tin lid) and added a beveled edge all around using the router with the chamfer bit.
Adding the Base Board
The base board houses the electronics and is just another piece of 19mm (3/4") board. I cut it to shape by placing the top board on the slightly larger base board, tracing its shape with an extra 1/2" using a spacer and then cutting it with the table saw and jigsaw for the corners.
I also rounded both top and bottom edges of the base board using the router with the rounding corner bit.
Wood Finish
Starting with the the buttons, I used some dark Polyurethane based stain/varnish that gave a nice soft, plasticky finish to the buttons which worked perfectly for those.
I stained the base board using a dark wood stain applied with a cloth, trying to match the color/hue with the buttons as closely as possible while retaining more of the wood grain.
I then finished the top and bottom boards with clear satin varnish using multiple coats and rubbing down with the steel wool and thinners in between coats to fix any blemishes.
It is important throughout this stage to continually check that the buttons are still fitting well and do any necessary adjustments as you go by sanding any areas where things are starting to stick.
Wiring Preparation
In order to make some space for the electronics I cut a cavity in the base board using the router and the straight bit.
I also cut wiring ducts to all of the buttons using the cove bit. I first marked out the location of the button holes on the baseboard in pencil using the top board as a stencil.
This allowed me to route the easily route the wires later.
I also cut a cavity into the rear of the top board to allow extra space for the micro-controller and breadboard.
The USB cable access was cut with a smaller straight bit so as to leave it snug in its routing duct and avoid any movement.
Electronics Tools and Materials
Tools
- Multimeter/connectivity tester
- Soldering iron
Materials
- Arduino Leonardo/Pro Micro with USB HID joystick profile (I used a cheap clone)
- Microswitch buttons (the smaller and flatter the better)
- Mini breadboard (or however you would prefer to wire up the controller)
- Connecting wires (I mainly used Dupont jumper wires)
- Electronics solder (still had my original rosin core reel from college)
- Heat shrink tubing
- Glue to attach wires and switches to the wood e.g. Glu Dots or a glue gun
Wiring the Buttons
After trying out a number of ways of getting the buttons to work reliably I found the approach that seemed to work best was to use a number of micro-switches wired in parallel for each button such that if any of the switches were triggered the button would be "on".
This required wiring a loop for each of the buttons and wiring each of these loops back to the mini-breadboard. The loops were soldered and wrapped with the heat-shrink tubing and each loop was connected back to the breadboard using Dupont jumper connectors.
During this stage it is important to continually test connectivity using the multi-meter/continuity tester and finally test with the actual wooden buttons.
Wiring the Controller and Code
Wiring the controller was pretty straightforward due to the use of the mini-breadboard and Dupont connectors which meant I could easily move the wires around as necessary.
The code is pretty basic too. I reused some of the code from a previous gamepad project (you can ignore the joystick axis bits which are not needed in this project).
This code uses the excellent Arduino Joystick Library You can learn more about getting started with that from this handy instructable.
Assembly and Testing
I used the Glu Dots to attach the micro-switches to the base board for convenience but a glue gun would likely do a more permanent job.
I made some feet using the hole saw cutouts from the face button holes. I also bezeled these on their bottom edge using the router with the chamfer bit.
I then screwed the base and top boards together though the feet.
After some testing by the project QA lead we discovered that the buttons were getting stuck and of course would fall out if the gamepad was turned over.
The solution to these issues was threefold.
- Firstly, I drilled holes in the base board at the button centres so that a screw could be loosely slotted through and then screwed into the button.
- Secondly, I added extra micro-switches (they were very inexpensive) to avoid the button getting pushed into a dead space and getting stuck. This also added a nice extra clickiness to the buttons.
- Thirdly, I added pieces of spring so that the buttons wouldn't move around (optional but a nice enhancement).
This solution actually works pretty well and made the gamepad function as desired. It also allows the individual button heights, play and springiness to be adjustable via the center screws.
Final Thoughts
This was a fun project and I was quite satisfied with the end result. The pad was heavily stress tested at an all-day tech demo and held up to continuous usage by some pretty enthusiastic players with no problems.
If you are interested in building your own version, check that it is compatible with the console or computer that you want to use it on. It should work fine on any device that supports the USB standard HID joystick profile. I tested it on Windows and Android and it works perfectly on both.
It also works great in web browsers that support the HTML5 gamepad API which I use in a couple of retro games I developed along with the gamepad - Invaders from Space and Galaxeroids. Check them out too!
Thanks for reading this far and let me know what you think in the comments!