Files
libretro/emulators/emuscv.yml
T

87 lines
3.4 KiB
YAML

emulator: EmuSCV
type: libretro
core_classification: community_fork
source: "https://git.libretro.com/libretro/libretro-emuscv"
upstream: "http://takeda-toshiya.my.coocan.jp/"
profiled_date: "2026-11-09"
source_commit: "33900ce24f45c429b533fdae7844e04d64a9a1b9"
core_version: "0.15.20260921084155"
version_basis:
kind: file
path: "src/emuscv.h"
pattern: 'EMUSCV_VERSION_MAJOR\s+"(\d+)"\n#define EMUSCV_VERSION_MINOR\s+"(\d+)"\n#define EMUSCV_VERSION_DATETIME\s+"(\d+)"'
format: "{1}.{2}.{3}"
display_name: "EPOCH/YENO Super Cassette Vision (EmuSCV)"
cores:
- emuscv
systems:
- scv
notes: |
Libretro port of eSCV by Takeda Toshiya (Common Source Code Project),
ported to libretro by MARCONATO Maxime. Upstream source mirrored at
https://github.com/tautologico/common-src-project (src/vm/scv/). The
buildbot builds libretro's copy on git.libretro.com, which carries the
history of the former GitHub repository and continues it.
BIOS loading in src/vm/scv/memory.cpp:initialize() (lines 84-250).
Tries filenames in order: upd7801g.s01, upd7801g.bin, upd7801g.bios,
bios.rom, bios.bin. First successful open wins. Upstream eSCV uses
only BIOS.ROM (uppercase), and the libretro port renamed and added
fallback aliases.
The BIOS is read as 0x1000 (4096) bytes into the bios[] array, mapped
read-only at CPU address 0x0000-0x0FFF (UPD7801 internal ROM area).
upd7801g.s01 is checked against MD5 635a978fd40db9a18ee44eff449fc126
unless the CHECKBIOS core option is NO, so with the default AUTO a
file of other content under that name is rejected (filled with 0xFF,
bios_loaded=false) and the next name is tried. The four other names are
checked only when CHECKBIOS is YES, and AUTO accepts any content under
them (src/vm/scv/memory.cpp:84-112, 115-148, src/emuscv.cpp:3459-3472).
The font/character data is embedded within the BIOS at offset 0x200
(memory.h get_font() returns bios + 0x200). No separate font ROM file.
The core can start without BIOS (supports_no_game=true) but shows
"BIOS not found" or "Bad BIOS" on the OSD. Games will not run without
it.
The .info declares firmware_count=1, firmware0_opt=false. Matches code.
files:
- name: "upd7801g.s01"
system: scv
required: true
size: 4096
md5: 635a978fd40db9a18ee44eff449fc126
validation: [md5]
note: "UPD7801G internal ROM (BIOS). The MD5 is checked by default under this name only. Mapped at 0x0000-0x0FFF. Contains character font at offset 0x200."
source_ref: "src/vm/scv/memory.cpp:84-250"
aliases:
- "upd7801g.bin"
- "upd7801g.bios"
- "bios.rom"
- "bios.bin"
platform_details:
cpu: "NEC UPD7801G"
bios_mapping:
upd7801g:
target: "0x0000-0x0FFF (CPU internal ROM, 4 KB)"
format: "raw binary"
source_ref: "src/vm/scv/memory.cpp:259-264"
notes: |
Memory map from memory.cpp:initialize():
0x0000-0x0FFF BIOS ROM (read-only)
0x2000-0x3FFF VRAM (8 KB)
0x8000-0xFF7F Cartridge ROM (up to 4 banks of 32 KB)
0xFF80-0xFFFF CPU internal RAM (128 bytes)
Font data lives inside the BIOS at offset 0x200, accessed via
get_font() for the VDP character rendering (src/vm/scv/vdp.cpp).
cartridge_loading:
formats: "cart, bin, rom, 0 (multi-file: .0/.1/.2/.3), zip"
banking: "4 banks of 32 KB via PC5/PC6 port lines"
source_ref: "src/vm/scv/memory.h, src/vm/scv/memory.cpp"