From b7528a71e70d91dd81e0b2274385515127349e13 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Sun, 29 Mar 2026 09:53:46 +0200 Subject: [PATCH] fix: correct type and path fields across 58 emulator profiles 49 libretro cores had type: game/utility/test instead of type: libretro, breaking the all_libretro filtering in resolve_platform_cores and excluding them from platform packs (e.g. cannonball missing from RetroArch). core_classification already carries the descriptive role. 9 profiles with subdirectory-loading cores (cannonball/, nxengine/, Citra/sysdata/, mame2003/, mame2003-plus/, mame2010/) now have path: fields so cross-reference places files at the correct destination. resolve_local_file now tries basename when name contains a path separator (e.g. res/tilemap.bin -> tilemap.bin), fixing resolution of files with subdirectory names. --- emulators/00_example.yml | 2 +- emulators/2048.yml | 2 +- emulators/3dengine.yml | 2 +- emulators/advanced_tests.yml | 2 +- emulators/anarch.yml | 2 +- emulators/cannonball.yml | 44 +++++++++++++++++++++++++- emulators/chailove.yml | 2 +- emulators/citra.yml | 4 +++ emulators/citra2018.yml | 2 ++ emulators/citra_canary.yml | 2 ++ emulators/craft.yml | 2 +- emulators/dinothawr.yml | 2 +- emulators/ffmpeg.yml | 2 +- emulators/gme.yml | 2 +- emulators/gong.yml | 2 +- emulators/imageviewer.yml | 2 +- emulators/jumpnbump.yml | 2 +- emulators/lutro.yml | 2 +- emulators/mame2003.yml | 4 +++ emulators/mame2003_midway.yml | 4 +++ emulators/mame2003_plus.yml | 4 +++ emulators/mame2010.yml | 2 ++ emulators/mcsoftserve.yml | 2 +- emulators/moonlight.yml | 2 +- emulators/mpv.yml | 2 +- emulators/mrboom.yml | 2 +- emulators/nxengine.yml | 5 +++ emulators/onsyuri.yml | 2 +- emulators/pascal_pong.yml | 2 +- emulators/pocketcdg.yml | 2 +- emulators/puzzlescript.yml | 2 +- emulators/redbook.yml | 2 +- emulators/remotejoy.yml | 2 +- emulators/romcleaner.yml | 2 +- emulators/stonesoup.yml | 2 +- emulators/superbroswar.yml | 2 +- emulators/syobonaction.yml | 2 +- emulators/test.yml | 2 +- emulators/test_netplay.yml | 2 +- emulators/testaudio_callback.yml | 2 +- emulators/testaudio_no_callback.yml | 2 +- emulators/testaudio_playback_wav.yml | 2 +- emulators/testgl.yml | 2 +- emulators/testgl_compute_shaders.yml | 2 +- emulators/testgl_ff.yml | 2 +- emulators/testinput_buttontest.yml | 2 +- emulators/testretroluxury.yml | 2 +- emulators/testsw.yml | 2 +- emulators/testsw_vram.yml | 2 +- emulators/testvulkan.yml | 2 +- emulators/testvulkan_async_compute.yml | 2 +- emulators/thepowdertoy.yml | 2 +- emulators/uw8.yml | 2 +- emulators/vidtest.yml | 2 +- emulators/vitaquake3.yml | 2 +- emulators/vitavoyager.yml | 2 +- emulators/wasm4.yml | 2 +- scripts/common.py | 7 ++++ 58 files changed, 125 insertions(+), 49 deletions(-) diff --git a/emulators/00_example.yml b/emulators/00_example.yml index f199c9dc..a2b9974d 100644 --- a/emulators/00_example.yml +++ b/emulators/00_example.yml @@ -1,5 +1,5 @@ emulator: "00_example" -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-core-info" profiled_date: "2026-03-22" diff --git a/emulators/2048.yml b/emulators/2048.yml index 87abd32d..0cabe117 100644 --- a/emulators/2048.yml +++ b/emulators/2048.yml @@ -1,5 +1,5 @@ emulator: "2048" -type: game +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-2048" upstream: "https://github.com/gabrielecirulli/2048" diff --git a/emulators/3dengine.yml b/emulators/3dengine.yml index 8efd38bd..8fb2f3ec 100644 --- a/emulators/3dengine.yml +++ b/emulators/3dengine.yml @@ -1,5 +1,5 @@ emulator: 3DEngine -type: utility +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-3dengine" upstream: "https://github.com/libretro/libretro-3dengine" diff --git a/emulators/advanced_tests.yml b/emulators/advanced_tests.yml index 225f1293..79ae95b6 100644 --- a/emulators/advanced_tests.yml +++ b/emulators/advanced_tests.yml @@ -1,5 +1,5 @@ emulator: advanced_tests -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: "https://github.com/libretro/libretro-samples" diff --git a/emulators/anarch.yml b/emulators/anarch.yml index 1b7745bd..e9937c33 100644 --- a/emulators/anarch.yml +++ b/emulators/anarch.yml @@ -1,5 +1,5 @@ emulator: Anarch -type: game +type: libretro core_classification: community_fork source: "https://codeberg.org/iyzsong/anarch-libretro" upstream: "https://gitlab.com/drummyfish/anarch" diff --git a/emulators/cannonball.yml b/emulators/cannonball.yml index c7208158..288e8b4a 100644 --- a/emulators/cannonball.yml +++ b/emulators/cannonball.yml @@ -1,5 +1,5 @@ emulator: Cannonball -type: game +type: libretro core_classification: game_engine source: "https://github.com/libretro/cannonball" upstream: "https://github.com/djyt/cannonball" @@ -40,6 +40,7 @@ files: # Master CPU ROMs (68000, Rev B) # ------------------------------------------------------- - name: "epr-10381a.132" + path: "cannonball/epr-10381a.132" system: sega-outrun category: game_data required: true @@ -51,6 +52,7 @@ files: source_ref: "src/main/roms.cpp:29" - name: "epr-10383b.117" + path: "cannonball/epr-10383b.117" system: sega-outrun category: game_data required: true @@ -61,6 +63,7 @@ files: source_ref: "src/main/roms.cpp:38" - name: "epr-10380b.133" + path: "cannonball/epr-10380b.133" system: sega-outrun category: game_data required: true @@ -71,6 +74,7 @@ files: source_ref: "src/main/roms.cpp:39" - name: "epr-10382b.118" + path: "cannonball/epr-10382b.118" system: sega-outrun category: game_data required: true @@ -84,6 +88,7 @@ files: # Slave CPU ROMs (68000, Rev A) # ------------------------------------------------------- - name: "epr-10327a.76" + path: "cannonball/epr-10327a.76" system: sega-outrun category: game_data required: true @@ -94,6 +99,7 @@ files: source_ref: "src/main/roms.cpp:44" - name: "epr-10329a.58" + path: "cannonball/epr-10329a.58" system: sega-outrun category: game_data required: true @@ -104,6 +110,7 @@ files: source_ref: "src/main/roms.cpp:45" - name: "epr-10328a.75" + path: "cannonball/epr-10328a.75" system: sega-outrun category: game_data required: true @@ -114,6 +121,7 @@ files: source_ref: "src/main/roms.cpp:46" - name: "epr-10330a.57" + path: "cannonball/epr-10330a.57" system: sega-outrun category: game_data required: true @@ -127,6 +135,7 @@ files: # Tile ROMs # ------------------------------------------------------- - name: "opr-10268.99" + path: "cannonball/opr-10268.99" system: sega-outrun category: game_data required: true @@ -137,6 +146,7 @@ files: source_ref: "src/main/roms.cpp:51" - name: "opr-10232.102" + path: "cannonball/opr-10232.102" system: sega-outrun category: game_data required: true @@ -147,6 +157,7 @@ files: source_ref: "src/main/roms.cpp:52" - name: "opr-10267.100" + path: "cannonball/opr-10267.100" system: sega-outrun category: game_data required: true @@ -157,6 +168,7 @@ files: source_ref: "src/main/roms.cpp:53" - name: "opr-10231.103" + path: "cannonball/opr-10231.103" system: sega-outrun category: game_data required: true @@ -167,6 +179,7 @@ files: source_ref: "src/main/roms.cpp:54" - name: "opr-10266.101" + path: "cannonball/opr-10266.101" system: sega-outrun category: game_data required: true @@ -177,6 +190,7 @@ files: source_ref: "src/main/roms.cpp:55" - name: "opr-10230.104" + path: "cannonball/opr-10230.104" system: sega-outrun category: game_data required: true @@ -190,6 +204,7 @@ files: # Road ROMs (identical pair, one per road layer) # ------------------------------------------------------- - name: "opr-10185.11" + path: "cannonball/opr-10185.11" system: sega-outrun category: game_data required: true @@ -200,6 +215,7 @@ files: source_ref: "src/main/roms.cpp:60" - name: "opr-10186.47" + path: "cannonball/opr-10186.47" system: sega-outrun category: game_data required: true @@ -213,6 +229,7 @@ files: # Sprite ROMs (interleaved 4-way) # ------------------------------------------------------- - name: "mpr-10371.9" + path: "cannonball/mpr-10371.9" system: sega-outrun category: game_data required: true @@ -223,6 +240,7 @@ files: source_ref: "src/main/roms.cpp:65" - name: "mpr-10373.10" + path: "cannonball/mpr-10373.10" system: sega-outrun category: game_data required: true @@ -233,6 +251,7 @@ files: source_ref: "src/main/roms.cpp:66" - name: "mpr-10375.11" + path: "cannonball/mpr-10375.11" system: sega-outrun category: game_data required: true @@ -243,6 +262,7 @@ files: source_ref: "src/main/roms.cpp:67" - name: "mpr-10377.12" + path: "cannonball/mpr-10377.12" system: sega-outrun category: game_data required: true @@ -253,6 +273,7 @@ files: source_ref: "src/main/roms.cpp:68" - name: "mpr-10372.13" + path: "cannonball/mpr-10372.13" system: sega-outrun category: game_data required: true @@ -263,6 +284,7 @@ files: source_ref: "src/main/roms.cpp:69" - name: "mpr-10374.14" + path: "cannonball/mpr-10374.14" system: sega-outrun category: game_data required: true @@ -273,6 +295,7 @@ files: source_ref: "src/main/roms.cpp:70" - name: "mpr-10376.15" + path: "cannonball/mpr-10376.15" system: sega-outrun category: game_data required: true @@ -283,6 +306,7 @@ files: source_ref: "src/main/roms.cpp:71" - name: "mpr-10378.16" + path: "cannonball/mpr-10378.16" system: sega-outrun category: game_data required: true @@ -296,6 +320,7 @@ files: # Z80 Sound ROM # ------------------------------------------------------- - name: "epr-10187.88" + path: "cannonball/epr-10187.88" system: sega-outrun category: game_data required: true @@ -309,6 +334,7 @@ files: # Sega PCM samples # ------------------------------------------------------- - name: "opr-10193.66" + path: "cannonball/opr-10193.66" system: sega-outrun category: game_data required: true @@ -319,6 +345,7 @@ files: source_ref: "src/main/roms.cpp:80" - name: "opr-10192.67" + path: "cannonball/opr-10192.67" system: sega-outrun category: game_data required: true @@ -329,6 +356,7 @@ files: source_ref: "src/main/roms.cpp:81" - name: "opr-10191.68" + path: "cannonball/opr-10191.68" system: sega-outrun category: game_data required: true @@ -339,6 +367,7 @@ files: source_ref: "src/main/roms.cpp:82" - name: "opr-10190.69" + path: "cannonball/opr-10190.69" system: sega-outrun category: game_data required: true @@ -349,6 +378,7 @@ files: source_ref: "src/main/roms.cpp:83" - name: "opr-10189.70" + path: "cannonball/opr-10189.70" system: sega-outrun category: game_data required: true @@ -359,6 +389,7 @@ files: source_ref: "src/main/roms.cpp:84" - name: "opr-10188.71" + path: "cannonball/opr-10188.71" system: sega-outrun category: game_data required: true @@ -372,6 +403,7 @@ files: # Optional: fixed PCM sample # ------------------------------------------------------- - name: "opr-10188.71f" + path: "cannonball/opr-10188.71f" system: sega-outrun category: game_data required: false @@ -385,6 +417,7 @@ files: # Optional: widescreen tilemap patches # ------------------------------------------------------- - name: "res/tilemap.bin" + path: "cannonball/res/tilemap.bin" system: sega-outrun category: game_data required: false @@ -392,6 +425,7 @@ files: source_ref: "src/main/engine/omusic.cpp:42-44" - name: "res/tilepatch.bin" + path: "cannonball/res/tilepatch.bin" system: sega-outrun category: game_data required: false @@ -402,6 +436,7 @@ files: # Japanese ROM variants (loaded when jap option enabled) # ------------------------------------------------------- - name: "epr-10380.133" + path: "cannonball/epr-10380.133" system: sega-outrun category: game_data required: false @@ -412,6 +447,7 @@ files: source_ref: "src/main/roms.cpp:104" - name: "epr-10382.118" + path: "cannonball/epr-10382.118" system: sega-outrun category: game_data required: false @@ -422,6 +458,7 @@ files: source_ref: "src/main/roms.cpp:105" - name: "epr-10381.132" + path: "cannonball/epr-10381.132" system: sega-outrun category: game_data required: false @@ -432,6 +469,7 @@ files: source_ref: "src/main/roms.cpp:106" - name: "epr-10383.117" + path: "cannonball/epr-10383.117" system: sega-outrun category: game_data required: false @@ -442,6 +480,7 @@ files: source_ref: "src/main/roms.cpp:107" - name: "epr-10327.76" + path: "cannonball/epr-10327.76" system: sega-outrun category: game_data required: false @@ -452,6 +491,7 @@ files: source_ref: "src/main/roms.cpp:110" - name: "epr-10329.58" + path: "cannonball/epr-10329.58" system: sega-outrun category: game_data required: false @@ -462,6 +502,7 @@ files: source_ref: "src/main/roms.cpp:111" - name: "epr-10328.75" + path: "cannonball/epr-10328.75" system: sega-outrun category: game_data required: false @@ -472,6 +513,7 @@ files: source_ref: "src/main/roms.cpp:112" - name: "epr-10330.57" + path: "cannonball/epr-10330.57" system: sega-outrun category: game_data required: false diff --git a/emulators/chailove.yml b/emulators/chailove.yml index 48071d2f..8c04dd73 100644 --- a/emulators/chailove.yml +++ b/emulators/chailove.yml @@ -1,5 +1,5 @@ emulator: ChaiLove -type: game +type: libretro core_classification: game_engine source: "https://github.com/libretro/libretro-chailove" upstream: "https://github.com/libretro/libretro-chailove" diff --git a/emulators/citra.yml b/emulators/citra.yml index f469074f..39fcf4cb 100644 --- a/emulators/citra.yml +++ b/emulators/citra.yml @@ -23,6 +23,7 @@ notes: | files: - name: aes_keys.txt + path: "Citra/sysdata/aes_keys.txt" system: nintendo-3ds description: "AES encryption keys" required: false @@ -30,6 +31,7 @@ files: note: "needed for encrypted games" - name: boot9.bin + path: "Citra/sysdata/boot9.bin" system: nintendo-3ds description: "ARM9 bootrom" required: false @@ -38,6 +40,7 @@ files: note: "expected size 65536 bytes, provides AES and RSA keys" - name: shared_font.bin + path: "Citra/sysdata/shared_font.bin" system: nintendo-3ds description: "system shared font (legacy format)" required: false @@ -46,6 +49,7 @@ files: note: "fallback to embedded open-source replacement font" - name: seeddb.bin + path: "Citra/sysdata/seeddb.bin" system: nintendo-3ds description: "game seed database" required: false diff --git a/emulators/citra2018.yml b/emulators/citra2018.yml index 721814f3..31d936c2 100644 --- a/emulators/citra2018.yml +++ b/emulators/citra2018.yml @@ -22,12 +22,14 @@ notes: | files: - name: aes_keys.txt + path: "Citra/sysdata/aes_keys.txt" system: nintendo-3ds required: false note: "AES encryption keys for decrypting 3DS content" source_ref: "src/core/hw/aes/key.cpp:72-76" - name: shared_font.bin + path: "Citra/sysdata/shared_font.bin" system: nintendo-3ds required: false hle_fallback: true diff --git a/emulators/citra_canary.yml b/emulators/citra_canary.yml index 9860c373..0903461a 100644 --- a/emulators/citra_canary.yml +++ b/emulators/citra_canary.yml @@ -27,12 +27,14 @@ notes: | files: - name: aes_keys.txt + path: "Citra/sysdata/aes_keys.txt" system: nintendo-3ds required: false note: "AES encryption keys for decrypting 3DS content" source_ref: "src/core/hw/aes/key.cpp:71-131" - name: shared_font.bin + path: "Citra/sysdata/shared_font.bin" system: nintendo-3ds required: false hle_fallback: true diff --git a/emulators/craft.yml b/emulators/craft.yml index 984184c6..eadc41f3 100644 --- a/emulators/craft.yml +++ b/emulators/craft.yml @@ -1,5 +1,5 @@ emulator: Craft -type: game +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/Craft" upstream: "https://github.com/fogleman/Craft" diff --git a/emulators/dinothawr.yml b/emulators/dinothawr.yml index 81c66f3a..1b58ff8d 100644 --- a/emulators/dinothawr.yml +++ b/emulators/dinothawr.yml @@ -1,5 +1,5 @@ emulator: Dinothawr -type: game +type: libretro core_classification: game_engine source: "https://github.com/libretro/Dinothawr" upstream: "https://github.com/libretro/Dinothawr" diff --git a/emulators/ffmpeg.yml b/emulators/ffmpeg.yml index 01acac27..75016459 100644 --- a/emulators/ffmpeg.yml +++ b/emulators/ffmpeg.yml @@ -1,5 +1,5 @@ emulator: FFmpeg -type: utility +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/FFmpeg" upstream: "https://www.ffmpeg.org/" diff --git a/emulators/gme.yml b/emulators/gme.yml index fdc99f17..8c1360df 100644 --- a/emulators/gme.yml +++ b/emulators/gme.yml @@ -1,5 +1,5 @@ emulator: Game Music Emu -type: utility +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-gme" upstream: "https://github.com/libgme/game-music-emu" diff --git a/emulators/gong.yml b/emulators/gong.yml index 77c73f29..812b32da 100644 --- a/emulators/gong.yml +++ b/emulators/gong.yml @@ -1,5 +1,5 @@ emulator: Gong -type: game +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/gong" upstream: "https://danzaidan.itch.io/" diff --git a/emulators/imageviewer.yml b/emulators/imageviewer.yml index 722814d3..1a747ea1 100644 --- a/emulators/imageviewer.yml +++ b/emulators/imageviewer.yml @@ -1,5 +1,5 @@ emulator: Image Viewer -type: utility +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/RetroArch/tree/master/cores/libretro-imageviewer" profiled_date: "2026-03-24" diff --git a/emulators/jumpnbump.yml b/emulators/jumpnbump.yml index 0f0b05de..25200dfe 100644 --- a/emulators/jumpnbump.yml +++ b/emulators/jumpnbump.yml @@ -1,5 +1,5 @@ emulator: Jump 'n Bump -type: game +type: libretro core_classification: game_engine source: "https://github.com/libretro/jumpnbump-libretro" upstream: "https://github.com/fabiangreffrath/jumpnbump" diff --git a/emulators/lutro.yml b/emulators/lutro.yml index 6d55663d..379cf43e 100644 --- a/emulators/lutro.yml +++ b/emulators/lutro.yml @@ -1,5 +1,5 @@ emulator: Lutro -type: game +type: libretro core_classification: game_engine source: "https://github.com/libretro/libretro-lutro" upstream: "https://github.com/libretro/libretro-lutro" diff --git a/emulators/mame2003.yml b/emulators/mame2003.yml index b66f0c3a..3156bfaf 100644 --- a/emulators/mame2003.yml +++ b/emulators/mame2003.yml @@ -47,24 +47,28 @@ notes: | files: # Data files (system_dir/mame2003/) - name: hiscore.dat + path: "mame2003/hiscore.dat" required: false category: game_data source_ref: "src/hiscore.c:14,248" note: "high score definitions, auto-generated if missing" - name: cheat.dat + path: "mame2003/cheat.dat" required: false category: game_data source_ref: "src/cheat.c:383,8249-8255" note: "cheat definitions, requires cheats core option enabled" - name: history.dat + path: "mame2003/history.dat" required: false category: game_data source_ref: "src/datafile.c:327,608" note: "game history and information database" - name: mameinfo.dat + path: "mame2003/mameinfo.dat" required: false category: game_data source_ref: "src/datafile.c:327,638" diff --git a/emulators/mame2003_midway.yml b/emulators/mame2003_midway.yml index 112b384c..9ddee7c0 100644 --- a/emulators/mame2003_midway.yml +++ b/emulators/mame2003_midway.yml @@ -25,24 +25,28 @@ notes: | files: - name: hiscore.dat + path: "mame2003/hiscore.dat" required: false category: game_data source_ref: "src/hiscore.c:18,225" note: "high score definitions, loaded from system_dir/mame2003/" - name: cheat.dat + path: "mame2003/cheat.dat" required: false category: game_data source_ref: "src/cheat.c:839,8597-8607" note: "cheat definitions, loaded from system_dir/mame2003/" - name: history.dat + path: "mame2003/history.dat" required: false category: game_data source_ref: "src/datafile.c:51,619-623" note: "game history database, loaded from system_dir/mame2003/" - name: mameinfo.dat + path: "mame2003/mameinfo.dat" required: false category: game_data source_ref: "src/datafile.c:52,649-653" diff --git a/emulators/mame2003_plus.yml b/emulators/mame2003_plus.yml index 18ee6e36..6283c3fb 100644 --- a/emulators/mame2003_plus.yml +++ b/emulators/mame2003_plus.yml @@ -62,24 +62,28 @@ notes: | files: # Data files (system_dir/mame2003-plus/) - name: hiscore.dat + path: "mame2003-plus/hiscore.dat" required: false category: game_data source_ref: "src/hiscore.c:15,248" note: "high score definitions, compiled into binary and spawned on first run" - name: cheat.dat + path: "mame2003-plus/cheat.dat" required: false category: game_data source_ref: "src/cheat.c:383,8249-8255" note: "cheat definitions, requires cheats core option enabled" - name: history.dat + path: "mame2003-plus/history.dat" required: false category: game_data source_ref: "src/datafile.c:327,608" note: "game history and information database" - name: mameinfo.dat + path: "mame2003-plus/mameinfo.dat" required: false category: game_data source_ref: "src/datafile.c:327,638" diff --git a/emulators/mame2010.yml b/emulators/mame2010.yml index cc653045..fbb87937 100644 --- a/emulators/mame2010.yml +++ b/emulators/mame2010.yml @@ -56,12 +56,14 @@ notes: | files: # Data files (system_dir/mame2010/) - name: hiscore.dat + path: "mame2010/hiscore.dat" required: false category: game_data source_ref: "src/emu/hiscore.c:25,353-358" note: "high score definitions, embedded in binary by default, external via core option mame-external_hiscore" - name: cheat.zip + path: "mame2010/cheat.zip" required: false category: game_data source_ref: "src/emu/cheat.c:1027" diff --git a/emulators/mcsoftserve.yml b/emulators/mcsoftserve.yml index b2df600a..f0018873 100644 --- a/emulators/mcsoftserve.yml +++ b/emulators/mcsoftserve.yml @@ -1,5 +1,5 @@ emulator: MCSoftserve -type: utility +type: libretro core_classification: pure_libretro source: "https://github.com/JesseTG/McSoftServe" profiled_date: "2026-03-24" diff --git a/emulators/moonlight.yml b/emulators/moonlight.yml index ab456b58..1e644409 100644 --- a/emulators/moonlight.yml +++ b/emulators/moonlight.yml @@ -1,5 +1,5 @@ emulator: Moonlight -type: utility +type: libretro core_classification: community_fork source: "https://github.com/rock88/moonlight-libretro" upstream: "https://github.com/moonlight-stream/moonlight-embedded" diff --git a/emulators/mpv.yml b/emulators/mpv.yml index 6b8b3c1b..12c30811 100644 --- a/emulators/mpv.yml +++ b/emulators/mpv.yml @@ -1,5 +1,5 @@ emulator: mpv -type: utility +type: libretro core_classification: community_fork source: "https://github.com/libretro/libretro-mpv" upstream: "https://github.com/mpv-player/mpv" diff --git a/emulators/mrboom.yml b/emulators/mrboom.yml index e27c093d..95632a04 100644 --- a/emulators/mrboom.yml +++ b/emulators/mrboom.yml @@ -1,5 +1,5 @@ emulator: Mr.Boom -type: game +type: libretro core_classification: official_port source: "https://github.com/libretro/mrboom-libretro" upstream: "https://github.com/libretro/mrboom-libretro" diff --git a/emulators/nxengine.yml b/emulators/nxengine.yml index 5d753b55..46beaaaa 100644 --- a/emulators/nxengine.yml +++ b/emulators/nxengine.yml @@ -36,6 +36,7 @@ notes: | files: - name: "Doukutsu.exe" + path: "nxengine/Doukutsu.exe" category: game_data system: cave-story description: "Cave Story freeware executable (data source for music, sfx, bitmaps, wavetable)" @@ -47,6 +48,7 @@ files: notes: "Placed in system/nxengine/. The core extracts ORG music, PXT sounds, stage tile attributes, BMP graphics, and wavetable from this binary at each launch." - name: "data/" + path: "nxengine/data/" category: game_data system: cave-story description: "Full game asset directory tree (399 files: sprites, NPC sheets, stage maps, scripts, backgrounds)" @@ -55,6 +57,7 @@ files: notes: "Must contain root assets (Arms.pbm, MyChar.pbm, etc.), Npc/ (36 sprite sheets), and Stage/ (333 map/script/tileset files). All files from the original freeware release." - name: "data/npc.tbl" + path: "nxengine/data/npc.tbl" category: game_data system: cave-story description: "NPC attribute table (entity behavior flags, HP, damage, display rect offsets)" @@ -63,6 +66,7 @@ files: notes: "Located in system/nxengine/data/. Used to validate data directory presence and to load NPC behavior attributes." - name: "data/sprites.sif" + path: "nxengine/data/sprites.sif" category: game_data system: cave-story description: "Sprite information file (sprite positions, sizes, animation data)" @@ -72,6 +76,7 @@ files: notes: "Not shipped in the freeware distribution. If missing, the core uses a compiled-in copy (sprites_sif.h)." - name: "tilekey.dat" + path: "nxengine/tilekey.dat" category: game_data system: cave-story description: "Tile attribute lookup table (maps tile codes to collision/behavior attributes)" diff --git a/emulators/onsyuri.yml b/emulators/onsyuri.yml index 746954aa..5445c2b1 100644 --- a/emulators/onsyuri.yml +++ b/emulators/onsyuri.yml @@ -1,5 +1,5 @@ emulator: ONScripter Yuri -type: game +type: libretro core_classification: game_engine source: "https://github.com/YuriSizuku/OnscripterYuri" upstream: "https://github.com/YuriSizuku/OnscripterYuri" diff --git a/emulators/pascal_pong.yml b/emulators/pascal_pong.yml index fc3b16a8..f26b8d89 100644 --- a/emulators/pascal_pong.yml +++ b/emulators/pascal_pong.yml @@ -1,5 +1,5 @@ emulator: Pascal Pong -type: game +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/pascal-pong-libretro" upstream: "https://github.com/libretro/pascal-pong-libretro" diff --git a/emulators/pocketcdg.yml b/emulators/pocketcdg.yml index 1c39b7cd..4d5a6d15 100644 --- a/emulators/pocketcdg.yml +++ b/emulators/pocketcdg.yml @@ -1,5 +1,5 @@ emulator: PocketCDG -type: utility +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-pocketcdg" upstream: "https://github.com/redbug26/libretro-pocketcdg" diff --git a/emulators/puzzlescript.yml b/emulators/puzzlescript.yml index 0698120d..7175221c 100644 --- a/emulators/puzzlescript.yml +++ b/emulators/puzzlescript.yml @@ -1,5 +1,5 @@ emulator: PuzzleScript -type: game +type: libretro core_classification: game_engine source: "https://github.com/nwhitehead/pzretro" upstream: "https://github.com/increpare/PuzzleScript" diff --git a/emulators/redbook.yml b/emulators/redbook.yml index 2f64ec33..3ae65b9c 100644 --- a/emulators/redbook.yml +++ b/emulators/redbook.yml @@ -1,5 +1,5 @@ emulator: Redbook -type: utility +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/redbook" profiled_date: "2026-03-25" diff --git a/emulators/remotejoy.yml b/emulators/remotejoy.yml index fb574479..dd499a2e 100644 --- a/emulators/remotejoy.yml +++ b/emulators/remotejoy.yml @@ -1,5 +1,5 @@ emulator: RemoteJoy -type: utility +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-remotejoy" upstream: "https://github.com/akiraink/RemoteJoyLite" diff --git a/emulators/romcleaner.yml b/emulators/romcleaner.yml index 124a4223..32b7c1cf 100644 --- a/emulators/romcleaner.yml +++ b/emulators/romcleaner.yml @@ -1,5 +1,5 @@ emulator: ROM Cleaner -type: utility +type: libretro core_classification: pure_libretro source: "https://github.com/JesseTG/rom-cleaner" upstream: "https://github.com/JesseTG/rom-cleaner" diff --git a/emulators/stonesoup.yml b/emulators/stonesoup.yml index 438f8284..879725bc 100644 --- a/emulators/stonesoup.yml +++ b/emulators/stonesoup.yml @@ -1,5 +1,5 @@ emulator: Stone Soup -type: game +type: libretro core_classification: frozen_snapshot source: "https://github.com/libretro/crawl-ref" upstream: "https://github.com/crawl/crawl" diff --git a/emulators/superbroswar.yml b/emulators/superbroswar.yml index ba94e485..1a97663b 100644 --- a/emulators/superbroswar.yml +++ b/emulators/superbroswar.yml @@ -1,5 +1,5 @@ emulator: Super Bros War -type: game +type: libretro core_classification: game_engine source: "https://github.com/libretro/superbroswar-libretro" upstream: "https://github.com/mmatyas/supermariowar" diff --git a/emulators/syobonaction.yml b/emulators/syobonaction.yml index 319b85b8..0456fd78 100644 --- a/emulators/syobonaction.yml +++ b/emulators/syobonaction.yml @@ -1,5 +1,5 @@ emulator: Syobon Action -type: game +type: libretro core_classification: community_fork source: "https://github.com/iyzsong/syobonaction-libretro" upstream: "https://github.com/akemin-dayo/OpenSyobonAction" diff --git a/emulators/test.yml b/emulators/test.yml index 29b8b9ff..20a4138a 100644 --- a/emulators/test.yml +++ b/emulators/test.yml @@ -1,5 +1,5 @@ emulator: test -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: "https://github.com/libretro/libretro-samples" diff --git a/emulators/test_netplay.yml b/emulators/test_netplay.yml index 6801c3ad..02890832 100644 --- a/emulators/test_netplay.yml +++ b/emulators/test_netplay.yml @@ -1,5 +1,5 @@ emulator: test_netplay -type: test +type: libretro core_classification: pure_libretro profiled_date: "2026-03-25" core_version: "1" diff --git a/emulators/testaudio_callback.yml b/emulators/testaudio_callback.yml index 99212be4..4b367d5d 100644 --- a/emulators/testaudio_callback.yml +++ b/emulators/testaudio_callback.yml @@ -1,5 +1,5 @@ emulator: testaudio_callback -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: "https://github.com/libretro/libretro-samples" diff --git a/emulators/testaudio_no_callback.yml b/emulators/testaudio_no_callback.yml index d76e8a85..65ff9ae8 100644 --- a/emulators/testaudio_no_callback.yml +++ b/emulators/testaudio_no_callback.yml @@ -1,5 +1,5 @@ emulator: testaudio_no_callback -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: "https://github.com/libretro/libretro-samples" diff --git a/emulators/testaudio_playback_wav.yml b/emulators/testaudio_playback_wav.yml index d649d416..88ae0a06 100644 --- a/emulators/testaudio_playback_wav.yml +++ b/emulators/testaudio_playback_wav.yml @@ -1,5 +1,5 @@ emulator: testaudio_playback_wav -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: "https://github.com/libretro/libretro-samples" diff --git a/emulators/testgl.yml b/emulators/testgl.yml index ec10faf4..8a089913 100644 --- a/emulators/testgl.yml +++ b/emulators/testgl.yml @@ -1,5 +1,5 @@ emulator: testgl -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: "https://github.com/libretro/libretro-samples" diff --git a/emulators/testgl_compute_shaders.yml b/emulators/testgl_compute_shaders.yml index 693a64f4..3cef964b 100644 --- a/emulators/testgl_compute_shaders.yml +++ b/emulators/testgl_compute_shaders.yml @@ -1,5 +1,5 @@ emulator: testgl_compute_shaders -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: "https://github.com/libretro/libretro-samples" diff --git a/emulators/testgl_ff.yml b/emulators/testgl_ff.yml index f21f0f34..06f49591 100644 --- a/emulators/testgl_ff.yml +++ b/emulators/testgl_ff.yml @@ -1,5 +1,5 @@ emulator: testgl_ff -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: null diff --git a/emulators/testinput_buttontest.yml b/emulators/testinput_buttontest.yml index 8d141bb6..8500f924 100644 --- a/emulators/testinput_buttontest.yml +++ b/emulators/testinput_buttontest.yml @@ -1,5 +1,5 @@ emulator: testinput_buttontest -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: "https://github.com/libretro/libretro-samples" diff --git a/emulators/testretroluxury.yml b/emulators/testretroluxury.yml index 4875a6a4..80e5df71 100644 --- a/emulators/testretroluxury.yml +++ b/emulators/testretroluxury.yml @@ -1,5 +1,5 @@ emulator: testretroluxury -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/retroluxury" upstream: "https://github.com/leiradel/retroluxury" diff --git a/emulators/testsw.yml b/emulators/testsw.yml index 7f0ab4f0..345a5c8f 100644 --- a/emulators/testsw.yml +++ b/emulators/testsw.yml @@ -1,5 +1,5 @@ emulator: testsw -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" source_ref: "video/software/rendering/libretro-test.c" diff --git a/emulators/testsw_vram.yml b/emulators/testsw_vram.yml index 1c8d309d..c69b2e29 100644 --- a/emulators/testsw_vram.yml +++ b/emulators/testsw_vram.yml @@ -1,5 +1,5 @@ emulator: testsw_vram -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: "https://github.com/libretro/libretro-samples" diff --git a/emulators/testvulkan.yml b/emulators/testvulkan.yml index 66fbcf55..7fefdd51 100644 --- a/emulators/testvulkan.yml +++ b/emulators/testvulkan.yml @@ -1,5 +1,5 @@ emulator: testvulkan -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: "https://github.com/libretro/libretro-samples" diff --git a/emulators/testvulkan_async_compute.yml b/emulators/testvulkan_async_compute.yml index e5814be7..07139f69 100644 --- a/emulators/testvulkan_async_compute.yml +++ b/emulators/testvulkan_async_compute.yml @@ -1,5 +1,5 @@ emulator: testvulkan_async_compute -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/libretro-samples" upstream: "https://github.com/libretro/libretro-samples" diff --git a/emulators/thepowdertoy.yml b/emulators/thepowdertoy.yml index 7b55ea28..17390831 100644 --- a/emulators/thepowdertoy.yml +++ b/emulators/thepowdertoy.yml @@ -1,5 +1,5 @@ emulator: The Powder Toy -type: game +type: libretro core_classification: pure_libretro source: "https://github.com/libretro/ThePowderToy" upstream: "https://github.com/ThePowderToy/The-Powder-Toy" diff --git a/emulators/uw8.yml b/emulators/uw8.yml index 09b882af..e0065bbc 100644 --- a/emulators/uw8.yml +++ b/emulators/uw8.yml @@ -2,7 +2,7 @@ emulator: MicroW8 profiled_date: "2026-03-25" core_version: "0.2.2" display_name: "MicroW8" -type: game +type: libretro core_classification: pure_libretro source: https://github.com/libretro/uw8-libretro upstream: https://github.com/exoticorn/microw8 diff --git a/emulators/vidtest.yml b/emulators/vidtest.yml index 81193887..4426a9db 100644 --- a/emulators/vidtest.yml +++ b/emulators/vidtest.yml @@ -1,5 +1,5 @@ emulator: vidtest -type: test +type: libretro core_classification: pure_libretro source: "https://github.com/schellingb/vidtest_libretro" profiled_date: "2026-03-25" diff --git a/emulators/vitaquake3.yml b/emulators/vitaquake3.yml index 6847ccdf..076b1902 100644 --- a/emulators/vitaquake3.yml +++ b/emulators/vitaquake3.yml @@ -1,5 +1,5 @@ emulator: vitaQuakeIII -type: game +type: libretro core_classification: community_fork source: "https://github.com/libretro/vitaquake3" upstream: "https://github.com/ioquake/ioq3" diff --git a/emulators/vitavoyager.yml b/emulators/vitavoyager.yml index c19e3c49..5f5c7b43 100644 --- a/emulators/vitavoyager.yml +++ b/emulators/vitavoyager.yml @@ -1,5 +1,5 @@ emulator: vitavoyager -type: game +type: libretro core_classification: community_fork source: "https://github.com/libretro/vitavoyager" upstream: "https://github.com/zturtleman/lilium-voyager" diff --git a/emulators/wasm4.yml b/emulators/wasm4.yml index 245ece17..36832f5f 100644 --- a/emulators/wasm4.yml +++ b/emulators/wasm4.yml @@ -1,5 +1,5 @@ emulator: WASM-4 -type: game +type: libretro core_classification: game_engine source: "https://github.com/aduros/wasm4" upstream: "https://github.com/aduros/wasm4" diff --git a/scripts/common.py b/scripts/common.py index 1633bcc6..cc776942 100644 --- a/scripts/common.py +++ b/scripts/common.py @@ -313,6 +313,13 @@ def resolve_local_file( aliases = file_entry.get("aliases", []) names_to_try = [name] + [a for a in aliases if a != name] + # When name contains a path separator (e.g. "res/tilemap.bin"), also + # try the basename since by_name indexes filenames without directories + if "/" in name: + name_base = name.rsplit("/", 1)[-1] + if name_base and name_base not in names_to_try: + names_to_try.append(name_base) + # When dest_hint contains a path, also try its basename as a name # (handles emulator profiles where name: is descriptive and path: is # the actual filename, e.g. name: "MDA font ROM", path: "mda.rom")