Emulators — tests and speed
What runs on the board, which game it was checked with, and how fast it goes.
Every figure was measured on the v4.9.0 first article, from the BUSY:x% FPS:t (S:s R:r)
line rg_system prints once a second on the USB console (t = emulated frames
a second, s = skipped, r = drawn) or from an emulator's own profile line.
How to read it. Full speed means the game runs at its machine's own rate (60, 50 for PAL, or the engine's rate for the PC ports). Not every emulated frame is drawn: most cores draw one in two at full speed, which is still smooth on this screen. Busy is how much of the main core the emulator takes.
At a glance (2026-10-14)
Game speed only (emulated frames a second against the machine's own rate); the drawn frames and the details are in the tables below.
At full speed (60 fps, 50 for PAL machines, or the engine's own rate): NES, Game Boy, Game Boy Color, Master System, Game Gear, SG-1000, ColecoVision, PC Engine, SNES (SNESticle, every cartridge chip), Mega Drive, Atari 2600, Atari 5200, MSX 1/2, Neo Geo Pocket, Commodore 64, Virtual Boy (50 Hz), the 8-bit arcade boards (Pac-Man, 1942...), Blood Bros., DOOM, Wolfenstein 3D, OpenTyrian, OutRun (Cannonball), Arcade 3D Racing.
Not yet at full speed, in the order the work goes (user's priority):
| System | Where it stands | Gap to full speed |
|---|---|---|
| Game Boy Advance | Sonic Advance 59.6; Mario Kart, F-Zero, V-Rally 3, GT Advance 3 59-60; in 2 min of play: NFS Underground 52, Crash Nitro Kart 56, DOOM 39-40 (2026-10-14) | the 3D games: NFS 52, Crash 56, DOOM 40 of 60 |
| Capcom CPS1 | in 2 min of fighting: Final Fight median 60, Street Fighter II median 52-53, Knights of the Round median 52 (2026-10-14) | SF2 and Knights in a fight |
| Neo Geo | Metal Slug 58, Metal Slug 2 and KOF '95 52-55 | 2-8 fps |
| Sega System 16 | Golden Axe 54, Alien Syndrome 58, Wonder Boy III 57 | 2-6 fps |
| Other 68000 arcade boards | Aero Fighters 47-57 | up to 13 fps |
| Atari 7800 | 58-59 | 1-2 fps |
| Atari Lynx | 56-60 | up to 4 fps |
| SNES SuperFX | Star Fox 48-49, 7-8 drawn; Doom (SuperFX 2) 39, 7 drawn | 11-21 fps; Snes9x draws Star Fox at 12 |
Consoles and handhelds
| System | App (core) | Checked with | Speed on the board | Date |
|---|---|---|---|---|
| NES | retro-core (nofrendo) | Super Mario Bros., Owlia | ✅ 60 fps, busy 36–39 %, 55–60 drawn | 2026-10-03 |
| Game Boy | retro-core (gnuboy) | Tetris | ✅ 60 fps, busy 34 % | 2026-09-27 |
| Game Boy Color | retro-core (gnuboy) | Space Invaders, ucity | ✅ 60 fps, busy 35–53 % | 2026-09-27 |
| Master System | retro-core (smsplus) | Sonic, Silver Valley | ✅ 60 fps, busy 35 % | 2026-09-27 |
| Game Gear | retro-core (smsplus) | Shinobi II and 5 more | ✅ 60 fps, busy 31–41 % | 2026-10-03 |
| SG-1000 | retro-core (smsplus) | GP World | ✅ 60 fps, busy 33 % | 2026-09-27 |
| ColecoVision | retro-core (smsplus) | Pac-Man | ✅ 60 fps, busy 31 % | 2026-09-27 |
| PC Engine | retro-core (pce-go) | Street Fighter II' CE, OutRun | ✅ 60 fps, busy 33–43 % | 2026-10-03 |
| SNES | snesticle-go (SNESticle) | SMW, Zelda, Super Metroid, SMAS, DKC, Mega Man X | ✅ 60 fps, 42–60 drawn | 2026-10-18 |
| SNES chips | snesticle-go (SNESticle) | Mario Kart (DSP-1), Mega Man X2/X3 (Cx4), SF Alpha 2 (S-DD1), Tengai Makyou Zero and Daikaijuu II (SPC7110), Metal Combat (OBC1), Kirby Super Star and Super Mario RPG (SA-1), F1 ROC II (ST010), Top Gear 3000 (DSP-4) | ✅ 60 fps; drawn: MK 49, MMX2 59, MMX3 31, SFA2 60, Tengai 53, Daikaijuu 59, Metal Combat 60, Kirby 29, SMRPG 17, F1 ROC II 35, Top Gear 14 | 2026-10-18 |
| SNES SuperFX | snesticle-go (SNESticle) | Star Fox, Doom (SuperFX 2) | 🟡 Star Fox 48–49 fps, 8 drawn; Doom 39, 7 drawn | 2026-10-18 |
| Atari Lynx | retro-core (handy) | 5 PD demos | ✅ 56–60 fps | 2026-10-03 |
| Mega Drive | gwenesis | Sonic, Miniplanets | ✅ 60 fps, 30 drawn, busy 85 % | 2026-10-03 |
| Game Boy Advance | gbsp (gpSP + Xtensa dynarec) | Sonic Advance, Metal Slug Advance, TMNT, Mario Kart, NFS Underground | 🟡 Sonic 59.6, Mario Kart / F-Zero / V-Rally 3 / GT Advance 3 59-60; NFS Underground 52, Crash Nitro Kart 56, DOOM 39-40 in play (per-block code invalidation, assembly loads and stores, the hottest translated code in internal RAM) | 2026-10-14 |
| Atari 2600 | retro-extra (Stella) | Halo 2600, Donkey Kong, Asteroids | ✅ 60 fps (50 PAL), busy 30–68 % | 2026-10-03 |
| Neo Geo Pocket | retro-extra (RACE) | Metal Slug 1st Mission and 7 more | ✅ 60 fps, all 60 drawn on quiet screens, 45–61 in Metal Slug's fights (was ~29) | 2026-10-09 |
| Atari 5200 | retro-home (Atari800 via MCUME) | Galaxian, Pole Position, Space Invaders | ✅ 60 fps, busy 33 % | 2026-10-08 |
| Atari 7800 | retro-home (ProSystem) | Donkey Kong | 🟡 58–59 of 60 fps (was 42) | 2026-10-09 |
| Commodore 64 | retro-home (Teensy64 + reSID) | Ghostbusters (.d64) | ✅ 50 fps PAL (busy 70 %), 60 fps NTSC (busy 73–79 %) | 2026-10-10 |
| MSX 1 / MSX 2 | fmsx (fMSX) | Nemesis, Metal Gear 2 | ✅ 60 fps, busy 21–26 % | 2026-10-07 |
| Virtual Boy | retro-extra (Beetle VB + V810 recompiler) | Wario Land, Galactic Pinball, V-Tetris | ✅ full speed (50.3 Hz); 55–57 fps with Speed max | 2026-10-13 |
SNES: SNESticle
The SNES runs on SNESticle, a MIT-licensed core (snesticle-go, an app on
the card) that replaced Snes9x as the default. It is much faster than the
previous emulator and runs every cartridge chip: SuperFX/SuperFX 2, SA-1, DSP-1
to DSP-4, Cx4, S-DD1, SPC7110, OBC1, S-RTC, ST010/ST011. Snes9x showed a black
screen on Kirby Super Star, Super Mario RPG and Doom, and garbled F1 ROC II and
Street Fighter Alpha 2; SNESticle runs them all.
Where the speed comes from: interpreters dispatched through jump tables and kept in internal RAM; line compositing and colour blending on the second core; exact skipping of the games' wait loops (CPU, SA-1 and NEC DSP); a predecoded NEC DSP; a cached S-DD1 decoder; a frameskip that measures each frame's work. Every change is gated by bit-identical output on 164 test ROMs and the chip games on a PC build of the same core.
| Game | Chip | Snes9x (fps / drawn) | SNESticle (fps / drawn) |
|---|---|---|---|
| Super Mario World, Zelda, SMAS, Super Metroid | — | 60 / 30 | 60 / 59–60 |
| Donkey Kong Country, Mega Man X | — | 60 / 30 | 60 / 42 · 60 / 55 |
| Super Mario Kart | DSP-1 | 60 / 10 | 60 / 49 |
| Mega Man X2, X3 | Cx4 | 50 / 25 · 60 / 20 | 60 / 59 · 60 / 31 |
| Street Fighter Alpha 2 | S-DD1 | stripes | 60 / 60 |
| Tengai Makyou Zero, Daikaijuu II | SPC7110 | stuck on the check screen · 60 / 30 | 60 / 53 · 60 / 59 |
| Metal Combat | OBC1 | 50 / 25 | 60 / 60 |
| Kirby Super Star, Super Mario RPG | SA-1 | black screen | 60 / 29 · 60 / 17 |
| F1 ROC II | ST010 | 59 / 29, garbled | 60 / 35 |
| Top Gear 3000 | DSP-4 | 50 / 25 | 60 / 14 |
| Doom | SuperFX 2 | black screen | 39 / 7 |
| Star Fox | SuperFX | 60 / 12 | 49 / 8 |
Drawn counts frames sent whole or in part (a partial update sends only the changed lines of a complete frame).
Arcade
| Board | App | Checked with | Speed on the board | Date |
|---|---|---|---|---|
| 8-bit boards (Z80, 6502...) | mame-go (MAME 0.37b5) | Pac-Man, 1942, Robby Roto | ✅ 60 fps | 2026-09-27 |
| 68000 boards | mame-go | Blood Bros., Aero Fighters | ✅ Blood Bros. 60; 🟡 Aero Fighters 47–57 | 2026-09-28 |
| Neo Geo | mame-go | Metal Slug, Metal Slug 2, KOF95 | 🟡 Metal Slug 58 game fps; Metal Slug 2 and KOF95 52–55 | 2026-10-06 |
| Capcom CPS1 | mame-go | Final Fight, Street Fighter II CE, Knights of the Round | 🟡 Final Fight median 60, SF2 median 52-53, Knights median 52 in 2 min of fighting (layers in 16-line bands, 16-bit games too since 2026-10-14; the flash tile cache grew to 4.25 MB so that SF2 converts its frames on the second core again, 47 → 53; tiles hidden under opaque tiles of later layers are skipped when that pays, Knights 49 → 52) | 2026-10-14 |
| Sega System 16 | mame-go | Golden Axe, Alien Syndrome, Wonder Boy III | 🟡 54, 58, 57 | 2026-10-06 |
PC games and native ports
| Game | App | Speed on the board | Date |
|---|---|---|---|
| DOOM (Freedoom) | prboom-go | ✅ 35 fps, the engine's rate | 2026-09-27 |
| Wolfenstein 3D (shareware) | wolf3d-go | ✅ 62 fps, busy 34 % | 2026-09-27 |
| OpenTyrian | opentyrian-go | ✅ 36 fps (engine rate 35), busy 30 % | 2026-09-27 |
| OutRun (Cannonball) | sdapp, from the SD card | ✅ 30 fps, the engine's rate | 2026-10-04 |
| Music (MP3 player) | media-go, sdapp | ✅ 32 kHz output, no dropouts at 128 kbps: Music and Books | 2026-10-16 |
| Books (EPUB/TXT reader) | ebook-go, sdapp | ✅ read upright, cover and pictures: Music and Books | 2026-10-16 |
| Arcade 3D Racing | retro-extra | ✅ 47–64 fps | 2026-10-04 |
| Duke Nukem 3D, Quake | — | out of the flash since 2026-10-05 (were 48–53 and 34–41 fps) | |
| Super Mario 64, Mario Kart 64 | — | out of the flash since 2026-10-07: Nintendo 64 through native ports |
The check every release gets
Before a build is recorded as a release, one game per launcher tab is started from the console and checked on the webcam; then SELECT, START, A, START and RIGHT are pressed and the game must react. The last such check (22 tabs plus the four home systems) is in Firmware → Current build.
The tools: scripts/emu_check.py starts each core's test game and averages
the stats line; scripts/snes_bench.py resumes the seven SNES scenes from save
states; scripts/mamebench/ runs the arcade benchmarks (MAMEBENCH,
MAMEPROF); a webcam (scripts/board_cam.py) checks the picture.
Buttons
The handheld has a D-pad, A, B, X, Y, START, SELECT, L, R, MENU and OPTION. MENU opens retro-go's game menu (save, load, quit), OPTION its options. The consoles use their own pad on the same buttons; the systems with more keys:
| System | Mapping |
|---|---|
| Arcade | B / A / Y / X / L / R = buttons 1–6, SELECT coin, START start |
| Atari 7800 | A (and X) button 1, B button 2, START console Reset, SELECT Select, Y Pause, L / R flip the difficulty switches |
| Atari 5200 | A fire, B side button, START, SELECT alone Pause; keypad X 1, Y 2, L *, R #; SELECT held + X, Y, A, B 3–6, + UP, RIGHT, DOWN, LEFT 7, 8, 9, 0, + L Reset |
| Commodore 64 | D-pad + A or B joystick in port 2 (L swaps to port 1), START SPACE, SELECT RUN/STOP, X F1, Y F3, R RETURN; options menu: Type key for any other key |
| MSX | A / B fire, X SPACE, Y RETURN, L F1, R ESC, SELECT on-screen keyboard, START fMSX's menu |
System files on the card
No ROM is kept in any repository; the emulator that misses a required file says which one and where.
| System | File | |
|---|---|---|
| Atari 5200 | /retro-go/bios/5200.rom | required |
| Atari 7800 | /retro-go/bios/7800 BIOS (U).rom or (E).rom | optional |
| Commodore 64 | /retro-go/bios/c64/kernal.rom, basic.rom, chargen.rom | required |
| MSX | /retro-go/bios/msx/MSX.ROM | required |
| MSX 2 | MSX2.ROM + MSX2EXT.ROM of the same version | MSX2 games (C-BIOS's MSX2.ROM with a real MSX2EXT.ROM gives a black screen; without them fMSX starts as an MSX1) |
| NES FDS, GB, GBC | /retro-go/bios/fds_bios.bin, gb_bios.bin, gbc_bios.bin | optional |
| Neo Geo | neogeo.zip in the Neo Geo games folder | required |
| SNES DSP-4 (Top Gear 3000) | /retro-go/bios/dsp4.rom (8192 bytes: program then data, little-endian) | required by that game |
| SNES ST010 (F1 ROC II) | /retro-go/bios/st010.rom (53248 bytes) | required by that game |
| SNES DSP-2/DSP-3/ST011 | dsp2.rom, dsp3.rom, st011.rom in /retro-go/bios/ | required by those games |
| SNES Cx4 (Mega Man X2/X3) | /retro-go/bios/cx4.data.rom (3072 bytes) | optional: only the 3D parts need it |
Limits worth knowing
- Commodore 64, PAL or NTSC: the machine is a PAL C64 (50 Hz) unless the file name carries (USA), (NTSC), [NTSC], (U), (Japan) or (Canada), which start an NTSC C64 (6567R8 VIC-II, 263 lines, 60 Hz); Options → Emulator options → Video forces either. A PAL game on NTSC runs about 20 % fast, as on the real machines. Save states record the standard and load only on the same one; states from before 2026-10-10 do not load.
- Commodore 64: no 1541 drive. A game is loaded from its
.prg, or the first program of a.d64, and started by itself; games that load more parts from the disk stop after the first, and saving to disk does not work. - Atari 5200: cartridges of 8, 16 and 32 KB (nearly all); not the bank-switched ones of 64 KB and more.
- SNES: games start in SNESticle (the SNES tab's New game); Snes9x is
kept only as a fallback when the SNESticle app is missing from the card.
SNESticle saves its own states (
saves/snest), so Snes9x states do not carry over. Star Fox is the one game where Snes9x still draws more frames (12 against 8). ST010, DSP-2/3/4 and ST011 games need the chip's firmware on the card (below). - Amiga: not available. The only microcontroller Amiga emulator (MCUME's UAE) needs a 600 MHz Teensy 4.1; this chip runs at 240 MHz.
- Open defects by emulator: Remediation — Emulators.