diff --git a/database.json b/database.json index 48fd5206..f42645f7 100644 --- a/database.json +++ b/database.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-18T13:29:00Z", + "generated_at": "2026-03-18T13:46:32Z", "total_files": 5563, "total_size": 4908008969, "files": { diff --git a/platforms/retroarch.yml b/platforms/retroarch.yml index d5ed8afb..d5d7bed3 100644 --- a/platforms/retroarch.yml +++ b/platforms/retroarch.yml @@ -220,6 +220,33 @@ systems: - name: qsound.zip destination: qsound.zip required: true + - name: channelf.zip + destination: channelf.zip + required: true + - name: coleco.zip + destination: coleco.zip + required: true + - name: neocdz.zip + destination: neocdz.zip + required: true + - name: ngp.zip + destination: ngp.zip + required: true + - name: spectrum.zip + destination: spectrum.zip + required: true + - name: spec128.zip + destination: spec128.zip + required: true + - name: spec1282a.zip + destination: spec1282a.zip + required: true + - name: fdsbios.zip + destination: fdsbios.zip + required: true + - name: aes.zip + destination: aes.zip + required: true core: fbneo manufacturer: Various docs: https://docs.libretro.com/library/fbneo/ @@ -331,6 +358,12 @@ systems: md5: 2c66f5911e5b42b8ebe113403548eee7 crc32: 3aa93ef3 size: 8192 + - name: BIOS.col + destination: BIOS.col + required: true + - name: bioscv.rom + destination: bioscv.rom + required: true commodore-amiga: files: - name: kick33180.A500 @@ -1237,6 +1270,18 @@ systems: md5: e45033d9b0fa6b0de071292bba7c9d13 crc32: 945f9dc9 size: 262144 + - name: dsi_bios7.bin + destination: dsi_bios7.bin + required: true + - name: dsi_bios9.bin + destination: dsi_bios9.bin + required: true + - name: dsi_firmware.bin + destination: dsi_firmware.bin + required: true + - name: dsi_nand.bin + destination: dsi_nand.bin + required: true core: desmume manufacturer: Nintendo docs: https://docs.libretro.com/library/desmume/ @@ -1351,6 +1396,9 @@ systems: md5: d574d4f9c12f305074798f54c091a8b4 crc32: ec8a83b9 size: 256 + - name: sgb.boot.rom + destination: sgb.boot.rom + required: false nintendo-snes: files: - name: cx4.data.rom @@ -1766,6 +1814,9 @@ systems: md5: ac4e4b6522e200c0d23d371a8cecbfd3 crc32: e4d61811 size: 524288 + - name: stvbios.zip + destination: kronos/stvbios.zip + required: true core: kronos manufacturer: Sega docs: https://docs.libretro.com/library/kronos/ diff --git a/scripts/scraper/libretro_scraper.py b/scripts/scraper/libretro_scraper.py index f3f4207e..3473b5a9 100644 --- a/scripts/scraper/libretro_scraper.py +++ b/scripts/scraper/libretro_scraper.py @@ -268,12 +268,25 @@ class Scraper(BaseScraper): # 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 + # ref: fbneo/src/burner/libretro/libretro.cpp — search order: + # 1) romset dir 2) system/fbneo/ 3) system/ 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}, + # FBNeo non-arcade subsystem BIOS (MAME-format ZIPs) + # ref: fbneo/src/burn/drv/ per-driver source files + {"name": "channelf.zip", "destination": "channelf.zip", "required": True}, + {"name": "coleco.zip", "destination": "coleco.zip", "required": True}, + {"name": "neocdz.zip", "destination": "neocdz.zip", "required": True}, + {"name": "ngp.zip", "destination": "ngp.zip", "required": True}, + {"name": "spectrum.zip", "destination": "spectrum.zip", "required": True}, + {"name": "spec128.zip", "destination": "spec128.zip", "required": True}, + {"name": "spec1282a.zip", "destination": "spec1282a.zip", "required": True}, + {"name": "fdsbios.zip", "destination": "fdsbios.zip", "required": True}, + {"name": "aes.zip", "destination": "aes.zip", "required": True}, ] if "arcade" in systems: existing = {f["name"] for f in systems["arcade"].get("files", [])} @@ -291,6 +304,42 @@ class Scraper(BaseScraper): "required": True, }) + # Extra files missing from System.dat for specific systems. + # Each traced to the core's source code. + EXTRA_SYSTEM_FILES = { + # melonDS DS DSi mode — ref: JesseTG/melonds-ds/src/libretro.cpp + "nintendo-ds": [ + {"name": "dsi_bios7.bin", "destination": "dsi_bios7.bin", "required": True}, + {"name": "dsi_bios9.bin", "destination": "dsi_bios9.bin", "required": True}, + {"name": "dsi_firmware.bin", "destination": "dsi_firmware.bin", "required": True}, + {"name": "dsi_nand.bin", "destination": "dsi_nand.bin", "required": True}, + ], + # bsnes SGB naming — ref: bsnes/target-libretro/libretro.cpp + "nintendo-sgb": [ + {"name": "sgb.boot.rom", "destination": "sgb.boot.rom", "required": False}, + ], + # JollyCV — ref: jollycv/libretro.c + "coleco-colecovision": [ + {"name": "BIOS.col", "destination": "BIOS.col", "required": True}, + {"name": "bioscv.rom", "destination": "bioscv.rom", "required": True}, + ], + # Kronos ST-V — ref: libretro-kronos/libretro/libretro.c + "sega-saturn": [ + {"name": "stvbios.zip", "destination": "kronos/stvbios.zip", "required": True}, + ], + # PCSX ReARMed / Beetle PSX alt BIOS — ref: pcsx_rearmed/libpcsxcore/misc.c + # docs say PSXONPSP660.bin (uppercase) but core accepts any case + "sony-playstation": [ + {"name": "psxonpsp660.bin", "destination": "psxonpsp660.bin", "required": False}, + ], + } + for sys_id, extra_files in EXTRA_SYSTEM_FILES.items(): + if sys_id in systems: + existing = {f["name"] for f in systems[sys_id].get("files", [])} + for ef in extra_files: + if ef["name"] not in existing: + systems[sys_id]["files"].append(ef) + # ep128emu shared group for Enterprise if "enterprise-64-128" in systems: systems["enterprise-64-128"].setdefault("includes", [])