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.
Each list read at the profile's pin, every member required: true where
the code needs one of the set, the order left in priority.
- yabause, yabasanshiro, kronos: libretro.c tries saturn_bios.bin,
sega_101.bin, mpr-17933.bin (yabause 1035-1049, yabasanshiro
1048-1071, kronos 1619-1638 after kronos/saturn_bios.bin). kronos
also reads saturn_bios.bin at the system root, now its own entry.
yabasanshiro refuses the game with no file even under forced HLE
(1064-1071), so its hle_fallback is gone.
- yabadabadoo: bios_for_region (libretro.c:262-284) takes any of the
three in an order the disc region picks. One group, no priority:
region keeps that order, no single rank would be true.
- ymir libretro: kBiosFilenames (libretro.cpp:305-309), region first,
else the first found, no game without one (1231-1236).
- duckstation: FindBIOSImageInDirectory (bios.cpp:397-450) keeps any
image of the right size, a region mismatch only warns: one set.
- picodrive: find_bios walks one list per disc region
(libretro.c:1272-1336), three groups.
- px68k: BIOSFILE then cgrom.dat or cgrom.tmp (libretro.c:984-1032).
- px68k-sdl: BIOSFILE and FONTFILE lists (winx68k.cpp:277-331).
- numero: ti83se, ti83plus, ti83 (libretronew.cpp:575-594), no ROM
leaves a blank screen.
- freechaf: sl90025 then sl31253, HLE without either
(libretro.c:186-199), optional set.
- pcsx1: scph1001, scph5501, scph7001 then any scph* (libretro.c:1229),
HLE without, optional set.
- odin: three boot ROMs inside hikaru.zip.
parallel_dc (libretro/flycast renamed), hyperscanemu, hypseushw, n64emu
and odin reached the RetroArch buildbot after the last targets scrape and
resolved to no profile. Targets rescraped, each core profiled from its
source.