Files
libretro/emulators/jollycv.yml
T

92 lines
3.8 KiB
YAML

emulator: JollyCV
type: libretro
core_classification: official_port
source: "https://github.com/libretro/jollycv"
upstream: "https://gitlab.com/jgemu/jollycv"
profiled_date: "2026-09-17"
source_commit: "2790d59c7194d29e83f8603ffd7e9da17f11575e"
upstream_commit: "18875ffdb1891cec04217cf02928af563a3af9d8"
core_version: "2.1.0"
display_name: "ColecoVision/CreatiVision/My Vision (JollyCV)"
cores:
- jollycv
systems:
- colecovision
- creativision
- myvision
notes: |
JollyCV emulates the ColecoVision (with Super Game Module), the VTech
CreatiVision and the Nichibutsu My Vision. The libretro port and the
Jolly Good build share the same src/ tree; only the front end differs.
The libretro port picks the system from the file name
(libretro/libretro.c:670-679): ".myv" is My Vision, ".rom" and ".bin"
are looked up by MD5 in the CreatiVision table (src/jcv_db.c:109-176,
reached through src/jollycv.c:118-120) and fall back to ColecoVision,
".col" is ColecoVision. A CreatiVision image whose MD5 is not in the
table runs as ColecoVision. Version 2.1.0 moved that table from
libretro/gamedb.h into src/jcv_db.c so both builds share it.
BIOS files are read from the front end's system directory, no
subdirectory, as "<system_dir>/coleco.rom" or "<system_dir>/bioscv.rom"
(libretro/libretro.c:696-716). jcv_bios_load_file (src/jollycv.c:406-432)
opens the file, reads it whole and hands the buffer to
jcv_coleco_bios_load or jcv_crvision_bios_load, which keep it only when
the size is exactly SIZE_CVBIOS (8192) or SIZE_CRVBIOS (2048). The return
value of that size check is dropped at src/jollycv.c:427, so a file of the
wrong size passes the loader while the BIOS pointer stays NULL; the first
BIOS read (src/jcv_coleco.c:281-282, src/jcv_crvision.c:443-444) then
dereferences it. A missing file fails retro_load_game. My Vision loads no
BIOS (libretro/libretro.c:717-719).
The Jolly Good build reads the same two names from the front end's BIOS
path (jg.c:463-481) and declares them through jg_get_bioslist with an
MD5 each (jg.c:151-156). The core never compares those MD5; the reference
front end hashes the file against them for a debug log only
(jgrf src/jgrf.c:441-458). The md5: fields below carry these values.
ColecoVision cartridges start with 0xAA55 to show the BIOS title screen or
0x55AA to jump straight to the game vector (src/jcv_coleco.c:421-426).
The MD5 database of ColecoVision games in src/jcv_db.c selects cartridge
mappers and controller flags.
files:
- name: "coleco.rom"
system: colecovision
description: "ColecoVision BIOS"
required: true
size: 8192
md5: "2c66f5911e5b42b8ebe113403548eee7"
validation: [size]
source_ref: "libretro/libretro.c:697-703, src/jollycv.c:406-432, src/jcv_coleco.c:402-410, jg.c:151-153"
note: "Mapped at 0x0000-0x1FFF, replaced by the lower 8K of SGM RAM when the Super Game Module enables it. The MD5 is the value the JG bioslist declares; the core compares the size only."
- name: "bioscv.rom"
system: creativision
description: "VTech CreatiVision BIOS ROM"
required: true
size: 2048
md5: "3b1ef759d8e3fb4071582efd33dd05f9"
validation: [size]
source_ref: "libretro/libretro.c:707-713, src/jollycv.c:406-432, src/jcv_crvision.c:316-324, jg.c:154-155"
note: "Mapped at 0xF800-0xFFFF. The MD5 is the value the JG bioslist declares; the core compares the size only."
platform_details:
colecovision:
bios_filename: "coleco.rom"
bios_size: 8192
memory_map: "0x0000-0x1FFF"
source_ref: "src/jcv_coleco.c:268-283"
creativision:
bios_filename: "bioscv.rom"
bios_size: 2048
memory_map: "0xF800-0xFFFF"
source_ref: "src/jcv_crvision.c:316-318, 443-445"
myvision:
bios_required: false
source_ref: "libretro/libretro.c:717-719"
note: "No BIOS is loaded for My Vision."