A couple of months ago, I took the plunge and decided to see what all buzz was about… I bought a MiSTer FPGA retro gaming system. Just like with many boards these days, the FPGA dev board that the MiSTer uses (the Terasic DE10-Nano) has been difficult to find. However, the folks over at MiSTer Addons had a couple of kits available, which included the DE10-Nano and came assembled and ready to just plug in and play. The MiSTer is a different beast than other retro gaming systems I’ve used in the past. So, in this article, I’m going to walk you through what I learned, my thoughts on the system itself, and show you some of my customizations.
So first, let’s talk about what’s different about this device, as compared to an emulator running on a Raspberry Pi or a PC. First and foremost, the MiSTer is not an emulator. To understand this better, we need to dig a little deeper into how emulators work.
Every computer has some form of a microprocessor, and gaming systems (even retro systems) are basically just computers. The microprocessor’s job is to execute instructions that manipulate data in registers (temporary storage locations in the chip) and in the address space. And these manipulations ultimately result in something happening, such as graphics drawn to a screen or processing input from a controller.
Because each microprocessor has a different design, the instruction set they use all differ. For example, the Nintendo Entertainment System had a CPU based on the 6502, while the Sega Master System used a Z80 CPU. Both the Z80 and 6502 had different instruction sets, so you couldn’t take code written for one microprocessor and run it on a different one.
However, as microprocessors became more powerful, it became possible for one microprocessor to ’emulate’ the instruction set of another microprocessor. This is generally done by running some code that reads the foreign program and translates it to instructions that the native processor understands. Because of this, emulators introduce a layer of overhead. For some emulators, you won’t notice this overhead… but for others (especially ones that emulate more modern systems), you will.
Disclaimer: I’ve given a very simplified overview of how an emulator works. As you can imagine, there are other factors at play along with the instruction set, such as the address bus, clock speed, other chips, etc.
MiSTer is Not an Emulator… at least not in the same sense
I know not everyone agrees with the statement that MiSTer isn’t an emulator, and that’s OK – there are good arguments to be had on both sides of that debate. The one thing that sets it apart from traditional emulation software (such as RetroArch) running on a RaspberryPi (or some other modern computer), is that the MiSTer uses a Field Programmable Gate Array (FPGA).
An FPGA is an array of programmable logic circuits on a chip. Unlike a standard (fixed) integrated circuit chip, the circuits on an FPGA can be programmed to function as different types of gates in different configurations. This can effectively simulate the hardware of the original chip, giving you a very authentic experience. And the DE-10 Nano has 110,000 logic elements to program. Because of that, it can mimic multiple chips inside of a single system, giving you the ability to execute code in parallel just like the original hardware does. This is something that a software emulator running on a modern CPU can’t do.
At the end of the day, the experience with an FPGA much more closely resembles the experience of original hardware. Games and software that stutter or run poorly on a traditional emulator experience far fewer problems on an FPGA. FPGAs are challenging to program, however. Thankfully, there’s a community of people contributing to the MiSTer project to provide ‘cores’ for the various systems that we know and love.
Overview of the Hardware
The MiSTer kit that I purchased is actually composed of a few different boards that are put together in a sort of “cubish rectangle” configuration. Here’s how the device came:
When you take it apart, it breaks down to four boards. Let’s take a look at each of them.
Starting off, there’s the Terasic DE-10 Nano. This is the heart of the system, as it’s the board that contains the FPGA – a Cyclone V SoC. Aside from the FPGA, the board itself has some great features at a low entry point cost to FPGA programming. If you were starting out with FPGA dev and wanted something to cut your teeth on, this perhaps would be a great board to do it.
The IO board is next, and it’s the board that sits on top of the DE-10 Nano. As the name suggests, the main purpose of this board is to provide some inputs and outputs. This board comes in two different flavors. You can get either the “analog” version, which contains a VGA output, or a “digital” version that doesn’t have a video output at all on the IO board; you instead use the HDMI port directly off the DE10-Nano board.
I went with the digital version, for a couple of reasons. First, the digital IO board has a power switch, whereas the analog version doesn’t. Without it, you would have to turn the system on or off by plugging and unplugging the power cable. Even if you use the digital board, you can still do analog video using an HDMI-to-VGA adapter, so there’s nothing really lost by using the digital version. And finally, the digital board allows you to use the additional set of GPIO pins on the DE-10 Nano; more on that in a moment.
The IO board also provides an additional SD Card (for cores only – you can’t store ROMs on there), a set of helpful buttons, and a cooling fan to keep the FPGA running smoothly. If you’re using the Analog version of the board, you also have an audio output port. While the Digital board doesn’t have analog audio out, it does however, have a TOSLINK optical audio output port.
The USB Hub board provides 8 USB ports for the MiSTer. You would think that this many USB ports is overkill; after all, you’ll probably have no more than four controllers connected at the same time. However, the USB ports are used for more than just controller inputs, which I’ll touch on later.
The USB hub is connected to the DE10-Nano by using a little micro-USB adapter. To power the board, it uses a rather odd male-male barrel connector adapter to bridge the power output from the DE10-Nano into the USB Hub board.
The DE10-Nano by itself has enough RAM to run a few of the cores. However, there are several other cores that either require more RAM, or just may benefit from having some additional RAM. You can find a list of those cores in the MiSTer dev wiki.
To add RAM to the MiSTer, you need a RAM expansion board. You can get them in a couple of different sizes, but the one that came with mine adds an additional 128MB of RAM via the DE10-Nano’s GPIO header.
If you’re using the digital IO board, then you also have the option to add an additional 128MB RAM module, for a total of 256MB. Although there aren’t many cores that can take advantage of the additional RAM yet, this does provide another reason to go with the digital IO board. The analog IO board already uses the other GPIO header for sound, so you can’t use the additional RAM module with it.
Out of the box, the MiSTer FPGA is a very capable machine that you can easily spend hundreds of hours playing with. To really get the most from my MiSTer, though, I’ve made a couple of customizations.
As I mentioned earlier, the USB Hub board adds several USB ports to the MiSTer. Some of these should be used for controller or keyboard and mouse input, but why would you need more? Well, unless you’re using ethernet, you’ll want a USB Wi-Fi adapter, as the DE10-Nano doesn’t include a native Wi-Fi capability. While you technically don’t need to put the device on the Internet or on your local network, having it there makes it so much easier to work with, in two ways.
First, the MiSTer is updated constantly, and each update adds support for even more cores and arcade games. It’s actually quite amazing how much attention developers give to this platform. Having Internet connectivity allows you to regularly run updates. The other benefit, though, is that the MiSTer natively supports SMB, SSH, and a few other network protocols. If you have the MiSTer on your network, then transferring ROMs and other files is as easy as dragging and dropping the file into the right folder.
Thankfully, quite a few Wi-Fi adapters are supported, as the underlying OS driving the MiSTer is Linux-based. I already had this USB Wi-Fi adapter on hand which I had purchased from Amazon ages ago, and it worked without any issues.
If you have a lot of game images, then you’ll want maximum space to hold them all. Since the MiSTer does play some CD-based systems such as the Playstation, Sega Saturn, or Windows 95/98, a large external hard drive might be something you need. I had an extra 1TB NVMe drive that wasn’t being used, So I decided to use that as an external storage option for my Mister.
The external storage device needs to connect over USB, so I purchased this USB 3.0 external storage enclosure from Amazon. Regardless of which storage device you use, you need to do two things in order for it to work. First, the drive must be formatted with a supported file system partition. I used NTFS, and that worked fine. If you’re using Windows, formatting a drive to NTFS is easy. Just plug the USB drive into your PC, and if it shows up in your file explorer as a drive letter, you can just right-click on it and choose “Format”. Otherwise, you may need to open the Disk Management tool, and create a new partition on the drive.
Second, the folders for the games you want to store on the external drive must not exist on the SD card. For example, if you want to store PlayStation games, you will need to delete the
psx folder from the SD card and ensure that it only exists on the external drive. The MiSTer prioritizes the folder that it looks for games in by first looking to the SD card. If the system’s folder doesn’t exist, it will then look to the attached USB drives to try and find it there. So even if it comes across an empty folder on the SD card, it will stop looking any further.
When I bought my MiSTer kit, there was an option to buy an aluminum case. I decided that I would print one, instead, as there were a few different designs floating around that looked good. I ended up landing on this case from printables.com, which printed beautifully on my Prusa MK2S with PETG filament.
While the case worked out great, the external drive that I added was flopping around and made the set-up look messy. So, I went to Fusion 360 and designed a replacement bottom panel to hold my external storage enclosure. I’ve posted this on printables.com, so be sure to go grab one and print it for your own setup.
Is it Worth It?
I can’t deny that the MiSTer is an expensive system. So whether or not it’s worth the money is really a decision that you will need to make for yourself. I will say that in this case, you get what you pay for. If you’re a hardcore retro gamer, and you want an authentic experience on multiple retro systems with unnoticeably low latency, you’ll be happy to have spent the money on a MiSTer.
However, do realize that the MiSTer doesn’t support newer systems. At the time that I’m writing this, the most recently released systems that the MiSTer plays are the PlayStation 1 and Sega Saturn. It’s not clear how much farther the DE-10 Nano can be leveraged beyond the currently supported cores, as there are hardware limitations that start to factor in.
So, if you’re looking to play newer systems such as PS2, Dreamcast, or N64, you’ll have to find a traditional emulator solution. But don’t count the MiSTer down and out. Not only does it play pretty much every pre-90s system, but it also has a list of over 500 (and growing!) arcade machines that it supports. There are even cores for some of my arcade favorites, which I fed dozens of quarters into as a teenager, like Street Fighter 2.
So, would I personally buy it again? Yes, most definitely.