This is a 3d printed NES portable built using an NES on a chip retrobit NES. It is 129*40*200mm. it has 8 hours battery life, digital volume control and stylish(maybe) green case. It is not emulated, it is hardware run off an original cartridge so you can still play your original cartridges or test cartridges at games fairs. It was printed in green PLA at 0.2mm layer height. At 129x40x200mm it is as far as I know the thinnest and narrowest NES ever made.
Step 1: Why Did I Build It?
I wanted to play NES games, but I didn't want it to be tv connected. The original NES takes up so much space in your living room that by the time you have routed the cables and the controllers you have aged significantly assuming you don't have a permanent setup. This is the desire to build a portable NES, playing the games available but in a portable form so you don’t trip over trailing cables every time you want to play Tetris or Super Mario. The NES is old and simple, this means that there are many games that are available and homebrew games that have been recently released, this console without the flawed connector and lockout chip means that dirty cartridges are more likely to play. The instructable is not entirely chronological and the pictures are not as detailed as I would like, if you would like pictures of specific parts that I haven't shown then please tell me.
Step 2: Why Not Emulate It Using a Raspberry Pi or Smartphone?
- Because cartridges are cool, you cannot argue with that and I don’t have a smartphone. looking on instructables the amount of NES cartridge projects is amazing, this shows that the NES cartridge is still popular. Nintendo still uses cartridges now for the switch, although they taste worse than the NES cartridges not that I have tried though.
- Roms are illegal, virtually everywhere in the world it is illegal to download roms.
- Smartphone touchscreen controls are useless and are impossible to use because you can’t feel them (unless you can see through your skin, I lack this ability though.)
It is true that Nintendo did make the NES classic edition and this is licensed but this uses emulation and does not have all the games I would want to play. The NES classic also has HDMI video which makes it a bit harder to use and a more complex controller. A raspberry pi portable could be constructed like this one but again that requires roms and has been done so many times
Step 3: The Console/NES Clone
I chose the retrobit NES for the console, this is much smaller than the original huge NES and most of the circuitry is contained in a tiny ASIC (Application Specific Integrated Circuit). The console uses very little power, I haven’t measured it but it is far less than an original NES would use (the whole portable uses 380ma at 5v probably the same as an original but that had no screen). The console can also be modified to run at 5v which is useful as this is what USB uses and is far better than the 9v that it originally used.
The screen chosen is a 4.3” screen that is used for car backup cameras, if they made cars that weren't the size of the death star then that wouldn't be necessary. This is also modifiable to 5v so the entire console can run on 5v which means that I can use the Adafruit Powerboost 1000c to power the unit. I have previously used powerbank circuits for similar purposes though
Looking at the retrobit it is clear that it can be made smaller, once opened there are three circuit boards in the console and only one of them is actually necessary. The first board just contains the controller ports and the power and reset switch, no actual circuitry. The reset switch was not used although I think that it may be necessary to use the reset button for some Zelda games, please correct me if this is wrong. The second board contains circuitry to step the 9v from the power supply down to 5v, I am not quite sure how this circuit works at a guess it uses a zener diode to provide a reference 5.1v and then a transistor as a voltage follower.
The other things on the board are some audio and video ports which are unnecessary also, so this board, like the other one can be removed. This is an iterative process remove one board and rewire then test, always test everything because then you know what it is that doesn’t work if you have only changed one thing.
Step 4: Modification of the Screen (screen If You Want to Go Flatter)
The screen uses an xl1509 (click to see datasheet) switching regulator to step the 9-36v stated voltage down to the 5v used internally, this regulator is 83% efficient according to the datasheet so removal or bypass is beneficial to the battery life of the unit. Connecting the 5v in to either pin 2 or the capacitor that is fed by it allows the screen to work of 5v and reduces the power consumption. Double win, a more useful voltage and better battery life.
So both units are now more efficient and use 5v. I also made the screen thinner by rewiring the surface mount capacitors sideways, this wasn’t necessary but I wanted to practice how to do it and to see if it would still work. This made the screen 2mm thinner, a lot of work for 2mm but it was an experiment and a learning experience so it was okay. This involves lots of testing, change one bit and then test and change another.
At least it is backlit unlike a gameboy advance which requires a syzygy to occur before you can see it.
Thinner is usually better with handheld and portable devices but I think that thinness is optimal at about 19mm, Although making things textured instead of the slick back that they put on phones now may help, I cannot tell you how many times I dropped my PSP because it was so slick.
Step 5: Building the Controller
Now we have the screen running of 5v and the NES running of 5v we can start building the controller. The controller is relatively simple by modern standards, not like the PS4 which has more controls than the Buran, although it still requires a lot of wiring, each button needs 5v, ground, and a signal wire.
With 8 buttons that is 24 separate solder connections and that isn’t including the connections to the 4021 shift register or the NES. I used perfboard for this with copper pads on one side, this is easier than cutting or drilling stripboard and is quicker and makes my solder joints look better.
The tact switches used were soldered in place and then the various wires were connected. The solder joints should be conical and slightly concave like the image. I can’t stress enough that the choice of solder and iron is important here, I built two controllers before this one that didn’t work, partly because I was not as good at soldering but partly because I was using plumbing solder and a large chisel tip iron. So choose the correct tools, that doesn’t mean you need a really expensive solder station but don’t use bad tools or solder.
Step 6: Test Again and Again
After wiring the controller and double checking the connections it can be test wired to the unit, as this instructable is not entirely chronological, and I actually have a spare screen and NES, the image of me testing it is with those unmodified. If you decide to build one I would suggest you build the controller first as this gives some non-heat critical practice on soldering. I could end this step here and claim it all worked first time but read on and hear my errors.
When I first attempted to solder to the PCB with my plumbing solder and awful iron I lifted traces and broke the console so learn from my mistakes and use a fine point iron and electrical solder, also try not to overheat the parts. It worked, sort of anyway, the down and left buttons didn’t function, after checking the 5v and ground connections and pressing them a few times I realised that I had connected them to the wrong pins on the shift register, after connecting this properly it worked. This is my fourth NES controller that I have hand wired and only the second to work so be patient, practice and try again
Step 7: Small NES, But No Power and Case
So we now have everything we need for a compact nes, the screen, controller, cartridge and nes. But we want a portable nes and so we need batteries. The unit uses 380ma when operational but this is after my power modifications and with the screen at 4:3 and 30% brightness. Originally I didn’t measure this and I thought it would come out at around 700ma. But that turned out to be wrong and I could have probably used the cheaper powerboost 500c but we learn as we go so if I make another I may use the 500c or even a powerbank circuit. The batteries are two 18650 lithium cells in parallel to give a 3.7v 5200mah nominal output. Using the 1000c board to boost that to 5v should give a runtime of about 9 hours although I am yet to test this. The wires were extended using thick cable because these need to be able to carry a lot of current, around 1A so the ribbon cable would not be able to cope with that. As a general rule use the same wire or thicker keep the cables short and as neat as possible for troubleshooting because you will definitely need to do that. Be very careful when soldering live battery wires, and make sure you don’t short circuit the battery with your iron tip. This is why I said to use a fine tipped iron, wide irons increase the possibility of shorts. I actually broke a powerboost in the process of doing this procedure by shorting the output with my iron.
Step 8: Oh No, It Won’t Turn Off
The powerboost, unlike most powerbanks, seems to have no load sensing circuitry and so needs a switch to turn it off, this connects the en pin to the gnd pin and the unit shuts off. While you could use a switch after the 5v output, the powerboost would still have its blinding blue led on wasting all your power which we want for gaming. I wired a temporary switch because I didn’t have the correct slide switch to fit. This was temporary but incorporated into the actual design, it doesn't work properly sometimes but I wanted to finish the unit.
Step 9: Amplifier
The amplifier is a simple lm386 based amplifier, this runs off 5v like the rest of the unit. But be careful, not all lm386 amplifiers can run off 5v. I used the version ending n-3, and an 8 ohm speaker. The unit was wired like in the diagram above, however I added a power line capacitor for noise reduction and the sound quality improved from shockingly bad to just bad. After a lot of time listening to the menu music of super Mario 3 and getting more annoyed I had an idea.
I suspected that audio clipping (when an waveform has the top clipped because the maximum voltage that the amplifier can output has been reached) was the issue here and so I wired a potentiometer to test my theory, it may have not been clipping but the potentiometer solved the sound quality issue and now it just sounds poor. I think this is bad sound generation by the asic in the unit rather than my design but I can tell you this and you will probably believe it. I wired three 3.3kohm resistors to form a potential divider to reduce the volume to tolerable levels. This reduced the maximum volume of the unit to 1/3 of the original but because of the weird way that humans perceive sound it was not that much quieter but far less annoyingly distorted.
Step 10: Turn It Down
The sound was then wired to an x9511 digital 32 step potentiometer, this turns the volume down and allows me to use buttons to reduce the volume from maximum to minimum. This is not logarithmic as would be ideal but it works to reduce the volume using buttons. There is a ground connection and a signal wire for the volume buttons, no pull ups necessary. Because the digital volume control was an afterthought the wiring was very tight near the shift register. I put the wires over the top of the circuit board because there was nowhere else.
The digital volume was an afterthought, therefore I didn’t have the buttons printed and I didn’t want to pay the huge price of postage for such a tiny part. If I make another I will get the volume buttons printed at the same time. I made the volume button out of some plywood, filler, card and paint. It is not perfect but time and money restrictions meant I just stuck with the non-optimal for now.
Step 11: The Case
I have no images of the designing of the case as this was designed in March, April and May 2018. This was assembled in march 2019. However I can give you some details into how it was designed, I used paper to draw a rough outline, laying the various components on top of each other to get the rough layout. Add space for wires, they can be the reason the unit doesn't close
I wanted a portrait console for two reasons, size, the nes cartridge is huge, making a landscape console makes the height have to be at least 145mm and because I wanted the console to conform to the golden ratio of 1.618 that makes it about 230mm for the correct ratio. As the console pcb is the thickest part it would have interfered with the screen and the unit would be even thicker.
Portrait is better unless you need shoulder buttons, I think it looks better, and it means I can keep the same control spacing as an original NES controller. The case is 129mm wide because that is the thickness of the cartridge port mount plus the case thickness and 200mm because that is a convenient number that is close enough to the golden ratio to look good. Studies have shown that the golden ratio is not actually preferred but it is in the range of preferred rectangles, about square root 2 to about square root 3 (if anyone can point me to the study that found this I will be grateful). The speaker has holes arranged in a pattern and my initials in the middle. Those clever screw holes keep the unit as thin as possible. The case was assembled using m2 screws because I wanted small screws. Americans reading may think “why didn’t you just use screws in inches”, well because I am not American and inches are generally fractional and that is difficult to input in a decimal environment like cad.
I used calipers a lot to measure things repeatedly, and remember that 3d printers are not accurate, so leave tolerances. The prints you see here are the fifth try and the second unit, I have built another one before but without sound or such a nice design. When designing cases, use paper templates to check fit. Paper is cheaper and quicker than a 3d printer. It sometimes takes 20 attempts to get the measurement right. At least it did when I was making the controller mounts, but that was because I had to guess how many tenths of an inch the spacing should be (the holes on perfboard are 0.1” or 2.54mm apart) and multiplying it, rounding it and then checking it lined up. I refused to use inches in my design because it would mess up all my measurements done in millimetres.
Step 12: Mounting It All
The holes in the perfboard needed to accept a 2mm screw so I used a 2mm drill to enlarge the holes to mount the controller amplifier board. The screen was hot glued in, and hot glue was used to secure the wires to the prints to keep them neat. The cartridge port was friction fitted and holds itself in place. Hot glue is very useful in situations like this, no-one will see the inside so use the glue gun to hold things in. the case was printed in pla at 200mm layer height. Because I didn’t have a 3d printer I sent them to a company who printed them, I specified the same colour but as you can see the colours don’t match. The screws thread into undersized holes in the plastic but the holes I used were a bit big so the screws had little hold. The battery was glued in with, can you guess, hot glue.
Step 13: Conclusion
The final unit I am very happy with and it plays the games I want it to. There are some games that the clone console can’t play but I don’t know where the list of them is. the screen is in 4:3 to reduce the lag on the unit to an acceptable amount and with an 8 hour battery life, you can complete most games without recharging. The unit is and I will claim it now, the thinnest (40mm) and narrowest (129mm) nes portable ever (that takes an entire nes cartridge). Unless anyone can prove otherwise.
It is far from perfect obviously, the case could have been finished better, such as painting. the controls are not as I wanted either, I wanted them in different colours to what they are in now with the A and B inlayed.
I have definitely learnt a lot during this project but I have a portable nes, something I can show to many people and amaze them with the 8-bit graphics and the 3d printed case. If you would like the stl files or a step by step guide then say in the comments and I may do a step by step guide, but at a cost because I already have one so I would have to make another specifically to take many photos that takes time and requires a new set of components, I would need enough people willing to pay for it to be worth my time and investment. Also if more pictures or clarification is needed, or any other editing of the instructable, then let me know in the comments.
Step 14: Questions I May Get
- Will you make me one
No, if i make one for the plans then maybe that one I will sell
- What are the dimensions
129mm x 200mm x 40mm or in imperial 6x10^-3 ch x 9.9x10^-3ch x 1.99x10^-3ch
- But those aren’t the imperial dimensions I wanted
5.079x7.87x1.57" happy now?
- I could do better
Please show me, I would like to see it. Or to use the modern parlance “pics or it didn’t happen”
- What is the hole for at the bottom of the unit
The top square one is for an expansion port and the bottom round one is for headphones, I didn’t have a jack with a disconnect in so I left it.
- Why did you make the screen smaller
To reduce the lag, it was unplayable
- Why didn’t you use a 3.5” screen like this
The image scrolled vertically constantly, I think it was some v-sync issue. it wasn’t n-sync
- Can you add…
That is probably what the exp port is for, second controller, av out etc, charge port
- Use a raspberry pi
Read the instructable
- Use a real nes
No, it is huge
- Plans please
Let me know in the comments, there may be a cost
- Will you build a portable n64
No, see Ben Heck's videos on that. Ben is more skilled than me and hugely struggled with it.
- How long did it take to build it?
About 20 hours to assemble, about 300 hours designing and redesigning the case. That was due to inexperience though so I could do it much quicker now. Probably about 50 hours to design a new portable of similar complexity.