diff --git a/emulators/ares.yml b/emulators/ares.yml index be9726309..bf33e56ac 100644 --- a/emulators/ares.yml +++ b/emulators/ares.yml @@ -2,14 +2,14 @@ emulator: ares type: standalone source: "https://github.com/ares-emulator/ares" upstream: "https://github.com/ares-emulator/ares" -profiled_date: "2026-10-23" -source_commit: "d400eee9764fe22a8de0247a52757d2021d0539c" -core_version: "v148-143-gd400eee" +profiled_date: "2026-11-09" +source_commit: "dd737665221a6f58c6c4d2547d2f38b0abe3aef0" +core_version: "v148-166-gdd73766" version_basis: kind: tag match: "v[0-9]*" tag: "v148" - distance: 143 + distance: 166 display_name: "ares" cores: [ares, "ares-sa"] mode: standalone @@ -58,7 +58,7 @@ systems: notes: | Multi-system emulator by Near (byuu), successor to higan/bsnes. Focuses on - accuracy and preservation. 41 emulators registered at this pin + accuracy and preservation. 40 emulators registered at this pin (desktop-ui/emulator/emulators.cpp). Firmware identification uses SHA256 hashes. Filenames are user-defined: ares @@ -68,7 +68,7 @@ notes: | Firmware path resolution: settings.paths.firmware (user override) or {userData}/ares/Firmware/ (default). Per-system firmware assigned in Settings > Firmware dialog or via scan-by-hash. - ref: desktop-ui/settings/settings.hpp:88-100, desktop-ui/desktop-ui.cpp:68-75 + ref: desktop-ui/settings/settings.hpp:89-101, desktop-ui/desktop-ui.cpp:68-75 Systems with fully embedded firmware (no user files needed): Game Boy (boot.rom), Game Boy Color (boot.rom), Mega Drive (TMSS), @@ -82,10 +82,21 @@ notes: | SFC coprocessor firmware auto-injected if missing from ROM image. ref: mia/medium/super-famicom.cpp:42-62 - Neo Geo BIOS: accepts ZIP archive (neogeo.zip) or direct binary. AES looks - for "neo-epo.bin" inside ZIP, MVS looks for "sp-45.sp1". Both apply byte-swap - after loading. - ref: mia/system/neo-geo-aes.cpp:12-30, mia/system/neo-geo-mvs.cpp:12-30 + Neo Geo BIOS is not a firmware slot. Neo Geo AES reads aes.zip and the + Arcade emulator, which runs the Neo Geo MVS games, reads neogeo.zip, both + beside the game: in the game's folder, or its parent when that folder is + named neogeo, then in a neogeo/ subfolder of it. A missing archive or + member stops the load with the member and the path it tried. The member is + the BIOS chosen in Settings > Cores, neo-po.bin for the AES and + vs-bios.rom for the MVS by default, among the bios entries the aes and + neogeo sets carry in Database/Arcade.bml. It is byte-swapped on load and no + hash is checked. + ref: desktop-ui/emulator/emulator.cpp:86-94, + desktop-ui/emulator/neo-geo-aes.cpp:43-49, + desktop-ui/emulator/arcade.cpp:456-464, + desktop-ui/settings/settings.hpp:142-146, + desktop-ui/settings/cores.cpp:170-204, + mia/system/neo-geo-aes.cpp:12-32, mia/system/neo-geo-mvs.cpp:12-32 SFC base cartridges (Super Game Boy, Satellaview BS-X, Sufami Turbo) are games, not firmware: the file opened as the Super Famicom game is the base @@ -97,11 +108,11 @@ notes: | signature makes a Sufami Turbo board, serial ZBSJ a BS-X board, serial 042J or cartridge type 0xE3 a Super Game Boy board. ref: desktop-ui/emulator/super-famicom.cpp:158-217, - desktop-ui/emulator/emulator.cpp:204-235, + desktop-ui/emulator/emulator.cpp:216-247, mia/medium/super-famicom.cpp:88-95, mia/medium/super-famicom.cpp:570-602 - Systems with no firmware: Arcade, Atari 2600, Famicom, MyVision, PC Engine, - SuperGrafx, SG-1000, SC-3000. + Systems with no firmware: Arcade (Neo Geo MVS games aside), Atari 2600, + Famicom, MyVision, PC Engine, SuperGrafx, SG-1000, SC-3000. files: # --- Atari 5200 --- @@ -157,7 +168,7 @@ files: sha256: "477617917a12a30f9f43844909dc2de6e6a617430f5c9a36306c86414a670d50" validation: [sha256] description: "Master System BIOS (US)" - note: "Picked for NTSC-U, which the code gives every export cart outside its PAL list through the Boot/Prefer setting. The header does not tell US from Europe (mia/medium/master-system.cpp:54-63, desktop-ui/emulator/emulator.cpp:86-106)." + note: "Picked for NTSC-U, which the code gives every export cart outside its PAL list through the Boot/Prefer setting. The header does not tell US from Europe (mia/medium/master-system.cpp:54-63, desktop-ui/emulator/emulator.cpp:97-117)." source_ref: "desktop-ui/emulator/master-system.cpp:14, mia/system/master-system.cpp:8 (//optional)" - name: bios_J.sms @@ -176,7 +187,7 @@ files: sha256: "477617917a12a30f9f43844909dc2de6e6a617430f5c9a36306c86414a670d50" validation: [sha256] description: "Master System BIOS (Europe), same binary as US" - note: "Picked for PAL, set by a hash list that also holds Korean and Australian releases or by the Boot/Prefer setting (mia/medium/master-system.cpp:54-275, desktop-ui/emulator/emulator.cpp:86-106)." + note: "Picked for PAL, set by a hash list that also holds Korean and Australian releases or by the Boot/Prefer setting (mia/medium/master-system.cpp:54-275, desktop-ui/emulator/emulator.cpp:97-117)." source_ref: "desktop-ui/emulator/master-system.cpp:16" # --- Mega CD --- @@ -258,18 +269,40 @@ files: source_ref: "desktop-ui/emulator/msx2.cpp:16" # --- Neo Geo AES --- - - name: neo-epo.bin + - name: aes.zip system: neo-geo required: true - description: "Neo Geo AES BIOS. Accepts neogeo.zip (extracts neo-epo.bin) or direct file. Byte-swapped on load." - source_ref: "desktop-ui/emulator/neo-geo-aes.cpp:14, mia/system/neo-geo-aes.cpp:16" + found_by: name + load_from: content_dir + category: bios_zip + description: "Neo Geo AES BIOS set" + contents: + - name: neo-po.bin + description: "Japan AES, the default BIOS choice" + note: >- + Read beside the AES game, or in a neogeo/ subfolder of the game's + folder. Only the member chosen in Settings > Cores is extracted, + neo-po.bin by default, and byte-swapped. A missing archive or member + stops the load. + source_ref: "desktop-ui/emulator/emulator.cpp:86-94, desktop-ui/emulator/neo-geo-aes.cpp:43-49, desktop-ui/settings/settings.hpp:143, mia/system/neo-geo-aes.cpp:12-32" # --- Neo Geo MVS --- - - name: sp-45.sp1 + - name: neogeo.zip system: neo-geo required: true - description: "Neo Geo MVS BIOS. Accepts neogeo.zip (extracts sp-45.sp1) or direct file. Byte-swapped on load." - source_ref: "desktop-ui/emulator/neo-geo-mvs.cpp:15, mia/system/neo-geo-mvs.cpp:16" + found_by: name + load_from: content_dir + category: bios_zip + description: "Neo Geo MVS BIOS set" + contents: + - name: vs-bios.rom + description: "Japan MVS (Ver. 3), the default BIOS choice" + note: >- + Read by the Arcade emulator for a Neo Geo MVS game, beside the game or + in a neogeo/ subfolder of the game's folder. Only the member chosen in + Settings > Cores is extracted, vs-bios.rom by default, and byte-swapped. + A missing archive or member stops the load. + source_ref: "desktop-ui/emulator/emulator.cpp:86-94, desktop-ui/emulator/arcade.cpp:456-464, desktop-ui/settings/settings.hpp:144, mia/system/neo-geo-mvs.cpp:12-32" # --- Neo Geo Pocket --- - name: ngp_bios.rom @@ -382,7 +415,7 @@ files: sha256: "11052b6499e466bbf0a709b1f9cb6834a9418e66680387912451e971cf8a1fef" validation: [sha256] description: "PlayStation BIOS (US)" - note: "Picked for NTSC-U, set by both America licence strings and for an executable. A disc with no recognised licence offers NTSC-U and PAL, and the Boot/Prefer setting picks (mia/medium/playstation.cpp:68-75, 92, desktop-ui/emulator/playstation.cpp:94-101, desktop-ui/emulator/emulator.cpp:86-104)." + note: "Picked for NTSC-U, set by both America licence strings and for an executable. A disc with no recognised licence offers NTSC-U and PAL, and the Boot/Prefer setting picks (mia/medium/playstation.cpp:68-75, 92, desktop-ui/emulator/playstation.cpp:94-101, desktop-ui/emulator/emulator.cpp:97-115)." source_ref: "desktop-ui/emulator/playstation.cpp:21, desktop-ui/emulator/playstation.cpp:94-101, mia/medium/playstation.cpp:67-75" - name: scph5500.bin diff --git a/emulators/cap32.yml b/emulators/cap32.yml index fad619729..d607c1a97 100644 --- a/emulators/cap32.yml +++ b/emulators/cap32.yml @@ -4,8 +4,8 @@ core_classification: community_fork source: "https://github.com/libretro/libretro-cap32" upstream: "https://github.com/ColinPitrat/caprice32" profiled_date: "2026-10-23" -source_commit: "8e61dd69d948cea16c3bad734f7b9d0c2a018cc8" -upstream_commit: "8c778bf072a06fb7c23b9cccd179041db7f79a52" +source_commit: "06ad0da5d003ab8f2359300ebce4cf31d4c55b6e" +upstream_commit: "a0d78f0f7c6d19a5d3205d1b231bd4da100ec6f3" core_version: "4.5.4" version_basis: kind: file @@ -25,7 +25,7 @@ notes: | All system ROMs are compiled directly into the core binary as C header arrays in cap32/rom/*.h. No external BIOS files are required. - Embedded ROMs (cap32/cap32.c:345-349, cap32/slots.c:33): + Embedded ROMs (cap32/cap32.c:345-349, cap32/slots.c:34): - cap32/rom/464.h: OS464_BASIC10[32768] - CPC 464 OS + BASIC 1.0 - cap32/rom/664.h: OS664_BASIC664[32768] - CPC 664 OS + BASIC 1.1 - cap32/rom/6128.h: OS_BASIC11[32768] - CPC 6128 OS + BASIC 1.1 @@ -33,30 +33,30 @@ notes: | - cap32/rom/6128p.h: OS_6128P[65580] - CPC+ system cartridge - cap32/rom/cpm.h: CPM, CPM_SYS - CP/M boot memory dumps - ROM selection in emulator_select_ROM() (cap32/cap32.c:1081-1111): + ROM selection in emulator_select_ROM() (cap32/cap32.c:1136-1166): - CPC 464: OS464_BASIC10, AMSDOS in slot 7 when the content is a disc - CPC 664: OS664_BASIC664 + AMSDOS in slot 7 - CPC 6128: OS_BASIC11 + AMSDOS in slot 7 - CPC+: OS_6128P loaded as system cartridge via cpr_load() - Core option "cap32_model" lists "464DDI" (libretro/libretro-core.c:501), + Core option "cap32_model" lists "464DDI" (libretro/libretro-core.c:407), but update_variables() matches only 464, 664, 6128 and 6128+ and leaves any - other value on the 6128 default (libretro/libretro-core.c:1035-1039). A 464 - with disc content (slot SLOT_DSK, libretro/libretro-core.c:1865-1866) gets - AMSDOS in slot 7 (cap32/cap32.c:1088-1092). + other value on the 6128 default (libretro/libretro-core.c:1060-1064). A 464 + with disc content (slot SLOT_DSK, libretro/libretro-core.c:1899-1900) gets + AMSDOS in slot 7 (cap32/cap32.c:1143-1147). The array chROMFile names "cpc464.rom", "cpc664.rom", "cpc6128.rom" (cap32/cap32.c:353-357) and loadConfiguration() parses the rom_path, - slotNN and rom_mf2 keys of ./cap32.cfg (cap32/cap32.c:1842-1859), but no + slotNN and rom_mf2 keys of ./cap32.cfg (cap32/cap32.c:1899-1916), but no code opens these files. The system directory is resolved in - libretro/libretro-core.c:1606-1625 under a "TODO: future use to load + libretro/libretro-core.c:1640-1659 under a "TODO: future use to load custom bios" comment and no ROM is read from it. Keyboard layout patches are applied to the ROM in memory for French - and Spanish layouts via rom_mods.h (cap32/cap32.c:1113-1137). + and Spanish layouts via rom_mods.h (cap32/cap32.c:1168-1192). CP/M support assembles a 128KB snapshot from the CPM and CPM_SYS arrays - and loads it via snapshot_load_mem() in cap32/slots.c:71-90. + and loads it via snapshot_load_mem() in cap32/slots.c:74-93. files: # Standalone loads from rom_path/, libretro embeds all as C arrays. @@ -124,12 +124,12 @@ files: platform_details: bios_mapping: - source_ref: "source cap32/cap32.c:1081-1111, source cap32/cap32.c:345-349" + source_ref: "source cap32/cap32.c:1136-1166, source cap32/cap32.c:345-349" note: | All ROMs are embedded. emulator_select_ROM() copies the ROM array for CPC.model into pbROM. No filesystem lookup occurs in the libretro port. retro_system_bios_directory is set in - libretro/libretro-core.c:1606-1625 and no ROM is read from it. + libretro/libretro-core.c:1640-1659 and no ROM is read from it. embedded_roms: source_ref: "source cap32/rom/464.h, source cap32/rom/664.h, source cap32/rom/6128.h, source cap32/rom/amsdos.h, source cap32/rom/6128p.h, source cap32/rom/cpm.h" @@ -143,7 +143,7 @@ platform_details: CPM, CPM_SYS - CP/M memory dumps assembled into a 128KB snapshot model_rom_map: - source_ref: "source cap32/cap32.c:1081-1111" + source_ref: "source cap32/cap32.c:1136-1166" note: | CPC 464: OS464_BASIC10, AMSDOS in ROM slot 7 when the content is a disc CPC 664: OS664_BASIC664 + AMSDOS in ROM slot 7 diff --git a/emulators/devilutionx.yml b/emulators/devilutionx.yml index 97825919c..2af71f62d 100644 --- a/emulators/devilutionx.yml +++ b/emulators/devilutionx.yml @@ -3,8 +3,8 @@ type: standalone core_classification: game_engine source: "https://github.com/diasurgical/DevilutionX" upstream: ~ -profiled_date: "2026-10-04" -source_commit: "9d4871587e1a8d9606f97a43d85e939b82f77900" +profiled_date: "2026-11-09" +source_commit: "74ce5cdb15da44b28427ad6ee2b107bd6dcd6f61" core_version: "1.6.0-dev" version_basis: kind: file @@ -24,41 +24,41 @@ notes: | macOS Application Support, etc.) via GetMPQSearchPaths(). Load order is defined in Source/engine/assets.cpp: - LoadCoreArchives() (:507) - devilutionx.mpq, fonts.mpq (optional) - LoadLanguageArchive() (:523) - .mpq, skipped for "en" - LoadGameArchives() (:532) - diabdat.mpq or spawn.mpq (required) + LoadCoreArchives() (:513) - devilutionx.mpq, fonts.mpq (optional) + LoadLanguageArchive() (:529) - .mpq, skipped for "en" + LoadGameArchives() (:538) - diabdat.mpq or spawn.mpq (required) hfbard.mpq, hfbarb.mpq (always probed) - LoadHellfireArchives() (:572) - hellfire.mpq + hfmonk/hfmusic/hfvoice - LoadModArchives() (:712) - mods/.mpq for each active mod + LoadHellfireArchives() (:578) - hellfire.mpq + hfmonk/hfmusic/hfvoice + LoadModArchives() (:724) - mods/.mpq for each active mod diabdat.mpq is matched uppercase first ("DIABDAT.MPQ", GOG/retail CD - convention, line 540), then lowercase (line 544). If neither is found - the loader falls back to spawn.mpq (line 546). Missing BOTH triggers + convention, line 546), then lowercase (line 550). If neither is found + the loader falls back to spawn.mpq (line 552). Missing BOTH triggers the "diabdat.mpq or spawn.mpq" InsertCDDlg dialog and the game cannot start. Hellfire is optional: the engine advertises Diablo even when hellfire files are absent. If hellfire.mpq is loaded, hfmonk.mpq + hfmusic.mpq - + hfvoice.mpq must also be present (line 590) or the game aborts. + + hfvoice.mpq must also be present (line 596) or the game aborts. devilutionx.mpq is a build artefact packed from the repo's assets/ directory with the smpq tool (CMake option BUILD_ASSETS_MPQ, - CMakeLists.txt:192-205). CMake/Assets.cmake:46-238 lists the packed + CMakeLists.txt:192-205). CMake/Assets.cmake:46-239 lists the packed files (ASSETS_VERSION, arena, data, fonts, gendata, levels, lua, plrgfx, txtdata and ui_art, plus data/inv/objcurs-widths.txt and the ui_art PNGs outside SDL1 and Vita builds), and each Translations/.po is compiled with msgfmt to .gmo and appended - (CMake/Assets.cmake:8-29, 268-272). The archive is written with + (CMake/Assets.cmake:8-29, 269-273). The archive is written with "smpq -A -M 1 -C BZIP2 -c" from the staged assets directory - (CMake/Assets.cmake:287-294). mods/hf.mpq is built the same way from + (CMake/Assets.cmake:288-295). mods/hf.mpq is built the same way from the mods/hf file list under the BUILD_MOD_MPQS option - (CMake/Mods.cmake:11-36, 61-71). The compiled + (CMake/Mods.cmake:11-37, 52-62). The compiled binary expects devilutionx.mpq next to the executable on every - platform except Android, Apple and 3DS/Switch (Source/engine/assets.cpp:511-518), where its + platform except Android, Apple and 3DS/Switch (Source/engine/assets.cpp:517-524), where its contents are shipped loose. After loading the core archives the engine reads the asset ASSETS_VERSION and aborts with "Failed to load UI resources" unless its content is "1\n" (Source/init.cpp:54, 79-85, - Source/diablo.cpp:1225-1239). The same test on fonts\VERSION applies + Source/diablo.cpp:1228-1242). The same test on fonts\VERSION applies to fonts.mpq when it is loaded (Source/init.cpp:98-114). fonts.mpq is the CJK + language assets add-on from the @@ -73,7 +73,7 @@ files: description: "Diablo retail or GOG MPQ (contains all game data)" aliases: [DIABDAT.MPQ] note: "primary game archive, the GOG CD convention uses uppercase" - source_ref: "Source/engine/assets.cpp:539-544" + source_ref: "Source/engine/assets.cpp:545-550" - name: spawn.mpq path: devilutionx/spawn.mpq @@ -82,7 +82,7 @@ files: required: false description: "Diablo shareware archive, used when diabdat.mpq is absent" note: "freely redistributable shareware, triggers gbIsSpawn mode" - source_ref: "Source/engine/assets.cpp:546" + source_ref: "Source/engine/assets.cpp:552" - name: hellfire.mpq path: devilutionx/hellfire.mpq @@ -90,7 +90,7 @@ files: category: game_data required: false description: "Hellfire expansion main archive" - source_ref: "Source/engine/assets.cpp:575" + source_ref: "Source/engine/assets.cpp:581" - name: hfmonk.mpq path: devilutionx/hfmonk.mpq @@ -98,7 +98,7 @@ files: category: game_data required: false description: "Hellfire monk class assets, mandatory when hellfire.mpq is present" - source_ref: "Source/engine/assets.cpp:585" + source_ref: "Source/engine/assets.cpp:591" - name: hfmusic.mpq path: devilutionx/hfmusic.mpq @@ -106,7 +106,7 @@ files: category: game_data required: false description: "Hellfire music, mandatory when hellfire.mpq is present" - source_ref: "Source/engine/assets.cpp:586" + source_ref: "Source/engine/assets.cpp:592" - name: hfvoice.mpq path: devilutionx/hfvoice.mpq @@ -114,7 +114,7 @@ files: category: game_data required: false description: "Hellfire voices, mandatory when hellfire.mpq is present" - source_ref: "Source/engine/assets.cpp:587" + source_ref: "Source/engine/assets.cpp:593" - name: "hfbard.mpq" path: "devilutionx/hfbard.mpq" @@ -122,7 +122,7 @@ files: category: game_data required: false description: "Hellfire bard class assets, loaded when present" - source_ref: "Source/engine/assets.cpp:567" + source_ref: "Source/engine/assets.cpp:573" - name: "hfbarb.mpq" path: "devilutionx/hfbarb.mpq" @@ -130,7 +130,7 @@ files: category: game_data required: false description: "Hellfire barbarian class assets, loaded when present" - source_ref: "Source/engine/assets.cpp:568" + source_ref: "Source/engine/assets.cpp:574" - name: "devilutionx.mpq" path: "devilutionx/devilutionx.mpq" @@ -142,7 +142,7 @@ files: md5: "5afe4d6624064b41e25a36ac55da29fa" description: "Engine assets (UI art, fonts, data tables, Lua scripts, compiled translations) packed from the repository's assets/ directory" note: "Loaded first on every platform except Android, Apple, 3DS and Switch. Its files are also found in an assets/ directory next to the binary when the build installs them loose. The engine aborts when the asset ASSETS_VERSION is absent or is not \"1\\n\". Built by CMake with smpq (MPQ version 1, BZIP2, no attributes) from the file list of CMake/Assets.cmake plus one .gmo per translation. Shipped beside the binary in the Windows zip and the Linux tarball, and loose under assets/ in the APK. The hashes are those of the 1.5.5 release." - source_ref: "Source/engine/assets.cpp:511-518, 223-226, Source/init.cpp:54, 79-85, Source/diablo.cpp:1225-1239, CMake/Assets.cmake:46-224, 287-294" + source_ref: "Source/engine/assets.cpp:517-524, 223-226, Source/init.cpp:54, 79-85, Source/diablo.cpp:1228-1242, CMake/Assets.cmake:46-225, 288-295" - name: "fonts.mpq" path: "devilutionx/fonts.mpq" @@ -150,7 +150,7 @@ files: category: game_data required: false description: "CJK and extended-language font pack from devilutionx-assets release" - source_ref: "Source/engine/assets.cpp:519" + source_ref: "Source/engine/assets.cpp:525" - name: "es.mpq" path: "devilutionx/es.mpq" @@ -159,7 +159,7 @@ files: required: false description: "Spanish voice pack" note: "The archive named after the selected language code is loaded. English loads none." - source_ref: "Source/engine/assets.cpp:523-530" + source_ref: "Source/engine/assets.cpp:529-536" - name: "pl.mpq" path: "devilutionx/pl.mpq" @@ -168,7 +168,7 @@ files: required: false description: "Polish voice pack" note: "The archive named after the selected language code is loaded. English loads none." - source_ref: "Source/engine/assets.cpp:523-530" + source_ref: "Source/engine/assets.cpp:529-536" - name: "ru.mpq" path: "devilutionx/ru.mpq" @@ -177,7 +177,7 @@ files: required: false description: "Russian voice pack" note: "The archive named after the selected language code is loaded. English loads none." - source_ref: "Source/engine/assets.cpp:523-530" + source_ref: "Source/engine/assets.cpp:529-536" - name: "hf.mpq" path: "devilutionx/mods/hf.mpq" @@ -185,5 +185,5 @@ files: category: game_data required: false description: "Hellfire mod archive packed from the repository's mods/hf directory" - note: "mods/.mpq is opened for each active mod, and hf is activated when hellfire.mpq is present. A mod with no archive and no loose directory is served from the core archives. Built by CMake with smpq (MPQ version 1, BZIP2, no attributes) from the hellfire_mod file list. The Windows and Linux packaging of this revision installs it under mods/ beside devilutionx.mpq, and no release carries it yet." - source_ref: "Source/engine/assets.cpp:756-772, Source/options.cpp:77-79, CMakeLists.txt:205, 641-646, 705-710, CMake/Mods.cmake:11-36, 61-70" + note: "mods/.mpq is opened for each active mod, and hf is activated when hellfire.mpq is present. A mod with no archive and no loose directory is served from the core archives. Built by CMake with smpq (MPQ version 1, BZIP2, no attributes) from the hellfire_mod file list. The Windows and Linux packaging of this revision installs it under mods/ beside devilutionx.mpq. The Apple build packs it into Resources/mods, and the Android and Apple builds look for mods/.mpq inside the application package after the search paths. No release carries it yet." + source_ref: "Source/engine/assets.cpp:768-788, Source/engine/assets.cpp:413-428, Source/options.cpp:77-79, CMakeLists.txt:205, 641-646, 705-710, CMake/Mods.cmake:11-37, 52-71" diff --git a/emulators/etlegacy.yml b/emulators/etlegacy.yml index 1cb547b8e..5dad019da 100644 --- a/emulators/etlegacy.yml +++ b/emulators/etlegacy.yml @@ -4,7 +4,7 @@ core_classification: game_engine source: "https://github.com/etlegacy/etlegacy" upstream: "https://github.com/etlegacy/etlegacy" profiled_date: "2026-10-04" -source_commit: "add16a92f4b10c2955136e3ab7868bfc9bff8fad" +source_commit: "13d8bea7b484f4eec993d2c8723b8756c6300963" core_version: "2.86.2" version_basis: kind: file @@ -17,26 +17,26 @@ systems: [enemyterritory] notes: | Wolfenstein: Enemy Territory source port. BASEGAME = "etmain" - (src/qcommon/qcommon.h:783). FS_InitFilesystem - (src/qcommon/files.c:5066-5094) refuses to start if pak0.pk3 is not reachable under etmain + (src/qcommon/qcommon.h:785). FS_InitFilesystem + (src/qcommon/files.c:5104-5132) refuses to start if pak0.pk3 is not reachable under etmain and prints "Please copy pak0.pk3 from the 'etmain' path of your Wolfenstein: Enemy Territory installation to ". pak1.pk3 and pak2.pk3 are checked against the server's requested pak list in - FS_ComparePaks (src/qcommon/files.c:4011-4018) but neither is a + FS_ComparePaks (src/qcommon/files.c:4049-4056) but neither is a startup gate. Third-party mods pull them in as needed (see README.md "In addition, third party mods might also require pak1.pk3 and pak2.pk3"). mp_bin.pk3 ships in the retail release and holds the stock multiplayer binaries. - NUM_ID_PAKS = 9 (src/qcommon/qcommon.h:811) counts the names recognised + NUM_ID_PAKS = 9 (src/qcommon/qcommon.h:813) counts the names recognised by FS_idPak. Retail Enemy Territory 2.60b publishes only pak0, pak1, pak2 and mp_bin, so the extra slots are reserved for forward compatible server lists, never filled by id. - fs_game defaults to the legacy mod (src/qcommon/files.c:5141-5148). The + fs_game defaults to the legacy mod (src/qcommon/files.c:5179-5186). The build packs the cgame and ui libraries with the source tree's etmain/ assets (configs, presets, locale files) into legacy/legacy_.pk3 - and installs it with the engine (cmake/ETLBuildMod.cmake:281-296). The + and installs it with the engine (cmake/ETLBuildMod.cmake:281-298). The client extracts its cgame and ui libraries from that pk3 at load (src/sys/sys_main.c:935-947). The user still has to supply the retail pak0.pk3 from the free Enemy Territory 2.60b download. pak0.pk3 holds @@ -48,7 +48,7 @@ files: system: enemyterritory path: "etmain/pak0.pk3" required: true - source_ref: "src/qcommon/files.c:5066-5094 (fatal if absent), 5076 (FS_FOpenFileRead \"pak0.pk3\"), src/qcommon/qcommon.h:783 (BASEGAME \"etmain\")" + source_ref: "src/qcommon/files.c:5104-5132 (fatal if absent), src/qcommon/files.c:5114 (FS_FOpenFileRead \"pak0.pk3\"), src/qcommon/qcommon.h:785 (BASEGAME \"etmain\")" note: "Retail Wolfenstein: Enemy Territory 2.60b data pak. Startup gate." - name: "pak1.pk3" @@ -56,7 +56,7 @@ files: system: enemyterritory path: "etmain/pak1.pk3" required: false - source_ref: "src/qcommon/files.c:4011-4018 (FS_idPak, NUM_ID_PAKS=9), README.md" + source_ref: "src/qcommon/files.c:4049-4056 (FS_idPak, NUM_ID_PAKS=9), README.md" note: "Retail content update pak. Required by servers running 2.60b, pulled in by FS_ComparePaks." - name: "pak2.pk3" @@ -64,7 +64,7 @@ files: system: enemyterritory path: "etmain/pak2.pk3" required: false - source_ref: "src/qcommon/files.c:4011-4018 (FS_idPak), README.md" + source_ref: "src/qcommon/files.c:4049-4056 (FS_idPak), README.md" note: "Retail content update pak." - name: "mp_bin.pk3" @@ -72,7 +72,7 @@ files: system: enemyterritory path: "etmain/mp_bin.pk3" required: false - source_ref: "src/qcommon/files.c:4011-4018 (FS_idPak)" + source_ref: "src/qcommon/files.c:4049-4056 (FS_idPak)" note: "Retail multiplayer QVM binaries. ET Legacy ships its own cgame/ui binaries, and the retail pack is for pure clients joining stock servers." exclusion_note: > @@ -81,4 +81,4 @@ exclusion_note: > ui libraries compiled for the host, so every release and architecture ships different bytes under a different name. It arrives with every install of the engine. - ref: cmake/ETLBuildMod.cmake:281-296, cmake/ETLVersion.cmake:120-131 + ref: cmake/ETLBuildMod.cmake:281-298, cmake/ETLVersion.cmake:120-131 diff --git a/emulators/gargoyle.yml b/emulators/gargoyle.yml index cff2a7db1..3995c1787 100644 --- a/emulators/gargoyle.yml +++ b/emulators/gargoyle.yml @@ -4,7 +4,7 @@ core_classification: game_engine source: "https://github.com/garglk/garglk" upstream: "https://github.com/garglk/garglk" profiled_date: "2026-08-08" -source_commit: "9e06211c20bee35026744424a57f50375cdc29db" +source_commit: "f15b43dc9448ac14480310a64301bf859faf999d" core_version: "2026.1" version_basis: kind: file @@ -76,7 +76,7 @@ notes: | in Resources/Fonts and Unifont in Resources, and the Windows installer also registers the eight faces as system fonts. ref: garglk/sysqt.cpp:960-1004, garglk/sysmac.mm:1013-1030, garglk/CMakeLists.txt:137,145, - 510-534, gargoyle_osx.sh:124-125,211-213, installer.nsi:89-90,208-215 + 519-543, gargoyle_osx.sh:124-125,211-213, installer.nsi:89-90,208-215 Themes are read from every *.json in the theme directories, which are the Qt application data locations plus the executable directory on Windows and @@ -96,7 +96,7 @@ notes: | garglk.ini or the build hardcodes one, and the fallback is whatever FluidSynth reports as its own default. ref: garglk/config.cpp:294-298,864-872, garglk/snddecode.cpp:373-395, - garglk/CMakeLists.txt:58 (DEFAULT_SOUNDFONT), INSTALL.md:153-157 + garglk/CMakeLists.txt:58 (DEFAULT_SOUNDFONT), INSTALL.md:155-159 Story files are content. Formats that carry companion data read it from the story file's own name or directory, so it travels with the game: Level 9 @@ -105,7 +105,7 @@ notes: | sides the Scott Adams, Plus and TaylorMade interpreters read from C64, Atari 8-bit and Apple II images. ref: terps/level9/Glk/glk.c:6415-6450, terps/magnetic/Glk/glk.c:5758-5855, - terps/CMakeLists.txt:69,73,359,469,565 (c64diskimage, unp64) + terps/CMakeLists.txt:69,73,376,527,625 (c64diskimage, unp64) exclusion_note: > TADS character mapping files are not loaded by this build. The Glk port @@ -115,7 +115,7 @@ exclusion_note: > with -ctab. The agil.cfg read by AGiliTy lives in os_dos.c and os_dos16.c, while the build compiles os_glk.c. ref: terps/tads/glk/osmisc.c:69-72,316-334, terps/tads/tads2/cmap.c:290-315, - terps/tads/tads2/trd.c:513-517, terps/CMakeLists.txt:111-119 + terps/tads/tads2/trd.c:513-517, terps/CMakeLists.txt:126-134 files: # -- Text fonts, data directory root -- @@ -226,7 +226,7 @@ files: size: 358 sha1: "6b47d1e68e79c258d8b733d0525beee7e567a776" md5: "4a2fc2266fb1c4139617e88722b5c6f9" - source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:564" + source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:573" - name: "Breeze Darker.json" path: "themes/Breeze Darker.json" @@ -236,7 +236,7 @@ files: size: 367 sha1: "6c389838c66c13397cc3c7096b31fca994bbb34c" md5: "597f5b89772b9660d732a5122d159d6b" - source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:565" + source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:574" - name: "Lectrote Dark.json" path: "themes/Lectrote Dark.json" @@ -246,7 +246,7 @@ files: size: 474 sha1: "225049ddfa6ce2c4b7198ca6c889c81d65b7946f" md5: "83b81c33ec97dbc100c850de7b04a694" - source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:566" + source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:575" - name: "Lectrote Sepia.json" path: "themes/Lectrote Sepia.json" @@ -256,7 +256,7 @@ files: size: 474 sha1: "813f91ff7f0a0b95fcd37e541414cdc29bbc2968" md5: "d766895891ccec110e15a044af6194c7" - source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:567" + source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:576" - name: "Lectrote Slate.json" path: "themes/Lectrote Slate.json" @@ -266,7 +266,7 @@ files: size: 474 sha1: "8032208eab8f10874f448c39bdc5a85b83d539b3" md5: "3a06a19b8441d931ddef2359116e405a" - source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:568" + source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:577" - name: "Pencil.json" path: "themes/Pencil.json" @@ -276,7 +276,7 @@ files: size: 360 sha1: "976b37a0451fb3cbed9a85ccf3c242ae768a4bc5" md5: "6e1743b8b40eaf3a85015013dcea7701" - source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:569" + source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:578" - name: "Zoom.json" path: "themes/Zoom.json" @@ -286,7 +286,7 @@ files: size: 358 sha1: "d312b25c5f3a92178a185de122aeb222a32d4096" md5: "641c88ce7f5e1a9a7ac4c18b90a9f38d" - source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:570" + source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:579" - name: "dark.json" path: "themes/dark.json" @@ -296,7 +296,7 @@ files: size: 358 sha1: "3757750cd3052b8d23f379aba22d7ee3d9353bc9" md5: "2614becc041fc813cf87397aa47e8210" - source_ref: "garglk/theme.cpp:268-282, garglk/theme.cpp:304-316, garglk/CMakeLists.txt:81-86, garglk/CMakeLists.txt:571" + source_ref: "garglk/theme.cpp:268-282, garglk/theme.cpp:304-316, garglk/CMakeLists.txt:81-86, garglk/CMakeLists.txt:580" note: "Also compiled in as the built-in dark theme." - name: "light.json" @@ -307,5 +307,5 @@ files: size: 412 sha1: "049412d56a41865539faadcd86408d5107a1dbef" md5: "37c78cb6e0105b946627038dcbfc8c64" - source_ref: "garglk/theme.cpp:268-282, garglk/theme.cpp:304-316, garglk/CMakeLists.txt:88-93, garglk/CMakeLists.txt:572" + source_ref: "garglk/theme.cpp:268-282, garglk/theme.cpp:304-316, garglk/CMakeLists.txt:88-93, garglk/CMakeLists.txt:581" note: "Also compiled in as the built-in light theme." diff --git a/emulators/geolith.yml b/emulators/geolith.yml index b9c4c515e..7894c40ad 100644 --- a/emulators/geolith.yml +++ b/emulators/geolith.yml @@ -55,7 +55,7 @@ notes: | The core performs no hash or size validation on System ROMs. CD BIOS family detection and the optional CD speed hack patches use byte patterns and apply only when the 68K BIOS is at least 512 KiB (src/geo_cd.c:1888-1910, - 1904-1924). Upstream declares the expected archive MD5s through the Jolly + 1913-1941, 1959-1980). Upstream declares the expected archive MD5s through the Jolly Good API BIOS list (jg.c:220-231), and the md5 fields on the archives below are copied from it. diff --git a/emulators/kemulator.yml b/emulators/kemulator.yml index 9b77503d1..c65062871 100644 --- a/emulators/kemulator.yml +++ b/emulators/kemulator.yml @@ -5,7 +5,8 @@ source: "https://github.com/shinovon/KEmulator" upstream: "https://github.com/shinovon/KEmulator" author: "shinovon" profiled_date: "2026-08-11" -source_commit: "1ab219907cfcac0e6313d1b6ccba13ad74015d08" +source_commit: "4dfdfe31243c9bdbcffa987101e27421618e79e8" +prose_written_at: "1ab219907cfcac0e6313d1b6ccba13ad74015d08" core_version: "2.22" version_basis: kind: file diff --git a/emulators/linapple.yml b/emulators/linapple.yml index fb57da131..aff4689bc 100644 --- a/emulators/linapple.yml +++ b/emulators/linapple.yml @@ -5,6 +5,7 @@ source: "https://github.com/linappleii/linapple" upstream: "https://github.com/AppleWin/AppleWin" profiled_date: "2026-10-20" source_commit: "7f4b60898d91bfecd6f4d8683a374f38b0564962" +prose_written_at: "7f4b60898d91bfecd6f4d8683a374f38b0564962" upstream_commit: "9970ef6b668a7cf057ce6d82f100dde6a751f4d3" core_version: "3.0.0" version_basis: diff --git a/emulators/pcee2.yml b/emulators/pcee2.yml index 36335723f..d4236c595 100644 --- a/emulators/pcee2.yml +++ b/emulators/pcee2.yml @@ -4,8 +4,8 @@ core_classification: community_fork bios_mode: agnostic source: "https://github.com/WizzardSK/pcee2-libretro" upstream: "https://github.com/PCSX2/pcsx2" -profiled_date: "2026-09-03" -source_commit: "f52b5a6fe43278dcfc827b85b09fced5a82f863f" +profiled_date: "2026-11-09" +source_commit: "2b0edbe67188977c7709b57d6effdc70147eeb0d" upstream_commit: "ab0b401f99729ef8da3009f9af28d8ee96e0e7ba" core_version: "v2.9.138" version_basis: @@ -15,7 +15,7 @@ version_basis: distance: 0 display_name: "Sony - PlayStation 2 (PCEE2)" cores: [pcee2] -systems: [sony-playstation-2] +systems: [sony-playstation-2, namco-system246, namco-system256] bios_directory: "pcsx2/bios/" resources_directory: "pcsx2/resources/" @@ -24,7 +24,7 @@ data_directories: - ref: pcsx2-resources destination: "pcsx2/resources" bundled: true - source_ref: "pcee2-libretro/Libretro.cpp:543-571, pcsx2/Pcsx2Config.cpp:2417-2429, cmake/EmbedResources.cmake:19-31, 46-62" + source_ref: "pcee2-libretro/Libretro.cpp:548-576, pcsx2/Pcsx2Config.cpp:2418-2430, cmake/EmbedResources.cmake:19-31, 46-62" notes: | libretro port of current PCSX2, merged up to upstream ab0b401f (v2.9.138, @@ -38,56 +38,67 @@ notes: | pcsx2/resources, Settings is pcsx2/inis, and EmuFolders::LoadConfig derives bios, memcards, cheats, patches, textures, gamesettings, cache, snaps, sstates, logs, covers, inputprofiles and videos from DataRoot - (pcee2-libretro/Libretro.cpp:543-557, pcsx2/Pcsx2Config.cpp:2348-2365). + (pcee2-libretro/Libretro.cpp:548-562, pcsx2/Pcsx2Config.cpp:2349-2366). A standalone PCSX2.ini dropped in pcsx2/inis contributes nine emulation - sections as the baseline (pcee2-libretro/Libretro.cpp:633-664), and the core options and the + sections as the baseline (pcee2-libretro/Libretro.cpp:638-669), and the core options and the port overrides apply on top. BIOS detection is filename-agnostic. The core option pcsx2_bios lists every file of pcsx2/bios that IsBIOS accepts: a romdir whose RESET entry is followed by a readable ROMVER, whose fifth character gives the zone (Japan, USA, Europe, Asia, China, T10K, COH-H, Test, Free). With the option on - auto, SettingsOverride selects the first accepted file (pcee2-libretro/Libretro.cpp:707-747, - pcsx2/ps2/BiosTools.cpp:80-197, 284-294). When no BIOS is configured or the + auto, SettingsOverride selects the first accepted file whose zone is not + COH-H, and clears a COH-H image left selected by an earlier arcade game + (pcee2-libretro/Libretro.cpp:712-783, pcsx2/ps2/BiosTools.cpp:80-207, 294-304). + An .acgame content runs on the Namco System 246/256 board BIOS instead: + the first file of pcsx2/bios whose zone is COH-H, whatever the option says. + Without one the game is started on the BIOS the option or the auto + selection gives (pcee2-libretro/Libretro.cpp:2333, + pcee2-libretro/Libretro.cpp:712-730). The media image, the dongle memory + card, the bootloader ELF and the SRAM file are named by the .acgame and + read beside it (pcsx2/VMManager.cpp:1335-1473). When no BIOS is configured or the configured name is missing, LoadBIOS falls back to FindBiosImage, which - also filters on size between 4 and 8 MB (pcsx2/ps2/BiosTools.cpp:258-282, 317-369). + also filters on size between 4 and 8 MB (pcsx2/ps2/BiosTools.cpp:268-292, 327-379). The image is read into the 4 MB ROM region, and a file shorter than 2465792 bytes turns off the OSDSys parameter HLE. No hash is matched. Booting with - no content starts the BIOS (pcee2-libretro/Libretro.cpp:2286-2296). + no content starts the BIOS (pcee2-libretro/Libretro.cpp:2322-2332). Companions derive from the selected image: rom1 and rom2 are tried as the full name plus extension, then with the extension replaced, and are skipped when absent. The nvm is read at the replaced extension and rebuilt with region and language defaults when missing or blank, and the mec is written back - as 0x00020603 when it cannot be read (pcsx2/ps2/BiosTools.cpp:214-241, 366-367, - pcsx2/CDVD/CDVD.cpp:136-205). + as 0x00020603 when it cannot be read (pcsx2/ps2/BiosTools.cpp:224-251, 376-377, + pcsx2/CDVD/CDVD.cpp:141-214). During an arcade game a rebuilt nvm starts + from 0xFF bytes, a readable one is kept without the blank check, and a + missing mec is written as 0x0104020A, the version of a COH-H31100. The shaders, four interface fonts, GameIndex.yaml and patches.zip are built into the core (cmake/EmbedResources.cmake:19-31, 46-62, - pcsx2/CMakeLists.txt:1170-1219) + pcsx2/CMakeLists.txt:1181-1230) and win over the copies on disk unless PCEE2_EXTERNAL_RESOURCES is set in the environment (pcsx2/EmbeddedResources.cpp:8-12, pcsx2/GS/Renderers/Common/GSDevice.cpp:441-465, - pcsx2/ImGui/ImGuiManager.cpp:473-495, pcsx2/GameDatabase.cpp:1037-1066, pcsx2/Patch.cpp:292-331, - pcee2-libretro/Libretro.cpp:580-602). A missing resources directory is a warning, not a - failure (pcee2-libretro/Libretro.cpp:562-571). patches.zip is packed at build time from the + pcsx2/ImGui/ImGuiManager.cpp:473-495, pcsx2/GameDatabase.cpp:1042-1071, pcsx2/Patch.cpp:293-332, + pcee2-libretro/Libretro.cpp:585-607). A missing resources directory is a warning, not a + failure (pcee2-libretro/Libretro.cpp:567-576). patches.zip is packed at build time from the 3rdparty/pcsx2_patches submodule, so the build carries the patches of the commit it points at, and the directory supplies nothing this build reads by default. RedumpDatabase.yaml is read only by the Qt game - summary (pcsx2/GameDatabase.cpp:1213-1226 has no caller in the core), + summary (pcsx2/GameDatabase.cpp:1218-1231 has no caller in the core), game_controller_db.txt only by the SDL input source the port disables - (pcee2-libretro/Libretro.cpp:690-691, pcsx2/Input/SDLInputSource.cpp:701-706), the + (pcee2-libretro/Libretro.cpp:695-696, pcsx2/Input/SDLInputSource.cpp:701-706), the achievement sounds only with achievements enabled, which no core option or adopted ini section does (pcsx2/Achievements.cpp:944-952), and fullscreenui/no-save.png only by the save state selector, whose hotkeys the - port clears (pcee2-libretro/Libretro.cpp:693, pcsx2/ImGui/ImGuiOverlays.cpp:1441-1442). + port clears (pcee2-libretro/Libretro.cpp:698, pcsx2/ImGui/ImGuiOverlays.cpp:1441-1442). The port supplies Roboto alone to ImGui, so no emoji font is read. Per-game user files keep their PCSX2 locations under /pcsx2: - cheats and patches as _.pnach (pcsx2/Patch.cpp:333-368), - gamesettings/_.ini (pcsx2/VMManager.cpp:842-845), + cheats and patches as _.pnach, .pnach for an arcade + game, whose crc is 0 (pcsx2/Patch.cpp:334-371), + gamesettings/_.ini (pcsx2/VMManager.cpp:869-872), textures//replacements (pcsx2/GS/Renderers/HW/GSTextureReplacements.cpp:269-271), memcards/*.ps2, which the core creates and lists in the memory card - options (pcee2-libretro/Libretro.cpp:749-769). The DEV9 HDD image is named in the ini and + options (pcee2-libretro/Libretro.cpp:785-805). The DEV9 HDD image is named in the ini and created on demand. files: @@ -99,18 +110,57 @@ files: max_size: 8388608 required: true validation: [size] - source_ref: "source pcee2-libretro/Libretro.cpp:707-747, source pcsx2/ps2/BiosTools.cpp:16-17, source pcsx2/ps2/BiosTools.cpp:80-197, source pcsx2/ps2/BiosTools.cpp:258-294, source pcsx2/ps2/BiosTools.cpp:317-369" + source_ref: "source pcee2-libretro/Libretro.cpp:712-783, source pcsx2/ps2/BiosTools.cpp:16-17, source pcsx2/ps2/BiosTools.cpp:80-207, source pcsx2/ps2/BiosTools.cpp:268-304, source pcsx2/ps2/BiosTools.cpp:327-379" note: > Any file of pcsx2/bios whose romdir carries RESET and ROMVER. The 4 to 8 MB filter applies in FindBiosImage only. The core option scan and the - auto selection accept any size that passes the romdir check. + auto selection accept any size that passes the romdir check, and the + auto selection passes over a COH-H image. + + - name: r27v1602f.8g + found_by: content + path: pcsx2/bios/r27v1602f.8g + system: namco-system256 + agnostic: true + required: false + description: "Namco System 256 board BIOS" + source_ref: "source pcee2-libretro/Libretro.cpp:712-730, source pcee2-libretro/Libretro.cpp:2333, source pcsx2/ps2/BiosTools.cpp:149-153, source pcsx2/ps2/BiosTools.cpp:176-180" + note: > + Read for an .acgame content only. The first file of pcsx2/bios whose + ROMVER zone is COH-H is selected, whatever its name or size, and no board + is preferred over another. The name is the board position the chip dump + carries. + + - name: r27v1602f.7d + found_by: content + path: pcsx2/bios/r27v1602f.7d + system: namco-system246 + agnostic: true + required: false + description: "Namco System 246 Rack C board BIOS" + source_ref: "source pcee2-libretro/Libretro.cpp:712-730, source pcee2-libretro/Libretro.cpp:2333, source pcsx2/ps2/BiosTools.cpp:149-153, source pcsx2/ps2/BiosTools.cpp:176-180" + note: > + Same selection as the System 256 image: any COH-H image serves any + .acgame content. + + - name: COH-H31000.BIN + found_by: content + path: pcsx2/bios/COH-H31000.BIN + system: namco-system246 + agnostic: true + required: false + description: "Sony COH-H A-000-010 board BIOS" + source_ref: "source pcee2-libretro/Libretro.cpp:712-730, source pcee2-libretro/Libretro.cpp:2333, source pcsx2/ps2/BiosTools.cpp:149-153, source pcsx2/ps2/BiosTools.cpp:176-180" + note: > + Same selection as the System 256 image: any COH-H image serves any + .acgame content. - name: ".rom1" path: "pcsx2/bios/.rom1" description: "DVD player ROM" max_size: 4194304 required: false - source_ref: "source pcsx2/ps2/BiosTools.cpp:214-241, source pcsx2/ps2/BiosTools.cpp:366, source pcsx2/MemoryTypes.h:13" + source_ref: "source pcsx2/ps2/BiosTools.cpp:224-251, source pcsx2/ps2/BiosTools.cpp:376, source pcsx2/MemoryTypes.h:13" note: > Tried as .bin.rom1 then .rom1, opened case-insensitively, skipped with a console line when absent. @@ -120,7 +170,7 @@ files: description: "Chinese ROM extension" max_size: 4194304 required: false - source_ref: "source pcsx2/ps2/BiosTools.cpp:214-241, source pcsx2/ps2/BiosTools.cpp:367, source pcsx2/MemoryTypes.h:14" + source_ref: "source pcsx2/ps2/BiosTools.cpp:224-251, source pcsx2/ps2/BiosTools.cpp:377, source pcsx2/MemoryTypes.h:14" note: > Same lookup as rom1. Present on Chinese region consoles only. @@ -130,7 +180,7 @@ files: size: 1024 required: false hle_fallback: true - source_ref: "source pcsx2/CDVD/CDVD.cpp:47, source pcsx2/CDVD/CDVD.cpp:136-188, source pcsx2/CDVD/CDVD.cpp:207-238" + source_ref: "source pcsx2/CDVD/CDVD.cpp:49, source pcsx2/CDVD/CDVD.cpp:141-197, source pcsx2/CDVD/CDVD.cpp:216-247" note: > Read at .nvm, rebuilt in memory with region and language defaults when it is missing, short, or has a blank config block, and written back @@ -142,16 +192,17 @@ files: size: 4 required: false hle_fallback: true - source_ref: "source pcsx2/CDVD/CDVD.cpp:49, source pcsx2/CDVD/CDVD.cpp:190-204" + source_ref: "source pcsx2/CDVD/CDVD.cpp:51-53, source pcsx2/CDVD/CDVD.cpp:199-213" note: > - Read at .mec, written as 0x00020603 when it cannot be read. + Read at .mec, written as 0x00020603 when it cannot be read, or as + 0x0104020A during an arcade game. - name: "patches.zip" path: "pcsx2/resources/patches.zip" description: "Built-in game patch archive (pnach per serial and CRC)" required: false category: game_data - source_ref: "upstream pcsx2/Patch.cpp:117, source pcsx2/Patch.cpp:292-331, source pcsx2/Patch.cpp:379-419, source pcsx2/CMakeLists.txt:1183-1205" + source_ref: "upstream pcsx2/Patch.cpp:117, source pcsx2/Patch.cpp:293-332, source pcsx2/Patch.cpp:382-422, source pcsx2/CMakeLists.txt:1194-1216" note: > Embedded in the core, packed from the 3rdparty/pcsx2_patches submodule. The copy in the resources directory is opened only when @@ -166,7 +217,7 @@ files: size: 64 required: false hle_fallback: true - source_ref: "upstream pcsx2/DEV9/DEV9.cpp:60-73, source pcsx2/DEV9/DEV9.cpp:97-158" + source_ref: "upstream pcsx2/DEV9/DEV9.cpp:60-73, source pcsx2/DEV9/DEV9.cpp:106-167" note: > Opened read-write and mapped from the process working directory by DEV9init. The built-in eeprom table is used when it cannot be opened. diff --git a/emulators/piece.yml b/emulators/piece.yml index 84b8feb5e..cd44c19ae 100644 --- a/emulators/piece.yml +++ b/emulators/piece.yml @@ -3,9 +3,9 @@ type: libretro core_classification: official_port source: "https://github.com/autch/piece-emu" upstream: "https://github.com/autch/piece-emu" -profiled_date: "2026-09-17" -source_commit: "08ec4b45176e8df0d6d6f67e56b87e847cd64a65" -core_version: "0.1" +profiled_date: "2026-11-09" +source_commit: "9aedad032c5d06a8c6d7cf74142a2b9ac32d77ac" +core_version: "0.3" version_basis: kind: file path: "src/libretro/piece_libretro.cpp" @@ -26,12 +26,12 @@ notes: | the SYSTEMINFO block, then the raw flash contents at the stored offset (src/pfi_format.h:22-47). retro_get_system_info sets need_fullpath to false, so the frontend hands the file over as a memory blob - (src/libretro/piece_libretro.cpp:225-233). retro_load_game checks the + (src/libretro/piece_libretro.cpp:231). retro_load_game checks the PFI signature and SYSTEMINFO.size == 32, sizes SRAM and flash from SYSTEMINFO, copies the flash bytes into an SST39VF flash device and starts the CPU at the reset vector read from flash base 0xC00000 (src/libretro/piece_libretro.cpp:271-362, - src/debug/pfi_loader_blob.cpp:20-91). The P/ECE kernel, its PFFS file + src/debug/pfi_loader_blob.cpp:20-49, 58-91). The P/ECE kernel, its PFFS file system and the installed applications (.pex) all live in that flash image. The bus maps internal IRAM, external SRAM, external flash and I/O only (src/core/bus.hpp:75-79 and src/core/bus.hpp:239). The core @@ -54,8 +54,6 @@ notes: | launcher with startup.pex, date.pex and gamepad.pex installed, and games are added with pfar. - The .info reports display_version 0.3, while the code announces 0.1. - files: [] platform_details: diff --git a/emulators/snes9x2010.yml b/emulators/snes9x2010.yml index 93541ac2d..839753ac9 100644 --- a/emulators/snes9x2010.yml +++ b/emulators/snes9x2010.yml @@ -5,6 +5,7 @@ source: "https://github.com/libretro/snes9x2010" upstream: "https://github.com/snes9xgit/snes9x" profiled_date: "2026-03-25" source_commit: "fe690dd321fa5a46b5234a2bde089d2518c62b0e" +prose_written_at: "fe690dd321fa5a46b5234a2bde089d2518c62b0e" upstream_commit: "1bcc369e89f08243e0a462882fb1f3e42e51de3a" core_version: "1.52.4" version_basis: diff --git a/emulators/supermodel-dojo.yml b/emulators/supermodel-dojo.yml index 2a8b3d8a5..b025b0503 100644 --- a/emulators/supermodel-dojo.yml +++ b/emulators/supermodel-dojo.yml @@ -4,14 +4,15 @@ core_classification: enhanced_fork source: "https://github.com/blueminder/supermodel-dojo" upstream: "https://github.com/trzy/Supermodel" author: "blueminder" -profiled_date: "2026-10-27" -source_commit: "113a48d567c5d49a40292df386fee4a0acaea486" +profiled_date: "2026-11-09" +source_commit: "9bdf7f26a7271cc13b0640487b72fbada0f9dd8b" +prose_written_at: "113a48d567c5d49a40292df386fee4a0acaea486" upstream_commit: "98fcbff223e23b1530c8f899aca2fc4fd5663ab4" upstream_frozen: "The dojo branch merged trzy/Supermodel at this commit through merge ab1ecae. Later upstream commits are not in the port." -core_version: "v0.3a-20261024-git-113a48d" +core_version: "v0.3a-20261029-git-9bdf7f2" version_basis: kind: tag - tag: "v0.3a-20261024-git-113a48d" + tag: "v0.3a-20261029-git-9bdf7f2" distance: 0 display_name: "Sega - Model 3 (Supermodel Dojo)" verification: existence @@ -45,7 +46,7 @@ notes: | netplay, replay and release changes. The two repositories are not linked on GitHub, so the pin is read from the merge itself, whose second parent 98fcbff resolves in both trees. - ref: README.md:3-20, Src/OSD/SDL/Main.cpp:2659-2691 + ref: README.md:3-20, Src/OSD/SDL/Main.cpp:2679-2711 Windows and macOS return relative names, Config/, Assets/, NVRAM/, Saves/, Replays/, ROMs/, resolved against the working directory, which is where the @@ -58,8 +59,8 @@ notes: | is absent. ROMs/ is the default ROMDirectory, where the GUI looks for .zip. ref: Src/OSD/Windows/FileSystemPath.cpp:28-60, Src/OSD/OSX/FileSystemPath.cpp:28-58, - Src/OSD/Unix/FileSystemPath.cpp:63-77, 130-141, 144-198, Src/Dojo/Replay.cpp:28-31, - Src/OSD/SDL/Main.cpp:1885, es-de resources/systems/windows/es_systems.xml:171 + Src/OSD/Unix/FileSystemPath.cpp:63-77, 130-141, 144-198, Src/Dojo/Replay.cpp:67-70, + Src/OSD/SDL/Main.cpp:1905, es-de resources/systems/windows/es_systems.xml:171 ROM sets are MAME format per game archives identified by the CRC32 values in Games.xml, 64 sets at this revision. A parent set holds the ROMs a regional @@ -75,20 +76,20 @@ notes: | is optional, a synthetic image is built when it is absent, and that image takes the logo model from Assets/ when both 3dlogo files are there. ref: Config/Games.xml:1404-1428, Src/Pro1000/Pro1000.cpp:2128-2160, - Src/OSD/SDL/Main.cpp:2831-2834 + Src/OSD/SDL/Main.cpp:2870-2873 The emulator writes and reads back its own Supermodel.ini, generated from the built in Dojo defaults whenever it is absent, plus NVRAM/.nv, Saves/.st and Replays/_.supr with a .st0 sidecar when the session starts from a save state. - ref: Src/OSD/SDL/Main.cpp:1766-1786, 2662, 724-752, 786-809, - Src/OSD/DojoConfigFile.h:31, Src/Dojo/Replay.cpp:23-51 + ref: Src/OSD/SDL/Main.cpp:1786-1806, 2682, 731-759, 793-816, + Src/OSD/DojoConfigFile.h:31, Src/Dojo/Replay.cpp:62-90 Two reads take a path the user chooses and have no fixed name: the MP3 tracks named inside Music.xml, and external GLSL vertex and fragment shaders for the legacy 3D engine, whose config keys are empty by default so the built in shader source is compiled instead. - ref: Src/Sound/MPEG/MpegAudio.cpp:71-86, Src/OSD/SDL/Main.cpp:1889-1890, + ref: Src/Sound/MPEG/MpegAudio.cpp:71-86, Src/OSD/SDL/Main.cpp:1909-1910, Src/Graphics/Shader.cpp:100-106 The v0.3a--git- releases are built from the dojo branch and named @@ -99,7 +100,7 @@ notes: | date and short sha, and the tree falls back to 0.3a-WIP. The older dojo-preview tags, Preview 6 of 2025-04-27 the last, shipped a separate launcher. ref: .github/workflows/release.yml:4-5, .github/workflows/release.yml:21, - .github/workflows/release.yml:48-49, Makefiles/Rules.inc:325-327, + .github/workflows/release.yml:48-49, Makefiles/Rules.inc:328-330, Src/Version.h:32 ES-DE reaches it through the SUPERMODEL-DOJO find rule, present in the Windows @@ -116,25 +117,25 @@ files: bundled: true description: "ROM set definitions" note: "Parsed at startup into the game database. Every ROM region, file name and CRC32 the loader matches against comes from here, so an unreadable file leaves no set to resolve and the launch returns before the emulator is built. The path is a config key, so -game-xml-file moves it." - source_ref: "source Src/OSD/SDL/Main.cpp:126, Src/OSD/SDL/Main.cpp:1878, Src/OSD/SDL/Main.cpp:2369, Src/OSD/SDL/Main.cpp:2757-2768, source Src/GameLoader.cpp:601-611, Src/GameLoader.cpp:1066-1069, source Src/OSD/Windows/FileSystemPath.cpp:28-32" + source_ref: "source Src/OSD/SDL/Main.cpp:126, Src/OSD/SDL/Main.cpp:1898, Src/OSD/SDL/Main.cpp:2389, Src/OSD/SDL/Main.cpp:2792-2803, source Src/GameLoader.cpp:601-611, Src/GameLoader.cpp:1066-1069, source Src/OSD/Windows/FileSystemPath.cpp:28-32" - name: p1crosshair.bmp path: "Assets/p1crosshair.bmp" size: 295992 - required: true + required: false bundled: true description: "Player 1 light gun crosshair texture" - note: "Both bitmaps are read on every launch whatever CrosshairStyle holds, since the load runs before the style decides anything, and a null surface aborts startup ahead of the Model 3 object. 32 bit BMP with alpha, sides a multiple of 2." - source_ref: "upstream Src/OSD/SDL/Crosshair.cpp:34-51, source Src/OSD/SDL/Main.cpp:2817-2823, source Assets/DIR.txt" + note: "Read only for a light gun game with CrosshairStyle set to bmp. The default style is vector, which draws the crosshair without a texture. When the bmp style is set and either bitmap fails to load, the gun game stops before the Model 3 object is built. 32 bit BMP with alpha, sides a multiple of 2." + source_ref: "source Src/OSD/SDL/Crosshair.cpp:32-61, source Src/OSD/SDL/Main.cpp:156-161, source Src/OSD/SDL/Main.cpp:1956, source Src/OSD/SDL/Main.cpp:2852-2862, source Assets/DIR.txt" - name: p2crosshair.bmp path: "Assets/p2crosshair.bmp" size: 295992 - required: true + required: false bundled: true description: "Player 2 light gun crosshair texture" - note: "Read in the same call as the player 1 bitmap and equally fatal when it fails to load." - source_ref: "upstream Src/OSD/SDL/Crosshair.cpp:35, 49-51, source Src/OSD/SDL/Main.cpp:2817-2823" + note: "Read in the same call as the player 1 bitmap, under the same conditions, and equally fatal when it fails to load." + source_ref: "source Src/OSD/SDL/Crosshair.cpp:35, 48-61, source Src/OSD/SDL/Main.cpp:2852-2862" - name: Music.xml path: "Config/Music.xml" @@ -142,7 +143,7 @@ files: bundled: true description: "Custom MPEG music track map" note: "Consulted only for a game with a DSB1 or DSB2 board, and skipped when the file is absent. Maps an MPEG ROM offset to an MP3 the user supplies. Shipped in the v0.3a-20261024-git-113a48d archives, the Windows zip with CRLF line endings (sha1 4c556c3a848ef61205a53a9a73ba5e46970d445f)." - source_ref: "source Src/OSD/SDL/Main.cpp:127, Src/OSD/SDL/Main.cpp:1077, source Src/Sound/MPEG/MpegAudio.cpp:88-108" + source_ref: "source Src/OSD/SDL/Main.cpp:127, Src/OSD/SDL/Main.cpp:1098, source Src/Sound/MPEG/MpegAudio.cpp:88-108" - name: "pro1000.zip" required: true diff --git a/emulators/tr1x.yml b/emulators/tr1x.yml index f39b7237e..6935ed48a 100644 --- a/emulators/tr1x.yml +++ b/emulators/tr1x.yml @@ -4,14 +4,14 @@ type: standalone core_classification: game_engine source: "https://github.com/LostArtefacts/TRX" upstream: "https://github.com/LostArtefacts/TRX" -source_commit: "4d55f7d3130f9d04bdc1fefb85bf4d8fa93a22d3" +source_commit: "7d1f0e8cbad9e9c3d55248188184384aa6e0f5b5" upstream_commit: "3d39911a1b839c753b6efad236db67d9fb2b273e" -core_version: "trx-1.11.1-784-g4d55f7d" +core_version: "trx-1.12-25-g7d1f0e8" version_basis: kind: tag match: "trx-*" - tag: "trx-1.11.1" - distance: 784 + tag: "trx-1.12" + distance: 25 profiled_date: "2026-10-04" cores: [] systems: @@ -649,28 +649,28 @@ files: path: "games/tr1-ub/levels/egypt.phd" required: false category: game_data - source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:65, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:18-22" + source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:65, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:17-20" note: "Return to Egypt. The installer offers the original edition and a fan-patched edition of the level set." - name: "cat.phd" path: "games/tr1-ub/levels/cat.phd" required: false category: game_data - source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:89, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:18-22" + source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:89, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:17-20" note: "Temple of the Cat. The installer offers the original edition and a fan-patched edition of the level set." - name: "end.phd" path: "games/tr1-ub/levels/end.phd" required: false category: game_data - source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:112, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:18-22" + source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:112, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:17-20" note: "Atlantean Stronghold. The installer offers the original edition and a fan-patched edition of the level set." - name: "end2.phd" path: "games/tr1-ub/levels/end2.phd" required: false category: game_data - source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:134, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:18-22" + source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:134, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:17-20" note: "The Hive. The installer offers the original edition and a fan-patched edition of the level set." # PC demo diff --git a/emulators/wqxemu.yml b/emulators/wqxemu.yml index 36ec2a35c..febe45137 100644 --- a/emulators/wqxemu.yml +++ b/emulators/wqxemu.yml @@ -3,9 +3,9 @@ type: standalone + libretro core_classification: official_port source: "https://git.libretro.com/libretro/wqxemu" upstream: "https://github.com/AloysHF/WQXEmu" -profiled_date: "2026-10-18" -source_commit: "caf0998989446e3d6659f67c1b8aabd708a0379d" -upstream_commit: "caf0998989446e3d6659f67c1b8aabd708a0379d" +profiled_date: "2026-11-09" +source_commit: "44f492cfac4c47e9e2470144c972264779c5f9bf" +upstream_commit: "44f492cfac4c47e9e2470144c972264779c5f9bf" core_version: "0.1.0" version_basis: kind: file @@ -29,230 +29,235 @@ notes: | git.libretro.com repository is a mirror of the GitHub one at the same commit, and the buildbot consumes its .gitlab-ci.yml. - The core takes no content. retro_load_game refuses a non-null game - info (crates/wqxemu-libretro/src/lib.rs:596-599) and the machine is - started through Start Core, supports_no_game being set - (crates/wqxemu-libretro/src/lib.rs:440-446). The model comes from the + The core takes no content. retro_load_game ignores the game info it + is given and starts the machine, supports_no_game being set + (crates/wqxemu-libretro/src/lib.rs:776-793, + crates/wqxemu-libretro/src/lib.rs:608-612). The model comes from the wqxemu_model core option, NC1020 when unset - (crates/wqxemu-libretro/src/lib.rs:227-246, - crates/wqxemu-libretro/src/lib.rs:920-937). + (crates/wqxemu-libretro/src/lib.rs:325-345, + crates/wqxemu-libretro/src/lib.rs:1111-1129). - The firmware set is whatever {system}/WQXEmu// holds - (crates/wqxemu-libretro/src/lib.rs:216-221, model names in - crates/wqxemu-core/src/machine.rs:35-43). File names are free: each - regular file is assigned to a slot by its extension, case-insensitive, - .rom or .bin to the system ROM, .fls or .nor to NOR, .nand to NAND and - .nand0 to the first NAND plane. Anything else is ignored - (crates/wqxemu-core/src/machine.rs:94-126). A slot matched by two files - fails the start with "Multiple dumps", and so does a directory - with no dump at all (crates/wqxemu-core/src/machine.rs:128-161). The - set is then checked against the model: NC1020, PC1000 and CC800 need a - ROM and a NOR and refuse NAND files. NC2000 needs NOR, NAND and NAND0 - and refuses a ROM. NC3000 needs NOR and NAND, NAND0 optional, and - refuses a ROM (crates/wqxemu-core/src/machine.rs:164-207). Any failure - is shown and retro_load_game returns false - (crates/wqxemu-libretro/src/lib.rs:608-622). Only the directory of the - selected model is read. + The firmware set is read from {system}/wqxemu// + (crates/wqxemu-libretro/src/lib.rs:310-323, + crates/wqxemu-libretro/src/lib.rs:389-407). The folder names and file + names are fixed and compared byte for byte against the directory + entries, so a folder or file that differs only in case is not found + (crates/wqxemu-core/src/machine.rs:111-131, model names in + crates/wqxemu-core/src/machine.rs:33-44). Each model reads only its own + files: obj_lu.bin and nc1020.fls for the NC1020, pc1000.rom and + pc1000.nor for the PC1000, obj.bin and cc800.fls for the CC800, + nc2000.nor, nc2000.nand and nc2000.nand0 for the NC2000, nc3000.nor, + nc3000.nand and an optional nc3000.nand0 for the NC3000 + (crates/wqxemu-core/src/machine.rs:63-84, + crates/wqxemu-core/src/machine.rs:176-194). A missing folder or any + missing required file fails the start with a message listing every + missing name (crates/wqxemu-core/src/machine.rs:153-175, + crates/wqxemu-core/src/machine.rs:196-204), shown by the core before + retro_load_game returns false (crates/wqxemu-libretro/src/lib.rs:787-793). + Other files in the folder are ignored. + + The Emscripten build used by EmulatorJS reads the same layout from the + root of the extracted firmware archive, and there the model is the only + wqxemu// folder the archive holds. Several model folders stop + the start (crates/wqxemu-libretro/src/lib.rs:347-387). Each machine reads its files whole with std::fs::read and checks their size only: a ROM or NOR image must be at least as large as the window it fills, the PC1000 ROM must be exactly 12 MiB or 16 MiB, and NAND images are copied without any check. A file that fails the check makes Emulator::new fail and retro_load_game returns false with the loader's - message (crates/wqxemu-libretro/src/lib.rs:635-641). No hash is + message (crates/wqxemu-libretro/src/lib.rs:806-812). No hash is verified. - The firmware files are never written. Neither frontend calls save_nor; - the writable flash, NAND, RAM and peripheral state of a session is - serialized to {save}//.wqxs, a gzip file the core - creates on unload and reloads at the next start of the same model and - firmware set (crates/wqxemu-libretro/src/lib.rs:280-304, - crates/wqxemu-libretro/src/lib.rs:643-660, - crates/wqxemu-core/src/save.rs:43-88). The fingerprint is an FNV-1a - over the slot layout and the content of every file of the set - (crates/wqxemu-core/src/machine.rs:209-233). That file is created by + The firmware files are never written. The writable flash, NAND, RAM + and peripheral state of a session is serialized to + {save}//.wqxs, a gzip file the core creates on + unload and reloads at the next start of the same model and firmware + set (crates/wqxemu-libretro/src/lib.rs:441-467, + crates/wqxemu-libretro/src/lib.rs:814-842, + crates/wqxemu-core/src/save.rs:46-96). The Emscripten build writes no + session file. The fingerprint is an FNV-1a over the slot layout and + the content of every file of the set + (crates/wqxemu-core/src/machine.rs:252-276). That file is created by the core. retro_get_memory_data returns null for every memory id - (crates/wqxemu-libretro/src/lib.rs:839-842). + (crates/wqxemu-libretro/src/lib.rs:1025-1032). - The standalone binary takes the same directory as --rom-dir, with the - same extension rules; --model selects the machine, otherwise - detect_model guesses it from the file sizes - (crates/wqxemu/src/main.rs:27-34, crates/wqxemu/src/main.rs:239-261, - crates/wqxemu-core/src/machines/mod.rs:38-87). Its device skin is drawn - by code by default, or taken from include_bytes! PNGs with --skin image - (crates/wqxemu/src/main.rs:57-59, crates/wqxemu/src/keypad.rs:72-91). - - The libretro-core-info file names the PC1000 NOR image pc1000.fls. Any - single .fls or .nor file in WQXEmu/pc1000/ is read, but pc1000.fls and - pc1000.nor side by side stop the PC1000 from starting. + The standalone binary reads the same wqxemu// layout below + --system-dir, ./system by default, and --model selects the machine, + nc1020 by default (crates/wqxemu/src/main.rs:27-42, + crates/wqxemu/src/main.rs:235-249). It keeps a session only in the file + named by --state-file (crates/wqxemu/src/main.rs:179-233). Its device + skin is drawn by code by default, or taken from include_bytes! PNGs + with --skin image (crates/wqxemu/src/main.rs:53-55, + crates/wqxemu/src/keypad.rs:72-91). files: - name: obj_lu.bin - path: WQXEmu/nc1020/obj_lu.bin + path: wqxemu/nc1020/obj_lu.bin system: wenquxing-nc1020 required: true min_size: 25165824 validation: [size] description: "NC1020 system ROM, three 8 MiB volumes" note: >- - The .rom/.bin file of {system}/WQXEmu/nc1020/, read whole. The image must + Read whole from {system}/wqxemu/nc1020/obj_lu.bin. The image must be at least 0x8000 * 0x300 bytes or the loader fails, and a larger file is kept whole. Each 32 KiB bank is stored with its 16 KiB halves swapped and is swapped back on load, and the BBS pages are mapped from it. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, source crates/wqxemu-core/src/machines/nc1020.rs:61-98, source crates/wqxemu-core/src/memory.rs:24" + source_ref: "source crates/wqxemu-core/src/machine.rs:65-72, source crates/wqxemu-core/src/machine.rs:178-183, source crates/wqxemu-core/src/machines/nc1020.rs:61-98, source crates/wqxemu-core/src/memory.rs:24" - name: nc1020.fls - path: WQXEmu/nc1020/nc1020.fls + path: wqxemu/nc1020/nc1020.fls system: wenquxing-nc1020 required: true min_size: 1048576 validation: [size] description: "NC1020 NOR flash, 32 banks of 32 KiB" note: >- - The .fls/.nor file of {system}/WQXEmu/nc1020/, read whole. The image must + Read whole from {system}/wqxemu/nc1020/nc1020.fls. The image must be at least 0x8000 * 0x20 bytes or the loader fails. Only the first 1 MiB is used, with the same 16 KiB half swap as the ROM. Writes go to the in-memory copy and are persisted in the .wqxs session file, never to this file. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, source crates/wqxemu-core/src/machines/nc1020.rs:101-122, source crates/wqxemu-core/src/memory.rs:26" + source_ref: "source crates/wqxemu-core/src/machine.rs:76-84, source crates/wqxemu-core/src/machine.rs:178-183, source crates/wqxemu-core/src/machines/nc1020.rs:101-122, source crates/wqxemu-core/src/memory.rs:26" - name: pc1000.rom - path: WQXEmu/pc1000/pc1000.rom + path: wqxemu/pc1000/pc1000.rom system: wenquxing-pc1000 required: true size: [12582912, 16777216] validation: [size] description: "PC1000 system ROM, obj1 + obj2 + obj3" note: >- - The .rom/.bin file of {system}/WQXEmu/pc1000/, read whole and stored + Read whole from {system}/wqxemu/pc1000/pc1000.rom and stored linearly. Exactly 12 MiB (obj1, obj2, obj3 back to back) or 16 MiB (the PC1000EMUX and Android layout, obj3 at 12 MiB with 8 to 12 MiB unused) is accepted. Any other size fails the loader. The volume tables are rebuilt for the layout found. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, source crates/wqxemu-core/src/machines/pc1000.rs:38-40, source crates/wqxemu-core/src/machines/pc1000.rs:236-283" + source_ref: "source crates/wqxemu-core/src/machine.rs:65-72, source crates/wqxemu-core/src/machine.rs:178-183, source crates/wqxemu-core/src/machines/pc1000.rs:38-40, source crates/wqxemu-core/src/machines/pc1000.rs:236-283" - name: pc1000.nor - path: WQXEmu/pc1000/pc1000.nor + path: wqxemu/pc1000/pc1000.nor system: wenquxing-pc1000 required: true min_size: 524288 validation: [size] description: "PC1000 NOR flash, 16 banks of 32 KiB" note: >- - The .fls/.nor file of {system}/WQXEmu/pc1000/, read whole. The image must + Read whole from {system}/wqxemu/pc1000/pc1000.nor. The image must be at least 0x80000 bytes or the loader fails. Only the first 512 KiB is used. A dump stored with swapped 16 KiB halves is recognised by the info-block signature at bank 0 offset 0x4000 and - unswapped. The libretro-core-info file names it pc1000.fls. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, source crates/wqxemu-core/src/machines/pc1000.rs:42, source crates/wqxemu-core/src/machines/pc1000.rs:284-313" + unswapped. + source_ref: "source crates/wqxemu-core/src/machine.rs:76-84, source crates/wqxemu-core/src/machine.rs:178-183, source crates/wqxemu-core/src/machines/pc1000.rs:42, source crates/wqxemu-core/src/machines/pc1000.rs:284-313" - name: obj.bin - path: WQXEmu/cc800/obj.bin + path: wqxemu/cc800/obj.bin system: wenquxing-cc800 required: true min_size: 16777216 validation: [size] description: "CC800 system ROM, two volumes of 256 banks" note: >- - The .rom/.bin file of {system}/WQXEmu/cc800/, read whole. The image must be at + Read whole from {system}/wqxemu/cc800/obj.bin. The image must be at least 0x1000000 bytes or the loader fails. Only the first 16 MiB is used. Each 32 KiB bank is stored with its 16 KiB halves swapped and is swapped back on load. Volume 0 is banks 0 to 255, volume 1 banks 256 to 511. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, source crates/wqxemu-core/src/machines/cc800.rs:38, source crates/wqxemu-core/src/machines/cc800.rs:229-251" + source_ref: "source crates/wqxemu-core/src/machine.rs:65-72, source crates/wqxemu-core/src/machine.rs:178-183, source crates/wqxemu-core/src/machines/cc800.rs:38, source crates/wqxemu-core/src/machines/cc800.rs:229-251" - name: cc800.fls - path: WQXEmu/cc800/cc800.fls + path: wqxemu/cc800/cc800.fls system: wenquxing-cc800 required: true min_size: 524288 validation: [size] description: "CC800 NOR flash, 16 banks of 32 KiB" note: >- - The .fls/.nor file of {system}/WQXEmu/cc800/, read whole. The image must be + Read whole from {system}/wqxemu/cc800/cc800.fls. The image must be at least 0x80000 bytes or the loader fails. Only the first 512 KiB is used, with the same 16 KiB half swap as the ROM. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, source crates/wqxemu-core/src/machines/cc800.rs:40, source crates/wqxemu-core/src/machines/cc800.rs:252-267" + source_ref: "source crates/wqxemu-core/src/machine.rs:76-84, source crates/wqxemu-core/src/machine.rs:178-183, source crates/wqxemu-core/src/machines/cc800.rs:40, source crates/wqxemu-core/src/machines/cc800.rs:252-267" - name: nc2000.nor - path: WQXEmu/nc2000/nc2000.nor + path: wqxemu/nc2000/nc2000.nor system: wenquxing-nc2000 required: true min_size: 524288 validation: [size] description: "NC2000 NOR flash, 16 banks of 32 KiB" note: >- - The .fls/.nor file of {system}/WQXEmu/nc2000/, read whole in physical order, - no bank swap. The image must be at least 16 * 0x8000 bytes or the + Read whole from {system}/wqxemu/nc2000/nc2000.nor in physical + order, no bank swap. The image must be at least 16 * 0x8000 bytes or the loader fails. Only the first 512 KiB is used. Bank 0 is the fixed BIOS page at 0xE000. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, source crates/wqxemu-core/src/machines/nc2000.rs:20, source crates/wqxemu-core/src/machines/nc2000.rs:28, source crates/wqxemu-core/src/machines/nc2000.rs:265-277" + source_ref: "source crates/wqxemu-core/src/machine.rs:76-84, source crates/wqxemu-core/src/machine.rs:184-188, source crates/wqxemu-core/src/machines/nc2000.rs:20, source crates/wqxemu-core/src/machines/nc2000.rs:28, source crates/wqxemu-core/src/machines/nc2000.rs:265-277" - name: nc2000.nand - path: WQXEmu/nc2000/nc2000.nand + path: wqxemu/nc2000/nc2000.nand system: wenquxing-nc2000 required: true size: 34603008 description: "NC2000 NAND flash main area, 65536 pages of 528 bytes" note: >- - The .nand file of {system}/WQXEmu/nc2000/, read whole and copied after + Read whole from {system}/wqxemu/nc2000/nc2000.nand and copied after the 64-page first plane, up to 65536 pages of 512 data plus 16 spare bytes. No size check: bytes beyond that are ignored and a shorter file leaves the remainder erased at 0xFF. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, source crates/wqxemu-core/src/machines/nc2000.rs:22-26, source crates/wqxemu-core/src/machines/nc2000.rs:278-282, source crates/wqxemu-core/src/machines/nc2000.rs:292-296" + source_ref: "source crates/wqxemu-core/src/machine.rs:184-188, source crates/wqxemu-core/src/machines/nc2000.rs:22-26, source crates/wqxemu-core/src/machines/nc2000.rs:278-282, source crates/wqxemu-core/src/machines/nc2000.rs:292-296" - name: nc2000.nand0 - path: WQXEmu/nc2000/nc2000.nand0 + path: wqxemu/nc2000/nc2000.nand0 system: wenquxing-nc2000 required: true size: 33792 description: "NC2000 NAND flash first plane, 64 pages of 528 bytes" note: >- - The .nand0 file of {system}/WQXEmu/nc2000/, read whole into the first - 64 pages of the NAND array. No size check. validate_for_model - requires a NAND0 dump for this model in both frontends, so a missing - file stops the start. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, upstream crates/wqxemu-core/src/machine.rs:193-198, source crates/wqxemu-core/src/machines/nc2000.rs:24, source crates/wqxemu-core/src/machines/nc2000.rs:283-288, source crates/wqxemu-core/src/machines/nc2000.rs:298-301" + Read whole from {system}/wqxemu/nc2000/nc2000.nand0 into the first + 64 pages of the NAND array. No size check. The firmware set of this + model requires it in both frontends, so a missing file stops the + start. + source_ref: "source crates/wqxemu-core/src/machine.rs:184-188, source crates/wqxemu-core/src/machines/nc2000.rs:24, source crates/wqxemu-core/src/machines/nc2000.rs:283-288, source crates/wqxemu-core/src/machines/nc2000.rs:298-301" - name: nc3000.nor - path: WQXEmu/nc3000/nc3000.nor + path: wqxemu/nc3000/nc3000.nor system: wenquxing-nc3000 required: true min_size: 1048576 validation: [size] description: "NC3000 NOR flash, 32 banks of 32 KiB" note: >- - The .fls/.nor file of {system}/WQXEmu/nc3000/, read whole in physical order, - no bank swap. The image must be at least 32 * 0x8000 bytes or the + Read whole from {system}/wqxemu/nc3000/nc3000.nor in physical + order, no bank swap. The image must be at least 32 * 0x8000 bytes or the loader fails. Only the first 1 MiB is used. Bank 0 is the fixed BIOS page at 0xE000. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, source crates/wqxemu-core/src/machines/nc3000.rs:23, source crates/wqxemu-core/src/machines/nc3000.rs:33, source crates/wqxemu-core/src/machines/nc3000.rs:272-284" + source_ref: "source crates/wqxemu-core/src/machine.rs:76-84, source crates/wqxemu-core/src/machine.rs:189-193, source crates/wqxemu-core/src/machines/nc3000.rs:23, source crates/wqxemu-core/src/machines/nc3000.rs:33, source crates/wqxemu-core/src/machines/nc3000.rs:272-284" - name: nc3000.nand - path: WQXEmu/nc3000/nc3000.nand + path: wqxemu/nc3000/nc3000.nand system: wenquxing-nc3000 required: true size: 69206016 storage: large_file description: "NC3000 NAND flash, two planes of 65536 pages of 528 bytes" note: >- - The .nand file of {system}/WQXEmu/nc3000/, read whole and copied after + Read whole from {system}/wqxemu/nc3000/nc3000.nand and copied after the 64-page first plane, up to 131072 pages of 512 data plus 16 spare bytes. No size check: bytes beyond that are ignored and a shorter file leaves the remainder erased at 0xFF. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, source crates/wqxemu-core/src/machines/nc3000.rs:25-29, source crates/wqxemu-core/src/machines/nc3000.rs:285-289, source crates/wqxemu-core/src/machines/nc3000.rs:336-340" + source_ref: "source crates/wqxemu-core/src/machine.rs:189-193, source crates/wqxemu-core/src/machines/nc3000.rs:25-29, source crates/wqxemu-core/src/machines/nc3000.rs:285-289, source crates/wqxemu-core/src/machines/nc3000.rs:336-340" - name: nc3000.nand0 - path: WQXEmu/nc3000/nc3000.nand0 + path: wqxemu/nc3000/nc3000.nand0 system: wenquxing-nc3000 required: false size: 33792 description: "NC3000 NAND flash first plane, 64 pages of 528 bytes" note: >- - The .nand0 file of {system}/WQXEmu/nc3000/, read whole into the first - 64 pages of the NAND array when the file exists, and validate_for_model - does not require it for this model. Without it the core writes the + Read whole from {system}/wqxemu/nc3000/nc3000.nand0 into the first + 64 pages of the NAND array when the file exists. The firmware set of + this model does not require it. Without it the core writes the marker "ggv nc3000" at offset 528 of an erased first plane and the machine boots the same way. - source_ref: "source crates/wqxemu-core/src/machine.rs:119-123, upstream crates/wqxemu-core/src/machine.rs:199-203, source crates/wqxemu-core/src/machines/nc3000.rs:27-31, source crates/wqxemu-core/src/machines/nc3000.rs:290-297, source crates/wqxemu-core/src/machines/nc3000.rs:342-350" + source_ref: "source crates/wqxemu-core/src/machine.rs:189-193, source crates/wqxemu-core/src/machines/nc3000.rs:27-31, source crates/wqxemu-core/src/machines/nc3000.rs:290-297, source crates/wqxemu-core/src/machines/nc3000.rs:342-350" diff --git a/website/src/data/source-paths.json b/website/src/data/source-paths.json index c724bb8f8..efb0c90c0 100644 --- a/website/src/data/source-paths.json +++ b/website/src/data/source-paths.json @@ -143,11 +143,10 @@ "src/verite/lle/loader.rs", "src/verite/mod.rs" ], - "git.libretro.com/libretro/wqxemu@caf0998989446e3d6659f67c1b8aabd708a0379d": [ + "git.libretro.com/libretro/wqxemu@44f492cfac4c47e9e2470144c972264779c5f9bf": [ "Cargo.toml", "crates/wqxemu-core/src/machine.rs", "crates/wqxemu-core/src/machines/cc800.rs", - "crates/wqxemu-core/src/machines/mod.rs", "crates/wqxemu-core/src/machines/nc1020.rs", "crates/wqxemu-core/src/machines/nc2000.rs", "crates/wqxemu-core/src/machines/nc3000.rs", @@ -442,11 +441,10 @@ "crates/spmp8000emu-libretro/src/libretro/api.rs", "crates/spmp8000emu-libretro/src/libretro/constants.rs" ], - "github.com/AloysHF/WQXEmu@caf0998989446e3d6659f67c1b8aabd708a0379d": [ + "github.com/AloysHF/WQXEmu@44f492cfac4c47e9e2470144c972264779c5f9bf": [ "Cargo.toml", "crates/wqxemu-core/src/machine.rs", "crates/wqxemu-core/src/machines/cc800.rs", - "crates/wqxemu-core/src/machines/mod.rs", "crates/wqxemu-core/src/machines/nc1020.rs", "crates/wqxemu-core/src/machines/nc2000.rs", "crates/wqxemu-core/src/machines/nc3000.rs", @@ -585,7 +583,7 @@ "github.com/Clownacy/clownmdemu-libretro@d43c2708b0a31c285ce16724b6c4a2e92af07346": [ "source/libretro-interface.c" ], - "github.com/ColinPitrat/caprice32@8c778bf072a06fb7c23b9cccd179041db7f79a52": [ + "github.com/ColinPitrat/caprice32@a0d78f0f7c6d19a5d3205d1b231bd4da100ec6f3": [ "cap32.cfg", "rom/MF2.rom", "rom/amsdos.rom", @@ -1055,14 +1053,21 @@ "tools/installer/TRX_Installer/InstallMappings.cs" ], "github.com/LostArtefacts/TRX@4d55f7d3130f9d04bdc1fefb85bf4d8fa93a22d3": [ - "data/trx/ship/games/tr1-demo-pc/gameflow.json5", - "data/trx/ship/games/tr1-ub/gameflow.json5", - "data/trx/ship/games/tr1/gameflow.json5", "data/trx/ship/games/tr2-gm/gameflow.json5", "data/trx/ship/games/tr2/gameflow.json5", "src/trx/game/game_flow/reader.c", - "src/trx/game/level/format/format_tr1.c", "src/trx/game/level/pipeline.c", + "src/trx/game/music/backend_files.c", + "src/trx/game/paths.c", + "tools/download_assets", + "tools/installer/TRX_Installer/InstallMappings.cs" + ], + "github.com/LostArtefacts/TRX@7d1f0e8cbad9e9c3d55248188184384aa6e0f5b5": [ + "data/trx/ship/games/tr1-demo-pc/gameflow.json5", + "data/trx/ship/games/tr1-ub/gameflow.json5", + "data/trx/ship/games/tr1/gameflow.json5", + "src/trx/game/game_flow/reader.c", + "src/trx/game/level/format/format_tr1.c", "src/trx/game/locale/chain.h", "src/trx/game/music/backend_files.c", "src/trx/game/paths.c", @@ -2140,7 +2145,7 @@ "src/media.cpp", "src/video.cpp" ], - "github.com/WizzardSK/pcee2-libretro@f52b5a6fe43278dcfc827b85b09fced5a82f863f": [ + "github.com/WizzardSK/pcee2-libretro@2b0edbe67188977c7709b57d6effdc70147eeb0d": [ "cmake/EmbedResources.cmake", "pcee2-libretro/Libretro.cpp", "pcsx2/Achievements.cpp", @@ -2570,8 +2575,9 @@ "src/mame/vtech/vtech1.cpp", "src/osd/modules/switchres/switchres_module.cpp" ], - "github.com/ares-emulator/ares@d400eee9764fe22a8de0247a52757d2021d0539c": [ + "github.com/ares-emulator/ares@dd737665221a6f58c6c4d2547d2f38b0abe3aef0": [ "desktop-ui/desktop-ui.cpp", + "desktop-ui/emulator/arcade.cpp", "desktop-ui/emulator/atari-5200.cpp", "desktop-ui/emulator/colecovision.cpp", "desktop-ui/emulator/emulator.cpp", @@ -2584,7 +2590,6 @@ "desktop-ui/emulator/msx.cpp", "desktop-ui/emulator/msx2.cpp", "desktop-ui/emulator/neo-geo-aes.cpp", - "desktop-ui/emulator/neo-geo-mvs.cpp", "desktop-ui/emulator/neo-geo-pocket-color.cpp", "desktop-ui/emulator/neo-geo-pocket.cpp", "desktop-ui/emulator/nintendo-64dd.cpp", @@ -2594,6 +2599,7 @@ "desktop-ui/emulator/saturn.cpp", "desktop-ui/emulator/super-famicom.cpp", "desktop-ui/emulator/supergrafx-cd.cpp", + "desktop-ui/settings/cores.cpp", "desktop-ui/settings/firmware.cpp", "desktop-ui/settings/settings.hpp", "mia/medium/master-system.cpp", @@ -2621,7 +2627,7 @@ "src/main.qml", "src/qml.qrc" ], - "github.com/autch/piece-emu@08ec4b45176e8df0d6d6f67e56b87e847cd64a65": [ + "github.com/autch/piece-emu@9aedad032c5d06a8c6d7cf74142a2b9ac32d77ac": [ "src/core/bus.hpp", "src/debug/pfi_loader_blob.cpp", "src/libretro/CMakeLists.txt", @@ -2741,7 +2747,7 @@ "core/windows/winmain.cpp", "shell/apple/emulator-osx/emulator-osx/osx-main.mm" ], - "github.com/blueminder/supermodel-dojo@113a48d567c5d49a40292df386fee4a0acaea486": [ + "github.com/blueminder/supermodel-dojo@9bdf7f26a7271cc13b0640487b72fbada0f9dd8b": [ ".github/workflows/release.yml", "Assets/DIR.txt", "Config/Games.xml", @@ -3015,7 +3021,7 @@ "neo/framework/FileSystem.cpp", "neo/framework/Licensee.h" ], - "github.com/diasurgical/DevilutionX@9d4871587e1a8d9606f97a43d85e939b82f77900": [ + "github.com/diasurgical/DevilutionX@74ce5cdb15da44b28427ad6ee2b107bd6dcd6f61": [ "CMake/Assets.cmake", "CMake/Mods.cmake", "CMakeLists.txt", @@ -3333,7 +3339,7 @@ "libretro/libretro.c" ], "github.com/emuplace/sudachi.emuplace.app@c7431bd420d66c54df277ba0a0b71de42cf0a5bf": [], - "github.com/etlegacy/etlegacy@add16a92f4b10c2955136e3ab7868bfc9bff8fad": [ + "github.com/etlegacy/etlegacy@13d8bea7b484f4eec993d2c8723b8756c6300963": [ "README.md", "VERSION.txt", "cmake/ETLBuildMod.cmake", @@ -3437,7 +3443,7 @@ "mupen64plus-core/upstream/src/main/main.c", "settings.gradle" ], - "github.com/garglk/garglk@9e06211c20bee35026744424a57f50375cdc29db": [ + "github.com/garglk/garglk@f15b43dc9448ac14480310a64301bf859faf999d": [ "CMakeLists.txt", "INSTALL.md", "VERSION", @@ -4813,7 +4819,7 @@ "atari800/src/sysrom.c", "libretro/config.h" ], - "github.com/libretro/libretro-cap32@8e61dd69d948cea16c3bad734f7b9d0c2a018cc8": [ + "github.com/libretro/libretro-cap32@06ad0da5d003ab8f2359300ebce4cf31d4c55b6e": [ "cap32/cap32.c", "cap32/rom/464.h", "cap32/rom/6128.h", @@ -9397,7 +9403,7 @@ "Source/Core/DiscIO/NANDImporter.cpp", "Source/Core/DolphinQt/MenuBar.cpp" ], - "github.com/shinovon/KEmulator@1ab219907cfcac0e6313d1b6ccba13ad74015d08": [ + "github.com/shinovon/KEmulator@4dfdfe31243c9bdbcffa987101e27421618e79e8": [ "m3g_swerve/src/javax/microedition/m3g/Graphics3D.java", "m3g_swerve/src/javax/microedition/m3g/Loader.java", "micro3d_dll/src/com/mascotcapsule/micro3d/v3/Figure.java",