From 513fd04bfd0b016d737b2cf00cada93e4d838e03 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Wed, 18 Mar 2026 14:18:56 +0100 Subject: [PATCH] feat: scraper adds missing arcade BIOS, ep128emu includes, new profiles libretro_scraper: EXTRA_ARCADE_FILES adds namcoc69/70/75, msx, qsound to arcade system. segasp.zip added to dreamcast-arcade. ep128emu includes injected for enterprise system. new profiles: vba_m (GB/GBC/GBA with doc vs source notes), beetle_gba (Mednafen GBA). --- emulators/beetle_gba.yml | 14 +++++++++++++ emulators/vba_m.yml | 29 ++++++++++++++++++++++++++ scripts/scraper/libretro_scraper.py | 32 +++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 emulators/beetle_gba.yml create mode 100644 emulators/vba_m.yml diff --git a/emulators/beetle_gba.yml b/emulators/beetle_gba.yml new file mode 100644 index 00000000..07c7e9c0 --- /dev/null +++ b/emulators/beetle_gba.yml @@ -0,0 +1,14 @@ +# Beetle GBA (Mednafen) — Game Boy Advance (libretro) +# ref: beetle-gba-libretro/mednafen/gba, docs.libretro.com/library/beetle_gba +# Same BIOS as mGBA/VBA-M. Optional, no HLE fallback documented. +emulator: Beetle GBA (Mednafen) +type: libretro +cores: [mednafen_gba] +source: "https://github.com/libretro/beetle-gba-libretro" +systems: + - nintendo-gba +files: + - name: gba_bios.bin + system: nintendo-gba + required: false + md5: a860e8c0b6d573d191e4ec7db1b1e4f6 diff --git a/emulators/vba_m.yml b/emulators/vba_m.yml new file mode 100644 index 00000000..9254f86d --- /dev/null +++ b/emulators/vba_m.yml @@ -0,0 +1,29 @@ +# VBA-M — Game Boy / Game Boy Color / Game Boy Advance (libretro) +# ref: visualboyadvance-m/src/libretro, docs.libretro.com/library/vba_m +# Same BIOS as mGBA. Requires core option "Use BIOS file if found" = On. +# +# doc vs source: docs list gba_bios.bin md5 a860e8c0b6d573d191e4ec7db1b1e4f6 +# which is the standard GBA BIOS dump. Also accepts gb_bios.bin and gbc_bios.bin +# for GB/GBC mode (not listed in mgba profile). +emulator: VBA-M +type: libretro +cores: [vbam] +source: "https://github.com/visualboyadvance-m/visualboyadvance-m" +systems: + - nintendo-gb + - nintendo-gbc + - nintendo-gba +files: + - name: gba_bios.bin + system: nintendo-gba + required: false + md5: a860e8c0b6d573d191e4ec7db1b1e4f6 + note: "optional, core option vbam_usebios must be On" + - name: gb_bios.bin + system: nintendo-gb + required: false + md5: 32fbbd84168d3482956eb3c5051637f5 + - name: gbc_bios.bin + system: nintendo-gbc + required: false + md5: dbfce9db9deaa2567f6a84fde55f9680 diff --git a/scripts/scraper/libretro_scraper.py b/scripts/scraper/libretro_scraper.py index 546ab62e..0d482123 100644 --- a/scripts/scraper/libretro_scraper.py +++ b/scripts/scraper/libretro_scraper.py @@ -265,6 +265,38 @@ class Scraper(BaseScraper): if sys_id not in systems: systems[sys_id] = sys_data + # Arcade BIOS present in the repo but absent from System.dat. + # FBNeo expects them in system/ or system/fbneo/. + # ref: fbneo/src/burner/libretro/libretro.cpp + EXTRA_ARCADE_FILES = [ + {"name": "namcoc69.zip", "destination": "namcoc69.zip", "required": True}, + {"name": "namcoc70.zip", "destination": "namcoc70.zip", "required": True}, + {"name": "namcoc75.zip", "destination": "namcoc75.zip", "required": True}, + {"name": "msx.zip", "destination": "msx.zip", "required": True}, + {"name": "qsound.zip", "destination": "qsound.zip", "required": True}, + ] + if "arcade" in systems: + existing = {f["name"] for f in systems["arcade"].get("files", [])} + for ef in EXTRA_ARCADE_FILES: + if ef["name"] not in existing: + systems["arcade"]["files"].append(ef) + + # segasp.zip for Sega System SP (Flycast) + if "sega-dreamcast-arcade" in systems: + existing = {f["name"] for f in systems["sega-dreamcast-arcade"].get("files", [])} + if "segasp.zip" not in existing: + systems["sega-dreamcast-arcade"]["files"].append({ + "name": "segasp.zip", + "destination": "dc/segasp.zip", + "required": True, + }) + + # ep128emu shared group for Enterprise + if "enterprise-64-128" in systems: + systems["enterprise-64-128"].setdefault("includes", []) + if "ep128emu" not in systems["enterprise-64-128"]["includes"]: + systems["enterprise-64-128"]["includes"].append("ep128emu") + # Inject shared group references for systems that have core-specific # subdirectory requirements already defined in _shared.yml. SYSTEM_SHARED_GROUPS = {