From 9e184f76fc7df82aa9a52d3cec3c4c77d529863f Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Thu, 2 Apr 2026 07:39:30 +0200 Subject: [PATCH] fix: swanstation ps1_rom.bin accepts multiple sizes SwanStation accepts PS1 (512KB), PS2 (4MB), and PS3 (0x3E66F0) BIOS sizes but only uses the first 512KB. MD5 validates the extracted content, not the full file. List all accepted sizes to eliminate the false size mismatch discrepancy. validation.py: support size as list in emulator profiles. generate_site.py: handle list sizes in emulator page display. All 18 original hash mismatches are now resolved: 0 discrepancies. --- emulators/swanstation.yml | 7 ++++--- scripts/generate_site.py | 5 ++++- scripts/validation.py | 8 ++++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/emulators/swanstation.yml b/emulators/swanstation.yml index bbc5aaa5..583b3fc4 100644 --- a/emulators/swanstation.yml +++ b/emulators/swanstation.yml @@ -70,11 +70,12 @@ files: aliases: [] - name: "ps1_rom.bin" - description: "PS3 (v5.0 06-23-03 A)" + description: "PS3 embedded PS1 BIOS (v5.0 06-23-03 A)" region: "Auto" required: false md5: "81bbe60ba7a3d1cea1d48c14cbcc647b" - size: 4089584 + size: [524288, 4194304, 4089584] validation: [size, md5] - source_ref: "src/core/bios.cpp:70" + note: "Accepts PS1 (512KB), PS2 (4MB), and PS3 (0x3E66F0) sizes. Only first 512KB used." + source_ref: "src/core/bios.h:9, src/core/bios.cpp:70,83" aliases: [] diff --git a/scripts/generate_site.py b/scripts/generate_site.py index f555a4a4..01721ee5 100644 --- a/scripts/generate_site.py +++ b/scripts/generate_site.py @@ -1176,7 +1176,10 @@ def generate_emulator_page( if fsystem: details.append(f"System: {_system_link(fsystem, '../')}") if size: - size_str = _fmt_size(size) + if isinstance(size, list): + size_str = " / ".join(_fmt_size(s) for s in size) + else: + size_str = _fmt_size(size) if fmin or fmax: bounds = [] if fmin: diff --git a/scripts/validation.py b/scripts/validation.py index 150dc8b8..5e75a4db 100644 --- a/scripts/validation.py +++ b/scripts/validation.py @@ -102,8 +102,12 @@ def _build_validation_index(profiles: dict) -> dict[str, dict]: index[fname]["crypto_only"].update(c for c in checks if c in _CRYPTO_CHECKS) # Size checks if "size" in checks: - if f.get("size") is not None: - index[fname]["sizes"].add(f["size"]) + raw_size = f.get("size") + if raw_size is not None: + if isinstance(raw_size, list): + index[fname]["sizes"].update(raw_size) + else: + index[fname]["sizes"].add(raw_size) if f.get("min_size") is not None: cur = index[fname]["min_size"] index[fname]["min_size"] = (