PiSwitch is Christopher Foote’s take on the retro-gaming handheld console. It combines a Raspberry Pi with Nintendo’s latest innovative Joy-Con controllers.
This article first appeared in The MagPi 68 and was written by David Crookes.
One of the most popular things to do with a Raspberry Pi is to put it at the heart of a retro gaming setup. There are myriad multi-system emulators – programs which replicate the gaming systems of old – along with some slick graphical front-ends, making it a rather straightforward process. But we still see projects that go the extra mile such as this one. PiSwitch makes great use of the Joy-Con controllers of the Nintendo Switch console to produce a beautiful handheld machine.
PiSwitch is the brainchild of 32-year-old Christopher Foote who, as a child, would get one game a year to play (“two if I was lucky,” he says). He recalls spending countless hours trying to accomplish everything he could in those titles. “But there were always many games that I wanted to play but I couldn’t,” he laments.
Spurred on by this, he began using RetroPie a few years ago to enjoy games made for systems as diverse as the Atari 2600 and Mega Drive. But although he ran it on a Adafruit’s PiGRRL2, he found the buttons were sticky and he didn’t like the screen. “Then my wife got a Nintendo Switch for my son and when I played with it I realised the controllers were exactly what I needed for my device,” he tells us.
Having discovered the Switch Joy‑Cons were Bluetooth devices, Christopher got to work pairing them with a Raspberry Pi. “I spent a lot of time trying to connect two of them to work as a single controller and I thought if I could solve that problem, then the rest would be a cakewalk,” he says.
He compiled Linux Joystick Mapper on his Pi 3 before mapping the controllers to keyboard keys and mouse buttons. “It worked great apart from the analogue sticks, so I looked through the code for a few hours, figured how Linux Joystick Mapper worked, and reprogrammed it for Joy-Con compatibility.”
Knowing his project was possible, he could then get to work on refining it. He soldered a headphone jack to the Raspberry Pi so that he could listen to the games when commuting. He then sought to boost the battery life by soldering a power board and switch. A speaker was also added, along with a Pi V2 Camera Module (although this, he admits, was optional and included for fun). A case was printed and the components assembled inside before a 7-inch touchscreen was added.
One of the lovely parts of the build is the way the Joy-Cons click into place to the left and right of the screen, just like on a Nintendo Switch. “I took my Switch and a pair of digital calipers and I measured the inserts for the controllers,” Christopher says, getting the fit just right.
The two controllers make the PiSwitch versatile. “I can play one-player with both controllers to fully emulate a Nintendo 64 or PlayStation controller,” he explains. “The Joy-Cons also load different controller maps.” This ensures they work well with retro games whether as a single controller or separate ones, but also as a mouse or to flip through media on Kodi, which he also installed.
In the near future, Christopher is going to work on refining the case and the overall look of the console. “I’m also looking to add support for streaming via Steam,” he says. “I think being able to play games from your desktop anywhere in the house with the comfort of a handheld device would be a really cool feature.”
The controllers must be woken at the boot menu by tapping the + and – buttons. “Nintendo makes the Joy-Cons go to sleep when they’re not in use, to save battery,” says Christopher.
Christopher created his own touchscreen menu and included RetroPie, Kodi, and Debian. “RetroPie has a huge community, so with research you’ll find someone who’s done part of what you’re trying to figure.”
You need to copy a game ROM to the microSD card. This is a digital version of a game cartridge. By selecting the right console and the game in RetroPie, you can have some fun.