A Nintendo NES emulator for the Pimoroni PicoSystem RP2040 gaming handheld.
Emulater is bundled with the freeware homebrew game Blade Buster.
See below for instructions how to flash the emulator on the PicoSystem and how to load games.
Store and play multiple Nintendo NES games on the Pimoroni PicoSystem RP2040 gaming handheld. A menu system is included for choosing your games to play.
There are two options for sound playback:
See below for more info on sound
(Note: Screenshots below do not represent the actual picture quality. The distortion is caused by the camera)
Click on image below to see a demo video. For more videos, including sound, see below.
- UK: https://shop.pimoroni.com/products/picosystem?variant=32369546985555
- EU: https://www.kiwi-electronics.com/en/picosystem-10913?search=picosystem
- US: https://www.adafruit.com/product/5289
Sound through the internal piezo speaker is working but limited due to the limitations of this speaker.
The sound quality will be much better (but not perfect and still somewhat limited) by modding the PicoSystem with a 8 Ohm 1W magnetic speaker. Those can be found here for US and here for Europe
This requires opening up the PicoSystem and some soldering. It is a simple mod, but I don't take responsibility when the PicoSystem gets damaged.
The speaker must be soldered with the red wire to RX and the black wire to ground (pad with the - sign) as shown below:
You can toggle between speakers in-game by the Y + Down button combo.
Since there is no SD card slot available, a companion app for Microsoft Windows is created that lets the user choose games and flash them to the Pico. More information here.
The Windows application is also included in the latest release of this repository.
The application also allows you to flash the emulator when not installed or a newer version is available. No more need for manually flashing.
If you don't want or can't to use the Windows Application
- Download PicoSystem_InfoNes.uf2 from the releases page.
- Connect PicoSystem using an USB-C cable to your computer. Make sure the PicoSystem is switched off.
- Push and hold the X button then the power-on button. Release the buttons and the drive RPI-RP2 appears on your computer.
- Drag and drop the UF2 file on to the RPI-RP2 drive. The PicoSystem will reboot and will now run the emulator.
Game must have the .nes extension
Load single game rom by setting the device in BOOTSEL mode. (Connect to computer then Hold X and power on device) The ROM should be placed at address 0x10110000, and can be transferred using picotool.
picotool load rom.nes -t bin -o 0x10110000
Attention: the upload address has been changed from 0x10080000 to 0x10110000. This is because of the additional size of the built-in game baked into the executable.
All games must have the .nes extension and must be in the same directory
This can be done by creating a tar archive and upload this archive to the PicoSystem. The maxium size of the archive is be about 15MB
# current directory must contain the .nes roms
tar cvf games.tar *.nes
picotool load games.tar -t bin -o 0x10110000
- Y: is mapped to NES Select
- X: is mapped to NES Start
- Y + X: Opens in-game menu. Browse options with UP/DOWN:
- A Back to games list menu (quit), B Resume game (close).
- Toggle rapid fire A button. Press A to toggle.
- Toggle rapid fire B button. Press A to toggle.
- Change brightness. Press LEFT or RIGHT to change.
- Y + LEFT: Previous game
- Y + RIGHT: Next Game
- Y + UP: Start built-in freeware game Blade Buster
- Y + Down: Toggle between speakers. (Built-In - Added via Mod - Both - Mute)
- X + A: Toggle framerate.
- Y + A: Volume up
- Y + B: Volume down
Speaker selection, volume level and brightness setting will be saved, but only when you reset to the games list menu (X + Y, then A) or toggle between games (Y + Left, Y + Right, Y + Up). Powering-off the device will not save these settings.
- Up/DOWN: Scroll through game list
- A : Start selected game
- B : Exit menu
The battery status is shown when activating the in-game menu. When battery level drops to 10 percent or below, the indicator is permanently shown.
The original Nintendo Entertainment System has a resolution of 256x240 pixels. The PicoSystem has a resolution of 240x240 pixels. Therefore, on the PicoSystem the first and last 8 Pixels of each horizontal line are not visible.
InfoNes is programmed by Jay Kumogata and ported for DVI output to the Raspberry PI Pico by Shuichi Takano. I used the port of Shuichi Takano as a starting point for this project.
Sound programmming by newschooldev and Layer812
- Code has to be cleaned up. Uses parts of the PicoSystem library.