- NES Game
- Reproduction Game Label
- Raspberry Pi Zero
- Micro SD Card
- 2.8" ILI9341 SPI Screen
- SPI Screen Ribbon Cable Carrier Board
- Reproduction NES Classic Controller
- Perf Board
- TP4056 Charging Board
- LiPo Battery
- SPDT Slide Switch
- Adafruit I2S Amplifier
- B103 10k Ohm Duplex Potentiometer
- DS Lite Speaker
- 30ga Magnet Wire
- Miscellaneous Hookup Wire
- Heat Shrink
- Nylon Standoffs
- ABS Cement
- Hot Glue
- Kapton Tape
- VHB Tape
After searching around a bit I saw that this was not a new idea. Someone had done a similar build back in 2009! I really liked how they used the controller bits for the button wells so I knew I wanted to attempt to recreate that.
I had some parts laying around and a quick mockup made a Pi Zero build look very possible.
I didn't want to use a real Nintendo controller, so I went to eBay and found a cheap NES Classic knockoff controller to use.
I looked into reproduction cartridges, but they were pretty expensive and by the time I got one and decals it'd cost more than if I bought two or three junky real NES games. It may upset some purists, but I ended up buying a bunch of crappy games in good condition to use as a donor. I figured if I messed one up I would have a spare.
While I was waiting for parts to arrive I decided to work on getting the screen and I2S amp working. I could have used USB audio and a separate amp, but I wanted to learn how I2S amps worked and since NES games are all mono anyway, it ended up being a good opportunity to use one. Thanks to the scripts on Adafruit's website, after mocking things up on a breadboard it ended up being really easy to set up the amp.
It took a while for the controller to arrive from China, but once it did I got started with breaking things down.
It's a very simple design and I learned that the NES Classic controllers work via I2C. I originally wanted to interface via I2C, but I wasn't able to properly initialize the chip, so I eventually decided to just remove the blob chip and go straight to GPIO and interface using Retrogame.
Now that I had things more or less working electrically I decided to work on what ended up being the most difficult part of the build: the case mods. In total I spent over 25 hours on the controller and cartridge case mods (not including ABS cement cure time). No, that is not a typo.
I used a Dremel to roughly cut out the button areas from the controller and started soaking the game label with Goo Gone to release the adhesive. (Sorry, fans of Jaleco Hoops.)
After a lot of patience the label came off nicely.
I then marked out the hole for the screen and used a Dremel to make a rough cut. I finished it up with a hand file.
Taping the screen into place as a quick mockup made things look really promising.
Next came filing down the button surrounds. This took many hours with a set of hand files. I tried different ways to make it go faster, but there really wasn't a shortcut.
The most challenging part of modifying the controller was the D-Pad. I had to figure out how to get things as close to the edge of the cartridge as possible but still retain the posts that keep the contact membrane in place. This took quite a bit of mocking up and figuring out. to get in the right place. I ended up using the screw post from the cartridge to replace the post from the controller.
Since I needed the ring from the D-Pad to ensure proper movement I needed to remove that with as little waste as possible and I also needed to make sure I didn't damage the actual cross portion that would be on the front. I used a coping saw blade to slowly remove the ring from the back of the D-Pad section of the controller. Once I had the ring off I was able to hand file out the cross portion of the D-Pad. This took a long time. The actual ring around the cross portion is only 1mm wide, so I had to take care not to crack it while filing.
With all of the button wells now removed from the surrounding controller plastic I used the sticker from the controller to mark the location of the areas to be removed from the cartridge. This took a lot of figuring so I could properly locate the post from the cartridge shell that would be used for the D-Pad. I marked things with a permanent marker before making some rough cuts with a Dremel. I finished out the holes with a hand file. This took forever. Filing, putting the button well in place, removing, filing some more, and repeating seemingly endlessly.
Because things weren't entirely symmetrical I used match marks so I was positioning the button wells in the same way as I made the holes. I mixed up some ABS cement with acetone and the parts of the cartridge shell that were removed for the screen and button area. First I tacked the button wells in, then added more ABS cement after things had cured for a few hours. I ended up being a bit overzealous with the ABS cement and there is some slight warping to the shell caused by the ABS cement curing process. It's not really noticeable when things are all together, but it's something to be aware of.
After the ABS Cement had cured for a while on the cross for the D-Pad I placed the D-Pad in so I could figure out the position of the ring. I then tacked that in with ABS cement and then reinforced it after the tacks had set up, adding more ABS cement slowly over the course of a few hours.
While not perfect, after curing for a few days the shell looked really good.
I needed a way to keep the PCB for the controller in place, so I used some nylon standoffs that I had on hand and glued them in with some more ABS cement.
In order to fit the battery charger and audio components I removed the ridge from inside the front half of the cartridge shell with a Dremel.
Once I had that out of the way I determined that in order for things to properly clear the lip on the bottom of the cartridge I would need to raise things up, so I used some scrap perf board. I attached the power switch, battery charger, volume wheel, and speaker to the perf board.
With all of the components laid out I wired it all up using 30ga magnet wire for the controller so I wouldn't have any interference with the button pads. Everything else used hookup wire. I wanted to get everything working electrically outside the case before I started securing things to the cartridge shell.
I wasn't sure what I wanted to do for a label. I mocked some up in GIMP, but in the end I chose a reproduction Ghosts N' Goblins label. I messed up when sticking it to the flap at the top so I had to remove it and reattach it, so it's not perfect, but it's not terrible looking and in a way it looks like an old game, or at least that's what I'm telling myself.
To finish things off I used a combination of kapton tape, VHB tape and hot glue to secure the components to the shell. I used more nylon standoffs to support the button PCB. The bottom two screws of the case keep it closed. The middle screw was trimmed off and glued in place.
If I had to do it over again (and after how long those case mods took, I doubt I will) I would look into a potentiometer with a different range as this one basically mutes for about 3/4 of the range. I might also look for an IPS screen since this one has a limited viewing angle, but aside from that, everything works really well and I'm very pleased with how it turned out.