Repository navigation
Releases: PicoPlus-devel/pico-peanutGB
Release list
v0.15.1
CHANGELOG
v0.15.1 adds a PicoNES PCB design with SNES controller ports. The emulator is unchanged from v0.15.
General Info
Binaries for each configuration and PCB design are at the end of this page.
See setup section in in Pico-infoNesPlus readme how to install and wire up
v0.15.1 Release notes
What's new
- PicoNES PCB with SNES controller ports. PCB design v2.8, designed by John Edgar Park (@johnedgarpark), has two SNES controller ports, so original SNES controllers plug in without an adapter cable. The Gerber file
pico_nesPCB_v2.8_SNES_PORTS.zipis attached below. See Custom PCBs in the readme. - All PCB designs, with parts lists and pictures, are now described in the PCB README.
The binaries are the same as in v0.15.
v0.15 Release notes
After updating, all settings return to their defaults once.
What's new
- Olimex RP2040-PICO-PC. The emulator now runs on the Olimex RP2040-PICO-PC with a Raspberry Pi Pico 2: HDMI, sound through HDMI and the audio jack, a USB controller on the USB-A port and a NES or SNES controller on the UEXT connector. See Olimex RP2040-PICO-PC in the pico-infonesPlus readme. Contributed by DnCraptor.
Fixes
- The Controller Test screen is now closed by holding SELECT + UP for 2 seconds. SELECT + START conflicted with some 8BitDo wireless controllers.
- The B button of the AliExpress SNES USB controller works without pressing Y first.
v0.14 Release notes
What's new
- USB drive mode. The SD card can be shown on a computer as a USB drive, so games can be added or removed without taking the card out. Choose USB drive mode in the settings menu, opened from the menu (not during a game). Eject the drive on the computer when finished. On boards where controllers share the USB port with the computer, use a controller on the NES port. On RP2040 boards the screen stays off while the card is mounted and the console restarts afterwards. See USB drive mode.
- Overscan fix in menu. A new setting for TVs that cut off the edges of the screen. It leaves the top and bottom rows of the menus blank, and optionally the first and last columns as well. The change is shown right away in the settings menu.
- More options on one page in the settings menu. The color palette is now only shown while one of the menu color options is selected, which leaves room for more options on screen.
- Quicker saving in the settings menu. Press SELECT on any setting to jump straight to the SAVE/CANCEL/DEFAULT row.
Fixes
- Controller test screen shows the controller outline and the list of controllers correctly again.
v0.13 Release notes
A maintenance release. It brings the shared menu and support code up to date; the emulator itself is unchanged. Upgrading is only a matter of flashing the new .uf2 — your settings, saves and save states on the SD card are untouched.
Fixes
- DVI-only monitors show a picture again. With Display Mode set to DVI, some older screens that accept DVI but not HDMI stayed black. They work again.
- Clone Pico boards no longer crash at start-up. Boards fitted with a cheaper flash chip than a genuine Raspberry Pi Pico could hang on power-on. The chip is now recognised and driven at a speed it can handle. Genuine Picos are unaffected.
- Steadier start-up. The board lets its power settle before switching to the higher clock speed.
v0.12 Release notes
Raspberry Pi Pico (RP2040) support
Releases for the original Pico are published again, after being dropped for
being too slow. They come with two limitations, both described in the README:
- Game Boy Color games are not supported. RP2040 builds are DMG only.
Colour support needs about 35 KB more RAM than the 256 KB part can spare, and
costs roughly two thirds more work per scanline. Cartridges marked Game Boy
Color only are refused when started, with a message in the menu. Cartridges
that are Game Boy Color enhanced but still run on an original Game Boy work
normally, in their Game Boy form. - Busy scenes can still show brief red bands. There is no framebuffer on
RP2040, so the emulator has to hand each scanline to the display in time.
Quiet scenes have room to spare; scenes with many sprites or a scrolling
window layer can miss the deadline. The picture recovers by itself.
Everything else — sound, save games, borders, palettes, the menu and the
settings screen — behaves as it does on the Pico 2. A Pico 2 is still the
better choice where you have one.
Recently played
The menu now keeps a list of the last 20 games you started, newest first.
Open it with Button3 in the rom browser — X on a SNES controller, Y on
XInput, Triangle on PlayStation, C on Genesis, X on a Wii Classic pad — or from
the new Recently played entry at the top of the settings menu.
In the list, Button2 starts the highlighted game, SELECT removes it from
the list, START shows its artwork, and Button1 closes the list. The
settings menu only offers the entry when it is opened from the rom browser, not
from inside a running game, which is also the route for pads without a Button3 —
notably a NES pad on the controller port.
The list is plain text in /recent_GB.txt in the SD card root, one line per
game, so it survives a reboot and can be edited or deleted on a PC. A game that
is no longer on the card is reported as missing when you try to start it and can
be dropped with SELECT. A damaged or unreadable list simply comes up empty —
unlike the settings file, nothing gets reset.
On boards without PSRAM, the game whose image is currently in flash is tagged
[READY]: that is the one that starts without waiting for the rom to be
written to flash first.
Audio
- Fixed audio drifting against the output clock. The emulator produced a
fixed 738 samples per frame while every output consumes exactly 44100 per
second. Over HDMI that was a slow overproduction, so the audio buffer filled
until packets were dropped; over I2S it was a slow underproduction, so the
buffer ran dry and the output stalled and restarted. Either way it built up to
a regular tick or dropout after a minute or two of play. The emulator now asks
for exactly as many samples as the output is ready to take. - Improved note timing. A whole frame of audio used to be generated in one
go once the frame had finished, so everything the game did to the sound chip
during those 16.7 ms landed at the same instant. Audio is now generated in
eight slices spread through the frame, which sharpens short notes, drums and
envelopes. (RP2040 keeps the single-block behaviour; slicing there would cost
video timing it cannot spare.) - Removed a resampling step that is no longer needed, along with the small loss
of quality that came with it.
Speed
Mostly relevant to Game Boy Color titles, which were closest to the limit:
- The processor emulation loop, the sound chip emulation and the sound registers
now run from RAM instead of flash. The main loop previously reached the
instruction step through a slow detour on every single instruction. - Screen colour lookup reduced to a single table read per pixel.
- Replaced the per-scanline sprite sort with a cheaper one.
Fixes
- Fixed the display driver locking up. Opening the settings menu in-game and
choosing Reset Game, Save/Restore State or the frame rate toggle could freeze
the picture on a red screen with the emulator stopped. Some display buffers
were being left behind when the menu handed the screen back. This also
explains occasional random freezes reported earlier. - Fixed the frame rate counter appearing several times down the screen on
boards without a framebuffer. - Fixed the scanline setting being ignored when a game starts. Games came up
without the scanline effect you had selected, and only picked it up once you
had opened the settings menu and left it again. Starting a game now applies
your chosen screen mode, scanline style and aspect ratio straight away. Most
visible on boards that boot directly into a game, which is every board without
PSRAM. - Removed the Save/Restore State entry from the in-game settings menu. This
emulator has no save state support, so the entry did nothing. - Resetting the settings to their defaults no longer leaves an unused internal
scanline switch at whatever value the settings file happened to hold.
v0.11 Release notes
This release adds support for pico-bootLoader, extends controller
support, introduces a controller test screen and an additional display
option, and contains a number of stability fixes.
Support for pico-bootLoader
An RP2350 board normally holds a single program. Running a different
emulator requires connecting the board to a computer, holding BOOTSEL
and copying a different .uf2 file onto it.
pico-bootLoader
removes that requirement. The loader is flashed onto the board once, the
applications are placed on the SD card, and from then on a menu is shown
at every power-on. The menu is operated with a USB game controller or a
USB keyboard and can be displayed either with cover artwork per
application or as plain text. Selecting an entry starts the
corresponding application; a reset or power cycle returns to the menu.
Besides this Game Boy / Game Boy Color emulator, the loader supports the
NES, Sega Genesis / Mega Drive, Sega Master System / G...
v0.15
CHANGELOG
Adds USB drive mode, which shows the SD card on a computer as a USB drive so games can be added without taking the card out, and an overscan fix for the menus.
General Info
Binaries for each configuration and PCB design are at the end of this page.
See setup section in in Pico-infoNesPlus readme how to install and wire up
v0.15 Release notes
After updating, all settings return to their defaults once.
What's new
- Olimex RP2040-PICO-PC. The emulator now runs on the Olimex RP2040-PICO-PC with a Raspberry Pi Pico 2: HDMI, sound through HDMI and the audio jack, a USB controller on the USB-A port and a NES or SNES controller on the UEXT connector. See Olimex RP2040-PICO-PC in the pico-infonesPlus readme. Contributed by DnCraptor.
Fixes
- The Controller Test screen is now closed by holding SELECT + UP for 2 seconds. SELECT + START conflicted with some 8BitDo wireless controllers.
- The B button of the AliExpress SNES USB controller works without pressing Y first.
v0.14 Release notes
What's new
- USB drive mode. The SD card can be shown on a computer as a USB drive, so games can be added or removed without taking the card out. Choose USB drive mode in the settings menu, opened from the menu (not during a game). Eject the drive on the computer when finished. On boards where controllers share the USB port with the computer, use a controller on the NES port. On RP2040 boards the screen stays off while the card is mounted and the console restarts afterwards. See USB drive mode.
- Overscan fix in menu. A new setting for TVs that cut off the edges of the screen. It leaves the top and bottom rows of the menus blank, and optionally the first and last columns as well. The change is shown right away in the settings menu.
- More options on one page in the settings menu. The color palette is now only shown while one of the menu color options is selected, which leaves room for more options on screen.
- Quicker saving in the settings menu. Press SELECT on any setting to jump straight to the SAVE/CANCEL/DEFAULT row.
Fixes
- Controller test screen shows the controller outline and the list of controllers correctly again.
v0.13 Release notes
A maintenance release. It brings the shared menu and support code up to date; the emulator itself is unchanged. Upgrading is only a matter of flashing the new .uf2 — your settings, saves and save states on the SD card are untouched.
Fixes
- DVI-only monitors show a picture again. With Display Mode set to DVI, some older screens that accept DVI but not HDMI stayed black. They work again.
- Clone Pico boards no longer crash at start-up. Boards fitted with a cheaper flash chip than a genuine Raspberry Pi Pico could hang on power-on. The chip is now recognised and driven at a speed it can handle. Genuine Picos are unaffected.
- Steadier start-up. The board lets its power settle before switching to the higher clock speed.
v0.12 Release notes
Raspberry Pi Pico (RP2040) support
Releases for the original Pico are published again, after being dropped for
being too slow. They come with two limitations, both described in the README:
- Game Boy Color games are not supported. RP2040 builds are DMG only.
Colour support needs about 35 KB more RAM than the 256 KB part can spare, and
costs roughly two thirds more work per scanline. Cartridges marked Game Boy
Color only are refused when started, with a message in the menu. Cartridges
that are Game Boy Color enhanced but still run on an original Game Boy work
normally, in their Game Boy form. - Busy scenes can still show brief red bands. There is no framebuffer on
RP2040, so the emulator has to hand each scanline to the display in time.
Quiet scenes have room to spare; scenes with many sprites or a scrolling
window layer can miss the deadline. The picture recovers by itself.
Everything else — sound, save games, borders, palettes, the menu and the
settings screen — behaves as it does on the Pico 2. A Pico 2 is still the
better choice where you have one.
Recently played
The menu now keeps a list of the last 20 games you started, newest first.
Open it with Button3 in the rom browser — X on a SNES controller, Y on
XInput, Triangle on PlayStation, C on Genesis, X on a Wii Classic pad — or from
the new Recently played entry at the top of the settings menu.
In the list, Button2 starts the highlighted game, SELECT removes it from
the list, START shows its artwork, and Button1 closes the list. The
settings menu only offers the entry when it is opened from the rom browser, not
from inside a running game, which is also the route for pads without a Button3 —
notably a NES pad on the controller port.
The list is plain text in /recent_GB.txt in the SD card root, one line per
game, so it survives a reboot and can be edited or deleted on a PC. A game that
is no longer on the card is reported as missing when you try to start it and can
be dropped with SELECT. A damaged or unreadable list simply comes up empty —
unlike the settings file, nothing gets reset.
On boards without PSRAM, the game whose image is currently in flash is tagged
[READY]: that is the one that starts without waiting for the rom to be
written to flash first.
Audio
- Fixed audio drifting against the output clock. The emulator produced a
fixed 738 samples per frame while every output consumes exactly 44100 per
second. Over HDMI that was a slow overproduction, so the audio buffer filled
until packets were dropped; over I2S it was a slow underproduction, so the
buffer ran dry and the output stalled and restarted. Either way it built up to
a regular tick or dropout after a minute or two of play. The emulator now asks
for exactly as many samples as the output is ready to take. - Improved note timing. A whole frame of audio used to be generated in one
go once the frame had finished, so everything the game did to the sound chip
during those 16.7 ms landed at the same instant. Audio is now generated in
eight slices spread through the frame, which sharpens short notes, drums and
envelopes. (RP2040 keeps the single-block behaviour; slicing there would cost
video timing it cannot spare.) - Removed a resampling step that is no longer needed, along with the small loss
of quality that came with it.
Speed
Mostly relevant to Game Boy Color titles, which were closest to the limit:
- The processor emulation loop, the sound chip emulation and the sound registers
now run from RAM instead of flash. The main loop previously reached the
instruction step through a slow detour on every single instruction. - Screen colour lookup reduced to a single table read per pixel.
- Replaced the per-scanline sprite sort with a cheaper one.
Fixes
- Fixed the display driver locking up. Opening the settings menu in-game and
choosing Reset Game, Save/Restore State or the frame rate toggle could freeze
the picture on a red screen with the emulator stopped. Some display buffers
were being left behind when the menu handed the screen back. This also
explains occasional random freezes reported earlier. - Fixed the frame rate counter appearing several times down the screen on
boards without a framebuffer. - Fixed the scanline setting being ignored when a game starts. Games came up
without the scanline effect you had selected, and only picked it up once you
had opened the settings menu and left it again. Starting a game now applies
your chosen screen mode, scanline style and aspect ratio straight away. Most
visible on boards that boot directly into a game, which is every board without
PSRAM. - Removed the Save/Restore State entry from the in-game settings menu. This
emulator has no save state support, so the entry did nothing. - Resetting the settings to their defaults no longer leaves an unused internal
scanline switch at whatever value the settings file happened to hold.
v0.11 Release notes
This release adds support for pico-bootLoader, extends controller
support, introduces a controller test screen and an additional display
option, and contains a number of stability fixes.
Support for pico-bootLoader
An RP2350 board normally holds a single program. Running a different
emulator requires connecting the board to a computer, holding BOOTSEL
and copying a different .uf2 file onto it.
pico-bootLoader
removes that requirement. The loader is flashed onto the board once, the
applications are placed on the SD card, and from then on a menu is shown
at every power-on. The menu is operated with a USB game controller or a
USB keyboard and can be displayed either with cover artwork per
application or as plain text. Selecting an entry starts the
corresponding application; a reset or power cycle returns to the menu.
Besides this Game Boy / Game Boy Color emulator, the loader supports the
NES, Sega Genesis / Mega Drive, Sega Master System / Game Gear,
PC Engine and Philips Videopac / Odyssey² emulators, as well as a native
port of Doom.
Please note:
- The binaries listed on this page are the standalone builds and are
unchanged. Use one of these to run the Game Boy emulator on its own. - The builds intended for the loader are published in the pico-bootLoader
repository, not here. See the pico-bootLoader releases
page for
those files and for the installation instructions. - When the emulator is started from the loader, the settings menu
c...
v0.14
CHANGELOG
Adds USB drive mode, which shows the SD card on a computer as a USB drive so games can be added without taking the card out, and an overscan fix for the menus.
General Info
Binaries for each configuration and PCB design are at the end of this page.
See setup section in in Pico-infoNesPlus readme how to install and wire up
v0.14 Release notes
What's new
- USB drive mode. The SD card can be shown on a computer as a USB drive, so games can be added or removed without taking the card out. Choose USB drive mode in the settings menu, opened from the menu (not during a game). Eject the drive on the computer when finished. On boards where controllers share the USB port with the computer, use a controller on the NES port. On RP2040 boards the screen stays off while the card is mounted and the console restarts afterwards. See USB drive mode.
- Overscan fix in menu. A new setting for TVs that cut off the edges of the screen. It leaves the top and bottom rows of the menus blank, and optionally the first and last columns as well. The change is shown right away in the settings menu.
- More options on one page in the settings menu. The color palette is now only shown while one of the menu color options is selected, which leaves room for more options on screen.
- Quicker saving in the settings menu. Press SELECT on any setting to jump straight to the SAVE/CANCEL/DEFAULT row.
Fixes
- Controller test screen shows the controller outline and the list of controllers correctly again.
v0.13 Release notes
A maintenance release. It brings the shared menu and support code up to date; the emulator itself is unchanged. Upgrading is only a matter of flashing the new .uf2 — your settings, saves and save states on the SD card are untouched.
Fixes
- DVI-only monitors show a picture again. With Display Mode set to DVI, some older screens that accept DVI but not HDMI stayed black. They work again.
- Clone Pico boards no longer crash at start-up. Boards fitted with a cheaper flash chip than a genuine Raspberry Pi Pico could hang on power-on. The chip is now recognised and driven at a speed it can handle. Genuine Picos are unaffected.
- Steadier start-up. The board lets its power settle before switching to the higher clock speed.
v0.12 Release notes
Raspberry Pi Pico (RP2040) support
Releases for the original Pico are published again, after being dropped for
being too slow. They come with two limitations, both described in the README:
- Game Boy Color games are not supported. RP2040 builds are DMG only.
Colour support needs about 35 KB more RAM than the 256 KB part can spare, and
costs roughly two thirds more work per scanline. Cartridges marked Game Boy
Color only are refused when started, with a message in the menu. Cartridges
that are Game Boy Color enhanced but still run on an original Game Boy work
normally, in their Game Boy form. - Busy scenes can still show brief red bands. There is no framebuffer on
RP2040, so the emulator has to hand each scanline to the display in time.
Quiet scenes have room to spare; scenes with many sprites or a scrolling
window layer can miss the deadline. The picture recovers by itself.
Everything else — sound, save games, borders, palettes, the menu and the
settings screen — behaves as it does on the Pico 2. A Pico 2 is still the
better choice where you have one.
Recently played
The menu now keeps a list of the last 20 games you started, newest first.
Open it with Button3 in the rom browser — X on a SNES controller, Y on
XInput, Triangle on PlayStation, C on Genesis, X on a Wii Classic pad — or from
the new Recently played entry at the top of the settings menu.
In the list, Button2 starts the highlighted game, SELECT removes it from
the list, START shows its artwork, and Button1 closes the list. The
settings menu only offers the entry when it is opened from the rom browser, not
from inside a running game, which is also the route for pads without a Button3 —
notably a NES pad on the controller port.
The list is plain text in /recent_GB.txt in the SD card root, one line per
game, so it survives a reboot and can be edited or deleted on a PC. A game that
is no longer on the card is reported as missing when you try to start it and can
be dropped with SELECT. A damaged or unreadable list simply comes up empty —
unlike the settings file, nothing gets reset.
On boards without PSRAM, the game whose image is currently in flash is tagged
[READY]: that is the one that starts without waiting for the rom to be
written to flash first.
Audio
- Fixed audio drifting against the output clock. The emulator produced a
fixed 738 samples per frame while every output consumes exactly 44100 per
second. Over HDMI that was a slow overproduction, so the audio buffer filled
until packets were dropped; over I2S it was a slow underproduction, so the
buffer ran dry and the output stalled and restarted. Either way it built up to
a regular tick or dropout after a minute or two of play. The emulator now asks
for exactly as many samples as the output is ready to take. - Improved note timing. A whole frame of audio used to be generated in one
go once the frame had finished, so everything the game did to the sound chip
during those 16.7 ms landed at the same instant. Audio is now generated in
eight slices spread through the frame, which sharpens short notes, drums and
envelopes. (RP2040 keeps the single-block behaviour; slicing there would cost
video timing it cannot spare.) - Removed a resampling step that is no longer needed, along with the small loss
of quality that came with it.
Speed
Mostly relevant to Game Boy Color titles, which were closest to the limit:
- The processor emulation loop, the sound chip emulation and the sound registers
now run from RAM instead of flash. The main loop previously reached the
instruction step through a slow detour on every single instruction. - Screen colour lookup reduced to a single table read per pixel.
- Replaced the per-scanline sprite sort with a cheaper one.
Fixes
- Fixed the display driver locking up. Opening the settings menu in-game and
choosing Reset Game, Save/Restore State or the frame rate toggle could freeze
the picture on a red screen with the emulator stopped. Some display buffers
were being left behind when the menu handed the screen back. This also
explains occasional random freezes reported earlier. - Fixed the frame rate counter appearing several times down the screen on
boards without a framebuffer. - Fixed the scanline setting being ignored when a game starts. Games came up
without the scanline effect you had selected, and only picked it up once you
had opened the settings menu and left it again. Starting a game now applies
your chosen screen mode, scanline style and aspect ratio straight away. Most
visible on boards that boot directly into a game, which is every board without
PSRAM. - Removed the Save/Restore State entry from the in-game settings menu. This
emulator has no save state support, so the entry did nothing. - Resetting the settings to their defaults no longer leaves an unused internal
scanline switch at whatever value the settings file happened to hold.
v0.11 Release notes
This release adds support for pico-bootLoader, extends controller
support, introduces a controller test screen and an additional display
option, and contains a number of stability fixes.
Support for pico-bootLoader
An RP2350 board normally holds a single program. Running a different
emulator requires connecting the board to a computer, holding BOOTSEL
and copying a different .uf2 file onto it.
pico-bootLoader
removes that requirement. The loader is flashed onto the board once, the
applications are placed on the SD card, and from then on a menu is shown
at every power-on. The menu is operated with a USB game controller or a
USB keyboard and can be displayed either with cover artwork per
application or as plain text. Selecting an entry starts the
corresponding application; a reset or power cycle returns to the menu.
Besides this Game Boy / Game Boy Color emulator, the loader supports the
NES, Sega Genesis / Mega Drive, Sega Master System / Game Gear,
PC Engine and Philips Videopac / Odyssey² emulators, as well as a native
port of Doom.
Please note:
- The binaries listed on this page are the standalone builds and are
unchanged. Use one of these to run the Game Boy emulator on its own. - The builds intended for the loader are published in the pico-bootLoader
repository, not here. See the pico-bootLoader releases
page for
those files and for the installation instructions. - When the emulator is started from the loader, the settings menu
contains an additional entry, Return to emulator selection, which
returns to the application menu. This entry is not present in
standalone builds.
What's new
Controller Test screen
The settings menu contains a new entry, Controller Test. It displays
a controller layout on screen and highlights each button while it is
pressed, following the most recently used input source: the controller
ports on the board, USB controllers 1 and 2, and a Wii Classic
controller. A list below the layout shows the connection status of each
source and whether input has been received from it.
Hold SELECT + START for two seconds to leave the screen.
Display options
- New Scanline Type option with the values Simple and LCD. Simple
darkens alternate lines; LCD darkens alternate columns as well,
resulting in a grid patter...
v0.13
CHANGELOG
Maintenance release: updates the shared menu and support code. Fixes a black screen on DVI-only monitors, and stops clone Pico boards crashing at start-up. The emulator itself is unchanged.
General Info
Binaries for each configuration and PCB design are at the end of this page.
See setup section in in Pico-infoNesPlus readme how to install and wire up
v0.13 Release notes
A maintenance release. It brings the shared menu and support code up to date; the emulator itself is unchanged. Upgrading is only a matter of flashing the new .uf2 — your settings, saves and save states on the SD card are untouched.
Fixes
- DVI-only monitors show a picture again. With Display Mode set to DVI, some older screens that accept DVI but not HDMI stayed black. They work again.
- Clone Pico boards no longer crash at start-up. Boards fitted with a cheaper flash chip than a genuine Raspberry Pi Pico could hang on power-on. The chip is now recognised and driven at a speed it can handle. Genuine Picos are unaffected.
- Steadier start-up. The board lets its power settle before switching to the higher clock speed.
v0.12 Release notes
Raspberry Pi Pico (RP2040) support
Releases for the original Pico are published again, after being dropped for
being too slow. They come with two limitations, both described in the README:
- Game Boy Color games are not supported. RP2040 builds are DMG only.
Colour support needs about 35 KB more RAM than the 256 KB part can spare, and
costs roughly two thirds more work per scanline. Cartridges marked Game Boy
Color only are refused when started, with a message in the menu. Cartridges
that are Game Boy Color enhanced but still run on an original Game Boy work
normally, in their Game Boy form. - Busy scenes can still show brief red bands. There is no framebuffer on
RP2040, so the emulator has to hand each scanline to the display in time.
Quiet scenes have room to spare; scenes with many sprites or a scrolling
window layer can miss the deadline. The picture recovers by itself.
Everything else — sound, save games, borders, palettes, the menu and the
settings screen — behaves as it does on the Pico 2. A Pico 2 is still the
better choice where you have one.
Recently played
The menu now keeps a list of the last 20 games you started, newest first.
Open it with Button3 in the rom browser — X on a SNES controller, Y on
XInput, Triangle on PlayStation, C on Genesis, X on a Wii Classic pad — or from
the new Recently played entry at the top of the settings menu.
In the list, Button2 starts the highlighted game, SELECT removes it from
the list, START shows its artwork, and Button1 closes the list. The
settings menu only offers the entry when it is opened from the rom browser, not
from inside a running game, which is also the route for pads without a Button3 —
notably a NES pad on the controller port.
The list is plain text in /recent_GB.txt in the SD card root, one line per
game, so it survives a reboot and can be edited or deleted on a PC. A game that
is no longer on the card is reported as missing when you try to start it and can
be dropped with SELECT. A damaged or unreadable list simply comes up empty —
unlike the settings file, nothing gets reset.
On boards without PSRAM, the game whose image is currently in flash is tagged
[READY]: that is the one that starts without waiting for the rom to be
written to flash first.
Audio
- Fixed audio drifting against the output clock. The emulator produced a
fixed 738 samples per frame while every output consumes exactly 44100 per
second. Over HDMI that was a slow overproduction, so the audio buffer filled
until packets were dropped; over I2S it was a slow underproduction, so the
buffer ran dry and the output stalled and restarted. Either way it built up to
a regular tick or dropout after a minute or two of play. The emulator now asks
for exactly as many samples as the output is ready to take. - Improved note timing. A whole frame of audio used to be generated in one
go once the frame had finished, so everything the game did to the sound chip
during those 16.7 ms landed at the same instant. Audio is now generated in
eight slices spread through the frame, which sharpens short notes, drums and
envelopes. (RP2040 keeps the single-block behaviour; slicing there would cost
video timing it cannot spare.) - Removed a resampling step that is no longer needed, along with the small loss
of quality that came with it.
Speed
Mostly relevant to Game Boy Color titles, which were closest to the limit:
- The processor emulation loop, the sound chip emulation and the sound registers
now run from RAM instead of flash. The main loop previously reached the
instruction step through a slow detour on every single instruction. - Screen colour lookup reduced to a single table read per pixel.
- Replaced the per-scanline sprite sort with a cheaper one.
Fixes
- Fixed the display driver locking up. Opening the settings menu in-game and
choosing Reset Game, Save/Restore State or the frame rate toggle could freeze
the picture on a red screen with the emulator stopped. Some display buffers
were being left behind when the menu handed the screen back. This also
explains occasional random freezes reported earlier. - Fixed the frame rate counter appearing several times down the screen on
boards without a framebuffer. - Fixed the scanline setting being ignored when a game starts. Games came up
without the scanline effect you had selected, and only picked it up once you
had opened the settings menu and left it again. Starting a game now applies
your chosen screen mode, scanline style and aspect ratio straight away. Most
visible on boards that boot directly into a game, which is every board without
PSRAM. - Removed the Save/Restore State entry from the in-game settings menu. This
emulator has no save state support, so the entry did nothing. - Resetting the settings to their defaults no longer leaves an unused internal
scanline switch at whatever value the settings file happened to hold.
v0.11 Release notes
This release adds support for pico-bootLoader, extends controller
support, introduces a controller test screen and an additional display
option, and contains a number of stability fixes.
Support for pico-bootLoader
An RP2350 board normally holds a single program. Running a different
emulator requires connecting the board to a computer, holding BOOTSEL
and copying a different .uf2 file onto it.
pico-bootLoader
removes that requirement. The loader is flashed onto the board once, the
applications are placed on the SD card, and from then on a menu is shown
at every power-on. The menu is operated with a USB game controller or a
USB keyboard and can be displayed either with cover artwork per
application or as plain text. Selecting an entry starts the
corresponding application; a reset or power cycle returns to the menu.
Besides this Game Boy / Game Boy Color emulator, the loader supports the
NES, Sega Genesis / Mega Drive, Sega Master System / Game Gear,
PC Engine and Philips Videopac / Odyssey² emulators, as well as a native
port of Doom.
Please note:
- The binaries listed on this page are the standalone builds and are
unchanged. Use one of these to run the Game Boy emulator on its own. - The builds intended for the loader are published in the pico-bootLoader
repository, not here. See the pico-bootLoader releases
page for
those files and for the installation instructions. - When the emulator is started from the loader, the settings menu
contains an additional entry, Return to emulator selection, which
returns to the application menu. This entry is not present in
standalone builds.
What's new
Controller Test screen
The settings menu contains a new entry, Controller Test. It displays
a controller layout on screen and highlights each button while it is
pressed, following the most recently used input source: the controller
ports on the board, USB controllers 1 and 2, and a Wii Classic
controller. A list below the layout shows the connection status of each
source and whether input has been received from it.
Hold SELECT + START for two seconds to leave the screen.
Display options
- New Scanline Type option with the values Simple and LCD. Simple
darkens alternate lines; LCD darkens alternate columns as well,
resulting in a grid pattern that resembles an LCD screen. - The separate Scanlines on/off option has been removed. Scanlines
are now selected through the Screen Mode option.
Settings menu
- The option list is now scrollable, so that all options remain
accessible as their number increases. The SAVE, CANCEL and DEFAULT
actions are shown at a fixed position. - The software version is displayed in the menu.
Menu and SD card
- The default directory for roms is now
/roms/GB. Roms may still be
placed anywhere on the card and organised in subdirectories. - When leaving a subdirectory, the selection returns to the directory
that was left instead of the first entry in the list. - If the last used directory no longer exists, the menu falls back to the
root of the card.
Controller support
- Shoulder buttons are now mapped on the DualShock 4, DualSense,
Xbox / XInput controllers, the MantaPad and the Retro-bit
Mega Drive Arcade Pad. The Square button is mapped on the
PlayStation Classic controller, and L/R and ZL/ZR are mapped on the
Wii Classic Controller. Additional keys were added to the USB
keyboard mapping. - On XInput controllers, the left thumbstick also functions as a d-pa...
v0.12
CHANGELOG
Brings back support for the original Raspberry Pi Pico (RP2040), with limitations, and reworks audio so it no longer drifts against the output clock. Adds a Recently played list of the last 20 games, opened with Button3 in the menu. Also a round of speed work and a handful of display fixes.
General Info
Binaries for each configuration and PCB design are at the end of this page.
See setup section in in Pico-infoNesPlus readme how to install and wire up
v0.12 Release notes
Raspberry Pi Pico (RP2040) support
Releases for the original Pico are published again, after being dropped for
being too slow. They come with two limitations, both described in the README:
- Game Boy Color games are not supported. RP2040 builds are DMG only.
Colour support needs about 35 KB more RAM than the 256 KB part can spare, and
costs roughly two thirds more work per scanline. Cartridges marked Game Boy
Color only are refused when started, with a message in the menu. Cartridges
that are Game Boy Color enhanced but still run on an original Game Boy work
normally, in their Game Boy form. - Busy scenes can still show brief red bands. There is no framebuffer on
RP2040, so the emulator has to hand each scanline to the display in time.
Quiet scenes have room to spare; scenes with many sprites or a scrolling
window layer can miss the deadline. The picture recovers by itself.
Everything else — sound, save games, borders, palettes, the menu and the
settings screen — behaves as it does on the Pico 2. A Pico 2 is still the
better choice where you have one.
Recently played
The menu now keeps a list of the last 20 games you started, newest first.
Open it with Button3 in the rom browser — X on a SNES controller, Y on
XInput, Triangle on PlayStation, C on Genesis, X on a Wii Classic pad — or from
the new Recently played entry at the top of the settings menu.
In the list, Button2 starts the highlighted game, SELECT removes it from
the list, START shows its artwork, and Button1 closes the list. The
settings menu only offers the entry when it is opened from the rom browser, not
from inside a running game, which is also the route for pads without a Button3 —
notably a NES pad on the controller port.
The list is plain text in /recent_GB.txt in the SD card root, one line per
game, so it survives a reboot and can be edited or deleted on a PC. A game that
is no longer on the card is reported as missing when you try to start it and can
be dropped with SELECT. A damaged or unreadable list simply comes up empty —
unlike the settings file, nothing gets reset.
On boards without PSRAM, the game whose image is currently in flash is tagged
[READY]: that is the one that starts without waiting for the rom to be
written to flash first.
Audio
- Fixed audio drifting against the output clock. The emulator produced a
fixed 738 samples per frame while every output consumes exactly 44100 per
second. Over HDMI that was a slow overproduction, so the audio buffer filled
until packets were dropped; over I2S it was a slow underproduction, so the
buffer ran dry and the output stalled and restarted. Either way it built up to
a regular tick or dropout after a minute or two of play. The emulator now asks
for exactly as many samples as the output is ready to take. - Improved note timing. A whole frame of audio used to be generated in one
go once the frame had finished, so everything the game did to the sound chip
during those 16.7 ms landed at the same instant. Audio is now generated in
eight slices spread through the frame, which sharpens short notes, drums and
envelopes. (RP2040 keeps the single-block behaviour; slicing there would cost
video timing it cannot spare.) - Removed a resampling step that is no longer needed, along with the small loss
of quality that came with it.
Speed
Mostly relevant to Game Boy Color titles, which were closest to the limit:
- The processor emulation loop, the sound chip emulation and the sound registers
now run from RAM instead of flash. The main loop previously reached the
instruction step through a slow detour on every single instruction. - Screen colour lookup reduced to a single table read per pixel.
- Replaced the per-scanline sprite sort with a cheaper one.
Fixes
- Fixed the display driver locking up. Opening the settings menu in-game and
choosing Reset Game, Save/Restore State or the frame rate toggle could freeze
the picture on a red screen with the emulator stopped. Some display buffers
were being left behind when the menu handed the screen back. This also
explains occasional random freezes reported earlier. - Fixed the frame rate counter appearing several times down the screen on
boards without a framebuffer. - Fixed the scanline setting being ignored when a game starts. Games came up
without the scanline effect you had selected, and only picked it up once you
had opened the settings menu and left it again. Starting a game now applies
your chosen screen mode, scanline style and aspect ratio straight away. Most
visible on boards that boot directly into a game, which is every board without
PSRAM. - Removed the Save/Restore State entry from the in-game settings menu. This
emulator has no save state support, so the entry did nothing. - Resetting the settings to their defaults no longer leaves an unused internal
scanline switch at whatever value the settings file happened to hold.
v0.11 Release notes
This release adds support for pico-bootLoader, extends controller
support, introduces a controller test screen and an additional display
option, and contains a number of stability fixes.
Support for pico-bootLoader
An RP2350 board normally holds a single program. Running a different
emulator requires connecting the board to a computer, holding BOOTSEL
and copying a different .uf2 file onto it.
pico-bootLoader
removes that requirement. The loader is flashed onto the board once, the
applications are placed on the SD card, and from then on a menu is shown
at every power-on. The menu is operated with a USB game controller or a
USB keyboard and can be displayed either with cover artwork per
application or as plain text. Selecting an entry starts the
corresponding application; a reset or power cycle returns to the menu.
Besides this Game Boy / Game Boy Color emulator, the loader supports the
NES, Sega Genesis / Mega Drive, Sega Master System / Game Gear,
PC Engine and Philips Videopac / Odyssey² emulators, as well as a native
port of Doom.
Please note:
- The binaries listed on this page are the standalone builds and are
unchanged. Use one of these to run the Game Boy emulator on its own. - The builds intended for the loader are published in the pico-bootLoader
repository, not here. See the pico-bootLoader releases
page for
those files and for the installation instructions. - When the emulator is started from the loader, the settings menu
contains an additional entry, Return to emulator selection, which
returns to the application menu. This entry is not present in
standalone builds.
What's new
Controller Test screen
The settings menu contains a new entry, Controller Test. It displays
a controller layout on screen and highlights each button while it is
pressed, following the most recently used input source: the controller
ports on the board, USB controllers 1 and 2, and a Wii Classic
controller. A list below the layout shows the connection status of each
source and whether input has been received from it.
Hold SELECT + START for two seconds to leave the screen.
Display options
- New Scanline Type option with the values Simple and LCD. Simple
darkens alternate lines; LCD darkens alternate columns as well,
resulting in a grid pattern that resembles an LCD screen. - The separate Scanlines on/off option has been removed. Scanlines
are now selected through the Screen Mode option.
Settings menu
- The option list is now scrollable, so that all options remain
accessible as their number increases. The SAVE, CANCEL and DEFAULT
actions are shown at a fixed position. - The software version is displayed in the menu.
Menu and SD card
- The default directory for roms is now
/roms/GB. Roms may still be
placed anywhere on the card and organised in subdirectories. - When leaving a subdirectory, the selection returns to the directory
that was left instead of the first entry in the list. - If the last used directory no longer exists, the menu falls back to the
root of the card.
Controller support
- Shoulder buttons are now mapped on the DualShock 4, DualSense,
Xbox / XInput controllers, the MantaPad and the Retro-bit
Mega Drive Arcade Pad. The Square button is mapped on the
PlayStation Classic controller, and L/R and ZL/ZR are mapped on the
Wii Classic Controller. Additional keys were added to the USB
keyboard mapping. - On XInput controllers, the left thumbstick also functions as a d-pad.
- SNES controllers connected to the controller port on the board are
now fully supported. NES controllers are detected automatically and are
unaffected.
Fixes
Display
- Corrected the alignment of the frame buffer, which could cause crashes
and corrupted scanlines. - The HDMI output pins are configured with a higher drive strength and a
faster slew rate, which improves signal quality on longer or
lower-quality cables.
Stability
- Fixed a crash when loading larger roms, caused by the rom data
overwriting the area of flash memory in which the board parameters are
stored. - Fixed a possible stack overflow when saving or loading...
v0.11
CHANGELOG
Adds support for pico-bootLoader, which allows several emulators to be installed on a single board and selected at power-on. Also adds a controller test screen, an LCD scanline type, wider controller support and a number of stability fixes.
General Info
Binaries for each configuration and PCB design are at the end of this page.
See setup section in in Pico-infoNesPlus readme how to install and wire up
v0.11 Release notes
This release adds support for pico-bootLoader, extends controller
support, introduces a controller test screen and an additional display
option, and contains a number of stability fixes.
Support for pico-bootLoader
An RP2350 board normally holds a single program. Running a different
emulator requires connecting the board to a computer, holding BOOTSEL
and copying a different .uf2 file onto it.
pico-bootLoader
removes that requirement. The loader is flashed onto the board once, the
applications are placed on the SD card, and from then on a menu is shown
at every power-on. The menu is operated with a USB game controller or a
USB keyboard and can be displayed either with cover artwork per
application or as plain text. Selecting an entry starts the
corresponding application; a reset or power cycle returns to the menu.
Besides this Game Boy / Game Boy Color emulator, the loader supports the
NES, Sega Genesis / Mega Drive, Sega Master System / Game Gear,
PC Engine and Philips Videopac / Odyssey² emulators, as well as a native
port of Doom.
Please note:
- The binaries listed on this page are the standalone builds and are
unchanged. Use one of these to run the Game Boy emulator on its own. - The builds intended for the loader are published in the pico-bootLoader
repository, not here. See the pico-bootLoader releases
page for
those files and for the installation instructions. - When the emulator is started from the loader, the settings menu
contains an additional entry, Return to emulator selection, which
returns to the application menu. This entry is not present in
standalone builds.
What's new
Controller Test screen
The settings menu contains a new entry, Controller Test. It displays
a controller layout on screen and highlights each button while it is
pressed, following the most recently used input source: the controller
ports on the board, USB controllers 1 and 2, and a Wii Classic
controller. A list below the layout shows the connection status of each
source and whether input has been received from it.
Hold SELECT + START for two seconds to leave the screen.
Display options
- New Scanline Type option with the values Simple and LCD. Simple
darkens alternate lines; LCD darkens alternate columns as well,
resulting in a grid pattern that resembles an LCD screen. - The separate Scanlines on/off option has been removed. Scanlines
are now selected through the Screen Mode option.
Settings menu
- The option list is now scrollable, so that all options remain
accessible as their number increases. The SAVE, CANCEL and DEFAULT
actions are shown at a fixed position. - The software version is displayed in the menu.
Menu and SD card
- The default directory for roms is now
/roms/GB. Roms may still be
placed anywhere on the card and organised in subdirectories. - When leaving a subdirectory, the selection returns to the directory
that was left instead of the first entry in the list. - If the last used directory no longer exists, the menu falls back to the
root of the card.
Controller support
- Shoulder buttons are now mapped on the DualShock 4, DualSense,
Xbox / XInput controllers, the MantaPad and the Retro-bit
Mega Drive Arcade Pad. The Square button is mapped on the
PlayStation Classic controller, and L/R and ZL/ZR are mapped on the
Wii Classic Controller. Additional keys were added to the USB
keyboard mapping. - On XInput controllers, the left thumbstick also functions as a d-pad.
- SNES controllers connected to the controller port on the board are
now fully supported. NES controllers are detected automatically and are
unaffected.
Fixes
Display
- Corrected the alignment of the frame buffer, which could cause crashes
and corrupted scanlines. - The HDMI output pins are configured with a higher drive strength and a
faster slew rate, which improves signal quality on longer or
lower-quality cables.
Stability
- Fixed a crash when loading larger roms, caused by the rom data
overwriting the area of flash memory in which the board parameters are
stored. - Fixed a possible stack overflow when saving or loading settings, which
could cause a crash on boards with limited memory. - The SD card driver has been updated with a number of reliability
improvements, including card detection after a reset. - Adafruit Fruit Jam and Adafruit Feather RP2350 only: fixed
initialisation of the audio DAC failing when a NES- or
SNES-Classic-Mini controller is connected at power-on. These
controllers interfere with the I2C bus that is shared with the DAC. A
controller connected at power-on is now also usable from the first menu
screen.
Please note
- Settings are reset to their default values the first time this version
is run. The settings file has changed to accommodate the new options,
so earlier settings files cannot be reused. Preferences have to be set
again in the settings menu and saved.
previous changes
See HISTORY.md
Downloads by configuration
Binaries for each configuration are listed below. Binaries for Pico(2) also work for Pico(2)-w. No blinking led however on the -w boards.
For some configurations risc-v binaries are available. It is recommended however to use the arm binaries.
Standalone boards
| Board | Binary | Readme | |
|---|---|---|---|
| Adafruit Metro RP2350 | PicoPeanutGB_AdafruitMetroRP2350_arm.uf2 | Readme | |
| Adafruit Fruit Jam | PicoPeanutGB_AdafruitFruitJam_arm_piousb.uf2 | Readme | |
| Waveshare RP2350-PiZero | PicoPeanutGB_WaveShareRP2350PiZero_arm_piousb.uf2 | Readme | 3-D Printed case |
Breadboard
| Board | Binary | Readme |
|---|---|---|
| Pico 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
| Pico 2 W | PicoPeanutGB_AdafruitDVISD_pico2_w_arm.uf2 | Readme |
| Pimoroni Pico Plus 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
PCB Pico2
| Board | Binary | Readme |
|---|---|---|
| Pico 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
| Pico 2 W | PicoPeanutGB_AdafruitDVISD_pico2_w_arm.uf2 | Readme |
3D-printed case designs for PCB:
https://www.thingiverse.com/thing:6689537.
For the latest two player PCB 2.0, you need:
- Top_v2.0_with_Bootsel_Button.stl. This allows for software upgrades without removing the cover. (*)
- Base_v2.0.stl
- Power_Switch.stl.
(*) in case you don't want to access the bootsel button on the Pico, you can choose Top_v2.0.stl
PCB WS RP2350-Zero (PCB required)
| Board | Binary | Readme |
|---|---|---|
| Waveshare RP2350-Zero | PicoPeanutGB_WaveShareRP2350ZeroWithPCB_arm.uf2 | [Readme](https://github.com/fhoedemakers/pico-infonesPlus/blob/main/README.md#pcb-with-waveshare-r... |
v0.10
CHANGELOG
HSTX replaces PicoDVI on more boards, HSTX now has picture and sound over HDMI, and you can enter flashing mode from the settings menu.
General Info
Binaries for each configuration and PCB design are at the end of this page.
See setup section in in Pico-infoNesPlus readme how to install and wire up
v0.10 Release notes
In this release PicoDVI is replaced with HSTX where possible, implements audio over HDMI using HSTX and adds a small convenience for flashing new firmware.
A huge thank you to @fliperama86 for the
excellent pico_hdmi driver that
made the new HDMI output possible, and for all the help along the way.
What's new
HSTX Video and sound over HDMI
On the technical side, several RP2350 board configurations have switched
from the PicoDVI software-driven video output to HSTX, the
RP2350's dedicated High-Speed Serial Transmit hardware (GPIO 12 – 19).
HSTX has been used for video on some boards before, but in this release
it also carries audio embedded in the HDMI stream for the first
time — that's the new capability HSTX gains here. (PicoDVI has always
been able to embed audio; HSTX is just catching up on that front while
offloading the work from the CPU to dedicated hardware.)
In practice, on these boards picture and sound now travel together over a
single HDMI cable — no separate audio jack needed:
- Adafruit Fruit Jam
- Murmulator M2
To enable audio over HDMI, make sure external audio is disabled in the
settings menu. If you'd rather keep using a separate audio output, you
can switch the HSTX boards to DVI mode (video only, no embedded
sound) from the settings menu. This setting automatically enables external audio in those configurations that support a DAC.
These RP2350 boards have also been switched from PicoDVI to HSTX. (audio and Video):
All other boards continue to use PicoDVI and work as before.
New options and conveniences
- Enter flashing mode from the settings menu, so you can update the
firmware without having to unplug the device and hold the BOOTSEL button.
Reliability
- Resync watchdog for HSTX output. On the new HSTX output when set
to video-only (DVI) mode, the monitor could occasionally lose the
picture. The emulator now detects this and automatically restores the
signal without needing a restart. (Not observed in full HDMI mode, but
the same safety net is enabled there too just in case.)
previous changes
See HISTORY.md
Downloads by configuration
Binaries for each configuration are listed below. Binaries for Pico(2) also work for Pico(2)-w. No blinking led however on the -w boards.
For some configurations risc-v binaries are available. It is recommended however to use the arm binaries.
Standalone boards
| Board | Binary | Readme | |
|---|---|---|---|
| Adafruit Metro RP2350 | PicoPeanutGB_AdafruitMetroRP2350_arm.uf2 | Readme | |
| Adafruit Fruit Jam | PicoPeanutGB_AdafruitFruitJam_arm_piousb.uf2 | Readme | |
| Waveshare RP2350-PiZero | PicoPeanutGB_WaveShareRP2350PiZero_arm_piousb.uf2 | Readme | 3-D Printed case |
Breadboard
| Board | Binary | Readme |
|---|---|---|
| Pico 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
| Pico 2 W | PicoPeanutGB_AdafruitDVISD_pico2_w_arm.uf2 | Readme |
| Pimoroni Pico Plus 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
PCB Pico2
| Board | Binary | Readme |
|---|---|---|
| Pico 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
| Pico 2 W | PicoPeanutGB_AdafruitDVISD_pico2_w_arm.uf2 | Readme |
3D-printed case designs for PCB:
https://www.thingiverse.com/thing:6689537.
For the latest two player PCB 2.0, you need:
- Top_v2.0_with_Bootsel_Button.stl. This allows for software upgrades without removing the cover. (*)
- Base_v2.0.stl
- Power_Switch.stl.
(*) in case you don't want to access the bootsel button on the Pico, you can choose Top_v2.0.stl
PCB WS RP2350-Zero (PCB required)
| Board | Binary | Readme |
|---|---|---|
| Waveshare RP2350-Zero | PicoPeanutGB_WaveShareRP2350ZeroWithPCB_arm.uf2 | Readme |
PCB: Gerber_PicoNES_Mini_PCB_v2.0.zip
3D-printed case designs for PCB WS2XX0-Zero:
https://www.thingiverse.com/thing:7041536
PCB Waveshare RP2350-USBA with PCB
PCB: Gerber_PicoNES_Micro_v1.2.zip
Pimoroni Pico DV
| Board | Binary | Readme |
|---|---|---|
| Pico 2/Pico 2 w | PicoPeanutGB_PimoroniDVI_pico2_arm.uf2 | Readme |
| Pimoroni Pico Plus 2 | PicoPeanutGB_PimoroniDVI_pico2_arm.uf2 | Readme |
Note
On Pico W and Pico2 W, the CYW43 driver (used only for blinking the onboard LED) causes a DMA conflict with I2S audio on the Pimoroni Pico DV Demo Base, leading to emulator lock-ups. For now, no Pico W or Pico2 W binaries are provided; please use the Pico or Pico2 binaries instead.
Murmulator M1
For more info about the Murmulator see this website: https://murmulator.ru/ and #150
| Board | Binary |
|---|---|
| Pico 2/Pico 2 w | PicoPeanutGB_MurmulatorM1_pico2_arm.uf2 |
Murmulator M2
For more info about the Murmulator see this website: https://murmulator.ru/ and #150
| Board | Binary |
|---|---|
| Pico/Pico w | PicoPeanutGB_MurmulatorM2_arm.uf2 |
Other downloads
- Metadata: GBMetadata.zip
Extract the zip file to the...
v0.9
CHANGELOG
General Info
Binaries for each configuration and PCB design are at the end of this page.
See setup section in in Pico-infoNesPlus readme how to install and wire up
v0.9 Release Notes
- Added support for Murmulator M1 and M2 boards. @javavi #150
- M1: RP2040/RP2350
- M2: RP2350 only
Note: These Murmulator M1 and M2 builds are untested. Please report any issues.
- Fruit Jam only: Add volume controls to settings menu. Can also be changed in-game via (START + LEFT/RIGHT). Note that too high volume levels may cause distortion. (Ext speaker, advised 16 db max, internal advised 18 dB max). Latest metadata package includes a sample.wav file to test the volume level.
- Updated GBMetaData.zip: Added sample.wav. This sample will be played when using the Fruit Jam volume control in the settings menu. Note when /soundrecorder.wav is found, this file will be played in stead.
- Updated the menu to also list .wav audio files.
- Added basic wav audio playback from within the menu. Press BUTTON2 or START to play the wav file. Tested with https://lonepeakmusic.itch.io/retro-midi-music-pack-1 The wav file must have the following specs:
- 16/24 bit PCM wav files only. (24 bit files are downsampled to 16 bit)
- 2ch stereo only.
- Sample rate supported: 44100.
- RP2350 with PSRAM only: Record about 30 seconds of audio by pressing START to pause the game and then START + BUTTON1. Audio is recorded to /soundrecorder.wav on the SD-card.
Fixes
- Fruit Jam audio fixes.
- Settings changed by in-game button combos are saved when exiting to menu.
previous changes
See HISTORY.md
Downloads by configuration
Binaries for each configuration are listed below. Binaries for Pico(2) also work for Pico(2)-w. No blinking led however on the -w boards.
For some configurations risc-v binaries are available. It is recommended however to use the arm binaries.
Standalone boards
| Board | Binary | Readme | |
|---|---|---|---|
| Adafruit Metro RP2350 | PicoPeanutGB_AdafruitMetroRP2350_arm.uf2 | Readme | |
| Adafruit Fruit Jam | PicoPeanutGB_AdafruitFruitJam_arm_piousb.uf2 | Readme | |
| Waveshare RP2350-PiZero | PicoPeanutGB_WaveShareRP2350PiZero_arm_piousb.uf2 | Readme | 3-D Printed case |
Breadboard
| Board | Binary | Readme |
|---|---|---|
| Pico 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
| Pico 2 W | PicoPeanutGB_AdafruitDVISD_pico2_w_arm.uf2 | Readme |
| Pimoroni Pico Plus 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
PCB Pico2
| Board | Binary | Readme |
|---|---|---|
| Pico 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
| Pico 2 W | PicoPeanutGB_AdafruitDVISD_pico2_w_arm.uf2 | Readme |
3D-printed case designs for PCB:
https://www.thingiverse.com/thing:6689537.
For the latest two player PCB 2.0, you need:
- Top_v2.0_with_Bootsel_Button.stl. This allows for software upgrades without removing the cover. (*)
- Base_v2.0.stl
- Power_Switch.stl.
(*) in case you don't want to access the bootsel button on the Pico, you can choose Top_v2.0.stl
PCB WS RP2350-Zero (PCB required)
| Board | Binary | Readme |
|---|---|---|
| Waveshare RP2350-Zero | PicoPeanutGB_WaveShareRP2350ZeroWithPCB_arm.uf2 | Readme |
PCB: Gerber_PicoNES_Mini_PCB_v2.0.zip
3D-printed case designs for PCB WS2XX0-Zero:
https://www.thingiverse.com/thing:7041536
PCB Waveshare RP2350-USBA with PCB
PCB: Gerber_PicoNES_Micro_v1.2.zip
Pimoroni Pico DV
| Board | Binary | Readme |
|---|---|---|
| Pico 2/Pico 2 w | PicoPeanutGB_PimoroniDVI_pico2_arm.uf2 | Readme |
| Pimoroni Pico Plus 2 | PicoPeanutGB_PimoroniDVI_pico2_arm.uf2 | Readme |
Note
On Pico W and Pico2 W, the CYW43 driver (used only for blinking the onboard LED) causes a DMA conflict with I2S audio on the Pimoroni Pico DV Demo Base, leading to emulator lock-ups. For now, no Pico W or Pico2 W binaries are provided; please use the Pico or Pico2 binaries instead.
Murmulator M1
For more info about the Murmulator see this website: https://murmulator.ru/ and #150
| Board | Binary |
|---|---|
| Pico 2/Pico 2 w | PicoPeanutGB_MurmulatorM1_pico2_arm.uf2 |
Murmulator M2
For more info about the Murmulator see this website: https://murmulator.ru/ and #150
| Board | Binary |
|---|---|
| Pico/Pico w | PicoPeanutGB_MurmulatorM2_arm.uf2 |
Other downloads
- Metadata: GBMetadata.zip
Extract the zip file to the root folder of the SD card. Select a game in the menu and press START to show more information and box art. Works for most official released games. Screensaver shows floating random cover art.
v0.8
CHANGELOG
General Info
Binaries for each configuration and PCB design are at the end of this page.
See setup section in in Pico-infoNesPlus readme how to install and wire up
v0.8 Release Notes
- Settings are saved to /settings_gb.dat instead of /settings.dat. This allows to have separate settings files for different emulators (e.g. pico-infonesPlus and pico-peanutGB etc.).
- Added a settings menu.
- Main menu: press SELECT to open; adjust options without using in-game button combos.
- In-game: press SELECT+START to open; from here you can also quit from the game.
- Switched to Fatfs R0.16.
Fixes
- Show correct buttonlabels in menus.
- removed wrappers for f_chdir en f_cwd, fixed in Fatfs R0.16. (there was a long standing issue with f_chdir and f_cwd not working with exFAT formatted SD cards.)
previous changes
See HISTORY.md
Downloads by configuration
Binaries for each configuration are listed below. Binaries for Pico(2) also work for Pico(2)-w. No blinking led however on the -w boards.
For some configurations risc-v binaries are available. It is recommended however to use the arm binaries.
Standalone boards
| Board | Binary | Readme | |
|---|---|---|---|
| Adafruit Metro RP2350 | PicoPeanutGB_AdafruitMetroRP2350_arm.uf2 | Readme | |
| Adafruit Fruit Jam | PicoPeanutGB_AdafruitFruitJam_arm_piousb.uf2 | Readme | |
| Waveshare RP2350-PiZero | PicoPeanutGB_WaveShareRP2350PiZero_arm_piousb.uf2 | Readme | 3-D Printed case |
Breadboard
| Board | Binary | Readme |
|---|---|---|
| Pico 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
| Pico 2 W | PicoPeanutGB_AdafruitDVISD_pico2_w_arm.uf2 | Readme |
| Pimoroni Pico Plus 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
PCB Pico2
| Board | Binary | Readme |
|---|---|---|
| Pico 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
| Pico 2 W | PicoPeanutGB_AdafruitDVISD_pico2_w_arm.uf2 | Readme |
3D-printed case designs for PCB:
https://www.thingiverse.com/thing:6689537.
For the latest two player PCB 2.0, you need:
- Top_v2.0_with_Bootsel_Button.stl. This allows for software upgrades without removing the cover. (*)
- Base_v2.0.stl
- Power_Switch.stl.
(*) in case you don't want to access the bootsel button on the Pico, you can choose Top_v2.0.stl
PCB WS RP2350-Zero (PCB required)
| Board | Binary | Readme |
|---|---|---|
| Waveshare RP2350-Zero | PicoPeanutGB_WaveShareRP2350ZeroWithPCB_arm.uf2 | Readme |
PCB: Gerber_PicoNES_Mini_PCB_v2.0.zip
3D-printed case designs for PCB WS2XX0-Zero:
https://www.thingiverse.com/thing:7041536
PCB Waveshare RP2350-USBA with PCB
PCB: Gerber_PicoNES_Micro_v1.2.zip
Pimoroni Pico DV
| Board | Binary | Readme |
|---|---|---|
| Pico 2/Pico 2 w | PicoPeanutGB_PimoroniDVI_pico2_arm.uf2 | Readme |
| Pimoroni Pico Plus 2 | PicoPeanutGB_PimoroniDVI_pico2_arm.uf2 | Readme |
Note
On Pico W and Pico2 W, the CYW43 driver (used only for blinking the onboard LED) causes a DMA conflict with I2S audio on the Pimoroni Pico DV Demo Base, leading to emulator lock-ups. For now, no Pico W or Pico2 W binaries are provided; please use the Pico or Pico2 binaries instead.
Other downloads
- Metadata: GBMetadata.zip
Extract the zip file to the root folder of the SD card. Select a game in the menu and press START to show more information and box art. Works for most official released games. Screensaver shows floating random cover art.
v0.7
CHANGELOG
General Info
Binaries for each configuration and PCB design are at the end of this page.
See setup section in in Pico-infoNesPlus readme how to install and wire up
v0.7 Release Notes
-
Game Boy Color games can be played now.
-
In-game hotkeys are now consistent with the other emulators.
-
Themed borders/bezels are shown in-game. For this you need the latest metadata pack from the releases section. Download and unzip it's contents to the root of the SD card.
-
Support for Retro-bit 8 button Genesis-USB.
-
Added support for Adafruit Fruit Jam:
- Uses HSTX for video output.
- Audio is not supported over HSTX — connect speakers via the audio jack or the 4–8 Ω speaker connector.
- Audio is simultaneousy played through speaker and jack. Speaker audio can be muted with Button 1.
- Controller options:
- USB gamepad on USB 1.
- Wii Classic controller via Adafruit Wii Nunchuck Adapter on the STEMMA QT port.
- Scanlines can be toggled with SELECT + UP.
- NeoPixel leds act as a VU meter. Can be toggled on or of via Button2 on the Fruit Jam, or SELECT + RIGHT on the controller.
-
Added support for Waveshare RP2350-PiZero:
- Gamepad must be connected via the PIO USB port.
- The built-in USB port is now dedicated to power and firmware flashing, removing the need for a USB-Y cable.
- Optional: when you solder the optional PSRAM chip on the board, the emulator will make use of it. Roms will be loaded much faster using PSRAM.
-
Added support for Waveshare RP2350-USBA with PCB. More info and build guide at: https://www.instructables.com/PicoNES-RaspberryPi-Pico-Based-NES-Emulator/
-
Added support for Spotpear HDMI board.
-
Framebuffer implemented in SRAM. This eliminates the red flicker during slow operations, such as SD card I/O.
-
Cover art and metadata support:
- Download pack here.
- Extract the zip contents to the root of the SD card.
- In the menu:
- Highlight a game and press START → show cover art and metadata.
- Press SELECT → show full game description.
- Press B → return to menu.
- Press START or A → start the game.
-
Screensaver
- Block screensaver, which is shown when no metadata is available, is replaced by static floating image.
Huge thanks to Gavin Knight for providing the metadata and images as well as testing the different builds!
v0.6 Release notes (this is a re-release)
- Releases now built with SDK 2.1.1
- Support added for Adafruit Metro RP2350 board. See README for more info. No RISCV support yet.
- Switched to SD card driver pico_fatfs from https://github.com/elehobica/pico_fatfs. This is required for the Adafruit Metro RP2350. Thanks to elehobica for helping making it work for the Pimoroni Pico DV Demo board.
- Besides FAT32, SD cards can now also be formatted as exFAT.
- Nes controller PIO code updated by @ManCloud. This fixes the NES controller issues on the Waveshare RP2040 - PiZero board. #8
- Board configs are moved to pico_shared.
Fixes
- Fixed Pico 2 W: Led blinking causes screen flicker and ioctl timeouts #2. Solved with in SDK 2.1.1
- WII classic controller: i2c bus instance (i2c0 / i2c1) not hardcoded anymore but configurable via CMakeLists.txt.
Downloads by configuration
Binaries for each configuration are listed below. Binaries for Pico(2) also work for Pico(2)-w. No blinking led however on the -w boards.
For some configurations risc-v binaries are available. It is recommended however to use the arm binaries.
Standalone boards
| Board | Binary | Readme | |
|---|---|---|---|
| Adafruit Metro RP2350 | PicoPeanutGB_AdafruitMetroRP2350_arm.uf2 | Readme | |
| Adafruit Fruit Jam | PicoPeanutGB_AdafruitFruitJam_arm_piousb.uf2 | Readme | |
| Waveshare RP2350-PiZero | PicoPeanutGB_WaveShareRP2350PiZero_arm_piousb.uf2 | Readme | 3-D Printed case |
Breadboard
| Board | Binary | Readme |
|---|---|---|
| Pico 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
| Pico 2 W | PicoPeanutGB_AdafruitDVISD_pico2_w_arm.uf2 | Readme |
| Pimoroni Pico Plus 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
PCB Pico2
| Board | Binary | Readme |
|---|---|---|
| Pico 2 | PicoPeanutGB_AdafruitDVISD_pico2_arm.uf2 | Readme |
| Pico 2 W | PicoPeanutGB_AdafruitDVISD_pico2_w_arm.uf2 | Readme |
3D-printed case designs for PCB:
https://www.thingiverse.com/thing:6689537.
For the latest two player PCB 2.0, you need:
- Top_v2.0_with_Bootsel_Button.stl. This allows for software upgrades without removing the cover. (*)
- Base_v2.0.stl
- Power_Switch.stl.
(*) in case you don't want to access the bootsel button on the Pico, you can choose Top_v2.0.stl
PCB WS RP2350-Zero (PCB required)
| Board | Binary | Readme |
|---|---|---|
| Waveshare RP2350-Zero | PicoPeanutGB_WaveShareRP2350ZeroWithPCB_arm.uf2 | Readme |
PCB: Gerber_PicoNES_Mini_PCB_v2.0.zip
3D-printed case designs for PCB WS2XX0-Zero:
https://www.thingiverse.com/thing:7041536
PCB Waveshare RP2350-USBA with PCB
PCB: Gerber_PicoNES_Micro_v1.2.zip
Pimoroni Pico DV
| Board | Binary | Readme |
|---|---|---|
| Pico 2/Pico 2 w | PicoPeanutGB_PimoroniDVI_pico2_arm.uf2 | Readme |
| Pimoroni Pico Plus 2 | PicoPeanutGB_PimoroniDVI_pico2_arm.uf2 | Readme |
Note
On Pico W and Pico2 W, the CYW43 driver (used only for blinking the onboard LED) causes a DMA conflict with I2S audio on the Pimoroni Pico DV Demo Base, leading to emulator lock-ups. For now, no Pico W or Pico2 W binaries are provided; please use the Pico or Pico2 binaries instead.