Files
libretro/emulators/kronos.yml
T
Abdessamad Derraz 315dab82b7 feat: give each set its requirement and one pick
Three changes to the search-list model, one commit because the readers
and the profiles must move together for the schema to hold.

Set requirement in a groups map. pom2 falls back on apple2.rom for the
][ and the ][+, and on apple2e.rom for the //e it boots and for the
unenhanced //e: one required on the file could not say both. A profile
now declares groups: {name: {required}}, a member writes no required
of its own (schema and validate_schemas refuse one) and load_emulator_
profiles derives it, true when one of its sets is. group takes a name,
a list, or a map from set to rank where the rank differs per set. pom2
is grouped from SystemProfile.cpp and MainWindow.cpp:246-296 at its pin.

One member per required set under --required-only. The pick is the
first the code reads among the held members the region filter leaves,
by rank then declaration order; a set the platform declares a member
of is carried by that declaration. The emulator pack, verify
--emulator, the platform pack, its manifest and verify --platform read
alternatives.required_only_spares or core_file_spares.

variant_group is now selection_slot: files a core chooses between by
a rule other than first found (disc territory for PicoDrive and
Pizza Boy SC, the o2em_bios option, a WebAssembly probe in SWF
Player). Where the code takes any one, the field became a group:
ARMSX1 (ArmSxBackend.java:149-157, name order), ePSXe (load_bios
0x433540-0x433621 of the 2.0.5 Linux x64 binary, one configured path,
HLE when BiosHLE is set), FPse and FPse-NG, DXX-Rebirth's HOGs
(inferno.cpp:472-512). odin and zesarux carried it with no effect.
slot.py compares ranks only between candidates that share a set.
2026-11-09 18:19:32 +01:00

277 lines
8.2 KiB
YAML

emulator: Kronos
type: libretro
core_classification: official_port
source: "https://github.com/libretro/yabause"
source_branch: kronos
upstream: "https://github.com/FCare/Kronos"
profiled_date: "2026-03-24"
source_commit: "3791ffb2221fda61d70aec5cca376418caf05669"
prose_written_at: "3791ffb2221fda61d70aec5cca376418caf05669"
upstream_commit: "d0384bc33aad06bfa9cf5cd308c4bd7ae6cfc814"
core_version: "2.7.0"
version_basis:
kind: file
path: "yabause/src/libretro/Makefile.common"
pattern: '-DVERSION=\\"([^\\"]+)\\"'
display_name: "Sega - Saturn/ST-V (Kronos)"
cores:
- kronos
systems:
- sega-saturn
- sega-stv
notes: |
Kronos is a Sega Saturn and ST-V arcade emulator by FCare, forked from
Yabause. Requires OpenGL 4.3 compute shaders.
Saturn BIOS search order:
1. {system}/kronos/saturn_bios.bin
2. {system}/saturn_bios.bin
3. {system}/sega_101.bin
4. {system}/mpr-17933.bin
First file found wins. Real BIOS required (HLE deprecated, only available
via kronos_force_hle_bios core option for debugging).
ST-V BIOS: {system}/kronos/stvbios.zip or {system}/stvbios.zip
MAME-style ZIP containing region-specific EPROMs. Kronos picks the best
match by game region and kronos_stv_favorite_region core option (EU/US/JP/TW).
ROM cartridges for KOF95 and Ultraman are auto-detected via game database
(db.c) and loaded from system_dir when the corresponding game is running.
BIOS loading: retro_load_game() at yabause/src/libretro/libretro.c:1601-1727.
STV blob table: BiosList at yabause/src/ctrl/src/stv.c:112-136.
ROM cartridge DB: yabause/src/utils/src/db.c:43-45.
Standalone supports MPEG card ROM loading (Video CD card). Disabled in
libretro port (mpegpath = NULL in yabause/src/libretro/libretro.c:1578).
archive_prefix: kronos
groups:
saturn-bios:
required: true
files:
# -----------------------------------------------------------
# Saturn BIOS - primary (any region)
# -----------------------------------------------------------
- name: "saturn_bios.bin"
path: "kronos/saturn_bios.bin"
system: sega-saturn
group: saturn-bios
priority: 1
size: 524288
validation: [size]
note: "Primary Saturn BIOS. Any region accepted. Searched in kronos/ subdir first."
source_ref: "source yabause/src/libretro/libretro.c:1619-1620"
- name: "saturn_bios.bin"
system: sega-saturn
group: saturn-bios
priority: 2
size: 524288
validation: [size]
note: "The same name in the system directory, read when kronos/ holds none."
source_ref: "source yabause/src/libretro/libretro.c:1623-1624"
# -----------------------------------------------------------
# Saturn BIOS - Japan v1.01 (fallback)
# -----------------------------------------------------------
- name: "sega_101.bin"
system: sega-saturn
group: saturn-bios
priority: 3
size: 524288
validation: [size]
note: "Saturn BIOS v1.01 (Japan). Fallback if saturn_bios.bin missing."
source_ref: "source yabause/src/libretro/libretro.c:1627"
# -----------------------------------------------------------
# Saturn BIOS - NA/EU (fallback)
# -----------------------------------------------------------
- name: "mpr-17933.bin"
system: sega-saturn
group: saturn-bios
priority: 4
size: 524288
validation: [size]
note: "Saturn BIOS (NA/EU). Last fallback for Saturn mode."
source_ref: "source yabause/src/libretro/libretro.c:1631"
# -----------------------------------------------------------
# ST-V Arcade BIOS (stvbios.zip) - MAME romset
# -----------------------------------------------------------
- name: "stvbios.zip"
system: sega-stv
required: true
note: "MAME-style ZIP containing ST-V region BIOS EPROMs. Searched in kronos/ subdir first."
source_ref: "source yabause/src/libretro/libretro.c:1608-1617, source yabause/src/ctrl/src/stv.c:112-136"
# -----------------------------------------------------------
# ST-V BIOS blobs inside stvbios.zip
# -----------------------------------------------------------
# Japan
- name: "epr-23603.ic8"
archive: stvbios.zip
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "f688ae60"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:120"
- name: "epr-20091.ic8"
archive: stvbios.zip
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "59ed40f4"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:121"
- name: "epr-19730.ic8"
archive: stvbios.zip
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "d0e0889d"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:122"
- name: "epr-17951a.ic8"
archive: stvbios.zip
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "2672f9d8"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:123"
- name: "epr-17740a.ic8"
archive: stvbios.zip
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "3e23c81f"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:124"
- name: "epr-17740.ic8"
archive: stvbios.zip
system: sega-stv
region: [japan]
required: false
size: 524288
crc32: "5c5aa63d"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:125"
# Europe
- name: "epr-17954a.ic8"
archive: stvbios.zip
system: sega-stv
region: [europe]
required: false
note: "Loaded only when the set allows STV_REGION_EU. Among allowed regions the kronos_stv_favorite_region option, Europe by default, picks (yabause/src/ctrl/src/stv.c:2435, 2562-2564)."
size: 524288
crc32: "f7722da3"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:126"
# USA
- name: "epr-17952a.ic8"
archive: stvbios.zip
system: sega-stv
region: [north-america]
required: false
size: 524288
crc32: "d1be2adf"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:127"
- name: "epr-17741a.ic8"
archive: stvbios.zip
system: sega-stv
region: [north-america]
required: false
size: 524288
crc32: "4166c663"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:128"
# Taiwan
- name: "epr-19854.ic8"
archive: stvbios.zip
system: sega-stv
region: [taiwan]
required: false
size: 524288
crc32: "e09d1f60"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:129"
- name: "epr-17953a.ic8"
archive: stvbios.zip
system: sega-stv
region: [taiwan]
required: false
size: 524288
crc32: "a4c47570"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:130"
- name: "epr-17742a.ic8"
archive: stvbios.zip
system: sega-stv
region: [taiwan]
required: false
size: 524288
crc32: "02daf123"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:131"
# Debug / Dev
- name: "stv110.bin"
archive: stvbios.zip
system: sega-stv
required: false
size: 524288
crc32: "3dfeda92"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:132"
- name: "stv1061.bin"
archive: stvbios.zip
system: sega-stv
required: false
size: 524288
crc32: "728dbca3"
validation: [crc32]
source_ref: "upstream yabause/src/ctrl/src/stv.c:133"
# -----------------------------------------------------------
# ROM Cartridges (game-specific, loaded from system_dir)
# -----------------------------------------------------------
- name: "mpr-18811-mx.ic1"
system: sega-saturn
required: false
size: 2097152
validation: [size]
note: "ROM cartridge for The King of Fighters '95. Auto-detected via game DB."
source_ref: "upstream yabause/src/utils/src/db.c:43-44, source yabause/src/sys/memory/src/cs0.c:1526-1535"
- name: "mpr-19367-mx.ic1"
system: sega-saturn
required: false
size: 2097152
validation: [size]
note: "ROM cartridge for Ultraman: Hikari no Kyojin Densetsu. Auto-detected via game DB."
source_ref: "upstream yabause/src/utils/src/db.c:45, source yabause/src/sys/memory/src/cs0.c:1526-1535"