Files
libretro/emulators/nekop2.yml
T

160 lines
6.0 KiB
YAML

emulator: nekop2
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/libretro-meowPC98"
upstream: "https://np2.yui.ne.jp (dead; source preserved in libretro repo)"
profiled_date: "2026-03-24"
source_commit: "5fdbb2187f6b14ca7bf668dd52b36c820b989995"
core_version: "0.86"
display_name: "NEC - PC-98 (Neko Project II)"
cores: [nekop2]
systems: [pc-98]
# Neko Project II (NP2) by Yui, ported to libretro by meepingsnesroms.
# PC-9801/9821 emulator (80286/IA-32 CPU). All files load from <system>/np2/.
# The libretro shim sets np2cfg.biospath to "<system>/np2/" and
# file_setcd() to the same path (libretro/libretro.c:856-864,196).
#
# BIOS_SIMULATE is hardcoded (bios/bios.c:26), so the core always has
# a built-in BIOS simulator and ITF ROM is never loaded from disk.
# Font data falls back to built-in 8x8 tables. Sound ROM falls back
# to a 9-byte stub. IDE/SCSI/SASI all have built-in stubs.
#
# .info declares firmware_count=0; the core loads several BIOS, font and
# sound files, each with a built-in fallback.
files:
# -- Main BIOS ROM --
# Loaded in bios/bios.c:232-237 via getbiospath(). 96 KB (0x18000)
# mapped at 0xe8000. Without this, the built-in BIOS simulator
# (nosyscode + BIOS_SIMULATE) is used (bios/bios.c:253).
- name: "bios.rom"
path: "np2/bios.rom"
min_size: 98304
validation: [size]
required: false
hle_fallback: true
note: >
PC-9801 system BIOS ROM. The first 0x18000 bytes are read to 0xe8000;
a file shorter than that is ignored and the built-in BIOS simulator
is used, as when the file is absent.
source_ref: "bios/bios.c:232-237, common/strres.c:53"
# -- PC-9821 IDE BIOS, the ROM at D8000h --
# Opened in bios/bios.c:263-264 via getbiospath(). The first 0x2000
# bytes are read to 0xd8000 (bios/bios.c:266), then the word at 0xd8009
# is cleared (bios/bios.c:269); the comment above that line reads
# "crush the IDE BIOS". Only compiled when SUPPORT_PC9821 is defined
# (libretro/compiler.h:169). GETBIOS writes BIOS9821.ROM on a PC-9821
# from segment D800h, length 0x2000 (np2tool/GETBIOS.ASM:96-106).
- name: "bios9821.rom"
path: "np2/bios9821.rom"
description: "PC-9821 IDE BIOS, the 8 KB ROM at D8000h-D9FFFh"
min_size: 8192
validation: [size]
required: false
note: >
Dump of D8000h-D9FFFh from a PC-9821, 8192 bytes as GETBIOS writes
it. The first 0x2000 bytes are read to 0xd8000 and the word at
0xd8009 is then zeroed, which leaves the ROM mapped with its IDE
BIOS disabled. A file shorter than 0x2000 bytes fails the read test
and the word is left alone; nothing past 0x2000 is read. No other
file name is tried.
source_ref: "bios/bios.c:262-272, np2tool/GETBIOS.ASM:96-106, libretro/compiler.h:169"
# -- Font file --
# Set in libretro.c:862 as "<system>/np2/font.bmp".
# font_load() in font/font.c:113 determines type by extension:
# .bmp = PC98 format, FONT.ROM = V98 format.
# Without any font file, built-in fontdata_8 provides 8x8 ASCII only.
- name: "font.bmp"
path: "np2/font.bmp"
required: false
hle_fallback: true
aliases: ["FONT.ROM"]
note: >
PC-98 font bitmap (288 KB). Required for correct Japanese kanji display.
Without this, only basic ASCII renders using built-in 8x8 data.
FONT.ROM (V98 format) is also accepted.
source_ref: "libretro/libretro.c:872, font/font.c:113, font/fontdata.c:12"
# -- Sound BIOS ROM --
# Loaded by soundrom_load() via loadsoundrom() in sound/soundrom.c:21-55.
# Filename built as "sound" + optional board name + ".rom".
# Board-specific variants: sound26.rom (PC-9801-26K), sound86.rom (86),
# sound118.rom (118), soundSPB.rom (Speak Board), sound14.rom (14).
# The code tries the board-specific name first, falls back to sound.rom.
# 16 KB (0x4000). Fallback: 9-byte defsoundrom stub.
- name: "sound.rom"
path: "np2/sound.rom"
required: false
hle_fallback: true
note: >
FM sound board BIOS ROM (16 KB). The core tries board-specific
variants first (sound26.rom, sound86.rom, sound118.rom, soundSPB.rom,
sound14.rom) then falls back to sound.rom.
source_ref: "sound/soundrom.c:15-16,21-55,65-78"
# -- YM2608 OPNA rhythm samples --
# Loaded by rhythm_load() in sound/rhythmc.c:60-71 via getbiospath().
# The core has no fmgen engine; only lowercase filenames are used.
- name: "2608_bd.wav"
path: "np2/2608_bd.wav"
required: false
note: "YM2608 OPNA rhythm sample: bass drum"
source_ref: "sound/rhythmc.c:11,60-71"
- name: "2608_sd.wav"
path: "np2/2608_sd.wav"
required: false
note: "YM2608 OPNA rhythm sample: snare drum"
source_ref: "sound/rhythmc.c:12"
- name: "2608_top.wav"
path: "np2/2608_top.wav"
required: false
note: "YM2608 OPNA rhythm sample: top cymbal"
source_ref: "sound/rhythmc.c:13"
- name: "2608_hh.wav"
path: "np2/2608_hh.wav"
required: false
note: "YM2608 OPNA rhythm sample: hi-hat"
source_ref: "sound/rhythmc.c:14"
- name: "2608_tom.wav"
path: "np2/2608_tom.wav"
required: false
note: "YM2608 OPNA rhythm sample: tom"
source_ref: "sound/rhythmc.c:15"
- name: "2608_rim.wav"
path: "np2/2608_rim.wav"
required: false
note: "YM2608 OPNA rhythm sample: rim shot"
source_ref: "sound/rhythmc.c:16"
# -- SCSI controller BIOS --
# Loaded in cbus/scsiio.c:219 via file_open_rb_c(). 16 KB (0x4000).
# Falls back to built-in scsibios[] stub.
- name: "scsi.rom"
path: "np2/scsi.rom"
required: false
hle_fallback: true
note: >
SCSI controller BIOS ROM (16 KB). The core includes a built-in
SCSI BIOS stub as fallback.
source_ref: "cbus/scsiio.c:208-233"
# -- SASI controller BIOS --
# Loaded in cbus/sasiio.c:453 via file_open_rb_c(). 4 KB (0x1000).
# Falls back to built-in sasibios[] stub.
- name: "sasi.rom"
path: "np2/sasi.rom"
required: false
hle_fallback: true
note: >
SASI controller BIOS ROM (4 KB). The core includes a built-in
SASI BIOS stub as fallback.
source_ref: "cbus/sasiio.c:442-465"