Introduction: NES in a Cartridge
If you liked this instructable, consider checking out my new website www.TheSiliconJunkie.com
Have your ever seen any of "Ben Hecks" portable console builds? Well if you haven't, he often uses these Chinese Famicom clone consoles. These cloned consoles are often times refered to as NOAC's, meaning NES On A Chip. They are called this because they are a fully functional Nintendo Entertainment System literally on one chip. The best part about the NOAC is that they include a 60 pin famicom game port, which in our case can easily be converted over to a 72 pin NES game port.
I originally got this idea from Kotomi (link below), and figured i would try to do the same thing. My plan was to use the original NES controllers, instead of the cheap super joy ones, which is what i believe Kotomi used. Kotomi's system also incorporated the original Famicom connector instead of the NES connector. In order to use the NES controllers, I would have to convert the NES controller's shift register data into the NOAC's controller chips. So... what better way to do it than with an Arduino!!!!
http://kotomiblog.blogspot.com/
Step 1: Materials
One of the toughest things to find is the Chinese Power player unit (or Super joy thingy), which ever system you find, they all should work about the same. I was lucky enough to find mine at good will for 6 bucks... can't beat that. Any ways, if you can't find one locally then check on ebay. The only problem is that if you buy one off ebay then it will run you around 20 bucks. All the rest of the stuff you can get either from Radioshack, or once again on ebay. In my case I bought the 72 pin connector and the ports separate, however you would probably be better off just buying a broken NES. My only problem was that I was kinda pressed for time, and couldn't find one FOR CHEAP!!!!
1. Power Player Unit (or similar)
2. NES 72 pin connector
3. 2 NES controller ports
4. An NES game that will serve as the case
5. An atmega168 (arduino chip)
6. Texas Instrument TLC5940 (you can get these as samples from their site... their free)
7. Some basic parts such as switches, leds, along with a 7805 voltage regulator
8. PCB making stuff (I used the toner transfer method)
9. Basic knowledge of soldering and electronics
10. And most definitely a dremel tool with some bits and cut off discs
11. A multimeter is probably a good idea as well, because you will need it for troubleshooting
1. Power Player Unit (or similar)
2. NES 72 pin connector
3. 2 NES controller ports
4. An NES game that will serve as the case
5. An atmega168 (arduino chip)
6. Texas Instrument TLC5940 (you can get these as samples from their site... their free)
7. Some basic parts such as switches, leds, along with a 7805 voltage regulator
8. PCB making stuff (I used the toner transfer method)
9. Basic knowledge of soldering and electronics
10. And most definitely a dremel tool with some bits and cut off discs
11. A multimeter is probably a good idea as well, because you will need it for troubleshooting
Step 2: Disassembly
After you've played around a little with your Power Player, and got a kick out of some of the things they've put on it..... sadly it is time to take it apart. Hopefully it won't be too long until you will being playing games on it once again though.
So once its all apart, start off by locating where the power inputs are. Something that I like to do is to take a picture of the board (or scan), and put it into photoshop and color in the traces according to their use. It's a helpful tip that I like doing, because sometimes when your cutting up a board, you will forget what things went where and things just get crazy.
Once you've found the power connections, I would test to see what voltage the unit runs one. Most commonly it's going to be 5 volts, but just check to make sure. In my case the wall adapter was ouputing 13 volts, but there was a 5 volt regulating circuit on the controller PCB.
The next thing you want to check on, is there or not the player buttons have a common connection. Most of the time they will use ground as the common, but I've seen others. In my case it was ground, which works out perfectly because the TLC5940 outputs only grounded signals to achieve PWM.
So once its all apart, start off by locating where the power inputs are. Something that I like to do is to take a picture of the board (or scan), and put it into photoshop and color in the traces according to their use. It's a helpful tip that I like doing, because sometimes when your cutting up a board, you will forget what things went where and things just get crazy.
Once you've found the power connections, I would test to see what voltage the unit runs one. Most commonly it's going to be 5 volts, but just check to make sure. In my case the wall adapter was ouputing 13 volts, but there was a 5 volt regulating circuit on the controller PCB.
The next thing you want to check on, is there or not the player buttons have a common connection. Most of the time they will use ground as the common, but I've seen others. In my case it was ground, which works out perfectly because the TLC5940 outputs only grounded signals to achieve PWM.
Step 3: Testing the Button Simulator
This step isn't necessary, but it would definetly be a good idea to do it. So first I would download the attached zip file. It contains the Arduino sketch, as well as all the TLC5940 driver files.
TLC5940:
Connect the TLC5940 as follows. I got this from the basic use sketch that comes with the library.
Arduino TLC5940
13 25
11 26
10 23
9 24
3 18
+5v 19 & 21
GND 22 & 27
GND -WW- 20 (2K resistor goes from pin 20 to ground)
NES Port:
For this part, I just cut the wires on my stock NES controller port and wired them up according to this diagram.
___
| 1 \
| 2 5 |
| 3 6 |
| 4 7 |
-------
1 = GND
2 = CLK
3 = Latch
4 = Data_Out
5 = +5VDC
6 = N/A
7 = N/A
Power Player:
Now solder some leads on to the button pads of your controller, make sure it's the NON common side of the pads.
Next, you can connect the leads up accordingly.
NES button TLC5940
Player One:
A OUTPUT 0
B OUTPUT 1
Select OUTPUT 2
Start OUTPUT 3
UP OUTPUT 4
DOWN OUTPUT 5
LEFT OUTPUT 6
RIGHT OUTPUT 7
Player Two:
A OUTPUT 8
B OUTPUT 9
Select OUTPUT 10
Start OUTPUT 11
UP OUTPUT 12
DOWN OUTPUT 13
LEFT OUTPUT 14
RIGHT OUTPUT 15
Finally, connect the system up to the TV, making sure that the arduino and the Power Player share the same power supply or their grounds are connected. Go ahead and test it out. If everything works good, then great! If not, then try to trouble shoot the problem.
Troubleshooting Tips:
1. Test each output with an LED, connecting the long leg to +voltage, and the short leg to the TLC5940 output pins. If they don't work, then check the wiring of the TLC5940
2. If all the LED's turn on when you press a button, then check the wiring on the controller port. This will occur when there are some wires switched around.
3. Also make sure that your Power Player, or Super Joy, or other thing works off of common ground system. Meaning that when the buttons are pressed on the system, they short out to ground.
TLC5940:
Connect the TLC5940 as follows. I got this from the basic use sketch that comes with the library.
Arduino TLC5940
13 25
11 26
10 23
9 24
3 18
+5v 19 & 21
GND 22 & 27
GND -WW- 20 (2K resistor goes from pin 20 to ground)
NES Port:
For this part, I just cut the wires on my stock NES controller port and wired them up according to this diagram.
___
| 1 \
| 2 5 |
| 3 6 |
| 4 7 |
-------
1 = GND
2 = CLK
3 = Latch
4 = Data_Out
5 = +5VDC
6 = N/A
7 = N/A
Power Player:
Now solder some leads on to the button pads of your controller, make sure it's the NON common side of the pads.
Next, you can connect the leads up accordingly.
NES button TLC5940
Player One:
A OUTPUT 0
B OUTPUT 1
Select OUTPUT 2
Start OUTPUT 3
UP OUTPUT 4
DOWN OUTPUT 5
LEFT OUTPUT 6
RIGHT OUTPUT 7
Player Two:
A OUTPUT 8
B OUTPUT 9
Select OUTPUT 10
Start OUTPUT 11
UP OUTPUT 12
DOWN OUTPUT 13
LEFT OUTPUT 14
RIGHT OUTPUT 15
Finally, connect the system up to the TV, making sure that the arduino and the Power Player share the same power supply or their grounds are connected. Go ahead and test it out. If everything works good, then great! If not, then try to trouble shoot the problem.
Troubleshooting Tips:
1. Test each output with an LED, connecting the long leg to +voltage, and the short leg to the TLC5940 output pins. If they don't work, then check the wiring of the TLC5940
2. If all the LED's turn on when you press a button, then check the wiring on the controller port. This will occur when there are some wires switched around.
3. Also make sure that your Power Player, or Super Joy, or other thing works off of common ground system. Meaning that when the buttons are pressed on the system, they short out to ground.
Attachments
Step 4: Making the Controller Board
For this step, I'm not going to go through all the steps on how to make a PCB, but there are plenty of tutorials out there. So download my design, which was made using diptrace. You can download a freeware version of diptrace from their site. It's a very good PCB design program. Once the board is made, solder all the parts on.
Download the freeware version: http://www.diptrace.com/download.php
Parts:
Atmega168
TLC5940
16MHz crystall
2k Ohm resistor
28 pin ic socket
Once it's all put together, it is time to cut up the Power Player boards. Start by locating the glob top where all the button inputs go into. Then take your dremel tool with a cut off disc, and cut it right out of the board. In my case, I think I made the board a bit small, so I ended up making the player 2 board a bit larger. The problem with making it so small is that when you attach wires, they tend to rip the traces right off the board. This happened to me about 3 or 4 times with player 1, it came to the point where i actually had to chizel a little bit of the black glob away, just to get more copper to solder onto.
Now that the glob top is seperated from the PCB, it is now time to scrape the solder mask off of the necassary copper traces. Use your diagram that you made, or however you chose to remember the pinouts to solder the correct wires to the PCB. Use the diagram ive uploaded to connect the wires. Repeat this same process for player 2.
Download the freeware version: http://www.diptrace.com/download.php
Parts:
Atmega168
TLC5940
16MHz crystall
2k Ohm resistor
28 pin ic socket
Once it's all put together, it is time to cut up the Power Player boards. Start by locating the glob top where all the button inputs go into. Then take your dremel tool with a cut off disc, and cut it right out of the board. In my case, I think I made the board a bit small, so I ended up making the player 2 board a bit larger. The problem with making it so small is that when you attach wires, they tend to rip the traces right off the board. This happened to me about 3 or 4 times with player 1, it came to the point where i actually had to chizel a little bit of the black glob away, just to get more copper to solder onto.
Now that the glob top is seperated from the PCB, it is now time to scrape the solder mask off of the necassary copper traces. Use your diagram that you made, or however you chose to remember the pinouts to solder the correct wires to the PCB. Use the diagram ive uploaded to connect the wires. Repeat this same process for player 2.
Attachments
Step 5: Making the Game Port Connector
1. Start off by taking a dremel with the cut off disc, and completely cut the connector in half.
2. Then using the same cut off disc, shave the mounting bracket off each side.
3. Then if you choose, you can use some sand paper to smooth it over.
4. Attach wires on each pin that is required by Ben's diagram, which i have attached. (i like using old IDE cables from computers, because they are relatively small guage, and they bend nicely)
5. Next, you have to desolder the crappy Famicom connector from the NOAC.
6. Reconnect all the wires that go to their respective spots on the NOAC.
7. Try it out! put a game in the system, and if it works great. If not make sure that CHR A10 and CHR A11 are flipped.
2. Then using the same cut off disc, shave the mounting bracket off each side.
3. Then if you choose, you can use some sand paper to smooth it over.
4. Attach wires on each pin that is required by Ben's diagram, which i have attached. (i like using old IDE cables from computers, because they are relatively small guage, and they bend nicely)
5. Next, you have to desolder the crappy Famicom connector from the NOAC.
6. Reconnect all the wires that go to their respective spots on the NOAC.
7. Try it out! put a game in the system, and if it works great. If not make sure that CHR A10 and CHR A11 are flipped.
Attachments
Step 6: Making the Case
This step is kinda of a free for all, meaning that you can go about doing it which ever way you want. The way I cut the parts was I would use a cut off disc/dental bur to cut off big pieces. Then i would use the needle files to smooth out the edges. This is relatively time consuming process, but it produces a nice piece of work.
Step 7: Putting It All Together
The first thing that i had to do was to find a good spot for the power switch, and the led. So i found a good spot that had space where there weren't any electronics. Once that was in, I hot glued the power jack, and soldered the voltage regulator onto it. I then connected the regulator output to the switch, and the led.
The hardest part was to fit the cartridge port in the case. In order to do this I had to hot glue and somewhat put the case together, then i put a game in the port and held it where i wanted it to be. This technique worked good, but had to be done quickly before the glue cooled. Once that was in, I was on the home stretch.
The next part was to put the CPU right between the connector and controller ports, and tack that down with some hot glue. Next i hot glued the controller ports in, along with the AV outputs. Now I had to find a good place to connect the power to, so i chose one of the controller ports. I soldered the power off the switch to the positive on the controller, and the negative does the same. The only thing left to do was to fit the controller board in, and screw the case closed.
The controller board fit right between the ports, and the power switch (intentionally). Making sure as to not crimp any wires, I screwed the case together. DONE!!!!! Finally, I could run over to the TV and test it out.... works like a charm!
The hardest part was to fit the cartridge port in the case. In order to do this I had to hot glue and somewhat put the case together, then i put a game in the port and held it where i wanted it to be. This technique worked good, but had to be done quickly before the glue cooled. Once that was in, I was on the home stretch.
The next part was to put the CPU right between the connector and controller ports, and tack that down with some hot glue. Next i hot glued the controller ports in, along with the AV outputs. Now I had to find a good place to connect the power to, so i chose one of the controller ports. I soldered the power off the switch to the positive on the controller, and the negative does the same. The only thing left to do was to fit the controller board in, and screw the case closed.
The controller board fit right between the ports, and the power switch (intentionally). Making sure as to not crimp any wires, I screwed the case together. DONE!!!!! Finally, I could run over to the TV and test it out.... works like a charm!
Step 8: Conclusion
This project was definitely rushed due to the dead line of the Epilog challenge contest. However, I did my best to take my time, and complete it in steps. That is the most important thing with building stuff like, to always take it steps, making sure to test it along the way. I plan on making more console mods, and portable units, however the only thing that limits me is that I can never get a nice case to put it in. If I won this Epilog Zing laser cutter, I would explode with new ideas, from making cases for portable NES systems, to making side lit LED signs. I'm already designing a new Atari 2600 mini arcade machine, and plan on making the arcade machine out of laser cut acrylic. I'm hoping for the best. Good luck to everyone, and may the best Instructable win!