Abdessamad Derraz
29749898f8
fix: correct sc3000, plus3 and plus3e hashes in platform configs
2026-03-27 17:47:39 +01:00
Abdessamad Derraz
59d7582c0e
fix: swap sc3000.zip primary to batocera-compatible dump
2026-03-27 16:50:10 +01:00
Abdessamad Derraz
e94ce6b194
feat: source 10 missing bios variants for romm and retrobat coverage
2026-03-27 16:00:10 +01:00
Abdessamad Derraz
181248b6db
fix: case-sensitive packs for linux platforms, remove empty bios placeholder
2026-03-27 12:58:08 +01:00
Abdessamad Derraz
a117b13b49
fix: data directory path construction avoids double slash duplicates
2026-03-27 12:42:21 +01:00
Abdessamad Derraz
8f1c7e47de
fix: emudeck scraper outputs cores field, base_scraper uses generate_platform_yaml
2026-03-27 12:27:51 +01:00
Abdessamad Derraz
106130ca52
refactor: extract _norm_system_id, apply to resolve_platform_cores fallback
2026-03-27 12:23:18 +01:00
Abdessamad Derraz
79f2d82072
feat: add batocera standalone overrides for wine-dependent emulators
2026-03-27 12:18:08 +01:00
Abdessamad Derraz
c8cba9d519
fix: add beetle_supergrafx, caprice32, mess2016 aliases
2026-03-27 12:00:27 +01:00
Abdessamad Derraz
6b87c75e11
fix: add upstream buildbot aliases to 18 emulator profiles
2026-03-27 11:57:10 +01:00
Abdessamad Derraz
21fa98c82f
fix: add missing buildbot aliases to avoid false target skips
2026-03-27 11:43:29 +01:00
Abdessamad Derraz
1bde69f173
fix: add mednafen_wswan alias to beetle_wswan profile
2026-03-27 11:26:47 +01:00
Abdessamad Derraz
5d6760d120
fix: populate romm target cores, normalize system IDs in filter
2026-03-27 11:15:41 +01:00
Abdessamad Derraz
17631f741c
fix: normalize system IDs for target filtering cross-platform matching
2026-03-27 11:14:24 +01:00
Abdessamad Derraz
cdc71525d0
feat: add emulator profiles and update docs
2026-03-27 10:29:38 +01:00
Abdessamad Derraz
74f48b8881
Add emulator profiles and update docs
...
Add new emulator profiles (ares, BigPEmu, Eden, Model2, PrimeHack, Supermodel, Suyu, Xenia Canary, Yuzu) under emulators/*.yml with metadata, notes, file lists and exclusion/hle details. Update README counts (emulators/systems/files summary and auto-generated timestamp) and bump generated_at in database.json. Adjust mkdocs.yml navigation counts and add Yuzu entry to the Emulators nav.
2026-03-26 13:22:11 +01:00
Abdessamad Derraz
0a1880f606
fix: filter baseline by platform-scoped cores, include retroarch cores in emudeck targets
2026-03-26 10:20:43 +01:00
Abdessamad Derraz
6402b77374
fix: filter baseline systems by target-available cores
2026-03-26 09:54:28 +01:00
Abdessamad Derraz
a3de47dd88
fix: normalize core names in emudeck and retropie scrapers
2026-03-26 09:44:11 +01:00
Abdessamad Derraz
7e8491fdf7
fix: resolve upstream core names to profile keys via reverse index
2026-03-26 09:42:08 +01:00
Abdessamad Derraz
bccea60f8d
fix: add vita via recipe, rewrite retropie scraper via github api
2026-03-26 09:32:22 +01:00
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