I’ve seen a lot of articles over the past month (most recently this one on Ars Technica) suggesting that people who can’t find one of those new NES Classic systems in stores should build their own using a Raspberry Pi. I even mentioned the Raspberry Pi as an alternative to a real NES back in September in my Guide to (Many) NES Alternatives article. Since then I’ve had several people ask me how difficult and time consuming it is to get a Raspberry Pi emulation system up and running from scratch.
Today, I decided to build one from scratch.
For my build I used a Raspberry Pi 3 Model B, the newest version of the Pi. A Raspberry Pi by itself costs $40, but that price is a bit of a misnomer. At a bare minimum you’ll need a power supply, an HDMI cable, and a micro SD card. There’s a nice package on Amazon that includes all of those things along with a case, but it’s $80, not $40. You’ll also need a USB keyboard to get things up and running, and eventually you’ll want a couple of joysticks. For my project, I used two wireless Xbox 360 controllers with USB wireless receivers.
With all the parts I needed sitting in a pile in front of me, I started the timer.
The first step involved downloading RetroPie. The .IMG file is 580 MB, so if you have a slow internet connection, bring a book. My internet connection is pretty fast and the download took about five minutes.
EXTRACT RETROPIE ONTO MICRO-SD CARD
Once the download finished, I downloaded Win32 Disk Imager to extract the image onto an SD card. I had the micro-SD card in a USB adapter and this step took about 45 minutes.
PUT CARD IN RASPBERRY PI AND BOOT
With the image on the Raspberry Pi, I inserted the card into the Pi and turned it on. It booted right up.
The Pi recognized my wireless Xbox 360 controller and walked me through configuring it. This took about a minute.
From the main menu I also configured my Raspberry Pi to join my home wireless network. If you’re setting up RetroPie for the first time, here’s a good document to follow.
RetroPie comes with dozens of pre-configured emulators, but no games. For that, you’ll need to use Google. The RetroPie showed up on my network as RETROPIE. All I had to do was connect to the device (“\\RetroPie”) and all the folders I needed to access showed up. For testing purposes, I grabbed Super Mario Bros. 1, 2, and 3, and copied them over to the SD card.
RetroPie won’t recognize newly-added games until you reboot. After rebooting the Pi, the NES emulator magically appeared on the main menu.
The next step, called “scraping,” is optional, but nice. RetroPie has the ability to connect to an online database and automatically download information and screenshots about each game. After rebooting my Pi, I ran the scraping utility. This is what the menu looks like now.
From here I launched Super Mario Bros. 3 and…
…there you go. Tracking down ROMs for the other 27 games that appear on the NES Classic took about 10 seconds with Google.
I’ll pause here to say I started this project at 11:00 am. It took approximately 5 minutes to download RetroPie, 45 minutes to extract the image, and another 10-15 minutes to configure the menu. For intermediete computer users, I’d set aside 60-90 minutes to get RetroPie to this point.
I decided to expand mine a bit by adding every NES, SNES, Sega Genesis, and Atari 2600 ROM to mine. I could have sped this part up by switching to an ethernet connection or by copying the ROMs directly to the micro-SD card, but I’m pretty lazy, so wireless connection it was. The “scraping” feature makes the menus look nice, but it’s not particularly quick. If you’re going to build menus for hundreds of games at a time, you might want to let it run overnight.
The next to last step for my little emulation experiment was to get MAME up and running. This was slightly more involved and exceeds the scope of this article, but I decided to go with Libretro (LR-MAME2003), which unfortunately uses a ROM set (0.78) I didn’t have. 7GB of ROMs later, I got MAME up and running. Once I get the ROM samples working on RetroPie, I’ll write another article.
The last step of my project was taking a break and taking the Chicago Bears to the Super Bowl!