The FPGA retro revolution

When José ‘Jotego’ Tejada arrives home from work, he doesn’t kick off his shoes and head for the sofa for a well-earned rest. Instead, he sits at another desk and resumes working, this time on his latest passion: creating ‘cores’ for the hardware-based system called MiSTer. “I’m spending close to 40 hours a week on the project,” he says. “On workdays, I’ll put in maybe four hours, and at the weekends, I’ll create cores for twelve hours a day. When I have holidays, I’m probably working on MiSTer for ten hours a day.”

Does he moan? Quite the opposite: he loves every second of it. Tejada is one of a number of people spending their spare time helping the rest of us enjoy classic games from the 1980s and 1990s. A design engineer by trade, Tejada’s efforts have helped to turn MiSTer into what might be the ultimate retro game system.

MiSTer’s popular because it can simulate original hardware with such a high degree of accuracy. Pick a system from the 8-bit and 16-bit eras and, in all likelihood, MiSTer will run it so accurately, you’d barely know it wasn’t the original machine. You could be playing a game on an Amstrad CPC 6128, Commodore 64, ZX Spectrum, or BBC Micro in the morning, dabbling with the SAM Coupé or PMD 85 at lunch, or firing up retro consoles such as the Atari 2600, Game Boy, Neo Geo, and Mega Drive during the evening – and that’s only skimming the surface.


The MiSTer in all its glory. It’s a compact device that allows for accurate re-creations of retro systems

This kind of thing isn’t unique: install RetroPie on a Raspberry Pi 4, for example, and you have a solid emulation machine. You could also pick up mini re-creations of classic consoles such as the NES and SNES. Indeed, emulation has long been a staple of the retro game community because it allows access to history without the expense of buying original hardware. Those methods rely on software emulation, however, to make one computer system behave like another – MiSTer doesn’t. Instead, it uses a field-programmable gate array (FPGA): an integrated circuit containing configurable logic blocks which allow developers to program the chip directly. Developers can then reconfigure the blocks so that the FPGA mimics the chips present in past consoles, computers, handhelds, and arcades. When a developer produces a configuration that matches an old machine, it’s called a core. And it’s these cores that are being created by enthusiasts all over the world.

“In simple words, an FPGA is just a big array of logic elements, and you can decide how to connect them,” explains Russian coder Alexey “Sorgelig” Melnikov, creator of the MiSTer project. “There’s no CPU and no other devices. Instead, you have to create cores using elementary OR-AND logic and triggers, and this is basically how original chips were created.”

Hey MISTER

Since it first appeared in 2017, MiSTer has caught the imagination of scores of hardware enthusiasts, primarily because it poses a challenge to talented engineers looking for precision. Few, if any, games will refuse to run on MiSTer, since the chip precisely mimics the original hardware. As Tejada points out, MiSTer “can potentially be as accurate as you need it to be”.


Terasic DE10-Nano development board – the most essential component of MiSTer

Melnikov first started thinking about what would become MiSTer 2015. Back then, he’d begun looking at Minimig, an open-source re-implementation of an Amiga 500 which used an FPGA, before moving onto MIST – a successful attempt by engineer Till Harbaum to emulate the Amiga and the Atari ST by replicating a 68000 CPU on the FPGA instead of having it as a separate chip. “It caught my attention,” Melnikov says. “It was how I learned about FPGA programming and started to discover its possibilities.”

Still, Melnikov soon became frustrated. “When I was developing and porting cores for MIST, it was always a struggle to get a picture on any of my monitors or televisions, which all used HDMI,” he says. “I had to use some VGA converters, but none of them were universal, and they wouldn’t accept every possible resolution. So, while drowning in cables and switches on my table, I  began to think about ways to get HDMI directly from an FPGA board.”

It was this thinking that led to MiSTer. Unlike MIST, which used an FPGA-based development board that was not only expensive but difficult to find, Melnikov decided his open-source project should be based on a mass-produced board – one that anyone could pick up with ease. He figured it would not only make development more straightforward but cheaper, and he eventually settled on Terasic’s DE10-Nano which is built around the Intel SoC FPGA. This became MiSTer’s primary component.


José Tejada specialises in creating cores that simulate original arcade boards – most of them containing unique hardware

“I had the idea of adapting an existing development board,” Melnikov says. “But I was in the final stage of adapting another Terasic board when the DE10-Nano came out. It was the exact size that I wanted, even though it was a hybrid chip with Arm and FPGA together, which was a completely new beast for me. It took me some time to get used to it, but I was able to introduce MiSTer in the middle of 2017.”

Melnikov took to GitHub in June that year, explaining MiSTer’s improvements over the MIST board – notably that the DE10-Nano board was being targeted at the education market, which meant it was being subsidised by a host of companies including ISSI, Silicon Labs, and Panasonic.

Available for around $130, the board included an Arm Cortex-A9 dual-core CPU running at 800MHz and 1GB RAM. “Due to a larger FPGA, bigger systems can be created,” Melnikov wrote on GitHub in June 2017. “MiSTer scales original video resolution to a standard HDMI resolution (usually 1280×720p60), so you don’t need to look for some ancient monitor with VGA input supporting non-standard resolution and frame rates.”

It didn’t take long for curious gamers to latch onto the concept, but Melnikov says turning the project into a working system wasn’t easy. “The DE10-Nano is a hybrid with lots of internal devices, so I had a hard time trying to make it stable,” he says. “Even having Linux as a backend for input and storage, it doesn’t act as a normal computer requiring safe shutdown and safe reboot. MiSTer is ready for sudden reset or power off, and that was a challenge.”

A thankful task

Over the past five years, the MiSTer project has continued to grow, with new cores regularly being created and enhanced. There’s a flourishing Facebook group in which Melnikov and other developers are active, and there are several Patreon accounts set up by creators to support their work. Tejada, for instance, has close to 3000 supporters donating at least £2.50 each month. The sums can stack up, but still: it remains a labour of love. Nobody creates cores to get rich, and nobody can really underestimate how much work goes into them. What’s more, if there is any pressure, then it’s generally self-inflicted.


What’s in a name? MiSTer hails from a project called MIST created to emulate the Amiga and Atari ST, hence the Mi from Amiga and ST from… well, we’ll leave you to figure that one. Credit: Bill Bertram, CC BY-SA 2.5

As Tejada says, the MiSTer community is a supportive one: people aren’t cracking the whip or making unreasonable demands. “One thing about open-source projects is that you have customers who are nice to you,” Tejada laughs. “In other jobs, you can have a customer who’s demanding, and so it’s not a rewarding task. But here, you get people expressing gratitude for what you do, and it really gives you a boost. You end up reacting positively, and it motivates you to deliver. As for the money, it justifies it to a lot of people. I think my family would complain a lot if I was working on this without making any money.”

Creating cores

Tejada’s a valued member of the MiSTer community, and even he struggles to quantify  just how much work he’s put into it. “I’m not sure exactly how many cores I’ve created,” he admits, “but it’s a lot!” Tejada’s GitHub shows 2323 contributions in the past year alone, with his work mostly focused on arcade cores. In fact, it was his passion for the Yamaha YM2151 sound chip, part of the Ghosts ‘n Goblins arcade PCB board, that drew him into the MiSTer world in the first place.

As for the time it takes to make those cores, it can vary. According to Tejada, some cores can be created in a week to ten days, while others will take far longer. As another developer, Robert Peip, tells us: “It depends on the components, the complexity, the available documentation, and existing emulators. Getting every bit of information out of the original console would take many years, so FPGA cores profit greatly from the research done by homebrew and emulator developers.”


Software vs Hardware emulation

As Tejada explains, making cores can be difficult, time-consuming work. “Some systems are hard and require a lot of time, and there are many semi-working cores out there which have been abandoned,” he says. “I’ve revived some of them and, as more people come to the project and start to help, they have helped improve existing cores too. But basically, many cores aren’t really finished. They are still in development and still being improved. There is always room for improvement.”

Further complications can arise when a system has a number of variations. “Some systems, which people perceive as being a single machine, may have had many variations during its production run and that’s led to small hardware differences,” explains Tejada. “It can mean having to spend several months on them. For people like me, it’s likely to take even longer than that. I usually go back and forth between retro systems to provide constant updates, and if I concentrated on one system at a time, then maybe I wouldn’t publish anything for months.”

As if to underline the potential timescales, Peip’s working on a PlayStation core: something many believed wasn’t possible on the MiSTer. Most of the cores to date have been for 8-bit and 16-bit machines as well as arcade systems like the Capcom CPS1 and CPS2 (“Most of my supporters enjoy the CPS cores the most, and I got a big boost in subscribers when I started doing them,” Tejada says). Peip’s PSone project is going to take a year, he reckons. “The Atari Lynx was a job of two months,” he adds, by way of comparison. “The biggest challenge of the PlayStation is the number of different parts and their complexity,” Peip says. “I’ve already spent more time on the CD subsystem of the PlayStation than I spent on the whole WonderSwan core. But the good news is there’s no showstopper on the road. While the work will still take quite some time, I don’t see anything that could make the project impossible on MiSTer.”

Preserving the past

Although emulation remains a grey area – partly due to its reliance on the use of ROMs – the core creators believe they’re doing gaming an important service. As Peip says, there’s a preservation argument to be had: “With the rebuilding of old hardware, you have the chance to give new life to so much existing software and so many games. The reward you get for the work you do is extremely high if you rebuild a system that can run hundreds or even thousands of titles.”


Many MiSTer cores support external MIDI hardware, and it’s possible to convert Raspberry Pi Zero 2 W into an emulated Roland MT-32 sound module from 1987

Building cores isn’t always about precisely replicating old systems, either. Gamers may, for example, want features that make playing titles on the MiSTer more pleasurable: Peip’s Game Boy core included split-screen support, and he’s also worked on fast-forward and save state functionality. They’re the sorts of things that weren’t available on the original systems but are often standard in software emulators. “I just like to work on cool features that go on top of the real hardware,” Peip explains. “So I made save states for the NES core because it was requested frequently, the same for the split-screen cores for Game Boy and Game Boy Advance, where two players can play on two linked cores on one MiSTer. I included high-resolution rendering for the Game Boy Advance. These features are just a lot of fun to work on, and it’s extremely motivating to do something that hasn’t been done before.”

Tejada, meanwhile, isn’t always enamoured by such things. “A constant challenge is deciding what features can be included because users basically want everything without thinking of the consequences,” he says. “I have to implement and support many features I don’t use and even don’t like.”

Yet all of the work being done is of long-lasting value, not just for games but the hardware itself. Developers are creating cores in HDL (hardware description language), effectively documenting the schematics of retro systems and preserving them for future generations. This is becoming increasingly important as machines age and fail, old media crumbles, and generations pass. Of course, software emulation is doing the same, and few MiSTer developers take sides as to which is the best approach. There’s a general consensus that both can sit easily side by side, and will do long into the future.


Robert Peip impressed MiSTer users with his Game Boy Advance core. Now he’s working hard on a PlayStation core – once thought near-impossible

“From a pure accuracy standpoint, a software emulator can be just as good as an FPGA core,” says Peip. “The problem comes with the speed you want to achieve. To get a playable speed, a software emulator developer will often have to sacrifice accuracy at some point unless the hardware being emulated is very old. In FPGA, we can do as much in parallel as we like, so it’s not an issue.”

Tejada agrees. “The advantage of software emulation is being able to have a laptop or phone with lots of systems on it. Some of them may have inaccuracies but they can still be enjoyed,” he says. “Yet from a preservation point of view, FPGAs can deliver on the promise of accuracy and that’s important to me. It’s why I enjoy creating cores. I just wish I had more time to play games on them…

Leave a Reply

Your email address will not be published. Required fields are marked *

More like this