RACE (Neo Geo Pocket) - RetroBIOS¶
| Type | libretro |
| Source | https://github.com/libretro/RACE |
| Version | v2.16 |
| Profiled | 2026-03-18 |
| Cores | race |
| Systems | snk-ngp, snk-ngpc |
No BIOS or firmware files required. This core is self-contained.
RACE is a Neo Geo Pocket and Neo Geo Pocket Color emulator, originally developed for PSP (forked from Akop Karapetyan's port), adapted for libretro.
No external BIOS files are required. The core contains dead code in race-memory.c that would load "NPBIOS.BIN" (64KB, loaded into cpurom via filestream_open), but it is compiled out with #if 0 and loadBIOS() unconditionally returns 0. The comment explains: "Using a real bios file causes nothing but issues" and references Card Fighters' Clash Test Mode as a known failure.
Instead, the core uses a software HLE approach: - A built-in koyote_bin memory dump (RAM state from a real console post-boot) is copied into mainram at startup - A fake SWI jump table is constructed at cpurom[0xE000] using the TLCS-900H 0x1A (reg) dummy opcode to trap BIOS calls - doBios() in tlcs900h.c handles 33 BIOS functions in software: shutdown, clock speed, RTC, screen mode, font rendering, flash read/write, communication, and sound control - Interrupt vectors are set up at cpurom[0xFF00] and interrupt handler code at cpurom[0xF800] - CPU RAM defaults (interrupt priorities, timers) are loaded from the ngpcpuram[256] table
The Z80 sound CPU is emulated in software (cz80 or DrZ80 backend). Flash memory for game saves is handled internally by flash.c.
The only core option affecting system behavior is ngp_language (english/japanese), which sets a RAM flag at 0x6F87.
ROM extensions: .ngp, .ngc, .ngpc, .npc
Generated on 2026-03-20T19:12:20Z