When QMTech released their Cyclone V FPGA board with built-in SDRAM, I was intrigued with the possibilities. I’d been thinking about building a handheld MiSTer for quite some time, and I thought that the slimmer profile of this board would make it a good candidate for that project. When I got my hands on the board and started testing it, I found that it was not only lower in power consumption, but also more thermally resistant – both things that are beneficial for a handheld device.
So, I set about building a prototype. Regular viewers of my channel have probably wondered why I haven’t been making as many videos lately. This project was the main reason – rather than spending my evenings filming videos, I had been spending them toiling away on a MiSTer handheld. After several iterations, I landed on this initial design:
I’m very pleased with the initial result of this undertaking. It’s not without its flaws, but this first iteration of the DIY MiSTer Handheld (which I call the Model 01, or DMH-01) is a very capable gaming device. For the remainder of this article, I want to give you a high-level overview of the build and then share my thoughts on what’s next. I also recommend watching the video – in there, I dig into some of the details about each of the things I’ve mentioned in this piece.
Under the Hood
The DMH-01 measures 236mm in length, 102mm in height, and 28mm in thickness, weighing about 500 grams. Despite its weight being 65% heavier than a classic Game Boy, the device feels balanced and comfortable to hold for extended periods. And even though the shell is fully 3D-printed, it’s quite sturdy.
The Display
There’s a 5-inch, 800×480 resolution display, which offers a 5:3 aspect ratio. While this screen doesn’t win any major awards, it did check three important boxes for me – it supports native HDMI input, has an easy way to extract audio, and is powered off 5 volts.
The image and colors are OK, but certainly not as vibrant as the custom 1600×1440 LCD on the Analogue Pocket. And even though the screen does pick up scratches quite easily due to its plastic panel, its price coupled with the aforementioned features made it my preferred option for this build.
Controls
I spent much of my youth playing the NES, and later the Super NES. After logging an undisclosed number of hours on Super Mario World and Super Street Fighter II Turbo, I really grew to love the feel of the SNES controller. I also happened to have two dozen broken Super Famicom controllers sitting around that I hadn’t yet done anything with (don’t ask). So, I put one of those controllers to good use with this build by hacking it down to fit in the shell.
To interface with the MiSTer, I wired it up to an Atmel ATMega32 that translates the button presses into a USB controller interface. Rather than writing this from scratch, I started with the codebase for the open-source daemonbite controller, and modified it. Because the translation layer is thin, you can enable fast polling and enjoy a low latency experience.
The wiring of the controllers is perhaps the most challenging aspect of this build. Plus, I’m not exactly thrilled about having to sacrifice SFC controllers for this project. I do have an alternative controller in the works that will be much easier to work with, require zero cutting, and a lot less soldering.
NFC Integration
My favorite feature of the handheld is the NFC card slot in the rear. I’m a huge fan of the former TapTo project (now rebranded as Zaparoo), so I really wanted to try and fit an NFC reader inside.
A lot of people don’t understand the allure of using an NFC game launcher; I discussed this a bit in my TapTo review video a few months back. For me, it’s all about battling the paradox of choice. You can have thousands of games on your MiSTer, so when you go look for one to play, the choices can be overwhelming. NFC support is a way to narrow down your library and make the games you enjoy the most easy to launch. Plus, it’s just down-right fun. When you insert that NFC card and hear the chime as the game loads, the experience just feels magical.
Battery and Power
The whole device is powered by an 18.5-watt-hour LiPo battery, which offers around 2–3 hours of gameplay, depending on what you have the screen brightness set to, and which core you’re using. In an earlier prototype, I had a larger, 29.6Wh battery, but I struggled to fit it into the shell after adding all the buttons. Still, I think there’s potentially to fit a larger battery, or perhaps move towards a multi-cell solution.
Charging is handled via USB-C, but there’s currently an issue that I’m working on resolving. When you connect or disconnect the charger, the handheld unfortunately reboots. This is happening because of the off-the-shelf charge controller that I used. When the power source changes, there’s a temporary dip in power during the transition from the adapter to the battery or vice versa. For smaller loads, the built-in inductor in the charge controller has no problem keeping up. But the FPGA dev board has a higher current requirement, and the module just can’t keep up. I have a couple of ideas on how to resolve this, but it’s going to require some redesign of the handheld.
Audio
For audio, I used a PAM8403 stereo amplifier, which drives two 1-watt, front-facing speakers. The amp module has a dial potentiometer built-in, which gives you a thumbwheel for controlling the volume. The stereo audio sounds pretty good, and can get quite loud.
One downside to the audio, however, is that there’s no external headphone jack. It wouldn’t be difficult to add one in, but the challenge is finding the space for it.
USB Support
To provide device connectivity, there’s an internal 4-port USB 2.0 host controller. This controller provides two external-facing USB ports on the top of the device. You should be able to plug in any supported USB device into these external ports – Wi-Fi dongles, Bluetooth adapters, or even two USB controllers for multi-user play.
There are also other two ports, which are internal-facing. These ports are used to connect the built-in controller and the NFC reader.
Challenges and Opportunities for Improvement
I love playing on this handheld, and it’s become my go-to system for retro gaming. However, no project is without its challenges, and the DMH-01 is no exception. Here are the main things that need to be addressed in the next revision:
- Power Adapter Reboot: This is perhaps the biggest issue that needs to be addressed. Not all MiSTer cores support saving the state of your game. So, when you’re creeping up on two hours of gameplay and the battery light starts blinking, it can be quite frustrating to have to plug the device, knowing that it’s going to reboot in the process.
- Battery Status Indicator: If you look closely at the top of the device, you’ll notice that there’s a blue light emanating from the USB-C port, which indicates whether or not your battery is about to die. It’s not very obvious, though – it would be much better to have a battery status indicator that’s more front and center so you don’t miss it.
- External Display Controls: The controls for the display are inside the device, on the back of the screen. So, if you want to lower the brightness or adjust other screen settings, you have to open the device up. It would be great to have screen controls available on the shell.
- Build Difficulty: Let’s face it – this build is complex. It requires some advanced soldering skills, a steady hand, and lots of patience. The difficulty of making one of these will preclude many from attempting it. The build really needs to be made easier, with no board cutting, and minimal soldering.
- Controller Options: I love the feel of the Super Famicom controller in the handheld, but it’s not a sustainable solution. Not everyone has a pile of SFC controllers sitting around (again, don’t ask) – there needs to be an easier and more sustainable solution. Additionally, it would be great to have an analog stick on the left controller, as well as 6 action buttons on the right controller.
It can be a little overwhelming to think about making all of these improvements – but it’s important to remember that these hurdles are all part of the iterative design process. I’m confident that future revisions of this design will address them, it just might take a few iterations.
Looking Ahead
Speaking of the future – my goal for this project was to create a functional but unpolished handheld system that could serve as a foundation for further development. To that end, I’ve open-sourced the design. The 3D models, source code, and build instructions are now available on GitHub, and I’m excited to see what others do with it.
If you’re thinking “I’ve got to have one of these!” and decide to take this on and build one, be warned – building the DMH-01 requires advanced soldering and electronics skills that many will struggle with. That said, I am working on a detailed build video to help guide people through the process. That video will be quite long and is a couple of weeks out – so perhaps order your parts now, and by the time they all arrive, the build video may be live.
And if you’re one of the many that are on the fence about building a DMH-01, my suggestion is to wait and keep an eye on the project. I have improvements in the works now that will greatly simplify the build and minimize the amount of detailed soldering and electronics work you’ll have to take on.
This project is just the beginning. Not only will you see improvements to this design over the next few months, but you’ll also see it taking some interesting turns. My hope is that this project lays a foundation for a portable MiSTer that others can build on. I’d love to hear your thoughts and see your builds – tag me on social media or leave a comment in my video.