RYCADE: Building a Tabletop Arcade When I Needed It Most
What started as an idea for a handmade arcade controller evolved into a fully self-contained tabletop arcade, complete with custom 3D-printed parts, Batocera, a battery-backed Raspberry Pi, and a personalized lithophane marquee.
William
1/5/20264 min read


It had been a long time since I last wrote anything on MotoLinux. Not because I had nothing to say, but because nothing had quite sparked that part of my brain that feels compelled to document, reflect, and share. This project changed that.
What started as a simple idea for a Christmas gift snowballed into a month-long deep dive into design, electronics, Linux tinkering, 3D printing, failure, iteration, and ultimately something I’m genuinely proud of.
This is the story of RYCADE.
It Started With a USB Arcade Stick
I didn’t initially set out to build a tabletop arcade cabinet.
I didn’t even have a gift idea.
I just knew I wanted to make something for my little brother. Something personal, nostalgic, and meaningful. At first, I thought a custom USB arcade stick would be a reasonable goal. I already had store-bought sticks that worked perfectly fine, but that was almost the point. I wanted to build something from scratch, even if it wasn’t strictly necessary.
Once I started thinking through the arcade stick—buttons, joystick layout, wiring, firmware, it clicked: if I could do this, I could probably build a small arcade cabinet.
That moment was the domino.
Choosing the Platform
I decided early on that I wanted this to be a real system, not a novelty toy. That meant Linux, proper power management, and flexibility.
The core components ended up being:
Raspberry Pi 5 (8GB RAM)
Samsung 512GB microSD card loaded with Batocera
Geekworm X1203 UPS
5200mAh battery
Batocera was an easy choice. It’s purpose-built, stable, and gets out of your way. The Geekworm UPS added complexity, but also opened the door to something I really wanted: battery-backed power and graceful shutdown.
From there, the ideas kept coming.
Power, Switches, and Overengineering (The Fun Kind)
I added several physical controls to the cabinet, each with a specific purpose:
A switch to change CPU governors, allowing me to trade performance for battery life
A battery level indicator, soldered to a momentary button so I could check charge on demand
Power management that allowed the system to shut down gracefully when the battery got low
Not all of this was strictly required, but it scratched the same itch that’s driven most of my favorite projects over the years. Understanding how something works, then shaping it to behave exactly the way I want.


The Marquee: RYCADE
The marquee is my favorite part of the entire build.
Instead of copying a known arcade name or theme, I created a portmanteau:
Ryan + Arcade = RYCADE
I designed the marquee as a lithophane, allowing the light to reveal depth, detail, and texture. It took multiple attempts to get right—aspect ratio, thickness, print orientation, light diffusion, but once it clicked, it really clicked.
The final marquee includes:
The RYCADE name
Classic arcade-inspired iconography
Pikachu (my brother’s favorite)
Simple, personal, and completely unique.
Assembly Day
Once the shell was printed and painted, everything came together quickly.
Buttons lit up. The joystick felt right. The screen fit perfectly. Batocera booted.
Street Fighter II loaded.
At that moment, it stopped being a project and became a thing.
Context Matters
All of this happened over the course of about six weeks.
During that time, I learned that my current job position is being relocated.
I don’t think it’s a coincidence that this project landed when it did.
When one area of life feels uncertain, building something tangible, something you can hold, test, fix, and improve, has real value.
This project didn’t solve anything.
But it reminded me who I am when I’m at my best.
The Gift
I gave RYCADE to my brother on Christmas. He was quiet for a moment. Then I told him what it is exactly, what was put into it, etc, then he became emotional. That reaction made every late night, failed print, and second-guessing worth it. Over the course of the past several months I have assisted him with some other IT-related issues, and it's been a great feeling being there to help him in his time of need as he's always been there for me with my automotive needs.
Final Thoughts
This project didn’t advance my career. It didn’t earn money. It didn’t check a productivity box. But it did something far more important. It reminded me that curiosity, creativity, and persistence are still very much alive, and that sometimes the best projects are the ones you didn’t plan to build.
I don’t know what the next project is yet but I know I’ll recognize it when that spark shows up again.
Thanks for reading.




From Idea to Plastic: Designing the Cabinet
This was the most time-consuming part of the project.
I designed the cabinet entirely myself using TinkerCAD. I started with the base, then moved upward, constantly asking:
How will this assemble?
Can it be taken apart?
What if I need to reprint just one section?
I intentionally designed the lower frame using modular sections: left, middle, and right pieces that could be rotated and reused. This meant:
Fewer unique parts
Easier reprints
Stronger assembly using threaded inserts and screws
At first, I printed the frame in ASA. On paper, it made sense; strong, heat resistant, durable.
In reality? Warping.
The parts worked, but they didn’t feel right. The fit was off, and the stress showed during assembly. Rather than force it, I stepped back, reassessed, and switched to PETG.
That decision changed everything.
The PETG prints fit together cleanly, stayed flat, and gave me the confidence to keep moving forward instead of fighting the material.
Failure Was Part of the Process
There were plenty of moments where I questioned whether I was overcomplicating things or whether I should even keep going.
Parts warped. Designs changed. Prints failed. Ideas conflicted.
But I didn’t quit.
I kept iterating. Re-slicing. Re-printing. Re-thinking.
And somewhere in the middle of all that frustration, I realized something else was happening.
I was excited again.


