Files
libretro/emulators/jollycv.yml
T
Abdessamad Derraz b3b3880c19 chore: say which repository each source_ref cites
Profiles that read two repositories, a libretro port and its upstream,
now prefix each citation with source or upstream, decided by which tree
carries the cited value at its pin. The emulator pages use the word to
tell libretro glue, emulator code as the port carries it, and the
upstream emulator apart.
2026-10-20 09:23:41 +02:00

92 lines
3.9 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, and 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, and 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: "source libretro/libretro.c:697-703, source src/jollycv.c:406-432, source src/jcv_coleco.c:402-410, source 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, and 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: "source libretro/libretro.c:707-713, source src/jollycv.c:406-432, source src/jcv_crvision.c:316-324, upstream jg.c:154-155"
note: "Mapped at 0xF800-0xFFFF. The MD5 is the value the JG bioslist declares, and 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."