fix: exclusion reasons from YAML, not hardcoded in Python

Added exclusion_note field to emulator profiles. verify.py reads
this field instead of parsing notes text with fragile keywords.

desmume2015: explains .info vs code discrepancy
dolphin_launcher: explains standalone BIOS management

All exclusion messages now come from YAML data, not Python strings.
This commit is contained in:
Abdessamad Derraz
2026-03-19 13:17:55 +01:00
parent eb21d214ab
commit e1410ef4a6
3 changed files with 11 additions and 11 deletions
+1 -1
View File
@@ -6,11 +6,11 @@ core_version: "SVN (2015 snapshot)"
display_name: "Nintendo - DS (DeSmuME 2015)" display_name: "Nintendo - DS (DeSmuME 2015)"
cores: [desmume2015] cores: [desmume2015]
systems: [nintendo-ds] systems: [nintendo-ds]
exclusion_note: ".info declares firmware_count=3 but code never loads external BIOS (desmume_use_external_bios absent)"
notes: | notes: |
Frozen 2015 snapshot of DeSmuME. The external BIOS loading feature Frozen 2015 snapshot of DeSmuME. The external BIOS loading feature
(desmume_use_external_bios) does NOT exist in this version. (desmume_use_external_bios) does NOT exist in this version.
The .info declares firmware_count=3 but the code never loads them.
Verified: libretro.cpp has no bios7/bios9/firmware path construction. Verified: libretro.cpp has no bios7/bios9/firmware path construction.
ref: desmume2015/desmume/src/frontend/libretro/libretro.cpp ref: desmume2015/desmume/src/frontend/libretro/libretro.cpp
+1
View File
@@ -1,5 +1,6 @@
emulator: "Dolphin Launcher" emulator: "Dolphin Launcher"
type: launcher type: launcher
exclusion_note: "stub core calls standalone Dolphin — all BIOS in Dolphin's own directory"
source: "https://github.com/RobLoach/libretro-dolphin-launcher" source: "https://github.com/RobLoach/libretro-dolphin-launcher"
profiled_date: "2026-03-18" profiled_date: "2026-03-18"
core_version: "1.2.0" core_version: "1.2.0"
+9 -10
View File
@@ -286,19 +286,18 @@ def find_exclusion_notes(
if profile.get("type") == "launcher": if profile.get("type") == "launcher":
notes.append({ notes.append({
"emulator": emu_display, "reason": "launcher", "emulator": emu_display, "reason": "launcher",
"detail": "BIOS managed by standalone emulator, not system_dir", "detail": profile.get("exclusion_note", "BIOS managed by standalone emulator"),
}) })
continue continue
# Frozen snapshot with empty files # Profile-level exclusion note (frozen snapshots, etc.)
if not profile.get("files") and profile.get("notes"): exclusion_note = profile.get("exclusion_note")
note_text = profile.get("notes", "") if exclusion_note:
if "frozen" in note_text.lower() or "snapshot" in note_text.lower() or "never loads" in note_text.lower(): notes.append({
notes.append({ "emulator": emu_display, "reason": "exclusion_note",
"emulator": emu_display, "reason": "frozen_snapshot", "detail": exclusion_note,
"detail": "code does not load external firmware despite .info declaration", })
}) continue
continue
# Count standalone-only files # Count standalone-only files
standalone_files = [f for f in profile.get("files", []) if f.get("mode") == "standalone"] standalone_files = [f for f in profile.get("files", []) if f.get("mode") == "standalone"]