< Back to the Projects

Forgive me, father, for I have strayed from the path

...I can explain.

So for April Fools, aka yesterday when I'm writing this article, I wanted to make a regular controller instead of a giant arcade-style rectangular abommination. My luck stat being what it is, I ended up getting the boards delivered on April 2nd. I guess I am the fool today !

Mail time !

I have tried a few six button pads a while back, and none of them ended up being good for me. Either the plastic was too shoddy (like the original Hori Fighting Commander), the buttons were mushy, or the d-pad was total assballs. So I decided to do what I do best in those cases: Ork Mekboy-style Engineering !

For this recipe, we will need: all this crap and more

  • 13x 6x6x4.3mm through-hole tactile switches
  • 2x Xbox shoulder button switches (I'm pretty sure they do have a canon part name but I don't know it)
  • 1x Waveshare RP2040-Zero
  • 4x DIN 7991/ISO 10642 M3x20 countersunk hex bolts
  • 6x M3 hex nuts
  • Usual soldering stuff (iron, tin, wire, desoldering pump...)
  • 1x fine BadPad board (it's going to be on the repo)

Hold the phone. You got boards fabbed for this ?

Technically the boards aren't necessary, they're just a glorified carrier to facilitate wiring the buttons to the Zero.

But yes.

I hadn't designed a board in a while, and for Cost EfficiencyTM I decided to make a Zero carrier board, with a reverse mount style, so I could save a ton on having a USB-C connector and assorted hardware1. The Zeroes are super cheap and easy to work with, so as far as I'm concerned, it's a win-win in my book. If you really want to make things omega hard for yourselves, nothing prevents you from 3D printing a mounting plate onto which you'll mount the switches and then use regular wire to connect to the Zero. No idea how you would mount the Zero itself though !

Anyways, let's put them buttons in place. I put on some background music (today's flavor is Chuck Person's Eccojams Volume 1 if you're interested) and get to work:

Aaaaaand it's a World Record for the fastest SNAFU from the French player !

I immediately run into the first snag of this project: for whatever reason the Xbox shoulder button switches are a lil' chonky on the rear legs, so I straighten them away with some pliers. And now they fit like a glove !

If only everything was this simple (subtle foreshadowing)

You can very probably guess what's next. If not, lemme spell it out for you: addition of a mixture of tin and copper in molten form through careful application of localized heating in order to form a coherent mechanical and electrical connection between the components and the board. (Which is LinkedIn speak for "soldering")

Always do a horrible job at soldering grounds so you have an excuse to blame your turbo oxidized tip instead of your shoddy technique

But of course, these are only buttons. They can't do nuthin' without a brain to control them. Enter the Zero, reverse-mounted, to serve as the true mastermind of the entire operation.

Of course it barely does not fit

Whatever. Don't need a reset button anyway

Gork and Mork bless the painter's tape, best way to hold surface mounted things in place while you solder them

Somehow I've done a far better job on the Zero than I did on the buttons

At this point the BadPad is technically working, so I guess it's time to upload the GP2040-CE firmware and test if everything works. (I have PETG cooking in the filament dryer anyway so I've got some hours to spare)

Uh-oh. I am pressing buttons here.

You might be noticing a whole lotta fuck-all in the GIF above. That is because it is the precise amount of things happening as far as the Zero is concerned. Which can mean a few different things:

  1. I have done such a terrible soldering job that literally none of the grounds are actually connected to the board
  2. I have a dead RP2040-Zero (can't be it since I managed to upload firmware on it)
  3. I have made a critical mistake in my schematics and the board ground isn't actually connected to the Zero's ground

GUESS WHAT.

That's... bad. And not in a me way. Fortunately this is also a human-correctable error: All I have to do is bodge a wire between the Zero's ground pin and any other ground connected to the buttons, and unless option number one is also true, that should fix it.

Jank is the spice of engineering after all

Saved by the hack

Now... it's printing time !!


1: Seriously it saves like 40€ over a batch of 5. USB-C assembly is super expensive and I don't have a hot air station to do it myself

Being a little extra, I decided to get my top and bottom plates made out of laser cut plywood.

With a touch of Mahogany varnish for that dark sultry tone

After letting the coat of varnish dry on the underside of the top panel, I'mma neoprene glue this on top, and close everything out with the countersunk hex bolts. I'd rather dispense myself of glue to be honest, but wood being wood, I don't really have a choice on this particular matter. Anyways, I clamp the wood on and tuck in for the night.

Shoulda made it red so it polls faster /s

On the chassis side, nothing really exciting. The controller could be a lot thinner if I really tried, but at 25 millimeters I consider it already a little on the thin side of things. Doesn't bother me as long as it fits right in the hand though.

Buttons are printed in PETG with ironing on top just to make sure they're sorta smooth to glide on. I don't expect to pull slide manoeuvers considering the stair stepping on them, but if they at least don't catch my thumb, I'll go with that for now. I might get some resin printed ones down the line, who knows.

Assembly is a breeze - I only have to add some nuts on the back screws to properly space out the board (weird, I was pretty sure I fixed that in an earlier chassis revision, but oh well) and thread the triggers in.

Tada~

Note: I am not a Mishima player, I practiced about 35 seconds, therefore no EWGF

AK's more my style but pressing 2+4 is still iffy... Need more practice

Yes I mash with reckless abandon on Street Fighter, get over it already

Even the buffered 720 is easy

Of course for a first handheld gamepad build, it's far from perfect. It works a lot better than I imagined it would though, which I'll gladly take as a W, but at least I've got some ideas for improvement (should that day ever come). First in line would obviously be resin printed buttons for enhanced comfort, but also maybe rework the triggers to not be fully hinged, instead relying on a linear plunger type design.

As far as the electronics go, well I do need to figure out a way to widen the cutout to no longer have to toss the RESET button from the Waveshare RP2040-Zero. Not that I need it anyway, but it's still one less operation on my end, and less waste as I personally have no use for SMD tact switches. I should also probably add test pads and/or break out the so far unused I/O to add things like L3 and R3.

Either way, that'll be all for me today. I will publish the files on GitHub soon-ish !

- Bad64