In November 2016, Nintendo surprised everyone by going back to its roots and releasing the NES Classic. The delightful emulator/nostalgia-fest sparked unanticipated demand, including near-instant supply issues and 200-percent-plus markups in secondary markets. So in December of 2016, we decided to build our own version instead.
Last April, Nintendo bizarrely halted sales of the hot-selling retro console, sparking us to resurface this guide.
And with the news that Nintendo relaunched the console this week—but yet again supply is an early hurdle for interested gamers—we’re re-running this piece to help those of you with a DIY streak once build your own, more flexible alternative. Hardware recommendations have been updated and lightly edited to reflect current availability and pricing for June 2018.
Against my better judgment, I’ve tried a couple of times to snag one of those adorable little $60 mini NES Classic Editions—once when Amazon put some of its limited stock online and crashed its own site, and once when Walmart was shipping out small quantities every day a couple of weeks ago. In both cases, I failed.
But the dumb itch of nostalgia can’t always be scratched by logical thoughts like “do you really need to pay money for again,” and “ is probably the weakest of the three NES games.” Since it’s not entirely clear if or when those little mini NESes will become readily available, I decided to funnel that small wad of expendable cash and the desire for some nostalgia-fueled gaming into a DIY project.
It turns out that the NES Classic Edition is just a little Linux-powered board inside a cute case, and it’s totally possible to build your own tiny Linux-powered computer inside a cute case without spending much more than $60. And by using the Raspberry Pi and freely available software, you can build something capable of doing a whole heck of a lot more than playing the same 30 NES games over and over again.
I find it helpful when pursuing a new DIY project to start with a list of needs and wants and go from there—possibly a leftover from my IT days helping the non-technically inclined (and actively technology-averse) make purchasing decisions. With my homebrew NES Classic, I wanted to:
With all that in mind, these are the components I settled on (prices and components updated on 6/30/2018):
Raspberry Pi 3 Model B+ with 2.5A Power Supply
Buffalo Classic USB GamePad for PC
With the 32GB microSD card, Raspberry Pi 3 Model B, and one controller, that bill of materials comes to around $76, which is pricier than a NES Classic alone but still fairly reasonable for what you get. Many of these components are also common enough that you could save some money by just using things you already have lying around (and for our purposes I’m already assuming you don’t need an HDMI cable because it’s 2018 and we’re all lousy with HDMI cables; here’s a 3-foot one for $6 and a 6-foot one for $7 if you need it).
Putting our little box together is ridiculously easy, and you ought to have no problem with it even if you’ve never opened up a PC tower in your life. The official Pi case splits into five separate pieces, all held together with retention tabs that pull away with firm pressure: the base, the top, the lid, and both sides/port covers.
Completely disassemble the case by pulling off the sides and then pressing in on the arrow tabs so you can pull up the top. Then, take the Pi from its box and slide it into the base, making sure that the microSD slot lines up with its cutout on the front of the case. Don’t force the board into the case—if you’re having trouble, put the SD slot side of the Pi into the case at a 45 degree angle, and then lower the back end of the Pi into the case. Small plastic tabs should stick up out of the board’s back two mounting holes if you did it correctly. Then, snap the top and sides of the case back together, and you’re done! If you bought heatsinks, you can stick them to the chips on the top of the board at any point in this process, including after the Pi is already in the case.
That’s the easy part. Software is more tricky, though not insurmountably so.
For the next parts of the process, you’ll need:
Making retro game consoles is a fairly common use case for the Pi, so there are a few different operating system choices out there. Most of them involve running libretro and its emulators on top of the Raspbian operating system, and the most prominent also include the EmulationStation frontend.
The best supported, most active of these options is RetroPie, which mixes all of these ingredients together into a package that’s relatively easy to use, visually appealing, and customizable. It also includes a huge number of emulators for both consoles and various personal computers, though, as I mentioned, nothing newer than the original PlayStation will run consistently well on the Pi 3’s hardware (the newer systems are confined to the x86 version of RetroPie, which looks and works basically the same but is built on top of Ubuntu and can run on more powerful and expensive hardware).
The first thing you’ll need to do is drop a RetroPie boot image on your SD card. Since RetroPie is Linux-based and uses the ext4 filesystem, Windows PCs and Macs can’t natively interact with the card once you’ve reformatted it. The RetroPie download page is here. The imaging tool that the RetroPie developers recommend differs depending on your operating system—Win32DiskImager for Windows, Apple Pi Baker for macOS, and Unetbootin for Linux—but the basic process is the same. Decompress the .gz file you downloaded from the RetroPie site, open the tool, and select the .img file you just unzipped. Point the tool at your SD card—if the tool doesn’t see it, you may need to format it as a FAT32 disk first—and let it do its thing.
Once the disk image has been copied to the SD card, pull it out and put it into the Pi, and then plug the Pi into the display with an HDMI cable, plug a controller or keyboard in, and then connect to power. The system ought to boot up and run through some first-time setup things (if the Pi’s red indicator light comes on but nothing else happens, the card may not be formatted correctly, and you should try again).
If you did everything right, after a couple of minutes you’ll see an EmulationStation prompt asking you to connect and configure a gamepad. Press down any button on your gamepad, and you’ll automatically be asked to map all the controller buttons. If you’re using the Buffalo gamepad I bought, it will ask you to map some buttons the gamepad doesn’t have; just hold down any other button on the gamepad to skip them, and then hold down any button again to enter the main EmulationStation UI.
All you’ll see by default is an entry for RetroPie that gives you access to a bunch of settings—this is totally normal, and you’ll see entries for other systems pop up as you transfer ROMs to the Pi. You can navigate through many of these configuration menus with a gamepad, but heading into any of the RetroPie settings kicks you out of the slick EmulationStation frontend into a text-driven, more DOS-like tunnel of menus. If you need to enter text or even hit the Esc key to leave any of these menus, you’ll have to hook up a USB keyboard first.
Here’s a short list of stuff to do before we dig into the fun part. From here on out I’ll assume you have both a keyboard and a gamepad to use.
At this point you’ve got a basic RetroPie setup running, you’ve connected your box to your network and you know its IP address, and you’ve updated EmulationStation, its emulators, and the underlying Raspbian operating system to the latest versions. Now it’s time to load up some games.