Abdessamad Derraz
16b4dcc270
feat: rewrite retropie scraper using scriptmodules
2026-03-26 09:31:37 +01:00
Abdessamad Derraz
15e8c0eccb
feat: add Vita target via libretro-super recipes
2026-03-26 09:31:34 +01:00
Abdessamad Derraz
14eaff73f7
feat: add retroarch target aliases to overrides
2026-03-26 09:25:39 +01:00
Abdessamad Derraz
dfb7d9a25a
fix: correct scraper paths and patterns, populate target files
2026-03-26 09:18:39 +01:00
Abdessamad Derraz
03a9fa3276
fix: batocera targets scraper es_systems path and condition parser
...
- Fix es_systems.yml URL (batocera-emulationstation -> batocera-es-system)
- Replace if/endif block parser with select-if condition parser that
matches the actual Config.in structure (select PACKAGE if CONDITION)
- Add Kconfig boolean condition checker (handles &&, ||, !, parentheses)
- Add meta-flag expansion (X86_64_ANY, GLES3, ROCKCHIP_GLES3, etc.)
iterated to fixpoint for chained derivations
- Fix es_systems.yml parser for the actual dict format with requireAnyOf
2026-03-26 09:16:06 +01:00
Abdessamad Derraz
2980100fba
feat: add static target files for retrobat, retrodeck, romm
2026-03-26 08:56:00 +01:00
Abdessamad Derraz
6b86c543af
feat: add emudeck and retropie target scrapers
2026-03-26 08:55:58 +01:00
Abdessamad Derraz
8e91552b16
feat: add batocera per-board emulator target scraper
2026-03-26 08:55:54 +01:00
Abdessamad Derraz
c6ab8e9c3a
feat: add target scraper infra and retroarch buildbot scraper
2026-03-26 08:55:50 +01:00
Abdessamad Derraz
ac66f0b73b
feat: add target fields to registry, create targets directory
2026-03-26 08:51:54 +01:00
Abdessamad Derraz
de58f3f28e
feat: add --platform and --target to cross_reference.py
2026-03-26 08:48:41 +01:00
Abdessamad Derraz
89054084b7
feat: target-aware fingerprint in group_identical_platforms
2026-03-26 08:48:40 +01:00
Abdessamad Derraz
ea9cd93e83
feat: propagate --target through pipeline.py
2026-03-26 08:48:34 +01:00
Abdessamad Derraz
5ac14079d6
feat: add --target and --list-targets to generate_pack.py
2026-03-26 08:48:31 +01:00
Abdessamad Derraz
1e939f1470
feat: add --target and --list-targets to verify.py
2026-03-26 08:48:29 +01:00
Abdessamad Derraz
1c34790737
feat: propagate target_cores through find_undeclared_files, find_exclusion_notes, verify_platform, _collect_emulator_extras
2026-03-26 08:44:44 +01:00
Abdessamad Derraz
e17d771710
feat: add target_cores filter to resolve_platform_cores
...
Optional target_cores parameter intersects the resolved core set,
enabling per-target filtering without changing existing call sites.
Includes 2 E2E tests covering intersection and None pass-through.
2026-03-26 08:42:08 +01:00
Abdessamad Derraz
0549b8945e
feat: add load_target_config and list_available_targets to common.py
...
Loads per-platform target YAML files from platforms/targets/,
resolves aliases and applies add_cores/remove_cores from _overrides.yml.
Includes 7 E2E tests covering alias resolution, overrides, and error paths.
2026-03-26 08:41:37 +01:00
Abdessamad Derraz
8ac64d6143
docs: add build guide and documentation site section to readme
...
Quick start commands for generating packs by platform, emulator, or
system. Documentation site section explains what users can find there.
2026-03-26 07:15:01 +01: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
3f676b75e8
feat: standalone emulator support for batocera and multi-platform name mapping
...
resolve_platform_cores() builds reverse index from profile cores: field,
fixing 17 name mismatches across Batocera, RetroBat, and Recalbox
(genesisplusgx, pce_fast, pcfx, vb, mame078plus, vice cores, etc.).
standalone_path field on file entries + standalone_cores on platform
YAMLs enable mode-aware pack generation. find_undeclared_files() uses
standalone_path for cores the platform runs standalone, filters by
mode: libretro/standalone per file.
batocera.yml gains standalone_cores (92 entries from configgen-defaults).
generate_readme.py dynamically lists platforms from registry.
3 profiles updated for standalone type/path (mame, hatari, mupen64plus_next).
78 E2E tests pass, pipeline verified.
2026-03-26 00:44:21 +01:00
Abdessamad Derraz
44dc946217
docs: add romm to platform references
2026-03-25 23:19:52 +01:00
Abdessamad Derraz
d2cc9b8f29
feat: add doom engine wad files, emulatorjs base config
2026-03-25 23:12:53 +01:00
Abdessamad Derraz
1ad10eddb7
feat: include platform version in pack filenames
2026-03-25 18:55:35 +01:00
Abdessamad Derraz
69131f4ad1
fix: emulator validation is informational, not a platform failure
2026-03-25 17:34:56 +01:00
Abdessamad Derraz
c61d40d8ef
docs: rewrite readme for clarity and discoverability
2026-03-25 17:18:43 +01:00
Abdessamad Derraz
82ed2c5e62
fix: deploy-pages v5 does not exist, revert to v4
2026-03-25 16:57:01 +01:00
Abdessamad Derraz
38059e0fdf
chore: regenerate database, readme, mkdocs nav
2026-03-25 16:49:49 +01:00
Abdessamad Derraz
dfd8f8657c
feat: re-profile 4 emulators, add ymir
2026-03-25 16:49:49 +01:00
Abdessamad Derraz
4b09205bc9
fix: zero warnings on mkdocs build, update actions to v4/v5
2026-03-25 16:30:08 +01:00
Abdessamad Derraz
c5b267a6fb
fix: anchor mismatches in platform and emulator index pages
2026-03-25 16:23:25 +01:00
Abdessamad Derraz
851f53ba7f
refactor: extract wiki to source files, use deploy-pages action
2026-03-25 16:02:11 +01:00
Abdessamad Derraz
6e237e3b6d
chore: regenerate database, readme, mkdocs nav
2026-03-25 15:54:17 +01:00
Abdessamad Derraz
9765bbc3da
feat: add site deploy workflow, triggers only on content changes
2026-03-25 15:53:20 +01:00
Abdessamad Derraz
5529f8474a
chore: regenerate database and readme
2026-03-25 15:41:46 +01:00
Abdessamad Derraz
8a8765c0ee
feat: re-profile 9 emulators, add 9 vice machine profiles
2026-03-25 15:41:36 +01:00
Abdessamad Derraz
a6150a43bd
feat: group emulators by classification, slim mkdocs nav, add pymdownx extensions
2026-03-25 15:29:58 +01:00
Abdessamad Derraz
0196fff8c7
feat: improve site UX (quick start, system summary, collapsible sections, wiki index, actionable gaps)
2026-03-25 15:24:38 +01:00
Abdessamad Derraz
904edd65e4
docs: document CI workflows, inheritance, MAME clones, tests, scrapers
2026-03-25 15:14:29 +01:00
Abdessamad Derraz
02a7c58fca
docs: complete wiki coverage, document all scripts and edge cases
2026-03-25 15:02:23 +01:00
Abdessamad Derraz
f8a325260f
feat: add wiki pages (architecture, tools, profiling, data model)
2026-03-25 14:56:37 +01:00
Abdessamad Derraz
313637663a
docs: soften tone, explain methodology without dismissing other sources
2026-03-25 14:51:57 +01:00
Abdessamad Derraz
593466b655
feat: add methodology and ground truth narrative to readme and site
2026-03-25 14:50:09 +01:00
Abdessamad Derraz
23d76d54fd
fix: correct rendering of complex YAML fields in site pages
2026-03-25 14:38:40 +01:00
Abdessamad Derraz
1cd43c3224
feat: exploit 100% of emulator YAML fields in site generation
2026-03-25 14:32:48 +01:00
Abdessamad Derraz
b3c1462a5e
feat: exploit all emulator YAML fields in site generation
2026-03-25 14:28:02 +01:00
Abdessamad Derraz
75bfd04687
feat: full cross-linking web between all site pages
2026-03-25 14:17:10 +01:00
Abdessamad Derraz
3d2762bbc3
feat: cross-reference platform -> core -> systems -> upstream
2026-03-25 14:03:36 +01:00
Abdessamad Derraz
0f4fed2f47
feat: enrich site with full YAML data, cross-references, classification stats
2026-03-25 13:56:28 +01:00
Abdessamad Derraz
dbc26b11c1
refactor: move fetch_large_file to common, auto-download on db rebuild
2026-03-25 13:19:12 +01:00
Abdessamad Derraz
910428c6f1
fix: resolve large files from cache in database paths
2026-03-25 12:52:20 +01:00
Abdessamad Derraz
21465effff
feat: add readme and site generation to pipeline
2026-03-25 12:34:03 +01:00
Abdessamad Derraz
3cba6b5c01
chore: disable build workflow until validated
2026-03-25 12:27:29 +01:00
Abdessamad Derraz
cfec0c614f
Revert "chore: disable auto-trigger on push, manual release only"
...
This reverts commit d4e5af2c74 .
2026-03-25 12:26:39 +01:00
Abdessamad Derraz
d4e5af2c74
chore: disable auto-trigger on push, manual release only
2026-03-25 12:25:44 +01:00
Abdessamad Derraz
f27b3b6caf
refactor: simplify build workflow, remove auto-commit
2026-03-25 12:25:13 +01:00
Abdessamad Derraz
47e6174ed4
fix: pack naming, large file preservation, discrepancy reporting
2026-03-25 12:23:40 +01:00
Abdessamad Derraz
a7bcd9b252
feat: re-profile 20 emulators, add trident and vice_x128
2026-03-25 12:23:32 +01:00
Abdessamad Derraz
93b071730a
fix: fallback to system tempdir for zip normalization
2026-03-25 08:38:06 +01:00
Abdessamad Derraz
ebb55a445b
feat: re-profile 40 emulators, harden CI workflows
...
profile emulators pd777 through tic80, add frozen snapshots
(puae2021, snes9x2002/2005/2010, stella2014/2023).
CI: replace github-script with gh CLI, add test execution,
job-level permissions, propagate changed output, pin jsonschema.
2026-03-25 07:00:17 +01:00
Abdessamad Derraz
0543165ed2
feat: re-profile 22 emulators, refactor validation to common.py
...
batch re-profiled nekop2 through pokemini. mupen64plus renamed to
mupen64plus_next. new profiles: nes, mupen64plus_next.
validation functions (_build_validation_index, check_file_validation)
consolidated in common.py — single source of truth for verify.py
and generate_pack.py. pipeline 100% consistent on all 6 platforms.
2026-03-24 22:31:22 +01:00
Abdessamad Derraz
94000bdaef
fix: align verify and pack validation, pipeline 100% consistent
...
generate_pack.py now applies emulator-level validation (crc32, sha1,
adler32) matching verify.py behavior. existence mode: validation is
informational (file present = OK). md5 mode: validation downgrades
to UNTESTED. clone resolution moved to common.py resolve_local_file.
all 6 platforms pass consistency check.
2026-03-24 22:21:47 +01:00
Abdessamad Derraz
ae4846550f
fix: clone resolution in common.py, move clone map to root
...
moved _mame_clones.json out of bios/ (was indexed by generate_db.py
as BIOS file). clone resolution now in common.py resolve_local_file
so all tools (verify, pack, cross_reference) resolve clones
transparently. removed duplicate clone code from generate_pack.py.
added error handling on os.remove in dedup.py. consistency check
now passes for Batocera/EmuDeck/Lakka/RetroArch (4/6 platforms).
2026-03-24 21:57:49 +01:00
Abdessamad Derraz
85308edd73
fix: dedup edge cases — preserve non-ZIP different-name files
...
non-ZIP files with different names but same content (64DD_IPL_US.n64
vs IPL_USA.n64) are now preserved — each name may be needed by a
different emulator. only same-name duplicates and MAME ZIP clones
are removed. added empty directory cleanup post-dedup.
2026-03-24 21:39:25 +01:00
Abdessamad Derraz
fb1007496d
chore: deduplicate bios/ — remove 427 files, save 227 MB
...
true duplicates (same file in multiple dirs): removed copies, kept
canonical. MAME device clones (different names, identical content):
removed copies, created _mame_clones.json mapping for pack-time
assembly via deterministic ZIP rebuild. generate_pack.py resolves
clones transparently. 95 canonical ZIPs serve 392 clone names.
2026-03-24 21:35:50 +01:00
Abdessamad Derraz
8fcb86ba35
feat: deterministic MAME ZIP assembly in packs
...
all ZIP files (neogeo.zip, pgm.zip, etc.) are rebuilt with fixed
metadata before packing: sorted filenames, epoch timestamps, fixed
permissions, deflate level 9. same ROM atoms = same ZIP hash, always.
115 internal ZIPs verified identical across two independent builds.
enables version-agnostic ZIP assembly from ROM atoms indexed by CRC32.
2026-03-24 15:17:12 +01:00
Abdessamad Derraz
34e4c36f1c
feat: pack integrity verification, manifests, SHA256SUMS
...
post-generation verification: reopen each ZIP, hash every file,
check against database.json. inject manifest.json inside each pack
(self-documenting: path, sha1, md5, size, status per file).
generate SHA256SUMS.txt alongside packs for download verification.
validation index now uses sets for hashes and sizes to support
multiple valid ROM versions (MT-32 v1.04-v2.07, CM-32L variants).
69 tests pass, pipeline complete.
2026-03-24 14:56:02 +01:00
Abdessamad Derraz
69987cc0bb
feat: re-profile 30 emulators, beetle to parallel_n64
...
source-verified: mesen FdsBios.bin→alias, MesenDB.txt phantom (embedded).
mupen64plus 64DD_IPL.bin→IPL.n64 (code path fix). neocd 000-lo.lo/ng-lo.rom
phantoms (algorithmically generated). new profiles: mesen-s, mupen64plus
next develop/gles2/gles3. regenerate database.
2026-03-24 14:06:20 +01:00
Abdessamad Derraz
cda012b10a
fix: source-verified corrections from review
...
dosbox/dosbox_pure: added validation: [sha1, size] to MT-32 ROM
entries — MUNT rejects unrecognized SHA1 (ROMInfo.cpp:171-180).
duckstation: fixed BIOS count to 105 (24 PS1 + 80 PS2 + 1 OpenBIOS).
added exclusion_note to 6 profiles with files: [] (dosbox_svn,
dosbox_svn_ce, doukutsu_rs, emux_chip8, emux_nes, fake08).
2026-03-24 12:21:32 +01:00
Abdessamad Derraz
491ea2f9ba
fix: source-verified corrections on 7 profiles
...
beetle_pce: +core_classification, +upstream, cores=[mednafen_pce],
alt_names→aliases. 6 files confirmed loaded by code.
mame: removed 19 phantom XaviX entries (MACHINE_IS_BIOS_ROOT commented
out in source). 80 real BIOS sets verified.
mame2010: fixed galgbios.zip source_ref, documented cheat.zip as
non-functional in libretro port (cheatpath never initialized).
ishiiruka: trimmed verbose advisory notes to factual descriptions.
mamearcade: added system: field to 29 bios_zip entries, 24 new systems.
mednafen_ngp: removed redundant cores: on alias, added note:.
mednafen_gba: normalized validation format to flow sequence.
2026-03-24 12:17:45 +01:00
Abdessamad Derraz
11db9892bf
feat: add sha256 validation support to verify.py
2026-03-24 11:49:58 +01:00
Abdessamad Derraz
685713a7e6
feat: add sect233r1 ECDSA verification for 3DS OTP cert
...
pure python GF(2^233) field arithmetic, binary curve point operations,
and ECDSA-SHA256 on sect233r1. verifies OTP CTCert against nintendo
root CA public key. zero dependencies. sign+verify round-trip tested,
n*G=O verified, wrong key/message rejection confirmed.
2026-03-24 11:45:16 +01:00
Abdessamad Derraz
ef25f8cebf
feat: re-profile 40 emulators from fbalpha2012 to holani
...
batch re-profiled beetle, holani, kronos, mame variants, mednafen
cores with upstream verification. beetle_pce, mame, mame2010 excluded
(regressions detected, need manual review).
2026-03-24 11:36:58 +01:00
Abdessamad Derraz
d4849681a7
feat: add 3DS signature/crypto verification to verify.py
...
pure python RSA-2048 PKCS1v15 SHA256 for SecureInfo_A,
LocalFriendCodeSeed_B, movable.sed. AES-128-CBC + SHA256 for otp.bin.
keys extracted from azahar default_keys.h, added RSA/ECC sections
to aes_keys.txt. sect233r1 ECC not reproducible (binary field curve).
2026-03-24 11:36:29 +01:00
Abdessamad Derraz
8141a34faa
feat: full ground truth validation in verify.py
...
adler32 hash via zlib.adler32(), min_size/max_size range checks,
signature/crypto tracked as non-reproducible (console-specific keys).
compute_hashes now returns adler32. 69 tests pass including 3 new
tests for adler32, size ranges, and crypto tracking.
2026-03-24 11:11:38 +01:00
Abdessamad Derraz
470bb6ceb9
feat: support min_size/max_size validation in verify.py
...
reproduces ground truth size checks from emulator profiles: exact
size, min_size lower bound, max_size upper bound. all 66 tests pass.
2026-03-24 10:53:01 +01:00
Abdessamad Derraz
ef365c6680
fix: restore 4 neo-geo BIOS removed by batch re-profile
...
trackball BIOS (236-bios.sp1, 236-bios_japan_hack.sp1) for irrmaze,
PCB BIOS (sp-4x.sp1, spj.sp1) for ms5pcb/svcpcb/kf2k3pcb. all carry
BRF_ESS flag in d_neogeo.cpp, verified against source.
2026-03-24 10:43:35 +01:00
Abdessamad Derraz
4c1caea621
feat: re-profile 40 emulators from fbalpha2012 to holani
2026-03-24 09:33:06 +01:00
Abdessamad Derraz
65b6ab9354
feat: re-profile 14 emulators, add dosbox and ep128emu_core
...
batch re-profiled dosbox_pure through fbalpha2012_cps1 with upstream
verification. new profiles: dosbox, ep128emu_core. regenerate database.
2026-03-23 15:04:43 +01:00
Abdessamad Derraz
7dce7499d0
feat: re-profile dosbox_core with full rom variant coverage
...
munt SHA1-identified rom variants (8 control + 3 cm32l + 2 pcm),
correct type: libretro, upstream to original dosbox sourceforge.
2026-03-23 12:40:03 +01:00
Abdessamad Derraz
438fb6e9af
feat: re-profile 12 emulators, fix dosbox_core regression
...
batch re-profiled clownmdemu through dosbox_core with upstream
verification. restored dosbox_core mt-32/cm-32l rom halves removed
by batch (14 files), added core_classification. regenerate database.
2026-03-23 12:37:43 +01:00
Abdessamad Derraz
2612e9fe2d
fix: restore dolphin profile files removed by batch
...
re-profile had incorrectly removed 25 files as "niche" or "standalone-only".
restored: wii system files, nand backup, ssl certs, realtek bt firmware,
gecko codehandler, wii system menu. kept new additions: cores, upstream,
core_classification, validation on dsp roms.
2026-03-23 12:30:26 +01:00
Abdessamad Derraz
88381b3b2c
fix: remove incorrect size validation from desmume firmware.bin
2026-03-23 11:47:35 +01:00
Abdessamad Derraz
78fa5c3d0f
feat: re-profile citra, regenerate database
2026-03-23 11:02:53 +01:00
Abdessamad Derraz
26f2824259
feat: re-profile 37 emulators with upstream verification
...
source-verified core_classification, upstream URLs, validation fields,
and hle_fallback flags. trimmed verbose notes. removed phantom files
(azahar boot9/sector0x96). added bsnes2014 variant profiles.
2026-03-23 10:58:32 +01:00
Abdessamad Derraz
06f5157c35
feat: profile mame, mame2010, mame2015, mame2016, fix aliases
...
source-verified BIOS root sets for all MAME cores:
- mame (0.286): 99 sets, official_port, new profile
- mame2010 (0.139): 51 sets, remove cvs.zip phantom
- mame2015 (0.160): 69 sets, replace false mame2016 alias
- mame2016 (0.174): 69 sets, fix 3 phantoms, add 2 missing
- mamearcade/mamemess: fix alias_of mame2016 to mame
2026-03-22 22:30:11 +01:00
Abdessamad Derraz
4883520dbf
feat: profile mame2000, migrate bios_zips to structured files
...
Replace bios_zips section with structured files entries (category:
bios_zip, contents: with name/description/size/crc32) across all 4
MAME profiles. Profile mame2000 from source (was false alias of
mame2003_plus). Adds neogeo.zip, decocass.zip, hiscore.dat, cheat.dat.
2026-03-22 19:57:30 +01:00
Abdessamad Derraz
c342b61cdf
feat: profile jumpnbump, kronos, lowresnx, lutro, m2000
...
add core_classification and upstream to all five profiles. kronos:
add ROM cartridge files (mpr-18811-mx.ic1, mpr-19367-mx.ic1), add
archive: field to STV blobs, remove unverified MD5 hashes, fix
cores list (remove yabause_libretro). jumpnbump: fix incorrect
note about embedded data. lowresnx, lutro, m2000: add missing
classification fields.
2026-03-22 14:39:47 +01:00
Abdessamad Derraz
1d350f0578
feat: add emulator/system pack generation, validation checks, path resolution
...
add --emulator, --system, --standalone, --list-emulators, --list-systems
to verify.py and generate_pack.py. packs are RTU with data directories,
regional BIOS variants, and archive support.
validation: field per file (size, crc32, md5, sha1) with conflict
detection. by_path_suffix index in database.json for regional variant
resolution via dest_hint. restructure GameCube IPL to regional subdirs.
66 E2E tests, full pipeline verified.
2026-03-22 14:02:20 +01:00
Abdessamad Derraz
d2adde9846
feat: update 47 emulator profiles with core_classification and fixes
...
add core_classification, cores, upstream fields. fix false aliases
(fixnes, fsuae, gearboy, higan_sfc, higan_sfc_balanced, potator,
quicknes). add new profiles (fbneo_neogeo, flycast_gles2,
genesis_plus_gx_wide). remove verbose notes and disclaimers.
2026-03-22 14:01:38 +01:00
Abdessamad Derraz
74f17694c2
feat: add category field to emulator profiles, source missing BIOS
...
Add category: game_data to sdlpal, nxengine, opentyrian, easyrpg,
mkxp_z profiles. verify.py separates game_data from bios in core
gap metrics for cleaner coverage numbers.
New BIOS files: Cemu fonts (4), QEMU bios-256k + vgabios-stdvga,
GAM4980 ROMs (2), SC-3000 Export variant.
2026-03-21 07:37:22 +01:00
Abdessamad Derraz
13a2938dc7
fix: correct 338 retrodeck hashes (sha1 truncation + stale mame 0.285)
2026-03-20 23:40:09 +01:00
Abdessamad Derraz
27df5c8fb5
fix: resolve case collisions on case-insensitive filesystems
...
Move 17 case-colliding BIOS variants to .variants/ so Windows
and macOS clones no longer lose files. Existence-based platforms
keep the primary, MD5-based platforms resolve from .variants/.
Also fix resolve_local_file zipped_file resolution: when multiple
ZIPs share a name, verify the inner ROM exists before accepting
a candidate. Fixes adam_fdc.zip resolving to the wrong archive.
2026-03-20 20:02:42 +01:00
Abdessamad Derraz
30c104ac8e
fix: correct Jaguar BIOS MD5 in retrodeck platform
2026-03-20 13:05:09 +01:00
Abdessamad Derraz
59ee9088fa
chore: add Atari 1450XLD OS Rev 3 (1984-03-27)
2026-03-20 12:52:34 +01:00
Abdessamad Derraz
1c9261d304
chore: add Atari 1450XLD, Arabic 65XE, compiled OS
2026-03-20 10:04:06 +01:00
Abdessamad Derraz
4a76c5ca15
chore: add Atari OS-A NTSC, XEGS, doc format ares
2026-03-20 09:50:59 +01:00
Abdessamad Derraz
7b712ca089
chore: add Game Master, MSX, Atari BIOS files
2026-03-20 07:06:11 +01:00
Abdessamad Derraz
789ff0a32b
chore: add MAME and RetroDECK ROM sets
2026-03-20 06:52:57 +01:00
Abdessamad Derraz
21bc225cac
fix: resolve truncated md5 in batocera scraper
...
Batocera upstream has a truncated 29-char MD5 for zx48.rom.
The scraper now resolves truncated hashes via prefix match
against database.json, preventing schema validation failures.
2026-03-19 23:52:25 +01:00