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 Super Mario Bros. 3 again,” and “Castlevania II: Simon’s Quest is probably the weakest of the three NES Castlevania 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.
Note: Ars Technica may earn compensation for sales from links on this post through affiliate programs.
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:
- Spend something close to the same $ 60 that the NES Classic Edition costs, though I would be OK as long as the bill of materials came in under $ 100 (because that’s roughly as many Amazon points as I have to dedicate to this project).
- Make something similar in size to the NES Classic Edition.
- Make something powerful enough to easily emulate 8- and 16-bit consoles—anything above and beyond that would be great, too, but for these prices you won’t be emulating many games released after the end of the ’90s.
- Include integrated Bluetooth and Wi-Fi for wireless controllers and easy network/Internet connectivity, respectively.
- Build something that, once fully configured, would provide a relatively easy-to-use and attractive console-like UI.
With all that in mind, these are the components I settled on (prices and components updated on 6/30/2018):
- For the heart of the system, I chose the Raspberry Pi 3 Model B, available for $ 43 from Amazon with a 5V 2.5A micro USB power adapter and little heatsinks (if you already have the minimum recommended 5V 2.0A micro USB adapter, the board itself can be had for around $ 38).
- It’s worth noting, however, that Raspberry Pi has released an updated Model B+ version of the computer since we published the initial version of this guide. That model brings a faster CPU and improved networking, so it may be the wiser choice in 2018. It’s available for $ 49 on Amazon with a power supply and heatsinks, or $ 43 for just the motherboard.
- In any event, this thing ticks a lot of boxes—it’s relatively cheap and relatively powerful, and it can easily handle anything from the original PlayStation on down (Nintendo 64 and Dreamcast emulation is offered but generally too buggy and laggy to be usable in most cases with the Model B; anything newer is a no-go). It has the integrated Bluetooth and Wi-Fi I wanted as well as plenty of ports for wired accessories. And the Raspberry Pi is a super-popular lineup of enthusiast boards with tons of official and community support.
- The Pi has no built-in storage, so you’ll need a microSD card. You’ve got a lot of choices here, but both the 32GB and 64GB SanDisk Ultra cards—available for $ 12 and $ 22, respectively—are solid, affordable options. These are both overkill capacity-wise, but I want to leave plenty of room for future library growth. Whatever card you buy, you don’t want to cheap out: even the best microSD cards don’t have stellar performance, and that’s definitely true when you’re using them as the primary storage drive on a computer rather than as a place to dump large photo or video files. The Wirecutter recommends Samsung’s EVO Select cards, for instance, saying they can hang with or handily beat pricier offerings from other companies. Those cost $ 12 for a 32GB card and $ 20 for a 64GB card, if you want to try something faster.
- The official Raspberry Pi 3 case, available for around $ 6. There are lots and lots of different Pi cases available, from cheap, creaky plastic numbers to sleeker aluminum versions to specialty cases with active cooling systems. I went ahead with the official model because it was cheap, it’s unobtrusive, and it can be completely taken apart and reassembled without tools.
- A pair of Buffalo Classic USB Gamepads, which were available for about $ 13 when we originally published this guide but currently cost $ 15 a piece. Indie reviewers say that these SNES-style gamepads feel almost exactly like the real thing, and they’ve got 5.5-foot cables that are considerably more generous than the NES Classic Edition’s 2.5-foot cables. I already have PS3 and PS4 controllers that will work wired and wirelessly, but in my opinion older 8- and 16-bit games just feel better with a lighter, simpler gamepad. The pad you use is really up to you; die-hard purists who don’t mind dongles can find USB adapters for their original gamepads if they need the feel of the genuine article. Most generic USB and Bluetooth pads will work fine, too.
- If you like the feel of an old-school gamepad mixed with the convenience of wireless controllers, 8bitdo makes a fantastic Bluetooth SNES pad available for about $ 31; it’s worth it, given that you can use them as wired controllers with micro USB cables and since the wired models are generally more expensive. You can get them with both SNES-style purple buttons and Super Famicom-style multicolor buttons, depending on which you prefer.
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:
- A Mac, Windows, or Linux PC with an SD card slot for loading the Pi’s operating system.
- A USB keyboard or gamepad for setup, maintenance, and gameplay.
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.
- Assuming your HDMI cable is handling video and audio, go to the Audio settings in the RetroPie menu and select “HDMI” from the list of outputs. The default is “Auto,” but forcing HDMI can apparently solve some audio problems.
- If you’re not using wired Ethernet, go to “Wifi” in the RetroPie menu and connect to a Wi-Fi network. The Pi 3 natively supports 2.4GHz 802.11n, which isn’t great, but it’s fine for the price and good enough for our purposes.
- Once you’re on the Internet, access the command line by pressing F4 on your keyboard or by pressing Start on the gamepad, selecting Quit, and then quitting EmulationStation.
- Take note of your box’s IP address, which will be displayed along with other system information.
- Type passwd if you’d like to change the default account’s password for security purposes. The default username is pi and the default password is raspberry.
- Type sudo apt-get update and then sudo apt-get upgrade. The first command refreshes the list of available packages from the device’s repositories, while the second actually downloads and installs those updates. Go ahead and install all updates when prompted.
- Once it’s set up, our RetroPie box will be pretty appliance-like; you could disconnect it from your network and never worry about updating it again if you wanted. But new versions of both Raspbian and RetroPie are released periodically, and if you intend to keep the RetroPie box on your network permanently, you should at least install updates periodically.
- Type sudo shutdown –r now to reboot your box, which will bring it back into the EmulationStation UI.
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.
Listing image by Andrew Cunningham