Before I dive into the title subject, a small rant if I may.
First and foremost, I’m a video game collector. My personal collection of consoles, including duplicates, multiple hardware revisions and cross-region models (I live in a PAL territory, but also buy hardware from overseas) spans well over 80 consoles. My physical game collection is well over 1000 games. I own arcade machines and a number of arcade PCBs including a gift from my amazing wife, and personal favourite in my collection, a “Street Fighter III: Third Strike” CPS3 kit in a Sega Versus City head-to-head arcade machine. I have a chronic CRT addiction, with 47 CRTs in my possession.
But more than a collector, I’m just very lucky. Lucky that I lived in a time when “retro gaming” items were slightly less retro and quite a lot less expensive than today. Lucky that I have the space to store and play my collection. Lucky that I could travel overseas when it was cheaper and easier, and buy hardware and games while I was there. Lucky that I was born where I was, when I was, and with the resources I had. And I wholeheartedly acknowledge that not everyone is in the same boat.
Old video games as art and culture are becoming increasingly difficult to experience. Hardware gets old and dies, items become rarer and more expensive as they either break, are thrown away, or end up in personal collections hidden away from the public eye. What’s absolutely critical to preserving these in the public sphere, and making them accessible to everyone equally, is emulation. Whether that emulation is done purely in software, uses hardware like modern GPUs to assist with 3D offloading and effects, or uses FPGA style devices to simulate old hardware in new ways, these options are all critical to ensuring that video games are never lost or forgotten.
So with that, my eternal thanks to every single emulation author (especially those with a commitment to releasing their code as open source), every single ROM dumper, reverse engineer, game preserver, chip decapper, documentation writer, software archeologist and curator, box/artwork/magazine scanner, book writer, screenshot taker and contributor of any sort. This community effort is what will keep these games and their associated ephemera alive forever. Likewise, a huge thanks also to modern hardware hackers, modders, flashcart authors, engineers designing controllers, mods, scalers, addons and other things that keep old hardware alive and functional for longer. And of course, a huge thanks to Bob and the RetroRGB crew for collating all of this information in a user friendly manner, as it grows at an exponential rate year on year. Just keeping up with all of this cool stuff is a marathon effort in itself.
Back on topic, emulation is a huge topic all of it’s own, and spans a nearly infinite array of options for both software and hardware. One of my personal favourite projects is MAME. Initially starting out, as the acronym suggests, as a Multiple Arcade Machine Emulator, MAME soon had an offshoot project titled MESS (Multi Emulator Super System) that also emulated consoles, mini and micro computers, mainframes, calculators, mobile phones and all sorts of other hardware. In 2015 the projects merged, and MAME now runs an incredible array of systems, well beyond just arcade.
Ask around the Internet on how to play emulators, and invariably you’ll find someone telling you to “just get a Pi”, referring of course to the incredible British designed and made Raspberry Pi: a small, low cost, Single Board Computer designed for tinkerers and educators alike. The RPi is designed to run my favourite operating system, Linux (something I use in my day job, helping everyone from research scientists to Hollywood VFX artists use at scale to come up with amazing results), and make enthusiast level, open source computing accessible to anyone. And while “just get a Pi” is now bordering on meme levels of occurence, the fact remains that humble Rasberry Pi, particularly in its version 4 hardware iteration, is very much a valid option to play old games on anything from classic CRTs to modern flat screen TVs, thanks to open source emulation and community projects like RetroPie.
My love of all things emulation, Raspberry Pi, and open source motivated me to find out just how viable a modern Raspberry Pi was at playing old games. I was also greatly inspired by John IV, who has tirelessly been benchmarking MAME on high end x86 hardware for close to 20 years! You can see his work here:
http://www.mameui.info/Bench.htm
I decided to compile up MAME 0.230 (which was the latest stable build when I started, and has of course since continued on at its incredible pace with newer versions appearing since) and test 8 different configurations, including:
- Raspberry Pi model 3B+ versus model 4B
- Stock clockspeed hardware versus the highest stable overclock I could reach
- 32bit versus 64bit Kernel + Operating System + Software + MAME
And while John IV’s standard benchmark ROM list is an excellent choice spanning the various drivers and machine types MAME has on offer, I decided to be a little silly and benchmark the 650 titles out of the “Build Your Own Arcade Controls” forums “All Killer, No Filler” community supplied list of arcade games you should absolutely play in your lifetime. See that list here:
http://forum.arcadecontrols.com/index.php/topic,149708.0.html
The results and a bit of explanation about what I did and how I got there are all available on my website:
https://stickfreaks.com/misc/raspberry-pi-mame-benchmarks
The benchmark runs the game attract mode for 90 seconds, and the result is stored as a percentage (“frames per second” is pointless when arcade games run at all different framerates). “100%” means the game averaged 100% speed, but that doesn’t account for high and low points during the benchmark. In general, you’d want a title to show somewhere in the order of 120% to 150% in the results to be considered “playable”. Titles that run at over 200% are pretty much guaranteed to play skip-free. The benchmark renders video and sound internally, but doesn’t output them to the hardware’s GPU or sound card. This removes the variability of image scaling or graphics/sound drivers from the benchmark, but its worth considering that things like screen effects and shaders do have a very slight impact on performance.
The Markdown engine on my website makes the results a little difficult to read, so there’s a Google Sheet version available too, with a few silly stats I threw in on other tabs:
https://docs.google.com/spreadsheets/d/1xFTeFZcMbPferfEz9_sIlwiooZOvsVwzKJhsiF-W-88/edit?usp=sharing
One thing worth considering is that MAME itself does get slower as releases go on. This might seem counter-intuitive to people who are used to software gaining optimisations and improvements as time goes on, but MAME’s commitment to accuracy means that frequently new releases emulate more things – more chips, more decryption tools, more “cycle accurate” versions of things where new documentation came to light that was previously not known or had to be assumed.
Here’s a great example – MAME developer David “Haze” Haywood demonstrates the Konami arcade classic “Contra”, before and after a fix discovered by reverse engineering expert Furrtek where a certain chip was responsible for the randomisation of bullet patterns in the 3D sections of the game.
Similar fixes and changes come in to MAME all the time, with the end result that newer builds tend to slow down as emulation gains accuracy. This is why you’ll often see very old versions of MAME bundled in to projects like RetroPie (particularly back when the Raspberry Pi model 1 and 2 hardware existed, and was very slow). In addition, secondary emulators like “Final Burn Alpha” are bundled in, as they tend to emphasise full speed playability over accuracy for certain games. The “errors” in these other emulators aren’t typically noticed by anyone but purists, however it is worth noting that as hardware gets faster, the migration to newer builds of MAME regularly brings accuracy improvements that are worth the effort.
Other take-aways from the benchmarking showed:
- Clock for clock, the Raspberry Pi 4 beats a Raspberry Pi 3 by almost 100%
- Emulation performance scales close to linearly with clockspeed – overclocking your Pi almost always helps game speed (make sure you have a good heatsink!)
- Going from 32 bit to 64 bit sees a net improvement of around 10 to 18% on average (with some individual games seeing huge improvements over 50%)
There’s often a misconception that the migration from 32 bit to 64 bit in software was purely about addressing more than 4GB of RAM (where 2^32 is around 4 billion, hence the limit). While addressing more RAM is definitely a benefit of 64 bit systems, in software like scientific compute, visual effects and image processing (things I do in my job), but also emulation, great improvements can be made where accurate floating point numbers are frequently calculated. MAME saw a similar performance boost when x86 hardware changed from 32 bit to 64 bit, and likewise Raspberry Pi OS 64 bit (currently in testing, but available to the mainstream soon) brings similar improvements for emulation users. If you want to try the new 64bit Raspberry Pi OS, you can grab it here:
https://www.raspberrypi.org/forums/viewtopic.php?t=275370
Way back in 2017 I had a lengthy chat with Bob about all things MAME and emulation. We had a great time and talked nerd for ages, which he somehow managed to trim down to just 90 minutes. While I do most of my MAME emulating on x86_64 hardware still, the Raspberry Pi is opening up more and more titles thanks to continued hardware improvements, clockspeed boosts, and the jump to 64 bit. But much of what Bob and I chatted about some three-and-a-half years ago now is still very valid today.