Retro gaming and emulation

When considering Retro Gaming these days, one usually thinks of the plethora of available emulation methods to relive the nostalgia experienced in games from a bygone era. When it comes to Retro Gaming, emulation of various systems and platforms has become ubiquitous.

Whether it is someone putting together mini Arcade bar-tops powered by a Raspberry Pi; Nintendo/Sega/Neo Geo/Commodore/Sony releasing their own retro “mini-classics”; or playing older “last console gen” games available in the respective stores of your Sony PlayStation, Xbox One, or Nintendo Switch — the method by which this content is delivered is by software emulation. It’s playing the literal ROM dump of a game — this is a backup of the original game code in its entirety.

A brief history – The changing face of emulation

At the turn of the millennium, big strides were taken with the emulation of 16-bit and 32-bit systems, as well as arcades games available in the mid/late-90s. It was the final hurrah before being overshadowed by modern home video consoles.

Obviously, the copyright holders of these games were not happy, since ROMs are so easily obtainable over the Internet. Sony and Nintendo in particular have continually tried hard to block the distribution of ROMs and attribute use of them via emulation as theft and loss of revenue. Much like video and music piracy, acquiring and distributing ROMs for content you don’t own over the Internet is considered illegal.

Fast forward 10 years or so, and the world has changed. As the internet has matured, digital distribution has become the norm, as has content delivery platforms for various media formats. It is now normal to ‘binge’ your media whether on Netflix for films, or Spotify for music, the latter of which offers over 40+ million tracks to stream for a flat monthly rate. The same is also true for games, with the 3 big names in console gaming having capitalised on the retro experience by offering their older titles for sale to play through their respective app stores. Steam and mobile apps are also in on the retro stuff.

You can even play your favourite MS DOS and Amiga games directly from a web browser legally from the Internet Archive website. Emulation of older computer systems, consoles, and even arcades on various modern platforms is more accessible than ever.

The biggest irony of all this is that companies such as Sony and Nintendo are selling you back the ROMs of their old games using the same open source emulation methods of the people they tried to bring down years earlier. A great example of this is the newest PlayStation Classic, which uses the PCSX-ReARMed emulator.

A better way to relive retro gaming experiences

For all the great developments that the emulation scene has given us in terms of Retro Gaming, it has two main shortcomings.

Firstly, emulators by definition are “hardware devices or software programs that enable one computer system (host) to imitate the functions of another computer system (guest)”. This means that in order to achieve an accurate experience, the system being emulated requires something many times more powerful to approximate the way an old retro system might work and deliver an experience that is as close to the real thing as possible. The more processing power you have available, the more imperceptible that experience will be compared to the real thing. In essence, you can achieve an accurate experience for your retro system, however, it requires many times more the original processing power to do this.

Secondly, because of the amount of processing required to accurately emulate a retro system, the original unique timings of a retro system are largely ignored and approximated. That means what you are playing not only doesn’t “feel” like the real thing, but introduces input lag. This is less of a problem for modern console gamers on new 4K/HDTV’s where games are designed to account for input lag between 40ms – 100ms, but in the time of CRT’s, there was no lag in retro games.

So, how does one overcome the need for large amounts of processing power to deliver an accurate retro gaming experience that is virtually lag free? Enter the FPGA.

What is an FPGA?

An FPGA is a ‘Field-programmable gate array’. It is an integrated circuit, which allows after-market configuration . An FPGA contains an array of programmable logic blocks, and a hierarchy of reconfigurable interconnects that allow the blocks to be “wired together”, like many logic gates that can be inter-wired in different configurations. So, basically an FPGA can be continually re-programmed to behave exactly like the integrated circuitry in any hardware, which, next to the logic blocks and memory, is limited only by the ability of the programmer that can configure it in low-level HDL (Hardware Description Language). Imagine the component parts of, say an Amiga computer, it’s main processor, various custom chipsets, it’s sound chip, it’s graphics mode, and each of those being programmed within it’s own array running in parallel with precise CPU-clock cycle timing.

What this means is that the various arrays in an FPGA can be programmed to carry out individual tasks in parallel, unlike conventional CPU’s, which are sequential processing devices, typically breaking up tasks into a sequence of operations and executing them one at a time.

Why don’t we see FPGA’s in more widespread usage? They are typically expensive in both cost and time to program. In terms of programming, you need to be able to understand HDL/VHDL, which is notoriously difficult, and is so low-level, that you are programming things at a logic/gate level, which is also very time consuming.

Here is a good rudimentary example of the differences between CPU’s, GPU’s and FPGA’s using beer and bartenders.

The MiSTer Project

In the last year, a community of hardware experts and programmers have come together to promote the MiSTer Project, headed by it’s main creator, developer and maintainer, Sorgelig.

What the creator has achieved is the replication of various retro based systems at a hardware level into a consumer available FPGA unit called the DE-10 Nano from a company called Terasic. Each of these replicated systems has been designed as a ‘core’, which a user loads from a linux partition, and programs an FPGA virtually instantly.

An example of this is the Motorola 68000 microprocessor, which was in systems such as Atari ST, Amiga, Sega Megadive/Genesis etc. A cycle-clock accurate version of this has recently been made, which essentially replicates the hardware of these respective systems near-perfect.

I’ve recently had the pleasure of putting one of these little units together, and even on my HDTV with a wireless xbox 360 controller, it ‘ feels ’ different to a typical emulator, and closer to the real thing. I’ve spent hours replaying Super Mario World on the SNES, Super Mario Land on Gameboy, and IK+ on Amiga, and the responsiveness through MiSTer is not like a normal emulated system. Without first-hand experience, it is hard to explain!

Other than the main DE-10 Nano board itself, to get started, you also need to obtain an SDRAM module, created and sold by many of the MiSTer enthusiasts on the Atari forums, and optionally you can obtain an I/O board, which allows you to connect your unit to a 15Khz monitor, or component based outputs, as well as a fan to cool your unit down. You should also get a USB-OTG hub to plug your devices. Finally you need a good sized Micro SD card (I recommend 32GB or greater) and to follow the instructions here.

When you power the unit on, you’re at a screen where you can select the ‘core’ system you want. Upon selection of the core, the FPGA is instantly reprogrammed with the schematic of the system you want to use. Hitting F12 subsequently gives options to load a ROM/disk image, and define more finite system options before getting you in the game/app.

The actual project is an offshoot of an earlier ‘MiST’ FPGA project from a few years back, but now using a superior and cheaper FPGA unit that is more readily available. With the availability of a thriving development community, and new cores such as Super Nintendo, which have only just been made public in the last week, the future of FPGA replication of retro systems is exciting.

Emulation vs Hardware Replication

Whilst emulation has matured to an advanced commercial stage, creating experiences close to the real thing for most, it has additional features that are unlikely to make it to FPGA based replications of retro systems for quite some time. This includes save states, and speed hacks/mods.

The main idea behind the use of FPGA is to be as close to the real thing as possible, warts and all. It is a means of replicating the hardware in an endeavour of historical ‘preservation’. So if you decide to take the leap into using MiSTer, you need to realise that this project it’s still in it’s infancy (1.5 years FPGA vs 20+ of retro emulation), and any advanced features that we expect from emulation are quite a way off.

In closing

In spite of this, I got my own unit only 1.5 weeks ago, and the Genesis, NES, Gameboy and SNES cores have already had new releases that edges the unit to more accurate retro gaming nirvana.

One of the more exciting projects in MiSTer I’ve yet to experiment with is the installation of MS Dos using the ao486 core, and the subsequent install of Windows 95/98 (which is achievable!).

Here are some videos of the MiSTer project in action.

ETA PRIME

Madlittlepixel

Other than the MiSTer FPGA project, there are commercial solutions you may have heard of that use the same FPGA processor in the DE-10 nano to achieve near perfect replication of the SNES, Megadrive and NES using real cartridges. If you want to find out more, you can check out the Mega SG, Super NT, or the NT Mini from Analogue.

What do you think? I for one am excited, and can’t wait to see how things like the SNES core develop, and if we eventually get systems such as the N64, Saturn, and PS1 going forward.

Sources

Atari-Forum

FPGA Wikipedia entry

Lance Simms

MiSTer Github page

Techopedia

Fully Assembled Image of MiSTer