Do you also want to make an old Nintendo console for less than 20 dollars?
You could play thousands of old NES games and get the same nostalgia I had when I’ve
played them once again.
All we need are a few components, make some simple connections for some buttons and other
modules, download and then upload NES games to an SD card, upload the Arduino code and
play the games, and obviously, have some fun.
I’ve been testing this project for a long time because I wasn’t able to make the code
work, but I finally did it by trial and error.
By the way, this project was made by a user called Nathalis on GitHub, but for some reason,
his profile is not active anymore.
Anyway, a huge thank you to Nathalis for his great work, and please consider checking his
YouTube channel.
Anyway, that being said, let’s see what we need, how to adjust the code, how to get
NES games for free and make a crude homemade Nintendo console.
So guys, let’s get started.
What’s up my friends, welcome back.
I’ve made this project on a breadboard because it was a total headache to make so I had to
make a lot of trial and error.
But don’t worry, I’m working on a PCB as well so it would look a lot better and
be easier to assemble.
Anyway let’s start and see what we need.
The main part running the code is an ESP32 microcontroller but to make it easier to program
and so on, we will use a development board with a USB connector like this one.
This costs only 3 to 4 dollars on AliExpress.
Next we need a TFT display and this costs around 3 dollars.
I will use this one based on the ST 77 89 IC.
And here is where the problems started.
All these screens are based on the same IC and they kind of look the same.
As you can see on the back they use the same IC but sometimes it is a second version.
But from all these, the only one that works is this one here, and it took me a while to
realize and I was already getting frustrated.
Some displays have the chip select pin, some others don’t, some have 240 resolution,
others have 280 and so on.
So have in mind, this is the one that worked for me so make sure you order the same.
Links are below.
Next we need an SD card reader like this one and this costs around 2 dollars.
It could be both the micro SD card or the normal SD card.
The pins are the same.
Together with this we also need an empty SD card to put the games on it.
Then, for sounds we need this decoder based on the PCM 51 02 IC and I bought this with
5 dollars.
To this we can add some headphones.
Or even better we can solder a small amplifier with a speaker like this one so you should
also order one like this as well.
Finally, we need 7 push buttons, seven 10K resistors, a 100nF capacitor, wires and a
breadboard to make the connections on.
And if you want you could also solder everything on a prototyping PCB like this one and make
it more permanent.
Remember that you could get the design for such prototyping PCB from my website and order
it at PCBWAY.
Ok so now we have everything we need so let’s assemble it.
The original schematic was something like these two circuits.
But this didn't work for me and it was very difficult to follow where each connection
goes.
Finally, the connections that I’ve used are these ones.
For some reason, If I use any other pin for the push buttons for example, the code wont
work.
I don’t know why, but after weeks of trial and error and getting frustrated, it finally
worked.
Also, if I remove the 100nF capacitor between ground and the CS pin, the screen would get
crazy and even stop working.
Another error I’ve noticed is that sometimes, the start button does the same as the left
button, I don’t know why neither.
Anyway, connect everything on the breadboard or on the PCB like in this schematic.
The MISO and MOSI pins for the display must be the ones I’ve used, otherwise it won’t
communicate with the SPI port.
Now let’s take a look at the code.
If you scroll down, you will see that first you need to install these 2 libraries.
You can download them from below on electronoobs.com in order to make sure that you will use the
same I’ve used.
Then, in Arduino IDE go to sketch, include library, add .ZIP library and select one by
one the downloaded libraries in a ZIP format.
Now the libraries are installed.
Then, if you don’t have them, you need to install the ESP32 boards.
In the Arduino IDE go to preferences.
In the additional URLs you have to copy and paste this link.
You can copy the link from the tutorial website.
Now go to tools, boards and select boards manager.
Here search for ESP32.
Select these boards and click install, and as you can see, I already have them installed.
And now if you go again to tools, boards, you will see that you now have a bunch of
ESP32 based boards.
Select the ESP32 Dev Module board and make sure you have this configuration as you can
see here.
Click compile.
If it compiles, we upload it to the ESP32 board.
Click upload and press the boot button, and keep it pressed till you see the connecting
message on the Arduino IDE.
Then release the button and the code will be uploaded.
If you power on the console at this point you will get the SD card fail message.
That’s because we have no games inserted.
So go to this website and search for any game that you want.
Download the NES file.
Then insert the SD card into your PC and make sure it is empty.
Create a new folder and call it NES like this.
Copy all the NES files that you want inside this folder.
Now get the SD card and insert it into the card reader and restart the ESP32.
Now it works.
Use the button to select a game and press start.
And now, play and enjoy.
In my case I select one of my favorites from my childhood called Battle City.
Now let’s try the old school MARIO game.
You could also play Tetris, Contra or any other game from this website.
So guys, that's how you could make your own NES console and play any game that you want.
Obviously this would go better with a custom made PCB, some better push buttons and also
a 3D printed case, but that will probably be for a future update.
By the way, this project also has an AV video output so you could connect it to an old TV
as we had back in the day with the yellow connector.
And again, a huge thank you to Nathalis for sharing such a project with the community.
His work is amazing and brings me a lot of happy memories.
Thanks again and see
you later guys.