Poké Pi
Greetings everyone, and welcome back!
Meet Poke Pi, a DIY Raspberry Pi-based gaming console themed around the iconic Poké Ball. This little cyberdeck is designed to play classic Pokémon games, along with other retro titles, in a portable and completely custom-built form factor.
The idea for this project started when I recently discovered Gen 1 Recomp, a community project that recompiles the original Pokémon Red into a native application. What makes it particularly interesting is that it opens up the possibility of playing the classic Pokémon experience in new ways, including enhanced visuals and different gameplay modes that give these old games a fresh feel.
Of course, running Gen 1 Recomp on a PC works perfectly fine but where's the fun in that?
I decided to take it a step further and build a dedicated Pokémon-themed Raspberry Pi cyberdeck, specifically designed around playing Gen 1 Pokémon games.
The enclosure is styled after a classic Poké Ball, using the iconic red and white color scheme. I even added a physical power button right in the center of the enclosure, inspired by the button found on a Poké Ball.
Inside the enclosure is a Raspberry Pi 4, paired with a 5-inch DFRobot DSI display. The entire system is powered using a Raspberry Pi UPS module that I picked up from the PCBWay Gift Shop, allowing the console to run from a battery instead of being permanently connected to a power adapter.
In this article, I'll walk you through the complete build process of Poke Pi from designing and 3D printing the enclosure, setting up the operating system and Gen 1 Recompiled, to assembling all the electronics and putting the final device together.
Let's get started.
Supplies
These were the materials required in this project.
- Raspberry Pi 4
- Raspberry Pi UPS Board (Got from PCBWAY GIFTSHOP)
- 5-inch DSI Display from DFROBOT
- M2.5 bolts
- M2 screws
- Button Board (from old project)
- Li-ion Cells 18650 3.7V 2900mAh x 4
- 3D Printed Parts
GEN 1 RECOMP
Before getting into the build, let's talk about the software that inspired this project: Gen1Recomp.
Gen1Recomp is a community project that recreates the original Pokémon games using a hand-written Lua/LÖVE2D engine. Unlike a traditional Game Boy emulator, it doesn't emulate the original Game Boy hardware and run the game exactly as it did on the console. Instead, the game data is imported and run through its own engine, which opens up a lot of possibilities for changing how the game looks and works.
The project started around Pokémon Red, Blue and Yellow, but has now expanded into Gen1Recomp++, which brings Pokémon Gold, Silver and Crystal into the same launcher as well. Crystal is currently marked as Beta, while the Gen 2 games are still considered Phase 1 support.
One of the coolest parts of Gen1Recomp is the community around it. There are already a bunch of mods that completely change the way these classic games look and feel. The DramaticShapeVoxelMod, for example, adds voxel-style 3D environments, depth, shadows and a different presentation for battles. There are also mods for followers, new sprites, translations, quests and other gameplay changes.
So instead of simply playing Pokémon Red the way we played it on a Game Boy decades ago, Gen1Recomp gives the community a foundation to experiment with the game and build something completely new around it.
You can check out Gen1Recomp from the below link.
HARDWARE- Raspberry Pi 4 and 5" Display
We are using the Raspberry Pi 4 Model 4GB variant in this project, which features a quad-core 1.8GHz processor, up to 8 GB of RAM, and dual 4K monitor support via micro-HDMI ports, making it suitable for a variety of demanding applications.
It offers excellent connectivity options, including Gigabit Ethernet, dual-band Wi-Fi, and Bluetooth 5.0, ensuring fast and reliable network connections. The inclusion of two USB 3.0 ports and two USB 2.0 ports provides enhanced data transfer capabilities. This model is also equipped with advanced multimedia support, including H.265 video decoding and OpenGL ES 3.1, making it an ideal choice for multimedia projects.
As for the display, we are using the DFRobot's 5'' 800x480 IPS display, which is an IPS display that supports the Raspberry Pi DSI display interface and comes with a capacitive touch panel.
The display operates at a voltage of 3.3V, supplied by the Raspberry Pi display interface, with a maximum operating current of 320 mA and a screen-off current of 100 mA. It features a resolution of 800x480 and connects via the Raspberry Pi DSI video interface. It supports up to 5 touch points, with an 80-degree viewing angle on all sides.
The color depth is RGB888, offering 16 million true colors, and the display has a refresh frequency of 60Hz. Additionally, the IPS panel includes optical bonding for improved brightness and clarity and anti-fingerprint and anti-glare coatings for better visibility in various lighting conditions.
HARDWARE- RASPBERRY PI UPS BOARD
For powering the Raspberry Pi 4, I’m using a UPS / power management module that I picked up from the PCBWay Gift Shop.
The board is essentially a compact power-management solution designed around four 18650 Li-ion cells. The four battery slots are connected in parallel, allowing the batteries to work together as a single power source while the onboard power-management circuitry handles charging, protection and voltage regulation.
Since a single Li-ion cell provides around 3.7V, the board boosts the battery voltage to 5V, which is what we need to power the Raspberry Pi 4 and the rest of the electronics. It also provides additional regulated outputs, including 3.3V, making it useful for powering different types of electronics.
The board can be charged through its Micro-USB and Type-C Inputs, while the regulated power can be accessed through the USB output and the onboard connectors. It also includes battery protection against overcharging and over-discharging, along with LED indicators to show the charging status.
For Poke Pi, this board works particularly well because it allows the entire system to run from rechargeable 18650 cells instead of being permanently connected to a wall adapter. This makes the console much more portable and gives it the feel of an actual handheld gaming device.
Some of the key features include
- Supports four 18650 Li-ion cells
- Battery protection against overcharge and over-discharge
- Micro-USB charging input
- USB Type-A output
- Up to 5V / 2A output
- 3.3V output for low-voltage electronics
- Charging current of around 0.5A
- Onboard LED charging indicators
- Power switch for controlling the output
- Multiple onboard power connectors
For this build, the 5V output is connected to the Raspberry Pi 4, providing the power required to run the Pi, display and other components inside the enclosure.
Note: Make sure to carefully check the polarity when using the 5V output. The positive (+) and negative (-) terminals should match the markings on the PCB.
PCBWAY SERVICE
As for the UPS board used in this project, I got it from the PCBWay Gift Shop.
PCBWay has a Gift Shop where you can find a variety of electronics modules, development boards and other hardware. You can purchase these products directly, or use PCBWay Beans, their reward currency, to redeem different items.
You can earn Beans through activities such as placing orders on PCBWay or sharing your projects with the PCBWay community.
And if you're someone who enjoys building and showcasing projects, PCBWay is also currently hosting its 9th Project Design Contest. It's a global competition where makers, engineers, students and innovators can submit their projects, showcase their designs and compete for prizes, with projects being evaluated by a panel of judges.
So if you have a project you've been working on, this could be a good opportunity to put it out there and have it seen by the maker community.
And of course, if you're looking for PCB manufacturing and assembly services, you can check out PCBWay for affordable PCB services and other manufacturing options.
DESIGN
Since this project is specifically made for playing Pokémon games, it felt natural to take the design inspiration directly from the Pokémon. And what better inspiration than the Poké Ball, one of the most iconic elements of Pokémon?
I designed the enclosure around the classic Poké Ball color scheme, splitting the main body into two separate parts. The upper part is designed to be printed in red, while the lower part is printed in white. These two parts come together to form the main body of the device.
To make the separation between the red and white sections more prominent, I designed a separate black border piece that sits between them. The power button is positioned right in the center of this border, taking inspiration from the button found on a traditional Poké Ball. With these elements combined, the enclosure starts to look like a giant, futuristic Poké Ball.
The internal layout was also designed around the hardware. The upper section houses the Raspberry Pi 4 along with the 5-inch DSI display, while the lower section provides space for the UPS module and battery system. A removable lid on the back gives access to the electronics and batteries, making it easier to assemble and service the device.
The goal was to keep the design visually simple while making sure the enclosure could accommodate all the hardware needed to turn this into a fully functional Pokémon gaming machine.
CONSTRUCTION
The main enclosure is made up of a front body divided into two halves. Once the upper and lower sections are aligned, they are secured together using four M2.5 nuts and bolts, forming the main front body of the console.
The upper half houses the Raspberry Pi 4 and the 5-inch DSI display. The display is installed from the front side of the enclosure and secured in place using four M2.5 bolts, keeping it firmly mounted inside the housing.
From the front, the black Poké Ball border is then attached around the center section. Since this part doesn't require frequent removal, I secured it using super glue.
Inside the enclosure, the power switch is positioned in its designated slot. To hold the 3D-printed switch mechanism in place, I reused a small switch PCB from one of my previous projects. The PCB is secured using two M2 screws, which also keeps the 3D-printed switch firmly in position.
Moving to the lower section, the UPS board is mounted inside the front body. The enclosure has four dedicated screw bosses for the board, allowing it to be secured using four M2 screws.
Finally, we close everything from the back using the 3D-printed rear lid. The lid is secured to the main body with eight M2 screws, giving us access to the electronics whenever the device needs to be serviced or modified.
There is also a square opening on the rear lid. For this version, the opening isn't being used for anything yet. However, I intentionally kept it in the design because I have plans for Revision 2. The idea is to add a proper cooling system through this opening and see how far we can push the performance of this little Poké Ball cyberdeck.
3D PRINTED PARTS
Once the 3D model was finalized, we exported the mesh files for each individual part and started the 3D printing process.
For the enclosure, we used Hyper PLA in different colors to match the Poké Ball design. The lower half of the front body was printed in White Hyper PLA, while the upper section of the front body was printed in Red Hyper PLA. The back lid and power switch were both printed in Grey Hyper PLA, and the Poké Ball border was printed in Black Hyper PLA.
All the parts were printed using the same basic print settings:
- Layer height: 0.2 mm
- Infill: 25%
- Nozzle: 0.4 mm
- Supports: Tree supports
BODY ASSEMBLY
- The body assembly process begins by putting together the two halves of the front body.
- The upper and lower sections are aligned with each other, making sure that all the mounting holes line up properly.
- Once everything is aligned, we use four M2.5 nuts and bolts to secure both sections together.
RASPBERRY PI & DISPLAY ASSEMBLY
Next, we install the Raspberry Pi and display assembly into the upper half of the enclosure.
- From the front side, we carefully place the assembly into its designated position and align the mounting holes on the enclosure with the threaded standoffs on the display assembly.
- Once everything is properly aligned, we use four M2 nuts to secure the Raspberry Pi and display assembly in place.
UPS BOARD WIRING
For the main power switch, I’m reusing a switch board from one of my previous projects. This saves us from having to design another switch circuit and also gives us a simple way to control the UPS module using the custom 3D-printed button on the enclosure.
The NC and NO terminals of the switch board are connected in parallel with the corresponding NC and NO terminals of the UPS board's onboard switch. This essentially extends the original switch to our custom switch mechanism.
With this setup, a short press turns the device on, while a long press turns the UPS output off, giving us convenient control over the entire system using the Poké Ball-style button on the front.
Next, we soldered a long JST-CON2 cable to the 5V and GND outputs of the UPS board. This cable will be used to connect the UPS output directly to the Raspberry Pi's 5V and GND GPIO pins, allowing the UPS board to power the Raspberry Pi and the connected display.
TESTING THE POWER OUTPUT
Before connecting the Raspberry Pi, it was important to verify that the UPS board was actually providing the expected voltage.
We powered on the UPS using the main switch and then used a multimeter to measure the voltage across the 5V and GND terminals of the JST cable we just soldered.
The multimeter showed approximately 5V, confirming that the UPS board was working correctly and that our wiring was ready for connecting the Raspberry Pi.
SWITCH ASSEMBLY
- We begin the switch assembly by first placing the 3D-printed switch into its designated position inside the enclosure.
- Next, the switch PCB is placed over the 3D-printed switch and aligned with the two screw bosses provided on the enclosure.
- Once everything is properly aligned, the PCB is secured using two M2 screws.
UPS MODULE ASSEMBLY
- The UPS board is positioned over the four mounting screw bosses provided inside the enclosure.
- Once the mounting holes are aligned, we use four M2 screws to firmly secure the board in place.
- Next, we connect the JST-CON2 wire harness from the UPS board to the Raspberry Pi. The 5V and GND wires are connected to the 5V and GND GPIO pins on the Raspberry Pi.
FINAL ASSEMBLY
- For the final assembly, we turn the device over and install the Poké Ball border. A small amount of super glue is applied to the back of the border piece, and it is then carefully positioned from the front side, exactly between the red and white halves of the enclosure.
- Once the border is in place, we turn the device over and position the rear lid. The lid sits over the provided screw bosses and supporting ribs, keeping it properly aligned with the main body.
- Finally, we secure the lid using eight M2 screws, tightening them evenly to hold everything firmly in place.
GEN 1 RECOMP INSTALLATION
For Gen1Recomp Installation, we first head over to the official Gen1Recomp download page and download the build made for our device. Since the Raspberry Pi 4 is running a 64-bit ARM-based Linux OS, we select the Linux ARM64 AppImage.
https://gen1recomp.com/download/
Once the AppImage is downloaded, we make it executable and launch it on the Raspberry Pi. Gen1Recomp then requires a compatible, user-supplied Pokémon ROM. The project currently supports Pokémon Red, Blue, Yellow, Gold, Silver and Crystal, with the Gen 2 games still under development.
For this project, we're mainly interested in Pokémon Red, so we import our compatible Red ROM into Gen1Recomp and first test the standard version to make sure everything is working correctly.
Adding the 3D Voxel Mod
But we're not stopping there. One of the main reasons I wanted to use Gen1Recomp for this project was the possibility of playing the classic games with a completely different visual presentation.
For the 3D version of Pokémon Red, Blue and Yellow, we can install DramaticShapeVoxelMod, which adds the voxel-style environments, depth, shadows and 3D presentation. VoxelMod is an optional addition; the Gen1Recomp engine handles the game itself, while VoxelMod changes how it is displayed.
We download the appropriate VoxelMod version from the preserved archive and follow the installation instructions for our platform.
Once the ROM and VoxelMod are set up, we launch the game, and there we have it: Pokémon Red running in a 3D-style presentation on our Raspberry Pi!
This is exactly what Poke Pi was built for: taking a classic Pokémon game, running it on a Raspberry Pi, and putting the whole thing inside a giant Poké Ball-inspired gaming console.
RESULT
And here’s the final result of the project, Poke Pi, a custom Raspberry Pi gaming device built specifically to run Gen1Recomp.
After all the designing, 3D printing, wiring and assembly, we finally have a working Poké Ball-inspired console. I’m currently playing Pokémon Red on it, but the really fun part is what Gen1Recomp and VoxelMod allow us to do with the classic game.
While playing, we can switch between different visual modes and completely change how the game looks. For example, pressing 3 cycles through the available 3D camera angles, giving the overworld different perspectives. We can also use 5 to toggle the voxel outlines, 6 to change the tilt-shift effect, and 7 to curve the world towards the horizon.
There is also a 3D battle mode, which can be toggled using 8, and 9 cycles through different water effects, including reflections. The VoxelMod also allows us to adjust the zoom, so we can move between a closer and wider view of the world.
And if you want to go even further, the latest VoxelMod also includes an experimental first-person mode, which completely changes the way you experience the overworld. It’s definitely something fun to try on a project like this.
So, with a few button presses, the same Pokémon Red game can go from the classic flat Game Boy-style presentation to a completely different 3D experience.
And honestly, this is what makes Poke Pi so much fun. We took a classic Pokémon game, combined it with a Raspberry Pi, added a bunch of 3D mods, and then built an entire custom Poké Ball-shaped gaming console around it.
CONCLUSION
And with that, Poke Pi is finally complete and it's working surprisingly well!
The battery backup has been one of the highlights of the project. With the current setup, I’m getting around 5 hours of runtime, which is more than enough for some serious Pokémon sessions.
Since we're using a Raspberry Pi 4, we also get the added advantage of Bluetooth support, meaning we can connect a wireless controller and play without being limited to the controls built into the device. This makes Poke Pi useful for more than just Pokémon and gives it the flexibility to run other games as well.
There is, however, one area that still needs some work: cooling. The Raspberry Pi can get quite warm during longer gaming sessions, especially when running Gen1Recomp with the 3D modifications. So, naturally, I'm already working on a Version 2 of Poke Pi that will address the thermal issue by adding an active cooling system with a fan.
For now though, the project is complete, everything is working, and I’m really happy with how this little Poké Ball gaming machine turned out.
I've included all the project files, design files and build details in this article if you want to build your own Poke Pi.
Thanks for making it this far, and as always...
Peace out!