This is what happens when we get a broken garage sale NES and a new Raspberry Pi in the mail.
This project currently sits under our TV at home, but needs some cleanup before we get everything posted. (No one likes mounds of hot glue and no cable headers in their final projects! Also, we over-excited with our HDMI extension cable, so that’s got to be fixed as well.)
We currently use ours to play digital copies of games that we have in storage: NES, SNES, Gameboy, Gameboy Advance, Sega Genesis and Sony PlayStation.
Most games run pretty well and look great. Our exceptions are SNES games that originally had the advanced co-processors in the cartridges and complex PlayStation games — they need more horsepower to properly emulate than our little Pi can put out. For instance, our favorite SNES game, Super Mario RPG, used the SA-1 chip. Since the Pi doesn’t have this chip, or the horsepower to emulate it properly, the game’s audio and video tends to run out of sync. If you’ve ever played this game, it’s super frustrating without the sync.
- Busted NES
- Rasperry Pi 2
- 64 GB Class 10 Micro SD Card
- 6-port USB hub with external power adapter (at least 2 Amps output!)
- 2-port USB hubs (x2)
- HDMI extension with panel mount header
- Cat 5e/6 extension with panel mount header
- 3.5mm audio extension with panel mount header
- Barrel power connector
- USB input.
- Keyboard for ssh configuration
- USB gamepad for gaming. We use XBox 360 Controllers.
- Hookup wire (22AWG)
- Lead-free 60/40 rosin-core solder .032 diameter
- Shrink tubing (black or color-matched of varying diameters)
- Dremel (or other hand-held rotary tool)
- Soldering Iron (we have a Weller WLC-100)
- Helping hands (sans magnifying glass)
- Wire strippers
- RetroPie ISO
Make sure to get the ISO that matches the Pi you want to use. We have a RasPi2, so we got that one.
Remember: You’ve gotta actually own physical copies of the games you want to emulate!
- Disassemble the NES.
A good phillips screwdriver will go far. Make sure to keep the screws in a baggie so they don’t get lost!
- Clean the bits and pieces.
Ours was super nasty from a roach infestation and needed an overnight soak in a 50/50 solution of 90% Isopropyl alcohol and water. We deiced against bleach, as we wanted to keep the labels intact.
We ended up ditching all of the guts except the small circuit board housing the two front buttons and LED.
If yours has yellowed with age, Retr0bright has worked well for some folks for restoring the color to its original glory. Our’s didn’t need that.
- Figure out a mounting point for the Pi.
Right over the unused expansion slot looked good, so we went with that. No plastic needs to be cut there, and it gives us plenty of room to route cables and such.
- Figure out where the ends will poke through to move the electrons.
We did some heavy-handed Dremel work to make the panel mounted receptacles reachable from the outside near the original holes for the DC power jack and the RF modulator.
Prep the NES
- Install the ISO onto the SD card.
We used good ‘ol dd on a Fedora box, but you can use whatever you like.
There’s great tutorials from raspberrypi.org for doing this sort of work. We made sure to use a block size of 4MB on a USB 3.0 controller to speed up this process.
- Install the SD card and boot
Hook up the Raspberry Pi to power, an HDMI-enabled display, Ethernet (in our case), and a keyboard. We configured ours on the desk before “re-configuring” the NES case. For power, since the hub was still in its plastic, we just stole a standard MicroUSB cell phone charger that output at least 1 Amp. Again, 2 Amp output is highly recommended.
Prep the Raspberry Pi
- This GitHub link contains the official directions for initial setup. We followed them all the way through, then performed some additional configurations.
- Overclock the Pi (at your own risk!)
Log into the Pi and issue the following command: sudo raspi-config. Select “overclocking,” press enter, then pick your poison.
We overclocked our Pi to 1GHz with the default RasPi 2 settings provided by Retropie.
- Mod the overclock (if you like)
You can hand-edit the file /boot/config.text to tweak it further.
We adjusted the gpu_mem flag to give us a bit more horsepower for emulation.
Please note, that not all Raspberry Pi’s will overclock identically. If the below configurations breaks your board, restart while holding down the shift key to bypass the overclock, then adjust down until the board is stable.
gpu_mem=320 force_turbo=1 ## WARNING: nukes your warranty!!! arm_freq=1000 core_freq=500 sdram_freq=500 over_voltage=6 temp_limit=80 boot_delay=0
Again, we used RetroPie, so our directions below are focused on that.