Pi in a NES Cart
-
I finally managed to put a Pi in a NES cart. I'm pretty happy with how it turned out.
Parts List
- 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
Back in late February or early March I saw Elliot from The Retro Future work on putting a clone NES in a NES cartridge shell during a live stream. It got me to thinking that I could probably do something similar with a Raspberry Pi.
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.
-
@obsidianspider Okay... now pants off! More pics of the building process please!
obsidianspider = the man who says "A Pie fits everywhere" ;)- Lists of parts used
- List of selfmade circuits
- Where did you get the parts ;)
-
@cyperghost It's just a Raspberry Pi. I don't know what you mean ;)
Seriously though. I'll be editing the original post with photos and an explanation of the process. I just wanted to share because I finally finished it and am liking the result.
-
@obsidianspider I like that you used a widescreen display, mounted it vertically, and then you are using a custom bezel to make it look like a Ghosts N Goblins cartridge. Can you load other bezels to make it look like other popular cartridges? ;-P
-
@caver01 Ha! It's not quite that sophisticated.
-
Hey, this is nice, man! ๐
-
This looks awesome !
Can your next project to do this in a Game Boy cart? :O)
-
@thedatacereal unless they come out with TARDIS Game Boy cartridge shells where the inside is bigger than the outside, I donโt think thatโll work. ๐
-
Well done!
I can very well imagine the work done with the files and Dremel. I did something like that for a different Hobby, took hours and one mistake and you can start from scratch.Curious, what will the new icon in your signature for this look like?
-
@flyingtomahawk Ha, I guess I need to work on that.
-
@obsidianspider as always, great job! I really like how the label turned out as well.
-
@obsidianspider Great project ! How is the comfort level playing that ? As in holding it for a period of time while playing a game ? How long can you play with a single charge on the battery ?
-
@obsidianspider About the I2S ... you can make it louder by soldering resistors between some PADs. Go ahead to the adafruit page... there you will find instructions. I love these sound devices... crystal clear sound for a moderata price (5-7USD)
-
@bytethis It's actually pretty comfortable to hold. I've not tested the battery life, but it does have a protection circuit so it shouldn't over-discharge.
-
@celly said in Pi in a NES Cart:
@obsidianspider as always, great job! I really like how the label turned out as well.
Yeah, I like how I was able to get the Nintendo logos to show up even with the area removed for the buttons.
-
@cyperghost This is true, but I am also using a small speaker and I don't want to blow it. It's loud enough at full volume for normal playing. I'm not hosting a rock concert with it. :)
-
@obsidianspider Ha! I've got those hand files. Not got that 25-hour patience though...
-
@markyh444 I'm not saying it would take everyone that long, and I'd probably be faster now that I've done it once, but it was VERY tedious.
-
@obsidianspider to be fair, the last time I did a case mod it was tedious as hell. Then delayed finishing it for about a month as I nearly hacked my left index finger off with a Stanley knife halfway through.
I wouldn't mind, but it wasn't even for me!
-
@markyh444 said in Pi in a NES Cart:
Then delayed finishing it for about a month as I nearly hacked my left index finger off with a Stanley knife halfway through.
Oh dear! But the answer is easy for this
.... Fix it Felix!
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.