Converting an Old iMac Into the Ultimate Retro Gaming Console, Part 1
This is the first in a multi-part series on converting an old iMac into a retro gaming monster.
I've had an old iMac sitting around for a while. This is a 2010 27" model that was spec'd to the gills when I bought it. For many years it was my daily workhorse. A few years ago I replaced it with a MacBook Pro that I now use as my day-to-day machine, which has relegated the iMac's role in my office to be a very stylish space heater.
I thought about selling the old iMac, and surprisingly I could still get good money for it. This was back in 2019 and I was seeing ads on Craigslist and eBay going up as far as £500. Considering mine was near the top spec when I bought it, and I had subsequently upgraded the RAM to 32 GB, I expected I could get close to that amount for it.
But I didn't sell it.
While the machine wasn't quite up to snuff anymore for things like processing photos or editing video, it still had plenty of power under the hood. It seemed a shame to let it go without finding some fun way to repurpose it.
The Raspberry Pi is well suited as an emulator for many classic gaming consoles. Everything from the 16-bit era and earlier can be run with great success on the Pi. But there are limits: At the time, the most powerful Pi you could get was the model 3B+. You can't get anything newer than PlayStation 1 games to emulate well on it. A handful of Nintendo 64 games will run, but the vast majority do not (sadly 007 Goldeneye falls into this latter category...). And forget anything newer -- Game cube, Sega Saturn, etc., the Pi just isn't up to the task.
The second problem with the Pi is storage. You're limited to the biggest SD card you can throw at it. At the time 128 GB cards were common, but somewhat expensive, and while you'll have no problem fitting every game ever made from the 8-bit era on such a card, 128 GB fills up really fast when you start adding disc-based games for the PlayStation. You can plug in an external USB drive to get much more space, but then you're limited to USB 2.0 speeds, which is a real bottleneck if you try to spin up a disc-based game off the USB drive. Plus plugging in external storage makes the whole thing less portable, which defeats the purpose of the turning a tiny computer into a gaming machine.
My iMac, on the other hand, has an Intel Core i7 quad core 2.9 GHz processor, and 2TB (!!) of storage. Plus it has a decent GPU with respectable 3D capabilities (for its era), and the glorious 27" 2560x1440 IPS display. This machine should be well up to the task of satisfying any retro gaming itch I would ever have.
Still, the iMac sat idle for months after I decided this is what I would do with it. I did some exploratory research to see what my options were as far as emulators and front-end software, but it wasn't until London went into full lock down that I actually pulled the trigger and got started.
What OS to install?
The first choice I needed to make was whether I could use MacOS as the base operating system for this project, or if I needed to bootcamp a Linux install instead. The advantage of using a linux distro is that with the popularity of using a Raspberry Pi to play old games, there is a very active community of emulator developers targeting linux. Another advantage would be that I could re-use the RetroPie project as the front end catalog for all of the games.
On the other hand, this seemed like an overly complicated way to go about this endeavour, and if I ever needed to use my iMac as a backup machine in the event my laptop was having problems, keeping MacOS on the iMac seemed like the safe bet. So I decided to go with an install of MacOS High Sierra (the latest MacOS version that is supported on this model).
Emulators and Front-End Software
When I first started researching this I came across a project called HyperPie. It appeared to be a fork of RetroPie designed for desktop computers. The best part? there was a build for MacOS! This looked like it was going to be the most straightforward way to get up and running.
Sadly, by the time I resurrected this project, the MacOS build had disappeared from HyperPie's site (still isn't one there today). Furthermore, during my research the questions I asked in the forum went unanswered. My guess is there just isn't that much activity surrounding this project.
My continued search led me to a project called OpenEmu. This looked like a great option -- largely plug and play with many consoles supported. However it had two things working against it for me. For one, the emulators in use for the supported systems are hidden under the hood. If a particular game doesn't work, you have no way of using a different emulator. The second problem is the front-end catalog interface is point-and-click. It's designed to be a desktop app like any other, navigated with the mouse. I wanted something that would turn my iMac into a gaming appliance, one where I could browse my entire games collection using the game controller.
I then took a look at RetroArch. This got a lot closer to solving every need I had. It has a front end that can be navigated with a game controller, supports many MANY emulators giving me flexibility to pick one over another in an effort to maximize compatibility with as many games as possible. All of its supported emulators work in a unified way so that you can do things like set save points, rewind game play to a previous point, and even exit games all in a consistent way -- all with a game controller!
So it would seem that my search would end here... but I wanted something a bit more showy... I wanted to create my own custom browse experience for all of the games in the catalog, and I wanted it to look big and beautiful on that 27" screen. The big advantage that RetroPie has is that is uses EmulationStation as a fully customizable front-end, with RetroArch behind the scenes handling the actual emulation. Wouldn't it be great if I could do the same on the iMac?
It turns out this was once possible, as there used to be a MacOS version of EmulationStation available. Sadly, this isn't available anymore (also likely the reason HyperPie no longer has a build for Mac). However, I remember a handful of builders in the RetroPie community using something other than EmulationStation for their front end.
This is a project called Attract-Mode. It is a fully customizable front end specifically for creating browse experiences for catalogs of games, designed to be navigated primarily with a game controller, joystick, etc. As it does not take care of any emulation at all, it is designed to hand off launching of a game to the emulator of your choosing. This meant I could launch any game and have it start with a supported RetroArch emulator, or any other emulator in the event that all of RetroArch's emulators don't work (Something that would eventually come in real handy trying to get PlayStation games to run).
I wanted all wireless controllers, and I wanted them to have enough buttons to handle fairly modern games, anything from before the era of PlayStation 2 and Xbox (i.e., anything up to about the year 2000). I found some unbelievably cheap "genuine" PS3 controllers on eBay. Although I suspected that use of the word "genuine" would turn out to be judiciously creative, I decided to give one a try to see if I could make it work with the iMac.
You know what they say about things that seem too good to be true... Shocking, I know... but this turned out to NOT be a genuine Sony PS3 controller. And while it reportedly works just fine with a PS3, I couldn't get it to pair with the iMac out of the box. The iMac could see it in Bluetooth preferences as "PLAYSTATION(R)3 Conteroller" (Notice the typo? First clue that this was something other than genuine...) but it would just never pair properly.
It IS possible to get it to work, however. This thread and a few others like it revealed a set of instructions that involves modifying the Bluetooth information file so that it THINKS the knock-off controller is a genuine Sony. Problem is, with more recent versions of MacOS, there are security protections in place to detect and undo any changes to system files. In order for this to work, you need to disable these system protections. A low risk, as you only need to disable them temporarily, but a risk nonetheless, and a real pain in the butt to just get a controller to work. So I decided to bite the bullet and buy something nicer.
For my RetroPie build I used controllers designed to look like the original NES controllers from 8BitDo. I was very happy with those, so I picked up the SN30 Pro+. It pairs natively with MacOS, has analog triggers and control sticks and even supports rumble vibration.
At this point, I have everything I need to start my build. Stay tuned for Part 2, where I talk about the custom browse interface I created for Attract-Mode.