I made a 2 button version of my Pico 8 fanmade handheld. It works better than the 4 button version so I’ll focus more on just the 2 button version.
I also made it possible to boot into Pico 8 using cartridges. They aren’t rom cartridges, but SD cards with a 3D printable shell to make them look and feel like cartridges. The designs are not final. It works and I posted a guide on the Pico 8 forums: https://www.lexaloffle.com/bbs/?tid=44530
How does this all work? You plug in a SD card into a USB SD card reader that is connected to a Raspberry Pi and have the Raspberry Pi search for a Pico 8 .p8.png file in the SD card or anything else you want it to find. If it finds a Pico 8 rom file, it will run that game in Pico 8. If it finds nothing, it will just boot into Pico 8 with splore. You can use this for any project you want, not just Pico 8. Here is a picture of version 2 of my handheld:
Raspberry Pi TV console project
This is my new project. It is not Pico 8 specific, you can use this for any project you want. I will use the same SD card cartridges in my Pico 8 handheld project in this project too. You can use this as a Pico 8 specific console, or use other fantasy consoles that run on the Pi, or anything else you want. I tried soldering a old RCA cable to a Raspberry Pi Zero and it works, so I will make sure this project will work on CRT TVs.
I’ve reached version 1.0. These pictures aren’t from version 1, but I made some last-minute changes. The power switch on the top of the console needs some hot glue to hold it in place better, but other than that, it is done.
Raspberry Pi Zero W – The computer that powers Pico 8.
Waveshare 1.5 inch OLED screen with a resolution of 128×128, the exact screen resolution for Pico 8
A mono speaker.
Powerboost 1000C charging board that recharges a Lithium-ion battery, but also lets people plug their consoles into a wall for long play sessions. This battery is much more powerful than 3 AA batteries so you can play on the go for much longer. Also, AA batteries are wasteful, especially if someone intends on playing with this console all the time.
Clicky buttons for the Dpad, pause button, and 4 action buttons. Pico 8 uses 2 action buttons, X and O, but I will see if there is a way in Pico 8 where you can use the top two buttons. Pico 8 apparently can access the Raspberry Pi GPIO, so I’ll look into that. The X, O, and pause buttons are keyed in, so they don’t rotate 360 degrees.
The final changes I made were making the screen hole 0.5mm larger and made the screw holes for the bottom of the Powerboost 2mm further down. Other than that, it is now done. I may add a venthole or vent strips on the backplate to make things cooler to prevent any overheating, but it is now pretty much done. Thanks for reading and have a wonderful day. The tutorial post should be out soon, depending on how busy I’ll be at work next week.
Hello, I’m grhmhome and this is my first soldering project from scratch. I’m teaching myself how to solder and wanted to do more projects so I could learn more. I’m a fan of retro-gaming and enjoy the Pico 8 platform. What is Pico 8? It is software that replicates the look and feel of an old computer or game console with fake limitations. It is available for Mac, PC, Linux, and the Raspberry Pi (the hardware we are going to be using). If you are interested in learning more, check out their website here. The best part is that you don’t even need to buy Pico 8. You can play Pico 8 games using a web browser, but if you decide to make your own Pico 8 handheld, you will need to buy a copy.
My goals for this project were the following:
The console was to be designed for Pico 8 and Pico 8 only using a Raspberry Pi Zero or Zero W. It was intended to boot directly into Pico 8 and have a screen meant for Pico 8.
The console was to be designed using readily available parts such as a Raspberry Pi Zero W, generic buttons, perfboard, etc.
The project is meant to be a beginner friendly project so people who are new to soldering could use this as their first project if they wanted to.
The console is meant to be comfortable to hold for longer play sessions and the buttons should also feel great to press.
The project cad files will be open source so people can fork, modify, or do whatever else they want with the cad files. I will not provide cad files with the Pico 8 logo or any Lexaloffle branding as this project isn’t affiliated with their company.
The design work
I fired up my favorite cad software and got to work in making a basic handheld design and had to decide on the screen resolution, the number of buttons, and overall shape. Originally, I wanted a semicircle shape, but realized, that it wouldn’t work, due to the parts used, so I went with a rectangular shape with rounded edges instead. After I bought some of the supplies I would need, I measured the screen bezel, screen PCB, speaker diameter, Raspberry Pi Zero, and AA battery holder, as I needed to see how thick the console was going to be and had to make sure everything would fit.
After that, I printed a prototype shell to see if the button spacing was good enough. I was able to subtract another 5mm from the overall thickness once the parts arrived and found I had room to spare. Shrinking the handheld by 5mm made the console less bulky and more comfortable to hold. I believe comfort should be an important factor when making consoles.
After I printed the first prototype, I had to figure out where I want the battery holder to be. That was going to be the largest component and I needed to make sure it wasn’t going to be in the way of any of the other components. I ended up deciding on using the back-plate to hold the battery holder and be where the battery door would screw in. I added 2mm screw holes for the front half of the shell and added screw holes for the back plate. The battery holder would be on the left side of the unit away from most of the components.
Once the screen arrived, I had to learn how to make it work with the GPIO pins. I learned a lot about display drivers and had to scour the internet looking at ways to get my display to work properly. I opted for one display driver, but I couldn’t get that to work and since SPI was all new territory for me, I spent hours looking up other ways to get things to work, such as use another display driver, and edit source files. I found a display driver that would work perfectly after compiling, I finally got the display to work, well, sort of. The screen was displaying a bunch of glitches, and after recompiling another time, it finally worked perfectly.
Now, I was able to work on soldering the controls. I ended up buying some tactile buttons, a perfboard, and got to work. This was my first time ever using a perfboard, as my previous project involved me soldering PCB’s from a kit, and I had to research how I was going to get everything to work, so I settled on placing all the buttons in the right positions, followed by soldering each button to a wire that was soldered to a central ground jumper cable, and that ground jumper was connected to a ground pin on the gpio. The rest of the buttons also had a jumper cable soldered to them. After that, I installed a gpio controller driver, and one button refused to work. I soldered a new button, and it still didn’t work, so after replacing the jumper cable, it finally worked.
After I bought the last of the supplies needed, I soldered a 32-ohm speaker to a mono cable. I originally thought I ran out of space on the gpio, so I opted in using a usb adapter. The only issue is the sound is a bit quiet, so I might try an amplifier and use one of my 8ohm speakers, so I can have much louder audio, but for the time being, it seems to work for now.
Problems started to form
I made sure that Pico 8 would auto start when you first start up the machine and made sure the system wouldn’t boot into Emulationstation, but I quickly ran into a problem. Something was making Pico 8 think I was constantly pressing the up button. I thought, strange, this isn’t happening in Emulationstation, but had to figure a solution and fast if I wanted this project done by Sunday. What I did was removed all the jumper cables and connected them to the Raspberry Pi via SSH. Fortunately, I realized it wasn’t the buttons, or the screen causing this, but it was due to the controller gpio driver. Apparently, one of the pins, I think pin 11 was being used by both the screen driver, and controller driver, so I replaced the gpio controller driver with something that would allow me more freedom of which pin I could use, and the problem was gone.
After I reconnected everything, I found one more issue, the system performance was taking a hit, and I’m assuming it’s due to a driver conflicting somewhere, or maybe it’s something causing the hardware to throttle, but for now it at least ‘works’.
I then went back into the cad software and put in the final screw holes and was able to print the console, buttons, and assemble the first beta version. I found some glaring issues such as the buttons freely rotating so I’m making new buttons that will not rotate and they will only move forward and back.
I want to thank the Pico 8 community for being supportive and having an interest in my project. The tutorial post should be available soon. I will not go over how to solder, but I will give a parts list, post links to the cad files and STL files, and will show you how to get the gpio drivers to work. The files are available here on Thingiverse: https://www.thingiverse.com/thing:4938902
I’m using a battery holder that will use 3 AA batteries. I had to create a door and make it simple to remove. On the backplate of the shell, I also made a housing for the battery holder. I’m thinking of making the backplate mount all the electronics, but the front part of the shell will have holes that will allow you to attach both parts of the shell together.
I will probably smooth everything out everything and will update you on this project once I start on sound and the controls. Have a good rest of your day.
Hello again. I 3d printed a prototype of my shell to see how the console will feel in the hands and if the parts will fit in properly. The parts will fit properly and I have some wiggle room to shrink the shell down so the console will be around the same thickness of a Gameboy. +/- a couple of mm.
The 128×128 screen has arrived so I can try to get that part working and see if Pico 8 will behave properly with that display.
Here are some pictures of what the current prototype looks like.
The first prototype does feel great in the hands and the d-pad and button spacing feels perfect, but it is too thick to hold. Fortunately I’m going to shrink it down 5mm. I will also change where the battery compartment will go and that might let me shrink it down further. I will work on the screen hopefully today and will update the blog soon. Have a wonderful rest of your day.
Hello again. Here is another update to my Pico 8 fan handheld project. I have made the front and back rounded. There is no name for this project yet, but I’m open to suggestions. Some of the internal components have arrived in the mail, but the display I’m going to use will arrive soon.
The shell of this device will be 38mm or roughly 1.5 inches. This is temporary until I figure out how I want to house everything. After that, I can shrink the handheld so it wont be so bulky.
The display is a 128×128 resolution screen from Waveshare. It is the Waveshare 1.5inch RGB OLED Display Module. The part number on the ribbon cable is ssd1351u3. It has a SPI display interface and there are repos on Github that have what I need, the ability to copy the frame buffer. Once I get the display working properly, I will work on sound, then work on the button inputs. I’m thinking of using tactile switch buttons for the action buttons; pause button, and dpad.
3d printing the prototypes
I have a Anycubic Mega Zero 3d printer that I will use for making prototypes. It has a 220 x 220 x 250 mm build area, which is more than enough for this project. The first prototypes will be to see how the handheld will feel in the hands and see if the button spacing is adequate enough. Once most of the parts arrive, I will see if the internal parts will fit properly (they should) and where I want to mount all the components. Once everything is done, I will add the screw holes and create a battery door. I will post pictures of the prototypes soon.
This is what the handheld looks like in Cura, the slicer program I use for 3D printing. I’ll be printing at 0.3mm layer height and it should take me 3 hours and 25 minutes for the first prototype to finish printing, as long as my printer doesn’t have any issues.
If all things go well, I will post an update on the 3d printed handheld prototype. Have a wonderful day.
Hello there. I’ve been working on a Pico 8 inspired handheld. This is what I’ve been working on for 2 days. It is a bit bulky, but I plan on resizing everything once I figure out what can all fit inside adequately. This is a work-in-progress project and isn’t a project endorsed by Lexaloffle. It is entirely a fan project. I will upload the stl files and parts list on my Thingiverse page as I get further along with this project. The fan console will have 4 action buttons, a pause button, a d-pad, a speaker, and a 128×128 resolution screen.
I wanted to make a custom handheld for the Raspberry Pi Zero W for quite a while, where I could use a knock-off SNES controller inside, but then I decided on creating a niche project instead. I love the Pico 8 platform as I love retro consoles and computers from the 80’s to early 2000’s.
Why 4 action buttons? The Pico 8 fantasy console uses two action buttons. X and O, but I thought some games might use more than two buttons, so I felt like 4 was perfect.
I will update this blog as I continue this project. Have a wonderful day.