Using FPGAs to Simulate old Game Consoles

A while ago, Ars Technica reviewed the Mega Sg, a modern clone of the old Sega Genesis gaming system. I stumbled on this review recently and realized that this is a fascinating piece of hardware. The Mega Sg is produced by a company called Analogue (https://www.analogue.co/), presumably named thus because they create analogues to old gaming consoles. The way this is done is different from most current “revive the old consoles” products that simply use software emulation to run old games. Instead, Analogue seems to have settled on using FPGA (Field-Programmable Gate Array) technology to basically build new hardware that is functionally equivalent to the old console hardware.

What is Does

According to the articles and reviews I have read (no hands-on experience here), the Analogue products aim to reproduce the hardware of the old consoles – to extent of allowing the use of original ROM cartridges and controllers, but with new-production hardware and some new conveniences like HDMI output. Right now, they have the Mega SG (Sega Genesis), Super Nt (Super Nintendo Entertainment System, SNES), and Mini Nt (Nintendo Entertainment System, NES).

The boxes play the old games, allow the use of high-resolution TVs, and do things like improve on the original audio quality. They also let you add faked scanlines and to reduce the audio output quality to match more like what you saw back in the days… really nifty features for serious retro gaming.

Using FPGAs

Unlike the software emulation underlying products like the Nintendo Classic Mini, the Analogue machines are based on hardware-level emulation implemented in an FPGA. This is seriously cool and either very surprising or not surprising at all.

It is not all surprising in the theoretical sense – of course a modern FPGA should be able to comfortably reproduce the hardware of an old gaming console. How many gate equivalents could it take? How hard can it be?

On the other hand, just how do you do this in practice as a third-party company? How do you actually build the precisely right software interface and timing into an FPGA to match a 30-year old console? The existence of software emulators that get pretty close to the old games demonstrate that sufficiently accurate emulation can be done, and this is “just” a hardware incarnation of such a system. For some definition of “just”.

From the reviews, it seems clear the Analogue products are built using Intel Cyclone FPGA parts.

Implementation Process

One way this could have been done is if Analogue somehow licensed the original hardware RTL code from the console manufacturers, and “simply” synthesized it to the FPGA. However, this is clearly not what is done here. The original hardware was probably not even designed using anything resembling a modern flow that could be ported to an FPGA. For example, the Sega Genesis used Motorola 68000 processors, which were most definitely hand-layout back in the days. Not to even begin contemplating the potential cost and complexity of licensing.

Thus, it sounds like Analogue wrote an emulator from scratch, using the FPGA as the implementing hardware instead of a general-purpose processor. This comes does come down to emulating the software interface that the old games used, which is fundamentally functional simulation with the added constraint of getting the timing right as well. Such work is most likely reusable across multiple systems that used the same hardware back in the days. The ArsTechnica review of the Mega SG says this:

Like the Super Nt and Analogue Nt Mini before it, the Mega Sg is built on top of a Altera Cyclone V field-programmable gate array, now coded to perfectly mimic the Motorola 68000 chip that was at the heart of the Genesis. Building that FPGA recreation from scratch took an entire year, Analogue’s Christopher Taber told Ars, a process that could yield additional benefits for Analogue down the road. “The cool thing is once we implement chips in FPGA, if another system or piece of hardware uses them, that’s done now,” he said.

ArsTechnica

I guess it comes down to analyzing the hardware of the old gaming consoles, breaking it down into blocks, and then reconstructing functionally equivalent hardware in the FPGA. Simple divide-and-conquer, but it must be a pain to test and validate. Also, by using an FGPA, in principle Analogue could fix things and patch the functionality in already deployed hardware in case they discover something based on the games that people play on the console (provided there is some kind of telemetry going on, which might or might not be the case).

An additional part of the Analogue products that could not be entirely easy to get right is the electrical external interfaces. The Analogue boxes are not just simulators to run the old game software – they also load that software from the original game cartridges and allow users to use original controllers.

More Reading

Reviews and articles:

Final Thoughts

I wrote this blog since I found the implementation fascinating. I am not the market for these kinds of products, since I am likely one of the few people of my age who never owned or played games on a console.

However, I can still appreciate the digital heritage aspect of old consoles and associated games. Many millions of people played billions of hours on these consoles back in the days, and recreating the experience is just as important as preserving old movies and television shows.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.