feat: add 10 emulator profiles (119-series batch 2)
freeintv_ts_overlay (same BIOS as FreeIntv), bnes (NES, no BIOS),
clownmdemu (Mega Drive, open-source MCD boot ROM embedded),
m2000 (Philips P2000T, all embedded), mesen (NES, FDS + StudyBox BIOS),
race (NGP, HLE with disabled BIOS loader), vemulator (VMU, HLE only),
gw (Game & Watch, Lua simulator), pd777 (Cassette Vision, no BIOS),
play (PS2, full HLE, LoadBIOS commented out)
115 total profiles.
2026-03-17 20:15:28 +01:00
|
|
|
emulator: RACE (Neo Geo Pocket)
|
|
|
|
|
type: libretro
|
|
|
|
|
source: "https://github.com/libretro/RACE"
|
2026-03-18 05:15:51 +01:00
|
|
|
profiled_date: "2026-03-18"
|
2026-03-18 05:19:57 +01:00
|
|
|
core_version: "v2.16"
|
|
|
|
|
display_name: "SNK - Neo Geo Pocket / Color (RACE)"
|
feat: add 10 emulator profiles (119-series batch 2)
freeintv_ts_overlay (same BIOS as FreeIntv), bnes (NES, no BIOS),
clownmdemu (Mega Drive, open-source MCD boot ROM embedded),
m2000 (Philips P2000T, all embedded), mesen (NES, FDS + StudyBox BIOS),
race (NGP, HLE with disabled BIOS loader), vemulator (VMU, HLE only),
gw (Game & Watch, Lua simulator), pd777 (Cassette Vision, no BIOS),
play (PS2, full HLE, LoadBIOS commented out)
115 total profiles.
2026-03-17 20:15:28 +01:00
|
|
|
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.
|