Files
libretro/emulators/race.yml
Abdessamad Derraz d929424988 feat: add profiled_date to all YAMLs, create 56 alias profiles
- Added profiled_date field to all 204 existing profiles for update tracking
- Created 56 alias profiles for cores that share BIOS with a parent
  (e.g., mednafen_psx -> beetle_psx, fbalpha2012 -> fbneo)

260 total profiles covering all 294 libretro cores (204 unique + 56 alias).
2026-03-18 05:20:05 +01:00

54 lines
2.1 KiB
YAML

emulator: RACE (Neo Geo Pocket)
type: libretro
source: "https://github.com/libretro/RACE"
profiled_date: "2026-03-18"
systems: [snk-ngp, snk-ngpc]
notes: |
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
files: []
analysis:
npbios:
filename: NPBIOS.BIN
size: 65536 # 64 KB (0x10000)
loaded_by: "race-memory.c:loadBIOS()"
status: disabled
source_ref: "race-memory.c:337-361"
notes: |
loadBIOS() is wrapped in #if 0 and always returns 0.
Even if re-enabled, the realBIOSloaded=1 path has known
compatibility issues (e.g. Puzzle Bobble fails to boot).
The HLE path is the only functional code path.