Skip to main content

Software

The console runs a fork of Retro-Go, the multi-system emulator for ESP32 devices: a launcher with one tab per system, a ROM browser on the SD card, save states, and one framework for display, sound and buttons. The fork adds the ESP32 Emu Turbo target, a display driver for the 8-bit parallel ILI9488, and the apps that upstream does not have.

The pages of this section​

PageWhat it has
Firmwarethe build on the board, the flash layout, building, writing, updating from the SD card, the card's folders
Emulators — tests and speedevery system, the game it was checked with, its speed on the board, the buttons, the system files
Optimizationswhat made SNES, GBA, Mega Drive, arcade and Atari 7800 faster, measured, and what did not pay
Simulator & QEMUtesting without the board
Boot Splashthe "GAME BRO!" boot animation

What the other Retro-Go forks add, and what was taken from them, is in Retro-Go forks survey.

What runs​

Nearly every system runs at its full speed; the ones that do not yet are the 68000 arcade boards (CPS1 52–60 in a fight, Neo Geo 52–58, System 16 54–58), the GBA's 3D games (NFS Underground 52, Crash Nitro Kart 56, DOOM 40 in play; the other GBA games 59–60) and the Atari 7800 (58–59), as of 2026-10-14. The table is on Emulators.

AppSystems
retro-coreNES, SNES (SuperFX, DSP-1), Game Boy, Game Boy Color, Master System, Game Gear, SG-1000, ColecoVision, PC Engine, Atari Lynx
gwenesisMega Drive
gbspGame Boy Advance (with an Xtensa dynarec)
retro-extraAtari 2600, Neo Geo Pocket, Arcade 3D Racing
retro-homeAtari 5200, Atari 7800, Commodore 64
fmsxMSX 1 / 2
mame-goArcade (MAME 0.37b5), Neo Geo, Capcom CPS1, Sega System 16
prboom-go, wolf3d-go, opentyrian-goDOOM, Wolfenstein 3D, OpenTyrian
sdappOutRun (Cannonball), run from the SD card

Display​

The ILI9488 (3.95", 480×320 landscape) is driven over an 8-bit 8080 parallel bus at 20 MHz (GPIO4–11 data, async DMA), 20 MB/s, about four times what SPI gives. A full frame takes about 15 ms, so roughly 60 frames a second is the most any app can show. Retro-Go's scaler fits every system in 480×320 with less than 1.5× scaling. The backlight is wired to +5 V on the board.

ESP32-S3 to ILI9488 8080 wiring: GPIO4-11 data bus, CS GPIO12, DC GPIO14, WR GPIO46, RD tied to +3V3, RST GPIO13, backlight from +5V via R27

Memory​

Memory map: internal SRAM 520 KB, Octal PSRAM 8 MB and flash 16 MB, with what lives in each

Sound and buttons​

Sound is PDM on one pin (GPIO17) into the PAM8403 amplifier; every app plays at 32 kHz (other rates misbehaved on the PDM output). The 12 buttons are read directly on GPIOs; MENU shares GPIO0 with SELECT.

Where things came from​

ProjectUsed for
ducalex/retro-gothe base of the fork
atanisoft/esp_lcd_ili9488display driver (the namespace is atanisoft/, not espressif/)
pcgamer404/retro-go-proWolfenstein 3D, Quake
DynaMight1124/retro-goOpenTyrian
libretro mame2000the arcade app
libretro gpSPGame Boy Advance
libretro ProSystemAtari 7800
MCUMEAtari 5200 (Atari800), Commodore 64 (Teensy64)
fMSXMSX