If you’ve played any fighting games like Street Fighter for long enough, you’ve probably found yourself contemplating whether you should upgrade from a traditional joystick to a proper fightstick. Then you probably looked at the prices of fightsticks online and decided that your trusty old Dualshock (or one of these fine controllers) seems good enough to get you by. But thanks to the convergence of single board computing and 3D printing, you can build your own open-source fightstick for a fraction of the price of what you’ll find on Amazon.

👁 Best 3D printers
Best 3D printers in 2024

3D printers are more affordable than ever in 2024. Here are our favorite 3D printers to consider before buying.

By  Ben Smith

What you’ll need

  • Raspberry Pi Pico - the brains of your fightstick
  • Micro USB to USB-A cable - to connect your fightstick to your computer
  • Access to a 3D printer - to make the enclosure and buttons
  • 14 Choc v1 keyboard switches - the electromechanical portion of your buttons
  • Wire - to connect the buttons to the Pico
  • Soldering iron and solder - to connect the wires to the pins
  • Eight M3×10mm screws - to affix the back plate
Raspberry Pi Pico

The Raspberry Pi Pico is a $4 microcontroller board with Raspberry's in-house, ARM-based RP2040 chip. It's programmable in C and MicroPython and features I/O options like I2C, SPI, and PIO.

Making the enclosure

Just make sure your bed is leveled

When undertaking this project, the first thing to do is print the enclosure. We’re using a stickless design from jfedor on Printables.com, but there are lots of other options out there that have varying degrees of difficulty depending on how much you want to take on. Printing everything will probably take you over 12 hours, so build that time into your plans.

The buttons for this fightstick use Choc v1 keyboard switches and, depending on your 3D printer quality, you may have to adjust the size of the Choc stems on the buttons. Print out a single test button (it should take fewer than 10 minutes) and see if it fits in your switches. If not, we’ve published the switches with the smaller stems on Printables for you to download and print.

The regular and the large buttons fit in their nooks just fine, but the small buttons feel a bit too tight to travel freely. If you have this problem as well, the solution is to shrink the small button’s diameter by 5%. That print file is also available if you need it.

As for mounting your switches, we got lucky and all the holes were snug and the switches popped in with a little bit of force. Other people who have undertaken this project have reported that the holes were too tight and had to be filed a bit before the switches could be put in.

Installing the GP2040-CE firmware

This is the fastest part of the whole project

Before you wire up your fightstick, you need to flash the GP2040-CE firmware onto your Raspberry Pi Pico. Once it’s wired up, it will be harder to get to it, so it’s better to do it before rather than after.

  1. Download the firmware file to your computer.
  2. After the file downloads, use a USB cable to connect your Pico to your computer while holding down the BOOTSEL button on the Pico.
  3. If you do it right, your computer will recognize the Pico as a USB drive. Copy the firmware file onto your Pico.

Once the file has been copied, the Pico should restart on its own. When it powers back up, it will be recognized by your computer as a game controller.

Wiring your fightstick

I love the smell of solder in the morning

This is probably the most intimidating and time-consuming part of the project, but if you have basic soldering skills, you shouldn’t have any problems. The first thing you should do after putting in your switches is decide which switch will be mapped to which button. You can set this up however you would like, but this tutorial will be going with a pretty standard layout. If you’re feeling overwhelmed, take a look at this GP2040-CE table that lists the button equivalencies, and this page that shows you which buttons should be wired to which pins. You might want to make a schematic of your wiring plan or even write it on the underside of your enclosure so you don’t have to undo any soldering.

Now that you have a plan for how this is going to be wired, let’s get started. First, pick one pin on each of your switches to attach to ground. It doesn’t matter which one, but for simplicity's sake, it helps if it's the same pin on all of them. These can all be connected in a chain to conserve how much wire you use. If you want to make your life easier, use a different color for your ground wire than for your signal wire. Connect this chain to one of the eight ground pins on the Raspberry Pi Pico.

Use a pair of tweezers to twist a loop in your wire so that it can rest on the switch pins more easily.

Next, wire up the other pin on your switches to its corresponding pin on the Pico. This is where it helps to have that schematic of your wiring on hand to keep you from making mistakes. Also, don’t skimp on wire; it’s better to have the extra wire instead of having to go back and undo your soldering to add a longer length of wire.

As you’re working, pay attention to your angles. It’s very easy to melt your enclosure when your iron is over 300°F.

Once everything is wired up, check to make sure you don’t have any shorts, then plug your fightstick in and test it. If it works, congratulations on your new hand-wired, leverless fightstick! Remember to plug in a USB cable to your Pico and run it out the hole in the top before you screw down the back plate.

All that’s left is to get good

Now that you have a leverless fightstick, you need to put in the time to get good with it, because learning how to use it has a steep learning curve. If you don’t happen to think leverless is the way to go, there are plenty of other models out there that do make use of a traditional joystick which you can build and wire yourself. But sometimes, the process of making something is just as important as what you make.