Commit Graph
23 Commits
Author SHA1 Message Date
Abdessamad Derraz b29500846b feat: read retrobat's saturn and atari builds
RetroBat installs its stable archives, so each config_reads entry is
read at the build the binary names: Hatari 2.4.1, hatariB 0.3,
Hatari2014 at ab55c3e from the buildbot, Kronos 2.7.0 and Ymir 0.3.3.
SSF ships PreviewVer R28 and YabaSanshiro 1.20.32 has no public
source: binary_sha256 names the file their address refs are read in.
The seven RetroBat records citing an option list now hold.
2026-11-11 11:57:12 +01:00
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
Abdessamad Derraz 1e12d9fe38 feat: group the first-found BIOS lists
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.
2026-11-09 17:40:00 +01:00
Abdessamad Derraz 4f7a19364d chore: advance ymir standalone pin to ff93537 2026-11-09 08:17:37 +01:00
Abdessamad Derraz e7aa9e870b fix: state libretro core versions from their code
Each libretro profile records version_basis and core_version is read
there at its pin. snes9x states 1.63 in snes9x.h, nestopia 2.0.0, mgba
0.11.0, vice 3.10, atari800's libretro tree 7.0.0. Cores whose build
takes its version from git carry the nearest tag in describe form
(flycast v2.7-90-ge88b0ce, ppsspp, duckstation, gearcoleco), placeholders
copied from .info files (Git, SVN) are replaced by the code's statement,
and a code that states none is null with kind none.
2026-10-27 19:21:27 +01:00
Abdessamad Derraz ed4580a2f7 chore: advance ymir standalone to fe439e9
v0.4.1-84. No cited file changed, no file name or hash gained since the pin.
2026-10-27 04:16:31 +01:00
Abdessamad Derraz 929fc9f575 chore: advance ymir standalone to b471cff
Four commits, no ref moved, no file name or hash gained in the cited
files.
2026-10-27 00:07:09 +01:00
Abdessamad Derraz 02fb76b850 chore: advance ymir standalone pin to a2c69d8
The Vulkan renderer merge (75 commits): no ROM loading change. The CMakeLists.txt organization and app name definitions moved down six lines (647-648).
2026-10-26 22:50:13 +01:00
Abdessamad Derraz 387b1c0e13 chore: advance ymir standalone pin to 73d320b
One upstream commit touching CONTRIBUTING.md only; every ref anchors at 73d320b. The Emir libretro branch is still at 8174cbb.
2026-10-26 22:50:13 +01:00
Abdessamad Derraz 122617dc9a feat: add ymir data root
SDL_GetPrefPath(StrikerX3, Ymir) through profile.cpp:29-34, with the portable profile rules of app.cpp.
2026-10-24 01:15:09 +02:00
Abdessamad Derraz f2e21f3a44 docs: name profiles as their projects write them
emulator: carried the file stem on 67 profiles, so site links read like ids. Each now takes the project's own name (libretro .info corename, README title, window title or site title). tests/test_profile_names.py allows the stem only on a commented list: lowercase project names, test cores, aliases and the template.
2026-10-24 00:40:13 +02:00
Abdessamad Derraz 43fe5a7b15 chore: merge round 4 fixes (profiles) 2026-10-21 13:17:10 +02:00
Abdessamad Derraz 8bad9ca1e7 fix: note the code names behind saturn aliases
RetroBat's launcher layer now records the Saturn names its generators
pick. The ymir aliases are the libretro port's own kBiosFilenames, and
the SSF aliases label dumps of a slot whose file name SSF leaves free.
Both entries now say so next to their source_ref.
2026-10-21 12:24:50 +02:00
Abdessamad Derraz fd508e3f8a fix: split ymir libretro BIOS by region
The libretro port reads sega_101.bin, mpr-17933.bin and saturn_bios.bin in that order, gives the first two the JP and US_EU regions by hash, and loads the candidate the ymir_region option or the disc area code asks for (apps/ymir-libretro/src/libretro.cpp:305-309, 596-606, 627-702, 1231-1238, 1290-1306 at 8174cbbe). Area K maps to KR, which neither image carries.
2026-10-21 12:16:34 +02:00
Abdessamad Derraz 185734d397 fix: re-profile ymir at HEAD of both builds
StrikerX3/Ymir answers as ymir-emu/Ymir, and the buildbot builds the libretro branch of warmenhoven/Emir, PR #746 having closed unmerged. The libretro build now reads all three BIOS names and picks one by region (apps/ymir-libretro/src/libretro.cpp:584-712, 1285-1306).
2026-10-21 11:10:39 +02:00
Abdessamad Derraz dfdb887fb8 fix: say which cores find their BIOS by content
DuckStation (bios.cpp:208, 397-427), SwanStation (host_interface.cpp:
136-194), rustation (lib.rs:107-160), FS-UAE (rommgr.cpp:92-151),
ares (firmware.cpp:116-136) and Altirra (uifirmwarescan.cpp:29-113)
scan a folder and identify firmware by hash; Ymir does in its
standalone build only. FS-UAE still opens rom.key by name
(rommgr.cpp:1397-1498). The export then stops writing their labels
into platform lists: Batocera's psx block goes from 106 entries to 10,
and System.dat's scph5000.bin keeps its own hashes.
2026-10-20 16:49:16 +02:00
Abdessamad Derraz 20216858a4 fix: list the IPL images Ymir identifies
Ymir standalone identifies an IPL by its XXH128 with seed kIPLHashSeed (memory_defs.hpp:10) against ipl_db.cpp:9-17. Each image's digest was recomputed with that seed and falls on the cited row.
2026-10-20 14:26:24 +02:00
Abdessamad Derraz 690a4bd664 fix: list ymir's gamecontrollerdb.txt
The standalone build loads it from the working directory then the profile root (app.cpp:5084-5119). The release packages ship it, the libretro tree never reads it.
2026-10-20 10:37:32 +02:00
Abdessamad Derraz 4231902a6c docs: write prose without dashes or semicolons
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.

validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
2026-10-19 06:47:31 +02:00
Abdessamad Derraz 49f50f51b5 feat: read per-mode sources and pins 2026-08-10 18:18:09 +02:00
Abdessamad Derraz b82b64472a chore: anchor profile refs to source commits 2026-08-08 11:47:37 +02:00
Abdessamad Derraz bbe4936cf2 feat: add 12 batocera standalone profiles, update 3 existing
New profiles: citron (Switch), clk (multi-system), demul (Hikaru),
eka2l1 (Symbian/N-Gage), gsplus (Apple IIGS), lexaloffle (PICO-8),
openmsx (MSX), ryujinx (Switch), shadps4 (PS4), tsugaru (FM Towns),
x16emu (Commander X16), xroar (Dragon/CoCo), zc210 (Zelda Classic).
Updated: amiberry, fsuae (standalone Amiga), ymir (Saturn standalone).
2026-03-26 07:01:16 +01:00
Abdessamad Derraz dfd8f8657c feat: re-profile 4 emulators, add ymir 2026-03-25 16:49:49 +01:00