From 77935d61b43ab4e0fd6c3202b39edde7605a1e52 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:19:25 +0100 Subject: [PATCH 01/18] fix: list the fbneo_neogeo romdata search step --- emulators/fbneo_neogeo.yml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/emulators/fbneo_neogeo.yml b/emulators/fbneo_neogeo.yml index 631c744e9..1a58ecaa0 100644 --- a/emulators/fbneo_neogeo.yml +++ b/emulators/fbneo_neogeo.yml @@ -4,8 +4,8 @@ core_classification: official_port source: "https://github.com/libretro/FBNeo" upstream: "https://github.com/finalburnneo/FBNeo" profiled_date: "2026-10-23" -source_commit: "32958a89abd645ed20387c8d31d21ede3bc48161" -upstream_commit: "697e385c8285bfc528343b96d948ee3a4f9e24c5" +source_commit: "77016b4dff6c76beba08d24ea1c61ed2750bc0a7" +upstream_commit: "bc813f4664b5412c8353458bfc7174b71c61a221" core_version: "v1.0.0.03" version_basis: kind: file @@ -28,16 +28,17 @@ notes: | Neo Geo games reference "neogeo" as parent ROM set. The BIOS ZIP must be alongside game ZIPs or in system_dir/fbneo/. - Search order (src/burner/libretro/libretro.cpp:882-950): - 1. {system_dir}/fbneo/patched/{romName} - 2. {rom_dir}/{romName} - 3. {system_dir}/fbneo/{romName} - 4. {system_dir}/{romName} - 5. directories listed in rom_path.opt + Search order (src/burner/libretro/libretro.cpp:887-972): + 1. {system_dir}/fbneo/romdata/{romName}, only while a RomData file is + being started with patched romsets enabled + 2. {system_dir}/fbneo/patched/{romName}, with patched romsets enabled + 3. {rom_dir}/{romName} + 4. {system_dir}/fbneo/{romName} + 5. {system_dir}/{romName} The per-type subdirectories the core used to try under {rom_dir} and {system_dir}/fbneo, arcade and consoles, are gone: a BIOS ZIP has to sit - directly in one of the four directories above. + directly in one of directories 3 to 5 above. neogeo.zip contains multiple selectable 68K BIOS variants (MVS, AES, Universe BIOS). One 68K BIOS active at a time (dipswitch). Z80 BIOS, @@ -499,4 +500,4 @@ files: required: false system: arcade note: "High score database, enables persistent high scores" - source_ref: "source src/burn/hiscore.cpp:154-161, 407, source src/burn/burn.cpp:876" + source_ref: "source src/burn/hiscore.cpp:154-161, 407, source src/burn/burn.cpp:893" From 2ba9941febfad6ded8f34e92732750af9c494058 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:19:46 +0100 Subject: [PATCH 02/18] chore: advance coolbaremu to aa6df0e --- emulators/coolbaremu.yml | 44 ++++++++++++++++++++++----------------- platforms/_core_info.json | 1 + 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/emulators/coolbaremu.yml b/emulators/coolbaremu.yml index 2bd331cc1..8675619e2 100644 --- a/emulators/coolbaremu.yml +++ b/emulators/coolbaremu.yml @@ -4,12 +4,12 @@ core_classification: official_port source: "https://github.com/AloysHF/CoolbarEmu" upstream: "https://github.com/AloysHF/CoolbarEmu" profiled_date: "2026-10-17" -source_commit: "88e90440daab0bdc7bc141728b51841e0c730528" -core_version: "v0.2.0" +source_commit: "aa6df0ec289ffc4f89f4c03f748d0b121fb4323f" +core_version: "0.2.0" version_basis: - kind: tag - tag: "v0.2.0" - distance: 0 + kind: file + path: "Cargo.toml" + pattern: '\[workspace\.package\][^\[]*?^version\s*=\s*"([^"]+)"' display_name: "Coolbar (CoolbarEmu)" cores: - "coolbaremu" @@ -24,25 +24,31 @@ notes: | crate and the phone firmware services are reimplemented in crates/coolbaremu-core/src/machine/services. Text is drawn with the unifont crate compiled into the core (Cargo.toml:35, - crates/coolbaremu-core/src/machine/drawing.rs:1886). + crates/coolbaremu-core/src/machine/drawing.rs:2163). The content is read whole by CbeArchive::load() (crates/coolbaremu-core/src/cbe/archive.rs:68-73). Files next to the .cbe (pay kernels, records, update data) are indexed as the guest filesystem - (crates/coolbaremu-core/src/machine/mod.rs:1022-1024, - crates/coolbaremu-core/src/machine/virtual_fs.rs:58-103), and they belong to - the game. + (crates/coolbaremu-core/src/machine/mod.rs:1071-1073, + crates/coolbaremu-core/src/machine/virtual_fs.rs:62-117), and they belong to + the game. Guest writes and deletes stay in memory, the host files are + never modified. - The only system directory read is coolbaremu_orientation.csv, an optional - user list of CRC32, size and orientation for landscape titles missing from - the built-in table (crates/coolbaremu-libretro/src/libretro/api.rs:45, - crates/coolbaremu-libretro/src/libretro/api.rs:369-399, - crates/coolbaremu-core/src/orientation_profile.rs:31-54). A missing file is - logged and the built-in table applies. The standalone binary reads and - writes only the files named on its command line, --orientation-profile, - --screenshot, --save-state and --load-state - (crates/coolbaremu/src/main.rs:105-108, crates/coolbaremu/src/main.rs:153-167, - crates/coolbaremu/src/main.rs:186-187). + The only system directory file is coolbaremu/coolbaremu_orientation.csv, + an optional user list of CRC32, size and orientation for landscape titles + missing from the built-in table + (crates/coolbaremu-libretro/src/libretro/api.rs:43-46, + crates/coolbaremu-libretro/src/libretro/api.rs:414-468, + crates/coolbaremu-core/src/orientation_profile.rs:31-56). The core looks it + up before creating the machine, matching both names exactly, and a missing + or invalid file is logged and the built-in table applies. The standalone + binary reads the same path below --system-dir, "system" by default + (crates/coolbaremu/src/main.rs:25-26, crates/coolbaremu/src/main.rs:41-46, + crates/coolbaremu/src/main.rs:111-113), and stops on an invalid file + (crates/coolbaremu/src/main.rs:209-216). Otherwise it reads and writes only + the files named on its command line, --screenshot, --save-state and + --load-state (crates/coolbaremu/src/main.rs:176-178, + crates/coolbaremu/src/main.rs:184-190). files: [] diff --git a/platforms/_core_info.json b/platforms/_core_info.json index 5bfe14310..136c3be7a 100644 --- a/platforms/_core_info.json +++ b/platforms/_core_info.json @@ -48,6 +48,7 @@ "citra2018": "d306c4e2cb65cf83930ba4b5f131a61077a17a78", "citra_canary": "0b1fd85442193d317370fb5410293366b1595c6c", "clownmdemu": "00482d6fe4127fcd9fc59df68a0c9b5475c06c9e", + "coolbaremu": "0f786109956670e13142c13445adef425d9844f0", "craft": "e6fa30b75f892dfce039765b1b842e1f970ab038", "crocods": "e3510a13cf2b285745a467c28ed3bb521f7fe936", "cruzes": "d5bea3f63b4ad964fc5dc98bca37ce083f9732c1", From 7e4010311288ac9c39b5bfbecfc5d0df78ea10f6 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:24:21 +0100 Subject: [PATCH 03/18] chore: advance ikemen to 063a060 --- emulators/ikemen.yml | 60 ++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/emulators/ikemen.yml b/emulators/ikemen.yml index a2c128ec9..276ed0e43 100644 --- a/emulators/ikemen.yml +++ b/emulators/ikemen.yml @@ -4,13 +4,13 @@ core_classification: game_engine source: "https://github.com/ikemen-engine/Ikemen-GO" upstream: "https://github.com/ikemen-engine/Ikemen-GO" profiled_date: "2026-10-04" -source_commit: "e9bfe1125dea88769b265e57bcfaefdb22fa4322" -core_version: "v1.0.0-rc.1-545-ge9bfe11" +source_commit: "063a060e597b13d52dbe29b9cbd9b467b4c4bd4a" +core_version: "v1.0.0-rc.1-611-g063a060" version_basis: kind: tag match: "v*" tag: "v1.0.0-rc.1" - distance: 545 + distance: 611 display_name: "Ikemen GO" cores: [ikemen] systems: [] @@ -47,7 +47,7 @@ notes: | names its music under sound/, which release packages ship empty. Characters and stages are found under chars/ and stages/ - (src/system.go:5376, src/system.go:5602). + (src/system.go:5372, src/system.go:5598). files: - name: "script/" @@ -58,7 +58,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultConfig.ini:146, src/main.go:213-232" + source_ref: "src/resources/defaultConfig.ini:147, src/main.go:209-228" note: > main.go opens Config.System and panics when it is missing. main.lua requires debug, start, options and menu from the same directory. @@ -70,7 +70,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultConfig.ini:144, src/system.go:533-544" + source_ref: "src/resources/defaultConfig.ini:145, src/system.go:535-546" - name: "IkemenCylia_96.png" path: "ikemen/external/icons/IkemenCylia_96.png" @@ -79,7 +79,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultConfig.ini:144, src/system.go:533-544" + source_ref: "src/resources/defaultConfig.ini:145, src/system.go:535-546" - name: "IkemenCylia_48.png" path: "ikemen/external/icons/IkemenCylia_48.png" @@ -88,7 +88,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultConfig.ini:144, src/system.go:533-544" + source_ref: "src/resources/defaultConfig.ini:145, src/system.go:535-546" - name: "shaders/" type: directory @@ -98,7 +98,7 @@ files: required: false bundled: true not_bundled_on: [batocera] - source_ref: "external/script/options.lua:1653, src/system.go:461-474" + source_ref: "external/script/options.lua:1653, src/system.go:463-476" - name: "common.air" path: "ikemen/data/common.air" @@ -107,7 +107,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultConfig.ini:12, src/char.go:4675-4688" + source_ref: "src/resources/defaultConfig.ini:12, src/char.go:4686-4699" - name: "common.cmd" path: "ikemen/data/common.cmd" @@ -125,7 +125,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultConfig.ini:16, src/char.go:4337-4354" + source_ref: "src/resources/defaultConfig.ini:16, src/char.go:4352-4369" - name: "functions.zss" path: "ikemen/data/functions.zss" @@ -228,7 +228,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultConfig.ini:177, external/script/main.lua:648, src/script.go:4122-4125" + source_ref: "src/resources/defaultConfig.ini:178, external/script/main.lua:612, src/script.go:4185-4188" note: "loadDebugFont raises a Lua error when the font cannot be loaded." - name: "OpenSans-Bold.ttf" @@ -250,7 +250,7 @@ files: required: false bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultMotif.ini:75, src/motif.go:2597-2613" + source_ref: "src/resources/defaultMotif.ini:78, src/motif.go:2632-2648" note: "A motif font that fails to load is logged and replaced by an empty font." - name: "default-3x5.sff" @@ -260,7 +260,7 @@ files: required: false bundled: true not_bundled_on: [batocera] - source_ref: "font/default-3x5.def:21, src/font.go:414-420" + source_ref: "font/default-3x5.def:21, src/font.go:424-430" note: "LoadFntSff panics when default-3x5.def is loaded and this file is missing." - name: "system.def" @@ -270,7 +270,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultConfig.ini:99, src/motif.go:2631-2663, src/script.go:4263-4266" + source_ref: "src/resources/defaultConfig.ini:100, src/motif.go:2666-2698, src/script.go:4326-4329" note: > Held by the Ikemen-GO-Screenpack repository and copied into release packages. main.lua calls loadMotif at startup, which raises a Lua error @@ -283,7 +283,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultConfig.ini:21, src/fightscreen.go:85-102, src/system.go:6563-6567" + source_ref: "src/resources/defaultConfig.ini:21, src/fightscreen.go:85-102, src/system.go:6555-6559" note: > Held by the Ikemen-GO-Screenpack repository and copied into release packages. A load failure puts the match loader in its error state. @@ -307,7 +307,7 @@ files: required: false bundled: true not_bundled_on: [batocera] - source_ref: "src/motif.go:72-85, src/motif.go:2479-2491, src/motif.go:2598-2625, src/storyboard.go:561-620" + source_ref: "src/motif.go:72-85, src/motif.go:2512-2524, src/motif.go:2633-2660, src/storyboard.go:561-620" note: > Files named by system.def and searched beside it first. A sprite file or font that fails to load is logged and replaced by an empty one. @@ -319,7 +319,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/motif.go:81, external/script/main.lua:1585, external/script/main.lua:43-50" + source_ref: "src/motif.go:81, external/script/main.lua:1546, external/script/main.lua:7-14" note: "main.lua reads the file at startup and raises an error when it cannot be opened." - name: "fight.def" @@ -329,7 +329,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/motif.go:82, src/fightscreen.go:6005-6027, src/fightscreen.go:4792-4800, src/script.go:4247-4250, external/script/main.lua:1188" + source_ref: "src/motif.go:82, src/fightscreen.go:6023-6045, src/fightscreen.go:4810-4818, src/script.go:4310-4313, external/script/main.lua:1154" note: "main.lua calls loadFightScreen at startup, which raises a Lua error on a load failure." - name: "fight.sff" @@ -339,7 +339,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/fightscreen.go:4916-4926" + source_ref: "src/fightscreen.go:4934-4944" note: "Named by the sff key of fight.def. A load failure fails loadFightScreen." - name: "fight.snd" @@ -349,7 +349,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/fightscreen.go:4927-4937" + source_ref: "src/fightscreen.go:4945-4955" note: "Named by the snd key of fight.def. A load failure fails loadFightScreen." - name: "fightfx.sff" @@ -359,7 +359,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/fightscreen.go:4938-4948" + source_ref: "src/fightscreen.go:4956-4966" note: "Named by the fightfx.sff key of fight.def. A load failure fails loadFightScreen." - name: "fightfx.air" @@ -369,7 +369,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/fightscreen.go:4949-4959" + source_ref: "src/fightscreen.go:4967-4977" note: "Named by the fightfx.air key of fight.def. A load failure fails loadFightScreen." - name: "common.snd" @@ -379,7 +379,7 @@ files: required: true bundled: true not_bundled_on: [batocera] - source_ref: "src/fightscreen.go:4960-4966" + source_ref: "src/fightscreen.go:4978-4984" note: "Named by the common.snd key of fight.def. A load failure fails loadFightScreen." - name: "system.snd" @@ -389,7 +389,7 @@ files: required: false bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultMotif.ini:69, src/motif.go:73, src/motif.go:2582-2594" + source_ref: "src/resources/defaultMotif.ini:72, src/motif.go:73, src/motif.go:2615-2629" note: "Named by the snd key of the motif. A load failure is logged and an empty sound set is used." - name: "glyphs.sff" @@ -399,7 +399,7 @@ files: required: false bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultMotif.ini:97, src/motif.go:84, src/motif.go:2494-2507" + source_ref: "src/resources/defaultMotif.ini:100, src/motif.go:84, src/motif.go:2527-2540" note: "A load failure is logged and an empty sprite set is used." - name: "font/" @@ -410,7 +410,7 @@ files: required: false bundled: true not_bundled_on: [batocera] - source_ref: "src/motif.go:64, src/motif.go:2598-2625, src/fightscreen.go:5017, src/storyboard.go:620, src/font.go:415" + source_ref: "src/motif.go:64, src/motif.go:2633-2660, src/fightscreen.go:5035, src/storyboard.go:620, src/font.go:425" note: "font/ is the default directory of every font lookup." - name: "video/" @@ -433,7 +433,7 @@ files: required: false bundled: true not_bundled_on: [batocera] - source_ref: "src/resources/defaultConfig.ini:156, src/system.go:448-449, src/input_sdl.go:261-271" + source_ref: "src/resources/defaultConfig.ini:157, src/system.go:450-451, src/input_sdl.go:261-271" note: "A read failure is logged." - name: "chars/" @@ -444,7 +444,7 @@ files: required: false bundled: true not_bundled_on: [batocera] - source_ref: "src/system.go:5376, src/script.go:3204-3205" + source_ref: "src/system.go:5372, src/script.go:3269-3270" note: > A character path that does not resolve as given is searched under chars/. Release packages ship the Kung Fu Man characters. @@ -457,7 +457,7 @@ files: required: false bundled: true not_bundled_on: [batocera] - source_ref: "src/system.go:5602, src/resources/defaultConfig.ini:181, external/script/main.lua:1809-1813" + source_ref: "src/system.go:5598, src/resources/defaultConfig.ini:182, external/script/main.lua:1768-1772" note: > Debug.StartStage defaults to stages/stage0-720.def, the stage added when select.def lists none. From f5a54af2b441c8abbad4ac5a867951bb57949153 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:26:58 +0100 Subject: [PATCH 04/18] feat: profile raze loose twin dragon and route 66 --- emulators/raze.yml | 53 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/emulators/raze.yml b/emulators/raze.yml index ae88fc8fc..3684d53cd 100644 --- a/emulators/raze.yml +++ b/emulators/raze.yml @@ -4,7 +4,7 @@ core_classification: game_engine source: "https://github.com/ZDoom/Raze" upstream: "https://github.com/ZDoom/Raze" profiled_date: "2026-10-04" -source_commit: "76fe82f5eb318fdeb30ba9fb27093a9a10bc3821" +source_commit: "fa99ac62924d5b2cbb67f46b932bd6acf8952b63" core_version: "1.12pre" version_basis: kind: file @@ -51,7 +51,7 @@ notes: | loose files beside it are read by name. Tiles come from tiles000.art to tiles199.art, from the `loadart` list of the block and from the -art switch. No other ART name is looked up. - ref: source/core/initfs.cpp:342-372, source/core/textures/tiletexture.cpp:468-481, + ref: source/core/initfs.cpp:342-373, source/core/textures/tiletexture.cpp:468-481, source/core/gamecontrol.cpp:424 files: @@ -456,7 +456,7 @@ files: system: blood path: "SURFACE.DAT" required: false - source_ref: "source/games/blood/src/tile.cpp:67-75, source/core/initfs.cpp:351-372" + source_ref: "source/games/blood/src/tile.cpp:67-75, source/core/initfs.cpp:352-373" note: "Surface type of each tile. Read from the directory of the main resource, skipped when absent." - name: "VOXEL.DAT" @@ -464,7 +464,7 @@ files: system: blood path: "VOXEL.DAT" required: false - source_ref: "source/games/blood/src/tile.cpp:77-93, source/core/initfs.cpp:351-372" + source_ref: "source/games/blood/src/tile.cpp:77-93, source/core/initfs.cpp:352-373" note: "Voxel index of each tile. Read from the directory of the main resource, skipped when absent." - name: "SHADE.DAT" @@ -472,7 +472,7 @@ files: system: blood path: "SHADE.DAT" required: false - source_ref: "source/games/blood/src/tile.cpp:95-103, source/core/initfs.cpp:351-372" + source_ref: "source/games/blood/src/tile.cpp:95-103, source/core/initfs.cpp:352-373" note: "Shade offset of each tile. Read from the directory of the main resource, skipped when absent." - name: "CRYPTIC.INI" @@ -621,6 +621,24 @@ files: validation: [size, crc32] source_ref: "wadsrc/static/engine/grpinfo.txt:776-786" + - name: "TDRAGON.EXE" + description: "Shadow Warrior: Twin Dragon, loose files" + category: game_data + system: shadow-warrior + path: "dragon/TDRAGON.EXE" + required: false + source_ref: "wadsrc/static/engine/grpinfo.txt:788-799, source/core/searchpaths.cpp:712-730, source/core/searchpaths.cpp:872-882" + note: "Twin Dragon as GOG's Classic Complete installs it. Detected next to the registered SW.GRP when dragon/ holds TDRAGON.EXE, $WHIRL.MAP and TILES021.ART to TILES023.ART, and dragon/ is then loaded." + + - name: "TDRAGON.EXE" + description: "Shadow Warrior: Twin Dragon, loose files" + category: game_data + system: shadow-warrior + path: "TDRAGON.EXE" + required: false + source_ref: "wadsrc/static/engine/grpinfo.txt:801-812, source/core/searchpaths.cpp:712-730, source/core/searchpaths.cpp:872-882" + note: "Same Twin Dragon files found beside the registered SW.GRP itself, when its own directory is the one scanned." + # ================================================================ # Powerslave / Exhumed # ================================================================ @@ -634,7 +652,7 @@ files: size: 27020745 crc32: "303cbd89" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:40, 901-912" + source_ref: "wadsrc/static/engine/grpinfo.txt:40, wadsrc/static/engine/grpinfo.txt:927-938" - name: "STUFF.DAT" description: "Exhumed" @@ -645,7 +663,7 @@ files: size: 27108170 crc32: "e3b172f1" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:41, 914-925" + source_ref: "wadsrc/static/engine/grpinfo.txt:41, wadsrc/static/engine/grpinfo.txt:940-951" - name: "STUFF.DAT" description: "Powerslave Demo" @@ -656,7 +674,7 @@ files: size: 27020745 crc32: "1d8c7645" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:42, 927-937" + source_ref: "wadsrc/static/engine/grpinfo.txt:42, wadsrc/static/engine/grpinfo.txt:953-963" # ================================================================ # Redneck Rampage @@ -671,7 +689,7 @@ files: size: 141174222 crc32: "19d9bc79" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:28, 788-801" + source_ref: "wadsrc/static/engine/grpinfo.txt:28, wadsrc/static/engine/grpinfo.txt:814-827" - name: "REDNECK.GRP" description: "Redneck Rampage Rides Again" @@ -682,7 +700,16 @@ files: size: 191798609 crc32: "958018c6" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:29, 803-816" + source_ref: "wadsrc/static/engine/grpinfo.txt:29, wadsrc/static/engine/grpinfo.txt:829-842" + + - name: "GAME66.CON" + description: "Redneck Rampage: Suckin' Grits on Route 66" + category: game_data + system: redneck + path: "GAME66.CON" + required: false + source_ref: "wadsrc/static/engine/grpinfo.txt:858-870, source/core/gamecontrol.cpp:350-360, source/core/searchpaths.cpp:712-730" + note: "Route 66 addon. Detected next to REDNECK.GRP when TILESA66.ART, TILESB66.ART, ROUTE66/CARNIVAL.MAP, ROUTE66/TRUCKSTP.MAP and GAME66.CON are all present. Loads the two ART files and GAME66.CON as its script." # ================================================================ # Nam / Napalm / WWII GI @@ -697,7 +724,7 @@ files: size: 43448927 crc32: "75c1f07b" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:24, 846-858" + source_ref: "wadsrc/static/engine/grpinfo.txt:24, wadsrc/static/engine/grpinfo.txt:872-884" - name: "NAPALM.GRP" description: "NAPALM" @@ -708,7 +735,7 @@ files: size: 44365728 crc32: "3de1589a" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:25, 860-872" + source_ref: "wadsrc/static/engine/grpinfo.txt:25, wadsrc/static/engine/grpinfo.txt:886-898" - name: "WW2GI.GRP" description: "WWII GI" @@ -719,4 +746,4 @@ files: size: 77939508 crc32: "907b82bf" validation: [size, crc32] - source_ref: "wadsrc/static/engine/grpinfo.txt:26, 874-886" + source_ref: "wadsrc/static/engine/grpinfo.txt:26, wadsrc/static/engine/grpinfo.txt:900-912" From 5f71af9e714c89416555ec0f95b6235ac75a6dcf Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:27:20 +0100 Subject: [PATCH 05/18] chore: advance opera to 595fd1d --- emulators/opera.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/emulators/opera.yml b/emulators/opera.yml index 9da041b28..5b16d3211 100644 --- a/emulators/opera.yml +++ b/emulators/opera.yml @@ -6,7 +6,7 @@ cores: [opera] source: "https://github.com/libretro/opera-libretro" upstream: "https://sourceforge.net/projects/freedo/" profiled_date: "2026-10-18" -source_commit: "370d9a25c030bb9de4aade371b31045691c40a95" +source_commit: "595fd1db7d5bf0d3ca63d2292854d587ddcfa94b" core_version: "1.0.0" version_basis: kind: file @@ -35,7 +35,7 @@ notes: | 3do_arcade_saot.bin (512 KB) and panafz1-kanji.bin (933636 bytes). BIOS definitions: BIOSES[] at libopera/opera_bios.c:9-164, built-in inflate - opera_bios_load_builtin() at libopera/opera_bios.c:234-267. + opera_bios_load_builtin() at libopera/opera_bios.c:234-273. BIOS selection and loading: opera_lr_opts.c:276-359 (get_bios, _load_bios_rom, set_bios). Font loading: opera_lr_opts.c:361-415. Core option: libretro_core_options.c:752-783 (set_bios_values) lists the @@ -219,4 +219,4 @@ platform_details: font_selection: "core option opera_font, optional" byteswap: "rom1 is byteswapped on little-endian (opera_mem_rom1_byteswap32_if_le)" hle_available: true - source_ref: "opera_lr_opts.c:276-359, libopera/opera_bios.c:9-267" + source_ref: "opera_lr_opts.c:276-359, libopera/opera_bios.c:9-273" From fc1386fd0a1ef291329a2c4366cc1ad9652f4a7b Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:28:11 +0100 Subject: [PATCH 06/18] docs: record the vkquake prose pin --- emulators/vkquake.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/emulators/vkquake.yml b/emulators/vkquake.yml index fd0fd1c16..7b05eed89 100644 --- a/emulators/vkquake.yml +++ b/emulators/vkquake.yml @@ -5,6 +5,7 @@ source: "https://github.com/Novum/vkQuake" upstream: "https://sourceforge.net/projects/quakespasm/" profiled_date: "2026-10-23" source_commit: "a6cfba6904e0743dae4235f9dad9711bb5bd27f1" +prose_written_at: "a6cfba6904e0743dae4235f9dad9711bb5bd27f1" core_version: "1.37.1" version_basis: kind: file From 6a3156a812ad09e129b897561f46f4446ea85ab1 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:28:36 +0100 Subject: [PATCH 07/18] chore: advance vkquake to 308ff19 --- emulators/vkquake.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/emulators/vkquake.yml b/emulators/vkquake.yml index 7b05eed89..50ac2cffb 100644 --- a/emulators/vkquake.yml +++ b/emulators/vkquake.yml @@ -4,8 +4,8 @@ core_classification: game_engine source: "https://github.com/Novum/vkQuake" upstream: "https://sourceforge.net/projects/quakespasm/" profiled_date: "2026-10-23" -source_commit: "a6cfba6904e0743dae4235f9dad9711bb5bd27f1" -prose_written_at: "a6cfba6904e0743dae4235f9dad9711bb5bd27f1" +source_commit: "308ff19d881c2eab7e5e4a21b98847847525eef9" +prose_written_at: "308ff19d881c2eab7e5e4a21b98847847525eef9" core_version: "1.37.1" version_basis: kind: file @@ -34,7 +34,7 @@ notes: | gfx.wad and no palette (Misc/vq_pak/vq_pak_contents.txt). gfx.wad and gfx/colormap.lmp come from id1/pak0.pak, and without either the - engine stops with Sys_Error (Quake/wad.c:80-87, Quake/host.c:1415-1417). + engine stops with Sys_Error (Quake/wad.c:80-87, Quake/host.c:1416-1418). gfx/pop.lmp, present only in the registered id1/pak1.pak, sets the registered cvar (Quake/common.c:2023-2049). From cd2e6826252e118157bee77cca3b5ae6731ad983 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:29:05 +0100 Subject: [PATCH 08/18] docs: confirm the duckstation prose citations --- emulators/duckstation.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/emulators/duckstation.yml b/emulators/duckstation.yml index 4ca42ece5..9f4cddf6d 100644 --- a/emulators/duckstation.yml +++ b/emulators/duckstation.yml @@ -6,6 +6,7 @@ upstream: "https://github.com/stenzek/duckstation" logo: "https://raw.githubusercontent.com/stenzek/duckstation/master/data/resources/images/duck.png" profiled_date: "2026-03-23" source_commit: "526b4a128827ecaef037134095cd95f431b52d06" +prose_written_at: "526b4a128827ecaef037134095cd95f431b52d06" core_version: "v0.1-12083-406-g526b4a1" version_basis: kind: tag @@ -34,7 +35,7 @@ data_root: notes: | DuckStation auto-detects BIOS by MD5 hash from a flat scan of the BIOS directory. - ref: src/core/bios.cpp:460-482 (FindBIOSImagesInDirectory, scans all files by size) + ref: src/core/bios.cpp:458-479 (FindBIOSImagesInDirectory, scans all files by size) ref: src/core/bios.cpp:208 (MD5Digest::HashData identification) Accepts PS1 (512 KB), PS2 (4 MB), and PS3 (0x3E66F0) BIOS images. From 07d39f3f09140ef8ff72a06e65787110f92f3ed8 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:30:14 +0100 Subject: [PATCH 09/18] chore: advance duckstation to c9dc225 --- emulators/duckstation.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/emulators/duckstation.yml b/emulators/duckstation.yml index 9f4cddf6d..b457e9363 100644 --- a/emulators/duckstation.yml +++ b/emulators/duckstation.yml @@ -5,14 +5,14 @@ source: "https://github.com/stenzek/duckstation" upstream: "https://github.com/stenzek/duckstation" logo: "https://raw.githubusercontent.com/stenzek/duckstation/master/data/resources/images/duck.png" profiled_date: "2026-03-23" -source_commit: "526b4a128827ecaef037134095cd95f431b52d06" +source_commit: "c9dc225498e901908b2f3822a3875d1c508e2ccd" prose_written_at: "526b4a128827ecaef037134095cd95f431b52d06" -core_version: "v0.1-12083-406-g526b4a1" +core_version: "v0.1-12442-240-gc9dc225" version_basis: kind: tag match: "v*" - tag: "v0.1-12083" - distance: 406 + tag: "v0.1-12442" + distance: 240 display_name: "Sony - PlayStation (DuckStation)" cores: [duckstation, "Duckstation", "duckstation-sa"] found_by: content @@ -22,15 +22,15 @@ verification: md5 data_root: windows: path: "%LOCALAPPDATA%/DuckStation" - source_ref: "src/core/core.cpp:151-158, 160-196" + source_ref: "src/core/core.cpp:144-151, src/core/core.cpp:153-189" note: "Documents/DuckStation when that folder already exists. portable.txt or settings.ini beside the executable makes its folder the root" macos: path: "~/Library/Application Support/DuckStation" - source_ref: "src/core/core.cpp:151-158, 224-231" + source_ref: "src/core/core.cpp:144-151, src/core/core.cpp:217-224" note: "portable.txt or settings.ini beside the executable makes its folder the root" linux: path: "$XDG_CONFIG_HOME/duckstation, else ~/.local/share/duckstation" - source_ref: "src/core/core.cpp:144-158, 197-222" + source_ref: "src/core/core.cpp:137-151, src/core/core.cpp:190-215" note: "portable.txt or settings.ini beside the executable, or beside the AppImage, makes that folder the root" notes: | @@ -48,19 +48,19 @@ notes: | The console region picks the image, Auto by default. NTSC-U answers the licence string `Sony Computer Entertainment Amer ica` (two spaces, as - src/core/system.cpp:973 spells it), a SCUS or SLUS + src/core/system.cpp:1036 spells it), a SCUS or SLUS executable, and every disc whose region the detector cannot read (DiscRegion::Other, NonPS1), so a disc of any other market boots an NTSC-U image. - ref: src/core/system.cpp:664-676, 940-1009, 1739-1740, 1756 + ref: src/core/system.cpp:706-718, 1003-1072, 1803-1804, 1820 ref: src/core/bios.cpp:397-436 (FindBIOSImageInDirectory keeps a region match) - ref: src/core/settings.h:608 (DEFAULT_CONSOLE_REGION = Auto) + ref: src/core/settings.h:622 (DEFAULT_CONSOLE_REGION = Auto) ImageInfo gained a version and an expected_filename field after the previous profiling pass. Neither takes part in identification: expected_filename is read only by the two settings screens, which fall back to the real filename when it is null. ref: src/core/bios.h:41-43 (field declarations) - ref: src/duckstation-qt/biossettingswidget.cpp:153, src/core/fullscreenui_settings.cpp:3322 + ref: src/duckstation-qt/biossettingswidget.cpp:158, src/core/fullscreenui_settings.cpp:3432 Lower priority = preferred. PS2 deprioritized (>= 100) for dynamic fast boot. Late PAL deprioritized (>= 150) due to additional regional checks. OpenBIOS detected by signature at offset 0x78, not by hash. @@ -69,7 +69,7 @@ notes: | Standalone: BIOS dir = EmuFolders::Bios, bios/ under the data root unless BIOS/SearchDirectory names another folder. ref: src/core/bios.cpp:378,383 - ref: src/core/settings.cpp:2987,3020 + ref: src/core/settings.cpp:3060,3093 Libretro: BIOS dir = RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY (flat). The libretro core was removed by the author (license change to non-commercial). The .info file and buildbot builds still exist from community forks. From 6be76833ae1a37d7a18fa61a3fde7b835596ad94 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:31:57 +0100 Subject: [PATCH 10/18] chore: advance ppsspp to 4a9fa00 --- emulators/ppsspp.yml | 48 ++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/emulators/ppsspp.yml b/emulators/ppsspp.yml index 1347ee1b1..cbefffe70 100644 --- a/emulators/ppsspp.yml +++ b/emulators/ppsspp.yml @@ -3,12 +3,12 @@ type: standalone + libretro core_classification: official_port source: "https://github.com/hrydgard/ppsspp" profiled_date: "2026-10-21" -source_commit: "43a69b1c84dfe29e82b46bd3797a1106cbd65c5b" -core_version: "v1.20.4-3958-g43a69b1" +source_commit: "4a9fa00e5ab1a63572dfb429149b1d34bba95093" +core_version: "v1.20.4-4689-g4a9fa00" version_basis: kind: tag tag: "v1.20.4" - distance: 3958 + distance: 4689 display_name: "Sony - PlayStation Portable (PPSSPP)" cores: - ppsspp @@ -24,53 +24,57 @@ data_directories: installed_on: [amberelec, batocera, emudeck, lakka, recalbox, retrobat, retrodeck, retropie, romm] mode: libretro destination: "" - source_ref: "libretro/libretro.cpp:1228-1237, libretro/libretro.cpp:1283" + source_ref: "libretro/libretro.cpp:1259-1268, libretro/libretro.cpp:1314" data_root: android: path: "Android/data/org.ppsspp.ppsspp/files" - source_ref: "UI/NativeApp.cpp:651-682, UI/MemStickScreen.cpp:234-240, 371-376, android/src/org/ppsspp/ppsspp/PpssppActivity.java:461-463" + source_ref: "UI/NativeApp.cpp:655-686, UI/MemStickScreen.cpp:67-73, UI/MemStickScreen.cpp:256-264, UI/MemStickScreen.cpp:397-398, android/src/org/ppsspp/ppsspp/PpssppActivity.java:464-466" note: "With scoped storage the memory stick is the folder picked at first launch, this one when setup is skipped, and memstick_dir.txt keeps the choice. Under legacy storage it is the root of shared storage" ios: path: "Documents" - source_ref: "UI/NativeApp.cpp:709-711, Core/Util/DarwinFileSystemServices.mm:310-316, 328-331" + source_ref: "UI/NativeApp.cpp:713-715, Core/Util/DarwinFileSystemServices.mm:347-353, Core/Util/DarwinFileSystemServices.mm:365-368" note: "A folder chosen in the settings and kept in the user defaults replaces it" windows: path: "/memstick" - source_ref: "Windows/main.cpp:989-1042, Windows/main.cpp:1221-1222" + source_ref: "Windows/main.cpp:991-1044, Windows/main.cpp:1223-1224" note: "installed.txt beside the executable switches to the folder it names, else Documents/PPSSPP, which also serves when memstick cannot be created or written" macos: path: "~/.config/ppsspp" - source_ref: "UI/NativeApp.cpp:633-634, UI/NativeApp.cpp:712-713, SDL/SDLMain.cpp:1188-1192, Core/Util/DarwinFileSystemServices.mm:310-316, 332-333" + source_ref: "UI/NativeApp.cpp:637-638, UI/NativeApp.cpp:716-717, SDL/SDLMain.cpp:1188-1192, Core/Util/DarwinFileSystemServices.mm:347-353, Core/Util/DarwinFileSystemServices.mm:369-370" note: "A folder chosen in the settings and kept in the user defaults replaces it" linux: path: "$XDG_CONFIG_HOME/ppsspp, else ~/.config/ppsspp" - source_ref: "UI/NativeApp.cpp:718-719, Core/Util/PathUtil.cpp:284-300" + source_ref: "UI/NativeApp.cpp:722-723, Core/Util/PathUtil.cpp:308-324" notes: | Full HLE emulator. No Sony firmware or BIOS required. The libretro core is built from hrydgard/ppsspp, the tree of the standalone emulator, with its wrapper in libretro/. Libretro core loads assets from system/PPSSPP/ via VFS - (libretro/libretro.cpp:1228-1237, 1283) and warns that core system files - are missing when compat.ini is absent (libretro/libretro.cpp:1241-1273). + (libretro/libretro.cpp:1259-1268, 1314) and warns that core system files + are missing when compat.ini is absent (libretro/libretro.cpp:1272-1304). Assets include replacement PGF fonts (flash0/font/), game compatibility database (compat.ini), language mapping (langregion.ini), and post-processing shaders (shaders/). Fonts are read from the game disc, then from flash0:/font of the NAND, - then from flash0/font/ in system/PPSSPP/ (Core/HLE/sceFont.cpp:1026-1048). + then from flash0/font/ in system/PPSSPP/ (Core/HLE/sceFont.cpp:1031-1053). + Monster Hunter Portable 3rd HD Ver. (NPJB40001) skips the NAND fonts and + keeps the HLE sceFont, so it reads the fonts of system/PPSSPP/flash0/font/ + (Core/HDRemaster.cpp:27-29, Core/HLE/sceFont.cpp:1005-1012, + Core/HLE/HLE.cpp:428-431). Without any of them the font library holds no internal font and sceFontOpen returns SCE_FONT_ERROR_INVALID_PARAMETER to the game - (Core/HLE/sceFont.cpp:1197-1199), so text a game draws with the PSP system + (Core/HLE/sceFont.cpp:1202-1204), so text a game draws with the PSP system fonts is lost. Without ppge_atlas.zim the system dialogs are not drawn - (Core/Util/PPGeDraw.cpp:252-255). + (Core/Util/PPGeDraw.cpp:249-252). A real firmware is optional. The NAND is /PSP/NAND - (Core/Util/PathUtil.cpp:146-147), which the libretro core places under - the save directory (libretro/libretro.cpp:1277, 1281). On boot, a game + (Core/Util/PathUtil.cpp:151-152), which the libretro core places under + the save directory (libretro/libretro.cpp:1308, 1312). On boot, a game disc carrying a newer firmware updater than the installed one is - unpacked into it (Core/System.cpp:603-606). Its flash0:/font, + unpacked into it (Core/System.cpp:615-618). Its flash0:/font, kd/libmp4.prx, kd/mp4msv.prx and kd/mpeg.prx replace the HLE modules - when present (Core/HLE/HLE.cpp:408-446). + when present (Core/HLE/HLE.cpp:424-466). PSP_DEFAULT_FIRMWARE = 660 (Core/ConfigValues.h:43). files: @@ -80,7 +84,7 @@ files: path: "PPSSPP/ppge_atlas.zim" description: "PPGe dialog texture atlas for save/load dialogs, on-screen keyboard, system UI" required: false - source_ref: "Core/Util/PPGeDraw.cpp:252-255" + source_ref: "Core/Util/PPGeDraw.cpp:249-252" note: "Logged as an error if missing. System dialogs render without graphics but core continues running. Batocera, Recalbox, Lakka, RetroPie, RetroBat, EmuDeck and RetroDECK install the assets folder where their core reads it." - name: "ppge_atlas.meta" @@ -89,7 +93,7 @@ files: path: "PPSSPP/ppge_atlas.meta" description: "PPGe atlas metadata (glyph positions, UV coords)" required: false - source_ref: "Core/Util/PPGeDraw.cpp:257-263" + source_ref: "Core/Util/PPGeDraw.cpp:254-260" note: "Loaded after ppge_atlas.zim. Without it, dialog UI has no glyph layout. Batocera, Recalbox, Lakka, RetroPie, RetroBat, EmuDeck and RetroDECK install the assets folder where their core reads it." - name: "ppge_atlas.zim" @@ -100,7 +104,7 @@ files: size: 666530 sha1: "30a33f3651f8e1b0967a5dfe6ff714baebcce41a" bundled: true - source_ref: "Core/Util/PPGeDraw.cpp:252-255" + source_ref: "Core/Util/PPGeDraw.cpp:249-252" note: "Shipped in assets/ of the PPSSPP 1.20.4 Windows zip, which the standalone reads it from." - name: "ppge_atlas.meta" @@ -111,5 +115,5 @@ files: size: 50242 sha1: "ab398f667d6fd778859307c105fe16388b8fdf63" bundled: true - source_ref: "Core/Util/PPGeDraw.cpp:257-263" + source_ref: "Core/Util/PPGeDraw.cpp:254-260" note: "Shipped in assets/ of the PPSSPP 1.20.4 Windows zip, beside ppge_atlas.zim." From 9fff76b3ee0682a5f78fd93501b0fbcd8389160b Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:33:21 +0100 Subject: [PATCH 11/18] docs: point melonds-nightly prose at its pin --- emulators/melonds-nightly.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/emulators/melonds-nightly.yml b/emulators/melonds-nightly.yml index 40f1df258..17cc89804 100644 --- a/emulators/melonds-nightly.yml +++ b/emulators/melonds-nightly.yml @@ -4,6 +4,7 @@ core_classification: community_fork source: "https://github.com/rafaelvcaetano/melonDS-android" upstream: "https://github.com/rafaelvcaetano/melonDS-android-lib" source_commit: "c42995caff0144f37ad9791dc9bc96d82e8a6f65" +prose_written_at: "c42995caff0144f37ad9791dc9bc96d82e8a6f65" upstream_commit: "431ab4bd0003c4356e25fce89640ae1004579b9b" profiled_date: "2026-08-12" core_version: "2.0.1" @@ -24,7 +25,7 @@ notes: | Nightly is a product flavor, not a separate tree: the build dimension "build" has prod and nightly, and nightly sets applicationIdSuffix ".nightly" and the - version suffix " (NIGHTLY)" (app/build.gradle.kts:59-61,76-79), giving the package + version suffix " (NIGHTLY)" (app/build.gradle.kts:63,79-87), giving the package id me.magnum.melonds.nightly. Its source set holds an app name and a launcher icon (app/src/nightly/res), and the gitHubNightly set points the update check at the nightly release instead of the tagged one @@ -37,7 +38,7 @@ notes: | basename, so bios7.bin, bios9.bin and firmware.bin each name a DS image in one directory and a DSi image in the other. The accepted lengths are what tell them apart. The app lists the expected names on screen when a directory is unset or - rejected (app/src/main/res/values/strings.xml:116,118). Entries below carry the + rejected (app/src/main/res/values/strings.xml:117,119). Entries below carry the basename the app opens in the path, under the console identifier the picker binds to each directory, ds and dsi (app/src/main/res/xml/pref_custom_firmware.xml:33,39). @@ -66,7 +67,7 @@ notes: | to turn either on, and the README lists DSi SD card support under missing features. The Action Replay database the core can parse is likewise never built: ARDatabaseDAT is reached only from src/frontend/qt_sdl, and the Android build sets BUILD_QT_SDL OFF and links the core alone - (app/CMakeLists.txt:8,73). Cheats are entered in the app's own database. + (app/CMakeLists.txt:8,74). Cheats are entered in the app's own database. files: # --- DS BIOS directory (preference bios_dir) --- From 69da7b5af4fb9c2173a498559512862121299a47 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:33:42 +0100 Subject: [PATCH 12/18] chore: advance melonds-nightly to aaf263d --- emulators/melonds-nightly.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/emulators/melonds-nightly.yml b/emulators/melonds-nightly.yml index 17cc89804..42120793f 100644 --- a/emulators/melonds-nightly.yml +++ b/emulators/melonds-nightly.yml @@ -3,7 +3,7 @@ type: standalone core_classification: community_fork source: "https://github.com/rafaelvcaetano/melonDS-android" upstream: "https://github.com/rafaelvcaetano/melonDS-android-lib" -source_commit: "c42995caff0144f37ad9791dc9bc96d82e8a6f65" +source_commit: "aaf263d233e65c348d5830db32c593f8b7a8e4c9" prose_written_at: "c42995caff0144f37ad9791dc9bc96d82e8a6f65" upstream_commit: "431ab4bd0003c4356e25fce89640ae1004579b9b" profiled_date: "2026-08-12" @@ -38,13 +38,13 @@ notes: | basename, so bios7.bin, bios9.bin and firmware.bin each name a DS image in one directory and a DSi image in the other. The accepted lengths are what tell them apart. The app lists the expected names on screen when a directory is unset or - rejected (app/src/main/res/values/strings.xml:117,119). Entries below carry the + rejected (app/src/main/res/values/strings.xml:120,122). Entries below carry the basename the app opens in the path, under the console identifier the picker binds to each directory, ds and dsi (app/src/main/res/xml/pref_custom_firmware.xml:33,39). use_custom_bios defaults off (app/src/main/res/xml/pref_custom_firmware.xml:11, - app/src/main/java/me/magnum/melonds/impl/SharedPreferencesSettingsRepository.kt:258-260). With it off, launching a ROM + app/src/main/java/me/magnum/melonds/impl/SharedPreferencesSettingsRepository.kt:259-261). With it off, launching a ROM skips the directory check entirely and the core substitutes FreeBIOS and a firmware built in memory, so DS games run with nothing supplied. Booting into the firmware menu instead of a ROM always turns it on @@ -63,7 +63,7 @@ notes: | Neither SD card is reachable in this build. getSDCardArgs returns nothing when a card is disabled (app/src/main/cpp/SDCardArgsBuilder.cpp:19-20) and the JNI layer hardcodes both the DSi card and the homebrew DLDI card to disabled - (app/src/main/cpp/MelonDSAndroidConfiguration.cpp:93-94), with no preference anywhere in the app + (app/src/main/cpp/MelonDSAndroidConfiguration.cpp:95-96), with no preference anywhere in the app to turn either on, and the README lists DSi SD card support under missing features. The Action Replay database the core can parse is likewise never built: ARDatabaseDAT is reached only from src/frontend/qt_sdl, and the Android build sets BUILD_QT_SDL OFF and links the core alone From 30c965aac556af32648d942f97b776444de3a6e4 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:36:14 +0100 Subject: [PATCH 13/18] feat: profile the zesarux atm turbo roms --- emulators/zesarux.yml | 222 +++++++++++++++++++++++++----------------- 1 file changed, 132 insertions(+), 90 deletions(-) diff --git a/emulators/zesarux.yml b/emulators/zesarux.yml index 3017ab21f..49891b57c 100644 --- a/emulators/zesarux.yml +++ b/emulators/zesarux.yml @@ -3,7 +3,7 @@ type: standalone core_classification: other source: "https://github.com/chernandezba/zesarux" upstream: "https://github.com/chernandezba/zesarux" -source_commit: "fd354296d851edc24ad1411b8f9342a66d07d460" +source_commit: "9977a8aeccc6eaeea3de4515d841454710a151f3" prose_written_at: "e1fc8db2957c360c8ff584a2c4d147f70861c3aa" profiled_date: "2026-10-26" core_version: "13.1-SN" @@ -39,33 +39,35 @@ systems: notes: | Multi-machine Sinclair emulator. Every ROM is read from disk at run time; - none is compiled into the binary. `rom_load` (src/cpu.c:3425-4067) maps + none is compiled into the binary. `rom_load` (src/cpu.c:3480-4154) maps `current_machine_type` to a filename through a switch, then resolves it with - `find_sharedfile` (src/utils.c:1334-1372), which searches the current directory, + `find_sharedfile` (src/utils.c:1349-1387), which searches the current directory, `../Resources/`, `INSTALL_PREFIX/share/zesarux/` and the directory holding the binary, in that order. - ZEsarUX ships these files and installs them next to the binary: `src/configure:1927` + ZEsarUX ships these files and installs them next to the binary: `src/configure:1933` lists `*.rom`, `zxuno.flash`, `zxmmcplus.flash`, `tbblue.mmc`, `pcw_8x_boot*dsk`, `mantransfev3.bin` and `alternate_roms` in COMMONFILES. A normal install therefore already carries every entry below, which is why they are marked `bundled: true`. A missing machine ROM is not fatal: `rom_load` logs an error and returns - (src/cpu.c:3715-3723), the panic having been removed deliberately. The machine then + (src/cpu.c:3786-3794), the panic having been removed deliberately. The machine then runs on uninitialised memory, so the ROMs the switch names are marked required - for the machine they serve. The one hard failure is `prism_failsafe.rom`, which + for the machine they serve. The two hard failures are `prism_failsafe.rom`, which `prism_load_failsafe_rom` loads through its own path and which calls `cpu_panic` - when missing or short (src/machines/prism.c:581-590). + when missing or short (src/machines/prism.c:581-590), and `sgen.rom`, the + character ROM `atmturbo_malloc_mem_machine` reads for the ATM Turbo 2 family + with the same panic (src/machines/atmturbo.c:774-780). The emulator verifies no hash on any of these files. It does check size: the - machine ROMs are compared against `get_rom_size` (src/utils.c:4104-4182) and the + machine ROMs are compared against `get_rom_size` (src/utils.c:4119-4201) and the interface ROMs against their own `*_ROM_SIZE` constants, with a mismatch logged as an error. `validation: [size]` is set only where the code makes that comparison. `--romfile` (src/start.c:4877-4881) overrides the machine ROM with any file the user - picks (src/cpu.c:3705-3708). The ROMs under `alternate_roms/` and the extra + picks (src/cpu.c:3776-3779). The ROMs under `alternate_roms/` and the extra variants in the install root exist for that path and are documented in the shipped src/ALTERNATEROMS file. Interface ROMs are equally overridable (`--divide-rom`, `--divmmc-rom`, `--dandanator-rom`, `--ifrom-rom`, @@ -73,17 +75,17 @@ notes: | ES-DE drives ZEsarUX for its `zxnext` system with `--machine tbblue --tbblue-fast-boot-mode --enable-esxdos-handler`. Fast boot swaps - `tbblue_loader.rom` for `48.rom` (src/cpu.c:3538-3539), and the esxdos handler needs + `tbblue_loader.rom` for `48.rom` (src/cpu.c:3593-3594), and the esxdos handler needs the divMMC firmware `esxmmc085.rom`, so that path loads `48.rom`, `esxmmc085.rom` and the `tbblue.mmc` card image rather than a dedicated Next ROM. ZEsarUX also loads UI and bundled-software resources through the same `find_sharedfile` path: `keyboards/*.bmp` on-screen keyboard art - (src/menu/menu_items.c:19502, 22030, 22051), `z88_shortcuts.bmp` - (src/video/screen.c:11318), the `my_soft/` homebrew collection - (src/menu/menu_items.c:32591, 32650 and src/menu/menu_items_storage.c:585), the - `copiers/*.zsf` tape copier snapshots (src/menu/menu_items_storage.c:667-669) and - `editionnamegame.tap` (src/cpu.h:73, src/utils.c:17985). They are application + (src/menu/menu_items.c:19564, 22169, 22190), `z88_shortcuts.bmp` + (src/video/screen.c:11373), the `my_soft/` homebrew collection + (src/menu/menu_items.c:32730, 32650 and src/menu/menu_items_storage.c:586), the + `copiers/*.zsf` tape copier snapshots (src/menu/menu_items_storage.c:668-670) and + `editionnamegame.tap` (src/cpu.h:73, src/utils.c:18040). They are application resources rather than system firmware and carry no entry below. `PrismChime.bin` sits in the source tree but no code reads it and COMMONFILES does not install it. @@ -91,7 +93,7 @@ notes: | files: # ============================================================ # ZX Spectrum and clones - machine ROMs - # rom_load switch, src/cpu.c:3434-3701 + # rom_load switch, src/cpu.c:3489-3772 # ============================================================ - name: "48.rom" @@ -102,8 +104,8 @@ files: bundled: true system: sinclair-zx-spectrum fast_boot: "tbblue" - source_ref: "src/cpu.c:3435-3444 (16K/48K, CZ 2000, CZ Spectrum), src/cpu.c:3538 (tbblue fast boot), src/utils.c:4118 (size)" - note: "48K BASIC. Also loaded four times over as the TBBlue fast-boot image (src/cpu.c:3852-3861)." + source_ref: "src/cpu.c:3490-3499 (16K/48K, CZ 2000, CZ Spectrum), src/cpu.c:3593 (tbblue fast boot), src/utils.c:4133 (size)" + note: "48K BASIC. Also loaded four times over as the TBBlue fast-boot image (src/cpu.c:3939-3948)." - name: "48es.rom" sha1: "9e535e2e24231ccb65e33d107f6d0ceb23e99477" @@ -112,7 +114,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3542-3544, src/utils.c:4118" + source_ref: "src/cpu.c:3597-3599, src/utils.c:4133" note: "Spanish 48K+ ROM, selected for MACHINE_ID_SPECTRUM_48_PLUS_SPA." - name: "inves.rom" @@ -122,8 +124,8 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3446-3449, src/utils.c:4118" - note: "Investronica Inves Spectrum+. Loaded at memoria_spectrum[65536] (src/cpu.c:3736-3742)." + source_ref: "src/cpu.c:3501-3504, src/utils.c:4133" + note: "Investronica Inves Spectrum+. Loaded at memoria_spectrum[65536] (src/cpu.c:3807-3813)." - name: "128.rom" sha1: "16375d42ea109b47edded7a16028de7fdb3013a1" @@ -132,7 +134,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3477-3479, src/utils.c:4124" + source_ref: "src/cpu.c:3532-3534, src/utils.c:4143" - name: "128s.rom" sha1: "57c0b6681224378ce1d279fde13d644478423783" @@ -141,7 +143,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3481-3483, src/utils.c:4124" + source_ref: "src/cpu.c:3536-3538, src/utils.c:4143" - name: "p2.rom" sha1: "8cafb292af58617907b9e6b9093d3588a75849b8" @@ -150,7 +152,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3488-3490, src/utils.c:4124" + source_ref: "src/cpu.c:3543-3545, src/utils.c:4143" note: "ZX Spectrum +2." - name: "p2f.rom" @@ -160,7 +162,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3492-3494, src/utils.c:4124" + source_ref: "src/cpu.c:3547-3549, src/utils.c:4143" - name: "p2s.rom" sha1: "baca5d798b3e786078feded19486d9fc29dbd4b7" @@ -169,7 +171,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3496-3498, src/utils.c:4124" + source_ref: "src/cpu.c:3551-3553, src/utils.c:4143" - name: "p2a40.rom" sha1: "929bf1a5e5687ebd8d7245f9b513a596c0ec21a4" @@ -178,7 +180,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3502-3505, src/utils.c:4126" + source_ref: "src/cpu.c:3557-3560, src/utils.c:4145" note: "+2A/+3 ROM v4.0." - name: "p2a41.rom" @@ -188,7 +190,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3507-3510, src/utils.c:4126" + source_ref: "src/cpu.c:3562-3565, src/utils.c:4145" note: "+2A/+3 ROM v4.1." - name: "p2as.rom" @@ -198,7 +200,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3512-3515, src/utils.c:4126" + source_ref: "src/cpu.c:3567-3570, src/utils.c:4145" - name: "pentagon.rom" sha1: "a584272f21dc82c14b7d4f1ed440e23a976e71f0" @@ -207,7 +209,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3546-3548, src/utils.c:4124 (MACHINE_IS_SPECTRUM_128_P2 covers Pentagon, src/cpu.h:578)" + source_ref: "src/cpu.c:3601-3603, src/utils.c:4143 (MACHINE_IS_SPECTRUM_128_P2 covers Pentagon, src/cpu.h:593)" - name: "scorpion_2.3j.rom" sha1: "df48615bf02b3e18b0414473a6a0de9cc93613f6" @@ -216,7 +218,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3553-3555, src/cpu.c:3753-3758, src/utils.c:4122" + source_ref: "src/cpu.c:3608-3610, src/cpu.c:3824-3829, src/utils.c:4137" note: "Scorpion ZS-256. Read whole into memoria_spectrum." - name: "scorpion_2.95.rom" @@ -226,7 +228,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3557-3559, src/cpu.c:3753-3758, src/utils.c:4122" + source_ref: "src/cpu.c:3612-3614, src/cpu.c:3824-3829, src/utils.c:4137" note: "Scorpion ZS-256 Turbo+." - name: "profgmx6xx043.9226se.rom" @@ -236,7 +238,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3561-3564, src/cpu.c:3753-3758, src/utils.c:4120, src/machines/scorpion.h:47" + source_ref: "src/cpu.c:3616-3619, src/cpu.c:3824-3829, src/utils.c:4135, src/machines/scorpion.h:47" note: "Scorpion GMX, 512K. get_rom_size returns SCORPIONGMX_ROM_SIZE*1024." - name: "didaktikgama.rom" @@ -246,9 +248,49 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3566-3568, src/cpu.c:3760-3765, src/utils.c:4107" + source_ref: "src/cpu.c:3637-3639, src/cpu.c:3838-3843, src/utils.c:4122" note: "Didaktik Gama. No machine branch in get_rom_size, so the 16384 default applies." + - name: "atm103.rom" + sha1: "a4adff05bb215dd126c47201b36956115b8fed76" + size: 65536 + validation: [size] + required: true + bundled: true + system: sinclair-zx-spectrum + source_ref: "src/cpu.c:3621-3623, src/cpu.c:3831-3836, src/utils.c:4141" + note: "ATM Turbo 1, 64K." + + - name: "atm106.rom" + sha1: "2afc9994f026645c74b6c4b35bcee2e0bc0d6edc" + size: 65536 + validation: [size] + required: true + bundled: true + system: sinclair-zx-spectrum + source_ref: "src/cpu.c:3625-3627, src/cpu.c:3831-3836, src/utils.c:4141" + note: "ATM Turbo 2, 64K." + + - name: "xbios135.rom" + sha1: "92b59d364bcba5151aba689609516e685a1b1816" + size: 131072 + validation: [size] + required: true + bundled: true + system: sinclair-zx-spectrum + source_ref: "src/cpu.c:3629-3635, src/cpu.c:3831-3836, src/utils.c:4139" + note: "ATM Turbo 2+ and ATM Turbo 3, 128K." + + - name: "sgen.rom" + sha1: "93b3774dc8a486643a1bdd48c606b0c84fa0e22b" + size: 2048 + validation: [size] + required: true + bundled: true + system: sinclair-zx-spectrum + source_ref: "src/machines/atmturbo.c:111, src/machines/atmturbo.c:774-780" + note: "Character generator of the ATM Turbo 2 text mode, read for ATM Turbo 2, 2+ and 3. A missing or short file stops the emulator with a panic." + - name: "se.rom" sha1: "14321f2092b8af21b52b35c1518d9a753d6618d4" size: 32768 @@ -256,7 +298,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3522-3525, src/utils.c:4130" + source_ref: "src/cpu.c:3577-3580, src/utils.c:4149" note: "Chloe 140SE/280SE, SE Basic IV." - name: "chrome.rom" @@ -266,7 +308,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3591-3593, src/utils.c:4136" + source_ref: "src/cpu.c:3662-3664, src/utils.c:4155" - name: "prism.rom" sha1: "6e03d87f868c40d5662ef6906931c77ba1b8b2c2" @@ -275,8 +317,8 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3533-3535, src/utils.c:4132" - note: "20 pages of 16K. Page map documented at src/cpu.c:3821-3837." + source_ref: "src/cpu.c:3588-3590, src/utils.c:4151" + note: "20 pages of 16K. Page map documented at src/cpu.c:3908-3924." - name: "prism_failsafe.rom" sha1: "d020440638aff4d39467128413ef795677be9c23" @@ -285,7 +327,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/machines/prism.h:61, src/machines/prism.c:581-590, src/cpu.c:3845" + source_ref: "src/machines/prism.h:61, src/machines/prism.c:581-590, src/cpu.c:3932" note: "Loaded straight after prism.rom by prism_load_failsafe_rom(). The only ROM whose absence is fatal: the loader calls cpu_panic both when the file is missing and when the read is not 16384 bytes." - name: "zxuno_bootloader.rom" @@ -294,8 +336,8 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3518-3520, src/cpu.c:3795-3799" - size_note: "Read caps at 8192 bytes and only errors when fewer than 1 byte is read, so no exact size check. get_rom_size returns 214 for ZX-Uno (src/utils.c:4128) but that value is unused on this path." + source_ref: "src/cpu.c:3573-3575, src/cpu.c:3882-3886" + size_note: "Read caps at 8192 bytes and only errors when fewer than 1 byte is read, so no exact size check. get_rom_size returns 214 for ZX-Uno (src/utils.c:4147) but that value is unused on this path." - name: "zxevo_tsconf.rom" sha1: "fe52c6b3126d20f1ebbf781d2616dc02778c604f" @@ -304,7 +346,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3595-3597, src/utils.c:4138" + source_ref: "src/cpu.c:3666-3668, src/utils.c:4157" - name: "zxevo_baseconf.rom" sha1: "d65ed8f995989e858e66937d557afc86a6639f8b" @@ -313,7 +355,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3599-3601, src/utils.c:4140" + source_ref: "src/cpu.c:3670-3672, src/utils.c:4159" note: "ZX Evolution BaseConf ROM set, the PentEvo edition 2013 image carrying TR-DOS 6.12E and EVO Magic Service v0.61.01." # ============================================================ @@ -327,8 +369,8 @@ files: required: true bundled: true system: sinclair-zx-spectrum-next - source_ref: "src/cpu.c:3537-3540, src/cpu.c:3862-3868, src/utils.c:4134" - note: "FPGA loader, mirrored to 16K at src/cpu.c:3864. Bypassed when --tbblue-fast-boot-mode selects 48.rom instead." + source_ref: "src/cpu.c:3592-3595, src/cpu.c:3949-3955, src/utils.c:4153" + note: "FPGA loader, mirrored to 16K at src/cpu.c:3951. Bypassed when --tbblue-fast-boot-mode selects 48.rom instead." - name: "tbblue.mmc" sha1: "e838e1d63dc9c1e518a79195c9512042dffb765f" @@ -336,7 +378,7 @@ files: required: false bundled: true system: sinclair-zx-spectrum-next - source_ref: "src/menu/menu_items_storage.c:12435-12453, src/configure:1927" + source_ref: "src/menu/menu_items_storage.c:12448-12466, src/configure:1933" note: "SD card image carrying the Next system software. Assigned as MMC card 0 by the local-tbblue menu action, and the emulator reports 'tbblue.mmc image not found' when absent." size_note: "64 MB, so it needs storage: large_file once the image is acquired and uploaded as a release asset." @@ -351,7 +393,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3451-3457, src/utils.c:4118" + source_ref: "src/cpu.c:3506-3512, src/utils.c:4133" note: "Portuguese TK90X ROM, selected for both the Microdigital ULA and the Ferranti ULA models." - name: "tk90xs.rom" @@ -361,7 +403,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3459-3465, src/utils.c:4118" + source_ref: "src/cpu.c:3514-3520, src/utils.c:4133" note: "Spanish TK90X ROM, selected for both the Microdigital ULA and the Ferranti ULA models." - name: "tk95.rom" @@ -371,7 +413,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3467-3469, src/utils.c:4118" + source_ref: "src/cpu.c:3522-3524, src/utils.c:4133" - name: "tk95es.rom" sha1: "54f3445374d1758a3133232672e8783cb4fc7a32" @@ -380,7 +422,7 @@ files: required: true bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.c:3471-3473, src/utils.c:4118" + source_ref: "src/cpu.c:3526-3528, src/utils.c:4133" # ============================================================ # Timex @@ -393,7 +435,7 @@ files: required: true bundled: true system: timex-tc2048 - source_ref: "src/cpu.c:3603-3605, src/utils.c:4118 (TC2048 falls under MACHINE_IS_SPECTRUM_16_48, src/cpu.h:576)" + source_ref: "src/cpu.c:3674-3676, src/utils.c:4133 (TC2048 falls under MACHINE_IS_SPECTRUM_16_48, src/cpu.h:591)" - name: "ts2068.rom" sha1: "34cd8113bf75b65a4da6eea355f9d46ad635f7e4" @@ -402,7 +444,7 @@ files: required: true bundled: true system: timex-ts2068 - source_ref: "src/cpu.c:3528-3531, src/cpu.c:3898-3912, src/utils.c:4142" + source_ref: "src/cpu.c:3583-3586, src/cpu.c:3985-3999, src/utils.c:4161" note: "Read as two blocks: 16384 into the main ROM table, then 8192 into the EX ROM table. Serves TS2068 and TC2068." - name: "ts1500.rom" @@ -412,7 +454,7 @@ files: required: true bundled: true system: timex-ts1500 - source_ref: "src/cpu.c:3627-3631, src/utils.c:4158" + source_ref: "src/cpu.c:3698-3702, src/utils.c:4177" # ============================================================ # ZX80 / ZX81 family @@ -425,8 +467,8 @@ files: required: true bundled: true system: sinclair-zx80 - source_ref: "src/cpu.c:3607-3612, src/cpu.c:3953-3963, src/utils.c:4154" - note: "Serves ZX80, TK80 and TK82. An 8192-byte file is accepted as-is so the ZX81 ROM can run on a ZX80 (src/cpu.c:3957)." + source_ref: "src/cpu.c:3678-3683, src/cpu.c:4040-4050, src/utils.c:4173" + note: "Serves ZX80, TK80 and TK82. An 8192-byte file is accepted as-is so the ZX81 ROM can run on a ZX80 (src/cpu.c:4044)." - name: "zx81.rom" sha1: "7b143ee964e9ada89d1f9e88f0bd48d919184cfc" @@ -435,7 +477,7 @@ files: required: true bundled: true system: sinclair-zx81 - source_ref: "src/cpu.c:3614-3625, src/utils.c:4158" + source_ref: "src/cpu.c:3685-3696, src/utils.c:4177" note: "Serves ZX81, Timex TS1000, TK82C, TK83 and the Czerweny CZ 1000/1500 models." - name: "tk85.rom" @@ -445,7 +487,7 @@ files: required: true bundled: true system: microdigital-tk85 - source_ref: "src/cpu.c:3633-3637, src/utils.c:4156" + source_ref: "src/cpu.c:3704-3708, src/utils.c:4175" note: "The TK85 test precedes the generic ZX81 test in get_rom_size, so 10240 wins over 8192." - name: "zxpand_zx81.rom" @@ -474,7 +516,7 @@ files: required: true bundled: true system: jupiter-ace - source_ref: "src/cpu.c:3639-3643, src/utils.c:4160" + source_ref: "src/cpu.c:3710-3714, src/utils.c:4179" # ============================================================ # Sinclair QL, Cambridge Z88, MK14 @@ -488,7 +530,7 @@ files: required: true bundled: true system: sinclair-ql - source_ref: "src/cpu.c:3674-3679, src/cpu.c:4028-4037" + source_ref: "src/cpu.c:3745-3750, src/cpu.c:4115-4124" size_note: "Reads up to 131072 bytes and errors only below 16384, so the check is a minimum rather than an exact size." - name: "ql_jm.rom" @@ -497,7 +539,7 @@ files: required: false bundled: true system: sinclair-ql - source_ref: "src/cpu.c:3678 (commented alternative), src/start.c:4877-4881" + source_ref: "src/cpu.c:3749 (commented alternative), src/start.c:4877-4881" note: "JM release. Reachable through --romfile. The switch selects ql_js.rom." - name: "tkii220.rom" @@ -506,7 +548,7 @@ files: required: false bundled: true system: sinclair-ql - source_ref: "src/machines/ql.c:1348-1375, src/start.c:5628-5653, src/cpu.c:4061-4065" + source_ref: "src/machines/ql.c:1348-1375, src/start.c:5628-5653, src/cpu.c:4148-4152" note: "QJUMP Toolkit II 2.20, the ROM ql.c names as the example for --ql-rom-c000-file. ql_load_extra_roms() runs after the system ROM and reads 16K into memoria_ql at 0xC000 from the path the option gives. The read count is not checked." - name: "qsound_V1.94.rom" @@ -516,7 +558,7 @@ files: required: false bundled: true system: sinclair-ql - source_ref: "src/soundchips/qsound.h:50, src/soundchips/qsound.c:329-369, src/start.c:6800-6807, src/cpu.c:4062-4065" + source_ref: "src/soundchips/qsound.h:50, src/soundchips/qsound.c:329-369, src/start.c:6800-6807, src/cpu.c:4149-4152" note: "QL Qsound firmware, read into memoria_ql at 0xC0000 once --ql-qsound-enabled is set. The read count is not checked and --ql-qsound-rom points the loader at another file. QSOUND_ROM_FILE is spelled qsound_V1.94.rom while the shipped file is Qsound_V1.94.rom, so the default only resolves on a case-insensitive filesystem." - name: "Z88OZ47.rom" @@ -525,7 +567,7 @@ files: required: true bundled: true system: cambridge-z88 - source_ref: "src/cpu.c:3645-3650, src/cpu.c:3984-3994" + source_ref: "src/cpu.c:3716-3721, src/cpu.c:4071-4081" size_note: "Reads up to 512K and errors only when nothing is read. z88_internal_rom_size is derived from the byte count, so any size is accepted." - name: "mk14.rom" @@ -535,7 +577,7 @@ files: required: true bundled: true system: science-of-cambridge-mk14 - source_ref: "src/cpu.c:3681-3683, src/utils.c:4172" + source_ref: "src/cpu.c:3752-3754, src/utils.c:4191" # ============================================================ # Amstrad CPC and PCW @@ -548,7 +590,7 @@ files: required: true bundled: true system: amstrad-cpc - source_ref: "src/cpu.c:3653-3659, src/utils.c:4164" + source_ref: "src/cpu.c:3724-3730, src/utils.c:4183" note: "Serves CPC 464 and CPC 4128." - name: "cpc664.rom" @@ -558,7 +600,7 @@ files: required: true bundled: true system: amstrad-cpc - source_ref: "src/cpu.c:3661-3663, src/utils.c:4166" + source_ref: "src/cpu.c:3732-3734, src/utils.c:4185" - name: "cpc6128.rom" sha1: "29dd0487dc5a96cd00966d074de8700ddd4ee18b" @@ -567,7 +609,7 @@ files: required: true bundled: true system: amstrad-cpc - source_ref: "src/cpu.c:3665-3667, src/utils.c:4166" + source_ref: "src/cpu.c:3736-3738, src/utils.c:4185" - name: "pcw_boot.rom" sha1: "245a173cfc7976a4cae8d255f3d1422aeaf5f09a" @@ -576,8 +618,8 @@ files: required: true bundled: true system: pcw - source_ref: "src/cpu.c:3685-3691, src/cpu.c:4049-4055, src/utils.c:4174" - note: "Boot block the PCW pulls into RAM rather than a mapped ROM (src/cpu.c:4048). Serves PCW 8256 and 8512." + source_ref: "src/cpu.c:3756-3762, src/cpu.c:4136-4142, src/utils.c:4193" + note: "Boot block the PCW pulls into RAM rather than a mapped ROM (src/cpu.c:4135). Serves PCW 8256 and 8512." - name: "pcw_8x_boot1.dsk" sha1: "3be724b3bfa01d03931463b8501ffb5c3f3621b7" @@ -608,7 +650,7 @@ files: required: true bundled: true system: sam-coupe - source_ref: "src/cpu.c:3669-3672, src/utils.c:4168" + source_ref: "src/cpu.c:3740-3743, src/utils.c:4187" - name: "atomlite.rom" sha1: "b2303b7200f5a17b54b841af9f0604db7bbdd1ab" @@ -617,7 +659,7 @@ files: required: false bundled: true system: sam-coupe - source_ref: "src/cpu.c:3670, src/utils.c:4168" + source_ref: "src/cpu.c:3741, src/utils.c:4187" note: "Replaces samcoupe.rom when Atom Lite emulation is on." - name: "samram.rom" @@ -651,7 +693,7 @@ files: required: true bundled: true system: colecovision - source_ref: "src/cpu.c:3570-3572, src/utils.c:4144" + source_ref: "src/cpu.c:3641-3643, src/utils.c:4163" - name: "sg1000.rom" sha1: "fdea3168fda81e5f25f7dee3a7231192a492836e" @@ -659,7 +701,7 @@ files: required: true bundled: true system: sg-1000 - source_ref: "src/cpu.c:3574-3576, src/cpu.c:3922-3926" + source_ref: "src/cpu.c:3645-3647, src/cpu.c:4009-4013" size_note: "Nothing is read from this file. The SG-1000 branch is empty and the source comment states the file only has to exist for the open to succeed." - name: "sms.rom" @@ -669,7 +711,7 @@ files: required: true bundled: true system: sega-mastersystem - source_ref: "src/cpu.c:3578-3580, src/utils.c:4148" + source_ref: "src/cpu.c:3649-3651, src/utils.c:4167" - name: "msx.rom" sha1: "e998f0c441f4f1800ef44e42cd1659150206cf79" @@ -678,7 +720,7 @@ files: required: true bundled: true system: msx - source_ref: "src/cpu.c:3582-3584, src/utils.c:4150" + source_ref: "src/cpu.c:3653-3655, src/utils.c:4169" - name: "svi.rom" sha1: "7d8daf52f78371ca2c9443e04827c8e1f98c8f2c" @@ -687,7 +729,7 @@ files: required: true bundled: true system: spectravideo - source_ref: "src/cpu.c:3586-3589, src/utils.c:4152" + source_ref: "src/cpu.c:3657-3660, src/utils.c:4171" note: "Serves SVI-318 and SVI-328." # ============================================================ @@ -731,8 +773,8 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/storage/betadisk.c:67, src/storage/betadisk.c:401, src/storage/betadisk.h:27, src/storage/betadisk.c:408-420" - note: "Beta Disk / TR-DOS firmware." + source_ref: "src/storage/betadisk.c:68, src/storage/betadisk.c:402, src/storage/betadisk.h:27, src/storage/betadisk.c:409-421, src/storage/betadisk.h:29, src/cpu.c:3853-3860, src/storage/betadisk.c:725" + note: "Beta Disk / TR-DOS firmware. The Pentagon reads it with its system ROM into its own TR-DOS page instead of enabling the Beta Disk interface, and only logs an error when it is missing." - name: "if1-v1.rom" sha1: "4ffd9ed9c00cdc6f92ce69fdd8b618ef1203f48e" @@ -782,7 +824,7 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/machines/zxuno.h:29, src/machines/zxuno.h:80, src/start.c:4917-4920, src/cpu.c:3803, src/machines/zxuno.c:1186-1208" + source_ref: "src/machines/zxuno.h:29, src/machines/zxuno.h:80, src/start.c:4917-4920, src/cpu.c:3890, src/machines/zxuno.c:1186-1208" note: "ZX-Uno SPI flash image, loaded by zxuno_load_spi_flash() right after the bootloader. Default for --zxunospifile. ZXUNO_SPI_SIZE is 4096 KB." # ============================================================ @@ -796,7 +838,7 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:42677-42682" + source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:42820-42825" note: "Multiface One. The file selector rejects anything that is not exactly 8 KB." - name: "mf128.rom" @@ -806,7 +848,7 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:42677-42682" + source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:42820-42825" note: "Multiface 128." - name: "mf3.rom" @@ -816,7 +858,7 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:42677-42682" + source_ref: "src/copy_interfaces/multiface.c:224, src/copy_interfaces/multiface.c:232-242, src/menu/menu_items.c:42820-42825" note: "Multiface 3." - name: "specmate.rom" @@ -964,7 +1006,7 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/menu/menu_items.c:42221-42247" + source_ref: "src/menu/menu_items.c:42364-42390" note: "Spectrum program the emulator injects to dump RAM to tape." # ============================================================ @@ -987,12 +1029,12 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/configure:1927" + source_ref: "src/configure:1933" note: "General Sound firmware v1.04. Shipped alongside gs105a.rom, but GS_ROM_NAME is fixed and there is no option to point the loader elsewhere, so it is usable only in place of gs105a.rom." # ============================================================ # Alternate machine ROMs, selectable with --romfile (src/start.c:4877-4881, - # loaded at src/cpu.c:3705-3708). Documented in the shipped src/ALTERNATEROMS. + # loaded at src/cpu.c:3776-3779). Documented in the shipped src/ALTERNATEROMS. # ============================================================ - name: "80-lec.rom" @@ -1001,7 +1043,7 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/start.c:4877-4881, src/cpu.c:3705-3708" + source_ref: "src/start.c:4877-4881, src/cpu.c:3776-3779" - name: "tk90x_v1br.rom" sha1: "eab2eab803d8ec717b55a915de3bcb931b410a2f" @@ -1009,7 +1051,7 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/ALTERNATEROMS:97, src/start.c:4877-4881, src/cpu.c:3705-3708" + source_ref: "src/ALTERNATEROMS:97, src/start.c:4877-4881, src/cpu.c:3776-3779" - name: "tk90x_v2es.rom" sha1: "a9af9c4d38882e2bd85086fc0c2d8d9afe90afad" @@ -1017,7 +1059,7 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/ALTERNATEROMS:98, src/start.c:4877-4881, src/cpu.c:3705-3708" + source_ref: "src/ALTERNATEROMS:98, src/start.c:4877-4881, src/cpu.c:3776-3779" note: "Corrected TK90X ROM." - name: "tk95es_modif.rom" @@ -1026,7 +1068,7 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/ALTERNATEROMS:101-106, src/start.c:4877-4881, src/cpu.c:3705-3708" + source_ref: "src/ALTERNATEROMS:101-106, src/start.c:4877-4881, src/cpu.c:3776-3779" note: "TK95 Spanish ROM with message and symbol fixes by Rodolfo Edison Guerra." - name: "Z88OZ431.rom" @@ -1183,7 +1225,7 @@ files: required: false bundled: true system: sinclair-zx-spectrum - source_ref: "src/cpu.h:369, src/menu/menu_items.c:31070-31080, src/ALTERNATEROMS:26-30" + source_ref: "src/cpu.h:369, src/menu/menu_items.c:31209-31219, src/ALTERNATEROMS:26-30" note: "+3e v1.38 English for MMC. Resolved by name through find_sharedfile for the +2e/+3e MMC machine preset." - name: "plus3e_mmces3eE.rom" From 0f3b0ff5de8e80e701972d3e2f2860c54e94c43e Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:38:30 +0100 Subject: [PATCH 14/18] fix: anchor the pom2 char rom refs --- emulators/pom2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emulators/pom2.yml b/emulators/pom2.yml index eaf6b8314..92560ddae 100644 --- a/emulators/pom2.yml +++ b/emulators/pom2.yml @@ -305,7 +305,7 @@ files: sha256: "08f5d22230481019844492dde0a29a018cb193712a9e4a43770a3870608f28de" sha1: "f9d312f128c9557d9d6ac03bfad6c3ddf83e5659" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:39, src/SystemProfile.cpp:55, src/CharRomCatalog.cpp:42-43, src/RomFetch.cpp:132-135, src/Memory.cpp:343-376" + source_ref: "src/SystemProfile.cpp:37-39, src/SystemProfile.cpp:53-55, src/CharRomCatalog.cpp:42-43, src/RomFetch.cpp:132-135, src/Memory.cpp:343-376" note: "Sole candidate of the ][ and ][+ profiles and the last fallback of every //e-class chain." - name: "apple2e_char.rom" path: "roms/apple2e_char.rom" From bc9c7e5d2bcb8cf853b138e3a790341e1a4ae009 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:42:12 +0100 Subject: [PATCH 15/18] feat: advance pom2 to 06dd03a with its sound banks --- emulators/pom2.yml | 438 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 341 insertions(+), 97 deletions(-) diff --git a/emulators/pom2.yml b/emulators/pom2.yml index 92560ddae..00fdee198 100644 --- a/emulators/pom2.yml +++ b/emulators/pom2.yml @@ -4,8 +4,8 @@ core_classification: other source: "https://github.com/habib256/pom2" upstream: "https://github.com/habib256/pom2" profiled_date: "2026-11-02" -source_commit: "de86e8e35df96fe6ffced56dfb727bbd567f8568" -core_version: "1.1.0" +source_commit: "06dd03a08674c67fda3e8d44d314aeeda04fda19" +core_version: "1.2.0" version_basis: kind: file path: "CMakeLists.txt" @@ -34,7 +34,7 @@ data_root: notes: | Apple ][, ][+, //e, //c and //c+ emulator by Arnaud Verhille, C++ with an ImGui frontend, plus a browser build and a headless CLI. Nine machine - profiles (src/SystemProfile.cpp:32-305): Apple ][ Original, ][+, //e + profiles (src/SystemProfile.cpp:34-314): Apple ][ Original, ][+, //e Unenhanced, //e Enhanced, //c, //c Plus, and PAL variants of the //e Unenhanced, //e Enhanced (the default) and //c (Le Chat Mauve). @@ -45,11 +45,12 @@ notes: | directory, its parent, ../share/POM2, the temp fallback data directory otherwise, then the working directory and its two parents. The first hit wins. Since v1.1.0 a desktop release package ships no firmware dump - (packaging/bundle.manifest:35-41): the user downloads or drops them in. + (packaging/bundle.manifest:36-42): the user downloads or drops them in. The browser build alone preloads the 32 KB //c ROM, the enhanced //e ROM, the //e character generator and the AppleMouse slot EPROM - (packaging/bundle.manifest:57-60). Packages do carry the floppy samples, - the fonts and the pic/ folder (packaging/bundle.manifest:64, 75, 83). + (packaging/bundle.manifest:58-61). Packages do carry the floppy samples, + the ImageWriter II recordings, the fonts and the pic/ folder + (packaging/bundle.manifest:65, 69, 80, 88). Machine firmware is a probe chain per profile, first name found wins (SystemProfile.cpp romProbeOrder, src/ProfileSwitch.cpp:136-154): @@ -60,28 +61,28 @@ notes: | //c apple2c-32Kv0.rom, apple2c-16K.rom, 3420033a.256 //c Plus apple2cp.rom, apple2c-plus.rom, apple2c-32Kv0.rom With no candidate the machine runs on a $D000-$FFFF stub and the Welcome - panel opens (src/MainWindow.cpp:356-364). A first run with no //e image - falls back to the ][+ chain (src/MainWindow.cpp:245-258). - Memory::loadAppleIIRom (src/Memory.cpp:175-262) maps 12 KB at $D000, + panel opens (src/MainWindow.cpp:357-364). A first run with no //e image + falls back to the ][+ chain (src/MainWindow.cpp:246-259). + Memory::loadAppleIIRom (src/Memory.cpp:177-264) maps 12 KB at $D000, 16 KB at $C000, skips the 4 KB pad of a 20 KB ][+ dump, and slices a 32 KB dump by profile: //e images carry the firmware in the upper half, //c and //c+ images are two firmware banks with bank 0 in the lower half - (src/SystemProfile.cpp:446). + (src/SystemProfile.cpp:455). Character generators follow charRomProbeOrder per profile, or the locale picked in the toolbar (src/CharRomCatalog.cpp:42-91, src/ProfileSwitch.cpp:156-162). Memory::loadCharRom accepts 2 KB, 4 KB - and 8 KB dumps (src/Memory.cpp:343-376). An 8 KB dump is two 4 KB banks, + and 8 KB dumps (src/Memory.cpp:348-381). An 8 KB dump is two 4 KB banks, loaded as one bank or kept dual-bank with annunciator 2 selecting the live set. Peripheral ROMs are read when the card is plugged (src/SlotCardFactory.cpp). The Disk II comes up on POM2's own 16-sector boot PROM, assembled from - the boot protocol (src/DiskIIBootRom.h, src/DiskIICard.cpp:86-96). + the boot protocol (src/DiskIIBootRom.h, src/DiskIICard.cpp:81-91). Apple's 341-0027-A replaces it when roms/disk2.rom is present - (src/DiskIICard.cpp:103-126). Without the P6 PROM, .dsk and .nib images + (src/DiskIICard.cpp:98-121). Without the P6 PROM, .dsk and .nib images run the legacy 32-cycle gate and a WOZ is read by POM2's own sequencer - (src/DiskIICard.cpp:128-156, src/DiskIICard.cpp:1412-1416). The + (src/DiskIICard.cpp:123-151, src/DiskIICard.cpp:1425-1429). The Applicard and the UltraTerm leave the slot empty without their dump (src/SlotCardFactory.cpp:328-345, src/SlotCardFactory.cpp:362-385). The CCS 7710 and the DAN ][ run POM2's own firmware page without theirs @@ -94,21 +95,22 @@ notes: | lists every name in probe order with the size the loader enforces, what a missing dump costs (degraded, card unavailable, unused) and, where POM2 vouches for a dump, its CRC32. The panel hashes each present - file (src/RomStatus_ImGui.cpp:183-210, 427) and lists the Virtual ][ - recordings with a decode check (src/RomStatus_ImGui.cpp:337-403). + file (src/RomStatus_ImGui.cpp:187-214, 431) and lists the Virtual ][ + recordings with a decode check (src/RomStatus_ImGui.cpp:341-407). Help > Download missing ROMs fetches the catalogue of 57 names, 54 - distinct dumps (src/RomFetch.cpp:72-368), with curl pinned to HTTPS - (src/RomFetch.cpp:822-828). The RetroBIOS URLs are read at the pinned - commit f71b006, never main: the loose copies POM2 probes left main on - 2026-10-20 and the pin keeps every URL resolving (src/RomFetch.h:110-124). + distinct dumps (src/RomFetch.cpp:72-371), with curl pinned to HTTPS + (src/RomFetch.cpp:753-759). The RetroBIOS URLs are read at one pinned + commit, never at the branch tip: 441d412, a commit of RetroBIOS main where + every URL resolves (src/RomFetch.h:119-144). POM2's own archive is asked + first and RetroBIOS serves what it cannot supply. Every entry carries a SHA-256, most a CRC32 as well, and a download is installed only when its size, CRC32 and SHA-256 match - (src/RomFetch.cpp:713, src/RomFetch.cpp:999). A present file is + (src/RomFetch.cpp:674, src/RomFetch.cpp:930). A present file is re-checked with the same gate and, when it is not the catalogued dump, replaced after a copy to roms-replaced/ under the data directory - (src/RomFetch.cpp:665, src/RomFetch.cpp:969-990). A 12 KB apple2p.rom is - the one alternate size kept as is. Fifteen entries are members of MAME + (src/RomFetch.cpp:626, src/RomFetch.cpp:900-921). A 12 KB apple2p.rom is + the one alternate size kept as is. Seventeen entries are members of MAME romsets, read in-process (src/ZipMember.cpp): apple2e_unenh.rom is 342-0135-b.64 then 342-0134-a.64 from apple2e.zip, mouse_341-0270-c.bin is 341-0270-c.4b from a2mouse.zip, ssc_341-0065-a.bin is 341-0065-a.bin @@ -116,33 +118,41 @@ notes: | 341-0057.bin is 341-0057.7b from a2pic.zip, the four Videoterm files come from a2vidtrm.zip, slinky_341-0344a.bin from a2memexp.zip, applicard_v9.bin is applicard-v9.bin from a2aplcrd.zip and the four - UltraTerm files come from a2ulttrm.zip and a2ultrme.zip. The two CCS 7710 - PROMs and the DAN ][ EPROM are not fetched from RetroBIOS - (src/RomFetch.cpp:333-351). Downloads land in POM2's own roms/ when that + UltraTerm files come from a2ulttrm.zip and a2ultrme.zip, the two CCS 7710 + PROMs are 7710-03h.u5 and 7710-03l.u6 from ccs7710.zip, and the DAN ][ + EPROM is a loose file (src/RomFetch.cpp:333-354). Downloads land in POM2's own roms/ when that folder takes files, else in the per-user data directory's roms/ - (src/RomFetch.cpp:905-931). Unavailable in the browser build - (src/RomFetch.cpp:1068-1074). + (src/RomFetch.cpp:836-862). Unavailable in the browser build + (src/RomFetch.cpp:999-1005). The floppy mechanical sounds are MAME's samples/floppy set, read from roms/floppy_samples/ as two banks of ten WAV files prefixed 525_ and 35_ (src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386). A - missing sample is logged and the drive stays silent. A second bank, the + missing sample is logged and the drive stays silent. A door and a head + stop for the 5.25 inch drive, which the MAME set lacks, are read from + roms/floppy_extras/ when present (src/MainWindow.cpp:387-394, + src/FloppySoundDevice.cpp:135-157). tools/install_drive_extras.py makes + them from OpenEmulator recordings and packages do not carry them. The + printer plays Scott Lawrence's ImageWriter II recordings from + roms/printer_samples/, which packages carry, once the three carriage + loops and one line feed have loaded, and is synthesised otherwise + (src/MainWindow.cpp:395-402, src/PrinterSoundDevice.cpp:392-457). A second bank, the Virtual ][ recordings, is read from the folder picked with Import sounds in the audio mixer, stored as mechanical_sound_path - (src/MainWindow_AudioPanels.cpp:349-381), then from roms/virtual_ii_sons/, + (src/MainWindow_AudioPanels.cpp:351-383), then from roms/virtual_ii_sons/, and on macOS from Virtual ][.app/Contents/Resources/ under /Applications - and ~/Applications (src/MainWindow.cpp:387-403, + and ~/Applications (src/MainWindow.cpp:404-420, src/VirtualIISoundCatalog.h:34-45): eight drive and switch takes under lecteur/ and interface/ (src/VirtualIISoundCatalog.h:19-28) and one printer loop under imprimante/ (src/VirtualIISoundCatalog.h:30-31). The bank is selectable once Disk Rotation, Move arm, Disk Insertion and Disk - Removal have loaded (src/FloppySoundDevice.cpp:192-228). Each take is + Removal have loaded (src/FloppySoundDevice.cpp:216-252). Each take is tried under its path, then an .aiff path as .wav, then the bare file name, then the bare name with .aiff turned into .wav or .wav into .raw, so a Virtual ][ Contents/Resources/ folder is read as it is - (src/VirtualIISoundCatalog.h:47-66, src/FloppySoundDevice.cpp:176-190). + (src/VirtualIISoundCatalog.h:47-66, src/FloppySoundDevice.cpp:200-214). The packaging manifest keeps the directory out of release packages - (packaging/bundle.manifest:115-118). + (packaging/bundle.manifest:120-123). The nine takes come from Contents/Resources/ of Virtual ][.app in VirtualII.dmg, the free download on virtualii.com (Virtual ][ 13.3). @@ -158,25 +168,25 @@ notes: | own rate. An .aiff whose FORM chunk declares more bytes than the file holds is rejected. A file miniaudio refuses is read as mono signed 16-bit little-endian 44100 Hz when it ends in .raw, and through AudioToolbox - on macOS when it ends in .aiff (src/FloppySoundDevice.cpp:135-168, - src/PrinterSoundDevice.cpp:80-103, src/VirtualIISoundLoader.h:17-104). + on macOS when it ends in .aiff (src/FloppySoundDevice.cpp:159-192, + src/PrinterSoundDevice.cpp:92-115, src/VirtualIISoundLoader.h:17-104). The screen sits in a Monitor II bezel, pic/retro/monitor/monitor2.png, - on by default (src/MainWindow_Screen.cpp:380-381), and the Drives window + on by default (src/MainWindow_Screen.cpp:367-368), and the Drives window shows a picture per drive state from pic/retro/drives/ (src/RetroArtwork.cpp:44-91, src/MainWindow_DriveRack.cpp:109-120). Without a picture the screen has no bezel and the drive is drawn as a vector mechanism (src/DriveRack_ImGui.cpp:57-61). The FujiNet card runs FujiNet-PC Apple v1.5.2, a separate program the release packages carry under fujinet-pc-APPLE// (src/FujiNetRuntime.cpp:38-62, - packaging/fujinet/stage.py:20-31). + packaging/fujinet/stage.py:24-35). Media named by the code are not firmware and are not listed here: the browser demo boots bundled_disks/DIX-fix.po on the //c PAL preset unless ?preset=, ?disk=, ?url= or ?nodisk=1 says otherwise (wasm/shell.html:114-120, src/main.cpp:317-323), and the headless CLI mounts disks_5.4/dos33_master.dsk by default, a library image packages - do not carry (src/pom2_headless.cpp:360-365). Disk, tape and hard-disk images are + do not carry (src/pom2_headless.cpp:428-433). Disk, tape and hard-disk images are browsed from disks_5.4/, disks_3.5/, hdv/, floppyemu/, bundled_disks/, cassettes/ and prodos_folder/ next to the executable. @@ -191,7 +201,7 @@ files: sha256: "68d9db6bb4c305d40c3fa89fa0f2d7b7f71516a9431e3138859f23bc5bddb2d1" sha1: "78008be557f643e956a106121bcc182c0fb9ea6d" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:38, src/Memory.cpp:175-262, src/RomFetch.cpp:76-79" + source_ref: "src/SystemProfile.cpp:40, src/Memory.cpp:177-264, src/RomFetch.cpp:76-79" note: "First candidate of the Apple ][ Original profile. apple2.rom is probed next." - name: "apple2.rom" path: "roms/apple2.rom" @@ -203,7 +213,7 @@ files: sha256: "fc3e9d41e9428534a883df5aa10eb55b73ea53d2fcbb3ee4f39bed1b07a82905" sha1: "33a24f5489ba9195b44be77d9afb2252594cb5c7" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:38, src/SystemProfile.cpp:54, src/ProfileSwitch.cpp:142-149, src/RomFetch.cpp:80-87" + source_ref: "src/SystemProfile.cpp:40, src/SystemProfile.cpp:56, src/ProfileSwitch.cpp:142-149, src/RomFetch.cpp:80-87" note: "Probed after the profile image for the ][ and ][+ profiles. When it resolves in place of that image the loader logs that the ROM identity may not match the machine." - name: "apple2p.rom" path: "roms/apple2p.rom" @@ -215,8 +225,8 @@ files: sha256: "92c4bef609920842ea472d21b661a0d35dbda6cd90963b8b734a205e22d84108" sha1: "29a53f3bb158b160433369e8e4a1d7cd5bf68ac6" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:54, src/Memory.cpp:247-257, src/RomFetch.cpp:88-100, src/RomFetch.cpp:999-1010" - note: "First candidate of the ][+ profile and of the first-run fallback (src/MainWindow.cpp:254-258). The loader drops the leading 4 KB of the 20 KB dump. The fetch gate names that dump, but a 12 KB six-chip image already on disk is kept as present without a digest check." + source_ref: "src/SystemProfile.cpp:56, src/Memory.cpp:249-259, src/RomFetch.cpp:88-100, src/RomFetch.cpp:930-941" + note: "First candidate of the ][+ profile and of the first-run fallback (src/MainWindow.cpp:255-259). The loader drops the leading 4 KB of the 20 KB dump. The fetch gate names that dump, but a 12 KB six-chip image already on disk is kept as present without a digest check." - name: "apple2e.rom" path: "roms/apple2e.rom" description: "Apple //e Enhanced firmware, 32 KB dump with the 16 KB firmware in the upper half" @@ -227,7 +237,7 @@ files: sha256: "c17bc38c75ba96c33a30c688a1efd60144811073423533fe7f8453cdd9457aab" sha1: "d756eba578a6c5a4807510dfee30ee585c63755e" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:101, src/SystemProfile.cpp:244-256, src/Memory.cpp:227-239, src/Memory.cpp:258-260, src/MainWindow.cpp:245-248, src/RomFetch.cpp:101-104" + source_ref: "src/SystemProfile.cpp:110, src/SystemProfile.cpp:253-265, src/Memory.cpp:229-241, src/Memory.cpp:260-262, src/MainWindow.cpp:246-249, src/RomFetch.cpp:101-104" note: "Sole candidate of the //e Enhanced profiles, NTSC and PAL, PAL being the default machine. Also the last fallback of the //e Unenhanced chain." - name: "apple2e_unenh.rom" path: "roms/apple2e_unenh.rom" @@ -240,7 +250,7 @@ files: sha256: "1fb812584c6633fa16b77b20915986ed1178d1e6fc07a647f7ee8d4e6ab9d40b" sha1: "61fa9254628e5bb7236fb474006116d67684d747" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:78-79, src/SystemProfile.cpp:270-282, src/RomFetch.cpp:52-57, src/RomFetch.cpp:105-113" + source_ref: "src/SystemProfile.cpp:80-81, src/SystemProfile.cpp:279-291, src/RomFetch.cpp:52-57, src/RomFetch.cpp:105-113" note: "First candidate of the //e Unenhanced profiles. 342-0135-b.64.rom is probed second, apple2e.rom third. The fetcher assembles it from the two 8 KB chips of the MAME apple2e set, 342-0135-b.64 then 342-0134-a.64." - name: "apple2c-32Kv0.rom" path: "roms/apple2c-32Kv0.rom" @@ -253,7 +263,7 @@ files: sha256: "d65bbf97058b9cdce8eaebf74124048e3b4e42dca1bd42be316747bbc27dc124" sha1: "fb0d644aafaff1352d0816bc8494f6c9913809d5" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:142-143, src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:446-451, src/Memory.cpp:227-239, src/Memory.cpp:258-260, src/RomFetch.cpp:114-117" + source_ref: "src/SystemProfile.cpp:151-152, src/SystemProfile.cpp:213-214, src/SystemProfile.cpp:455-460, src/Memory.cpp:229-241, src/Memory.cpp:260-262, src/RomFetch.cpp:114-117" note: "First candidate of the //c and //c PAL profiles, third of the //c Plus chain. Bank 0 is mapped at reset, the $C028 ROMBANK switch selects the other. Identical to 3420033a.256 with its first 256 bytes zeroed." - name: "apple2c-16K.rom" path: "roms/apple2c-16K.rom" @@ -266,7 +276,7 @@ files: sha256: "3ca1c8a27bf111aa0f4dc9372c5e6404457adb9a458ce32ae4b03a7e989e0c76" sha1: "1a9b8aca5e32bb702ddb7791daddd60a89655729" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:142-143, src/Memory.cpp:245-246, src/RomFetch.cpp:118-121" + source_ref: "src/SystemProfile.cpp:151-152, src/Memory.cpp:247-248, src/RomFetch.cpp:118-121" note: "Second candidate of the //c chain, loaded at $C000." - name: "3420033a.256" path: "roms/3420033a.256" @@ -279,7 +289,7 @@ files: sha256: "678d5c9d374664d2ee94ba9c9564d26a917b31116b07c46df30a3e82c640885b" sha1: "10767e96cc17bad0970afda3a4146564e6272ba1" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:142-143, src/RomFetch.cpp:122-125" + source_ref: "src/SystemProfile.cpp:151-152, src/RomFetch.cpp:122-125" note: "Third candidate of the //c chain." - name: "apple2cp.rom" path: "roms/apple2cp.rom" @@ -293,7 +303,7 @@ files: sha256: "5a62070f6a0b07784681d4df4bf2ce88b2809bec0cbaa65fcb963e804ed60374" sha1: "1a27ae26966bbafd825d08ad1a24742d3e33557c" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:446-451, src/RomFetch.cpp:126-129" + source_ref: "src/SystemProfile.cpp:213-214, src/SystemProfile.cpp:455-460, src/RomFetch.cpp:126-129" note: "First candidate of the //c Plus profile. apple2c-plus.rom is probed second and apple2c-32Kv0.rom third." - name: "apple2_char.rom" path: "roms/apple2_char.rom" @@ -305,7 +315,7 @@ files: sha256: "08f5d22230481019844492dde0a29a018cb193712a9e4a43770a3870608f28de" sha1: "f9d312f128c9557d9d6ac03bfad6c3ddf83e5659" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:37-39, src/SystemProfile.cpp:53-55, src/CharRomCatalog.cpp:42-43, src/RomFetch.cpp:132-135, src/Memory.cpp:343-376" + source_ref: "src/SystemProfile.cpp:39-41, src/SystemProfile.cpp:55-57, src/CharRomCatalog.cpp:42-43, src/RomFetch.cpp:132-135, src/Memory.cpp:348-381" note: "Sole candidate of the ][ and ][+ profiles and the last fallback of every //e-class chain." - name: "apple2e_char.rom" path: "roms/apple2e_char.rom" @@ -318,7 +328,7 @@ files: sha256: "52c3b87900ac939f6525402cab1ccfd8f8259290fc6df54da48fb4c98ae3ed0f" sha1: "b2b5d87f52693817fc747df087a4aa1ddcdb1f10" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:105, src/SystemProfile.cpp:144, src/SystemProfile.cpp:206, src/CharRomCatalog.cpp:48-49, src/RomFetch.cpp:136-148, src/Memory.cpp:343-376" + source_ref: "src/SystemProfile.cpp:114, src/SystemProfile.cpp:153, src/SystemProfile.cpp:215, src/CharRomCatalog.cpp:48-49, src/RomFetch.cpp:136-148, src/Memory.cpp:348-381" note: "First candidate of the //e Enhanced, //c and //c Plus profiles. The same dump answers to apple2e_char_us.rom in the locale picker, and the fetcher writes both names." - name: "apple2e_char_us_unenh.rom" path: "roms/apple2e_char_us_unenh.rom" @@ -326,13 +336,13 @@ files: required: false bundled: false priority: 1 - aliases: ["apple2e_char_2k.rom", "341-0265-a.chr.rom"] + aliases: ["apple2e_char_2k.rom", "342-0133-a.chr.rom"] size: 4096 sha256: "ed5bdd4afa509134e85f1d020685af7ff50e279226eb869a17825b471cc1634c" sha1: "58ad0008df72896a18601e090ee0d58155ffa5be" validation: [size, sha256] - source_ref: "src/SystemProfile.cpp:83-84, src/CharRomCatalog.cpp:50-51, src/RomFetch.cpp:149-156, src/Memory.cpp:343-376" - note: "The //e Unenhanced profile probes apple2e_char_2k.rom then 341-0265-a.chr.rom then apple2_char.rom. The same dump ships under both names and the fetcher writes both." + source_ref: "src/SystemProfile.cpp:86-93, src/CharRomCatalog.cpp:50-51, src/RomFetch.cpp:149-156, src/Memory.cpp:348-381" + note: "The //e Unenhanced profile probes apple2e_char_2k.rom then 342-0133-a.chr.rom, the MAME member name, then apple2_char.rom. The fetcher writes the dump as apple2e_char_us_unenh.rom and apple2e_char_2k.rom." - name: "apple2e_char_fr.rom" path: "roms/apple2e_char_fr.rom" description: "Apple //e French character generator, 4 KB" @@ -344,7 +354,7 @@ files: sha256: "52d8e46b487a617c288caaf12ab7ad6cb81030b6ab92419f9a2e19c43d765566" sha1: "42afb02aab4146f781ac52803a2733adc4da834e" validation: [size, sha256] - source_ref: "src/CharRomCatalog.cpp:52-53, src/CharRomCatalog.cpp:56-57, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:159-162, src/Memory.cpp:343-376" + source_ref: "src/CharRomCatalog.cpp:52-53, src/CharRomCatalog.cpp:56-57, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:159-162, src/Memory.cpp:348-381" note: "Locale picker entry. The same dump is also listed as the FR Canadian unenhanced set 341-0168-A, and the fetcher writes that name from the same object (src/RomFetch.cpp:183-189)." - name: "apple2e_char_frca.rom" path: "roms/apple2e_char_frca.rom" @@ -356,7 +366,7 @@ files: sha256: "56479cbec4767651c62a4d0f61e6ed103395216f2b86eddba74d85495dd71cc4" sha1: "4043e0808af8be096660827445e41149d16c5c85" validation: [size, sha256] - source_ref: "src/CharRomCatalog.cpp:54-55, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:163-166, src/Memory.cpp:343-376" + source_ref: "src/CharRomCatalog.cpp:54-55, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:163-166, src/Memory.cpp:348-381" note: "Locale picker entry, equal to the low bank of 342-0274-a.e9." - name: "apple2e_char_uk.rom" path: "roms/apple2e_char_uk.rom" @@ -368,7 +378,7 @@ files: sha256: "d55bd5391485cd78c68c71408f09bd088e82a73d179a0a25820067a0c1554acd" sha1: "d19c2e2cc12b27d77edc403d5d0701186a4ed988" validation: [size, sha256] - source_ref: "src/CharRomCatalog.cpp:58-59, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:167-170, src/Memory.cpp:343-376" + source_ref: "src/CharRomCatalog.cpp:58-59, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:167-170, src/Memory.cpp:348-381" note: "Locale picker entry." - name: "apple2e_char_uk_unenh.rom" path: "roms/apple2e_char_uk_unenh.rom" @@ -380,7 +390,7 @@ files: sha256: "f2199fbfb473e98a8c3fb7e7c3312faaf76b4b010b02c655b662e5f87dc997f3" sha1: "6ca9767e0f47f642d1caab6ed41b8f58c58bb9eb" validation: [size, sha256] - source_ref: "src/CharRomCatalog.cpp:60-61, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:171-174, src/Memory.cpp:343-376" + source_ref: "src/CharRomCatalog.cpp:60-61, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:171-174, src/Memory.cpp:348-381" note: "Locale picker entry." - name: "apple2e_char_de.rom" path: "roms/apple2e_char_de.rom" @@ -392,7 +402,7 @@ files: sha256: "b92576b4fa994384501078ff99963b53cfa98eff4bb641eb61649d484a469315" sha1: "a7fd75ae8611572b0b4d99ad54562014b879dbbf" validation: [size, sha256] - source_ref: "src/CharRomCatalog.cpp:62-63, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:175-178, src/Memory.cpp:343-376" + source_ref: "src/CharRomCatalog.cpp:62-63, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:175-178, src/Memory.cpp:348-381" note: "Locale picker entry." - name: "apple2e_char_de_improved.rom" path: "roms/apple2e_char_de_improved.rom" @@ -404,7 +414,7 @@ files: sha256: "0e32ab131e3932fc61c0a5f0f5509b4c37ab8db6239027f5955d47feba56d39f" sha1: "12ce44f02bd28c350e2b0723d94ab8d9066f8798" validation: [size, sha256] - source_ref: "src/CharRomCatalog.cpp:64-65, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:179-182, src/Memory.cpp:343-376" + source_ref: "src/CharRomCatalog.cpp:64-65, src/CharRomCatalog.cpp:165-180, src/RomFetch.cpp:179-182, src/Memory.cpp:348-381" note: "Locale picker entry." - name: "342-0274-a.e9" path: "roms/342-0274-a.e9" @@ -416,7 +426,7 @@ files: sha256: "d4d29771658372c6ab5d18ff3bdab6b3b2b02b8de30ed6b021efb8a415192432" sha1: "c81c1bbf237e70f8c3e5eef3c8fd5bd9b9f54d1e" validation: [size, sha256] - source_ref: "src/CharRomCatalog.cpp:81-84, src/CharRomCatalog.cpp:158-163, src/RomFetch.cpp:198-203, src/RomStatus_ImGui.cpp:296, src/Memory.cpp:343-376" + source_ref: "src/CharRomCatalog.cpp:81-84, src/CharRomCatalog.cpp:158-163, src/RomFetch.cpp:198-203, src/RomStatus_ImGui.cpp:300, src/Memory.cpp:348-381" note: "Locale picker entries select bank 0 or bank 1. Loaded whole, both banks stay live and annunciator 2 picks the set." - name: "apple2e_char_ft_blockascii.rom" path: "roms/apple2e_char_ft_blockascii.rom" @@ -428,7 +438,7 @@ files: sha256: "c69c8e1eb26923c5df03d3507fdf86c5f768283a924a5fffdd80377cf2339321" sha1: "f79815457437e50404f4f537d8aabe34bff3a220" validation: [size, sha256] - source_ref: "src/CharRomCatalog.cpp:85-86, src/RomFetch.cpp:204-208, src/RomStatus_ImGui.cpp:296, src/Memory.cpp:343-376" + source_ref: "src/CharRomCatalog.cpp:85-86, src/RomFetch.cpp:204-208, src/RomStatus_ImGui.cpp:300, src/Memory.cpp:348-381" note: "Locale picker entry loaded dual-bank: annunciator 2 flips between the text set and the block glyphs." - name: "apple2e_char_us_mt_iigs.rom" path: "roms/apple2e_char_us_mt_iigs.rom" @@ -440,7 +450,7 @@ files: sha1: "66eca035fd18024fceed4c30c32a4185792cb3ea" sha256: "097cd3500afe6c15d710d2e96af539a8e5065853986289294aac08ee7a1f070a" validation: [size] - source_ref: "src/CharRomCatalog.cpp:87-88, src/CharRomCatalog.cpp:165-180, src/RomStatus_ImGui.cpp:296, src/Memory.cpp:343-376" + source_ref: "src/CharRomCatalog.cpp:87-88, src/CharRomCatalog.cpp:165-180, src/RomStatus_ImGui.cpp:300, src/Memory.cpp:348-381" note: "Locale picker entry. Shipped in roms/. The fetcher does not serve it, so only the size is checked." - name: "apple2e_char_reactive.rom" path: "roms/apple2e_char_reactive.rom" @@ -452,7 +462,7 @@ files: sha1: "02075efbfdb99af48360561323404a921b91a676" sha256: "49716e2804b119810c22ab668ae37cebadf0cd53bc8911b5f17c4a62a3acb514" validation: [size] - source_ref: "src/CharRomCatalog.cpp:89-90, src/CharRomCatalog.cpp:165-180, src/RomStatus_ImGui.cpp:296, src/Memory.cpp:343-376" + source_ref: "src/CharRomCatalog.cpp:89-90, src/CharRomCatalog.cpp:165-180, src/RomStatus_ImGui.cpp:300, src/Memory.cpp:348-381" note: "Locale picker entry. Shipped in roms/. The fetcher does not serve it, so only the size is checked." - name: "Videx Lower Case Chip ROM.bin" path: "roms/Videx Lower Case Chip ROM.bin" @@ -464,7 +474,7 @@ files: sha256: "6a516bcd96382597af7a498fb1da7547490c830db0f9d22d541fb065b9cd048b" sha1: "447874fe0850c8add3fd5b13fa98f6648fe6f999" validation: [size, crc32, sha256] - source_ref: "src/CharRomCatalog.cpp:44-45, src/RomCatalog.h:253-259, src/RomFetch.cpp:209-213, src/RomStatus_ImGui.cpp:427" + source_ref: "src/CharRomCatalog.cpp:44-45, src/RomCatalog.h:253-259, src/RomFetch.cpp:209-213, src/RomStatus_ImGui.cpp:431" note: "Locale picker entry for the ][ and ][+ profiles. Without it the picker keeps the stock uppercase set." - name: "disk2.rom" path: "roms/disk2.rom" @@ -476,7 +486,7 @@ files: sha256: "de1e3e035878bab43d0af8fe38f5839c527e9548647036598ee6fe7ec74d2a7d" sha1: "d4181c9f046aafc3fb326b381baac809d9e38d16" validation: [size, sha256] - source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:86-92, src/DiskIICard.cpp:103-126, src/RomFetch.cpp:216-219" + source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:81-87, src/DiskIICard.cpp:98-121, src/RomFetch.cpp:216-219" note: "The card comes up on POM2's own boot PROM, written from the boot protocol (src/DiskIIBootRom.h). Apple's file replaces it when present." - name: "diskii_p6.rom" path: "roms/diskii_p6.rom" @@ -488,7 +498,7 @@ files: sha256: "e5e30615040567c1e7a2d21599681f8dac820edbdcda177b816a64d74b3a12f2" sha1: "bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4" validation: [size, sha256] - source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:93-101, src/DiskIICard.cpp:128-156, src/DiskIICard.cpp:205-215, src/RomFetch.cpp:220-223" + source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:88-96, src/DiskIICard.cpp:123-151, src/DiskIICard.cpp:200-210, src/RomFetch.cpp:220-223" note: "Loading the file switches the bit-level P6 path on for every image. Without it the legacy 32-cycle nibble gate serves .dsk and .nib images and POM2's own sequencer reads and writes WOZ images." - name: "disk2_13.rom" path: "roms/disk2_13.rom" @@ -499,7 +509,7 @@ files: sha256: "2d2599521fc5763d4e8c308c2ee7c5c4d5c93785b8fb9a4f7d0381dfd5eb60b6" sha1: "afd060e6f35faf3bb0146fa889fc787adf56330a" validation: [size, sha256] - source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:158-175, src/DiskIICard.cpp:216-240, src/RomCatalog.h:92-95, src/RomFetch.cpp:224-227" + source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:153-170, src/DiskIICard.cpp:211-235, src/RomCatalog.h:92-95, src/RomFetch.cpp:224-227" note: "A mounted 13-sector disk switches the card to this PROM at $Cn00 and forces the bit-level LSS. Without it the disk mounts but cannot boot." - name: "diskii_p6_13.rom" path: "roms/diskii_p6_13.rom" @@ -510,7 +520,7 @@ files: sha256: "383c55f5333cbfde39dd41528186631e5aca2eddfec30716344f03b6a4d44655" sha1: "e3d6d1c30653572b49ecc2dc54ce073978411a04" validation: [size, sha256] - source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:177-194, src/DiskIICard.cpp:225-235, src/RomCatalog.h:96-99, src/RomFetch.cpp:228-231" + source_ref: "src/SlotCardFactory.cpp:111-124, src/DiskIICard.cpp:172-189, src/DiskIICard.cpp:220-230, src/RomCatalog.h:96-99, src/RomFetch.cpp:228-231" note: "Read into the card and not consumed: the 13-sector switch depends on disk2_13.rom alone, and the sequencer keeps running the 16-sector P6 on 13-sector disks." - name: "cffa20eec02.bin" path: "roms/cffa20eec02.bin" @@ -545,7 +555,7 @@ files: sha256: "7f8e50c0e8a409991264201f9300f109b872b68e09c43f3e6c26af35fd8b89af" sha1: "3a9d881a8a8d30f55b9719aceebbcf717f829d6f" validation: [size, sha256] - source_ref: "src/SlotCardFactory.cpp:69-101, src/SlotCardFactory.cpp:507-522, src/MouseCard.cpp:120-154, src/MouseCardAppleWin.cpp:90-103, src/RomFetch.cpp:262-267" + source_ref: "src/SlotCardFactory.cpp:69-101, src/SlotCardFactory.cpp:505-520, src/MouseCard.cpp:120-154, src/MouseCardAppleWin.cpp:90-103, src/RomFetch.cpp:262-267" note: "Needed by both mouse cards: the MC68705 card also needs the MCU ROM, the AppleWin HLE card needs this one only. The fetcher extracts it from the MAME a2mouse set as 341-0270-c.4b." - name: "mouse_341-0269.bin" path: "roms/mouse_341-0269.bin" @@ -560,7 +570,7 @@ files: note: "The MC68705 mouse card leaves its slot empty without it." - name: "grappler_plus.bin" path: "roms/grappler_plus.bin" - description: "Orange Micro Grappler+ parallel printer EPROM 3.2" + description: "Orange Micro Grappler+ parallel printer EPROM 3.1" required: false bundled: false aliases: ["grappler+.bin", "grappler.bin"] @@ -593,7 +603,7 @@ files: sha256: "4fa1323ba31f4bd562486838397b7744257c126806766e360876720daca6e2aa" sha1: "6dab633470c6bc4cb3e81d09fda46597caf8ee57" validation: [size, crc32, sha256] - source_ref: "src/SlotCardFactory.cpp:549-567, src/SuperSerialCard.cpp:833-839, src/RomCatalog.h:192-199, src/RomFetch.cpp:300-303" + source_ref: "src/SlotCardFactory.cpp:547-565, src/SuperSerialCard.cpp:849-855, src/RomCatalog.h:192-199, src/RomFetch.cpp:300-303" note: "Three names are probed in order and a file that is not 2048 bytes is refused. Without it the card runs a hand-written slot ROM: PR#n, IN#n and the Pascal 1.1 entries work, the firmware commands and printer mode are absent. Not loaded on the //c and //c Plus. The fetcher extracts it from the MAME a2ssc set as 341-0065-a.bin." - name: "grappler_eps-1.bin" path: "roms/grappler_eps-1.bin" @@ -673,7 +683,7 @@ files: sha256: "ecca793179427fdd193373080bf23e49a95743bd7b5e0b218c747663938b6c03" sha1: "60f434f5325899d7ea257a6e56e6f53eae65146a" validation: [size, sha256] - source_ref: "src/ClockCard.cpp:702-763, src/RomCatalog.h:261-271, src/RomFetch.cpp:246-249" + source_ref: "src/ClockCard.cpp:704-765, src/RomCatalog.h:261-271, src/RomFetch.cpp:246-249" note: "The card loads a 256-byte slot ROM or the 2 KB chip, which supplies the $C800 expansion ROM as well. The fetch gate names the 2 KB dump and replaces a 256-byte file. The first four even bytes must read $08, $28, $58, $70, the ProDOS clock signature, or the synthetic ROM stays in place." - name: "liron.rom" path: "roms/liron.rom" @@ -684,7 +694,7 @@ files: sha256: "42c1ae66c6bec932669239599eb8989a5364752d56fa5c8997bb23d8dfc0b657" sha1: "fa94ecc2aa23f336f7da9e18bc8f4a6cfbb4ea60" validation: [size, sha256] - source_ref: "src/SlotCardFactory.cpp:460-495, src/LironCard.cpp:68-92, src/SmartPortCard.cpp:102-119, src/RomCatalog.h:102-106, src/RomFetch.cpp:234-237" + source_ref: "src/SlotCardFactory.cpp:460-493, src/LironCard.cpp:68-92, src/SmartPortCard.cpp:102-119, src/RomCatalog.h:102-106, src/RomFetch.cpp:234-237" note: "The Liron card refuses to plug without it. The SmartPort 3.5 card loads it on machines with physical slots and otherwise presents a synthetic identity." - name: "341-0358-A.bin" path: "roms/341-0358-A.bin" @@ -697,7 +707,7 @@ files: sha256: "ce785b913b9fcec6db0fab89b2d94f07fcd07664a822531dcbba3a5ca70ca3bf" sha1: "59c8e8c88bac5c31ada1306b412edfcf5912a720" validation: [size, crc32, sha256] - source_ref: "src/SlotCardFactory.cpp:435-458, src/WorkstationCard.cpp:60-74, src/RomCatalog.h:243-251, src/RomFetch.cpp:358-361" + source_ref: "src/SlotCardFactory.cpp:435-458, src/WorkstationCard.cpp:60-74, src/RomCatalog.h:243-251, src/RomFetch.cpp:361-364" note: "The Workstation card leaves its slot empty without it. The card runs its own 65C02 on the upper 32 KB." - name: "slinky_341-0344a.bin" path: "roms/slinky_341-0344a.bin" @@ -721,7 +731,7 @@ files: sha256: "084587835c1d2c92f5708a9745fdd43ba32136fcdb861a12ee7d690de22dc172" sha1: "440c3f84176c7b9f542da0b6ddf4fb13ec326c46" validation: [size, crc32, sha256] - source_ref: "src/RomCatalog.h:107-113, src/RomStatus_ImGui.cpp:186-204, src/RomFetch.cpp:354-357" + source_ref: "src/RomCatalog.h:107-113, src/RomStatus_ImGui.cpp:190-208, src/RomFetch.cpp:357-360" note: "No card reads it. The ROM Status panel and the fetch gate check it." - name: "342-0326-a.f12" path: "roms/342-0326-a.f12" @@ -733,7 +743,7 @@ files: sha256: "4ae7ff693a486b155a70a8833047b3d4363464dace6760ed64bfb68db233ed4b" sha1: "806a602195c18ffec637c03b6bb3405188b0dc1e" validation: [size, crc32, sha256] - source_ref: "src/RomCatalog.h:114-120, src/RomStatus_ImGui.cpp:186-204, src/RomStatus_ImGui.cpp:427, src/RomFetch.cpp:362-365" + source_ref: "src/RomCatalog.h:114-120, src/RomStatus_ImGui.cpp:190-208, src/RomStatus_ImGui.cpp:431, src/RomFetch.cpp:365-368" note: "Host keys are mapped directly, no keyboard decode ROM is emulated. The ROM Status panel and the fetch gate check the file only." - name: "applicard_v9.bin" path: "roms/applicard_v9.bin" @@ -757,7 +767,7 @@ files: sha256: "8c9888dbc0c5dc8d51493e3f192a09415216ccb96d99e9d94ea29c58dec643e0" sha1: "b4acd1775c08ae43996ab4edf6d8e28f4736346b" validation: [size, crc32, sha256] - source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:87-90, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:174-177, src/RomFetch.cpp:317-320" + source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:94-97, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:174-177, src/RomFetch.cpp:317-320" note: "Loaded as a pair with videx_ultraterm_chs_7859.bin: both must be 4 KB or the slot stays empty. On a //e the enhanced pair is tried first and this one second. A ][ or ][+ probes this pair only. Member of the MAME a2ulttrm set, bios/Arcade/Arcade/a2ulttrm.zip." - name: "videx_ultraterm_chs_7859.bin" path: "roms/videx_ultraterm_chs_7859.bin" @@ -769,7 +779,7 @@ files: sha256: "d9c3108abb2a21a3807deb992af62c963891f18938f1da945e536f82e4676651" sha1: "3517fa9e7a39573f1cb159b3161d6939dec199ba" validation: [size, crc32, sha256] - source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:87-90, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:179-182, src/RomFetch.cpp:321-324" + source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:94-97, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:179-182, src/RomFetch.cpp:321-324" note: "The high- and low-density glyph sets of the original card, 128 glyphs of 16 rasters each. Pair of videx_ultraterm_frm_b537.bin. Member of the MAME a2ulttrm set, bios/Arcade/Arcade/a2ulttrm.zip." - name: "videx_ultraterm_enh_frm_b5c9.bin" path: "roms/videx_ultraterm_enh_frm_b5c9.bin" @@ -781,7 +791,7 @@ files: sha256: "cb17d747d3370723df02504f94bcf72aae9ef6d7419dc1e2edeb2cccfedf4024" sha1: "092e3eda4644d4f465809864a7f023ac7d1d1542" validation: [size, crc32, sha256] - source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:87-90, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:183-186, src/RomFetch.cpp:325-328" + source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:94-97, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:183-186, src/RomFetch.cpp:325-328" note: "Loaded as a pair with videx_ultraterm_enh_chs_5604.bin, the first pair tried on a //e and never probed on a ][ or ][+. Member of the MAME a2ultrme set, bios/Arcade/Arcade/a2ultrme.zip." - name: "videx_ultraterm_enh_chs_5604.bin" path: "roms/videx_ultraterm_enh_chs_5604.bin" @@ -793,7 +803,7 @@ files: sha256: "cbbfd3d07be729795d2b5a2bcdb1f1daf01af945f2f80430a5666bb7f0fedcd0" sha1: "94ff75199232a9b613585c22f88470f73fb7dd09" validation: [size, crc32, sha256] - source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:87-90, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:188-191, src/RomFetch.cpp:329-332" + source_ref: "src/SlotCardFactory.cpp:362-385, src/VidexUltratermCard.h:94-97, src/VidexUltratermCard.cpp:43-49, src/RomCatalog.h:188-191, src/RomFetch.cpp:329-332" note: "Pair of videx_ultraterm_enh_frm_b5c9.bin. Member of the MAME a2ultrme set, bios/Arcade/Arcade/a2ultrme.zip." - name: "ccs7710_03h.u5" path: "roms/ccs7710_03h.u5" @@ -805,7 +815,7 @@ files: sha256: "1e303244535c4f00f2c6758ab4c9416414e5228639921a5b1b3277ccea529bf3" sha1: "6ecfb6b145256d4787a943da8ef267303df562d6" validation: [size, crc32, sha256] - source_ref: "src/SlotCardFactory.cpp:290-307, src/Ccs7710Card.h:29-35, src/Ccs7710Card.h:57-58, src/Ccs7710Card.cpp:172-176, src/RomCatalog.h:160-163, src/RomFetch.cpp:333-345" + source_ref: "src/SlotCardFactory.cpp:290-307, src/Ccs7710Card.h:29-35, src/Ccs7710Card.h:57-58, src/Ccs7710Card.cpp:172-176, src/RomCatalog.h:160-163, src/RomFetch.cpp:333-346" note: "One of the card's two 256x4 PROMs: each holds one nibble of every firmware byte, so both must be present and 256 bytes for the card to load them. Loaded, CCS's firmware executes. Without the pair, or with ccs7710_firmware = pom2, the card serves POM2's own page written to behave as the 7710-03. Member of the MAME ccs7710 set, bios/Arcade/MAME/ccs7710.zip." - name: "ccs7710_03l.u6" path: "roms/ccs7710_03l.u6" @@ -817,7 +827,7 @@ files: sha256: "1af47c6f8c45af30483fd84bae77994583753a0268ca43c2c8f5b45fa4b4a04e" sha1: "d0df2aaf0134f8c1b929a4de0036fedc7e7164e2" validation: [size, crc32, sha256] - source_ref: "src/SlotCardFactory.cpp:290-307, src/Ccs7710Card.h:29-35, src/Ccs7710Card.h:57-58, src/Ccs7710Card.cpp:172-176, src/RomCatalog.h:164-168, src/RomFetch.cpp:333-348" + source_ref: "src/SlotCardFactory.cpp:290-307, src/Ccs7710Card.h:29-35, src/Ccs7710Card.h:57-58, src/Ccs7710Card.cpp:172-176, src/RomCatalog.h:164-168, src/RomFetch.cpp:333-350" note: "The low-nibble half of the 7710-03 firmware, see ccs7710_03h.u5. Member of the MAME ccs7710 set, bios/Arcade/MAME/ccs7710.zip." - name: "dan2_eprom.bin" path: "roms/dan2_eprom.bin" @@ -829,7 +839,7 @@ files: sha256: "c64413319243ecab3e2a93a9f5e93702d372b32dd265fa13d45c38298a3a2130" sha1: "5e2737d233f5769df654d2d5aa96d24f2fd85671" validation: [size, crc32, sha256] - source_ref: "src/SlotCardFactory.cpp:309-327, src/Dan2Card.h:41-44, src/Dan2Card.h:60, src/Dan2Card.cpp:106-111, src/RomCatalog.h:169-173, src/RomFetch.cpp:349-351" + source_ref: "src/SlotCardFactory.cpp:309-327, src/Dan2Card.h:41-44, src/Dan2Card.h:60, src/Dan2Card.cpp:106-111, src/RomCatalog.h:169-173, src/RomFetch.cpp:351-354" note: "The card's own firmware from the open-source DAN ][ project (zlib licence), selected one page at a time through the 8255's bit set/reset. A file that is not 512 bytes is refused. Without it the card serves POM2's own page written to the same protocol: ProDOS signature, boot by SAFEREAD of block 0, the block driver." - name: "525_seek_2ms.wav" path: "roms/floppy_samples/525_seek_2ms.wav" @@ -1013,6 +1023,240 @@ files: size: 6878 sha1: "40d756d0cb5f7998ca26ac1de142a96a83fa2b97" source_ref: "src/FloppySoundDevice.cpp:83-121, src/MainWindow.cpp:373-386" + - name: "print_draft_loop.mp3" + path: "roms/printer_samples/print_draft_loop.mp3" + description: "ImageWriter II recording, print head at draft quality, looped while printing" + category: game_data + required: false + bundled: true + size: 25114 + sha1: "ad0ac01db454b0a9a609b128cb36fd2efb411570" + source_ref: "src/PrinterSoundDevice.cpp:430-432, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "One of the three carriage loops. The recorded bank loads only when all three and one line feed are present, otherwise the printer sound is synthesised." + - name: "print_medium_loop.mp3" + path: "roms/printer_samples/print_medium_loop.mp3" + description: "ImageWriter II recording, print head at standard quality, looped while printing" + category: game_data + required: false + bundled: true + size: 31907 + sha1: "1550df48e8352ecdf8810f5642b5771cd89068bb" + source_ref: "src/PrinterSoundDevice.cpp:430-432, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "One of the three carriage loops. The recorded bank loads only when all three and one line feed are present, otherwise the printer sound is synthesised." + - name: "print_nlq_loop.mp3" + path: "roms/printer_samples/print_nlq_loop.mp3" + description: "ImageWriter II recording, print head at near letter quality, looped while printing" + category: game_data + required: false + bundled: true + size: 130646 + sha1: "62acd9f113054b6c58b68815ba9da571a057b01b" + source_ref: "src/PrinterSoundDevice.cpp:430-432, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "One of the three carriage loops. The recorded bank loads only when all three and one line feed are present, otherwise the printer sound is synthesised." + - name: "line_feed_01.mp3" + path: "roms/printer_samples/line_feed_01.mp3" + description: "ImageWriter II recording, one line feed" + category: game_data + required: false + bundled: true + size: 10481 + sha1: "dda17e6f1ea5b9e0021fd8f3aa81f9feec851b34" + source_ref: "src/PrinterSoundDevice.cpp:434-436, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "The three line feeds play in turn. The recorded bank needs at least one of them." + - name: "line_feed_02.mp3" + path: "roms/printer_samples/line_feed_02.mp3" + description: "ImageWriter II recording, one line feed" + category: game_data + required: false + bundled: true + size: 13616 + sha1: "97ec7045601d055ba58e0131d8f2018ee71febe3" + source_ref: "src/PrinterSoundDevice.cpp:434-436, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "The three line feeds play in turn. The recorded bank needs at least one of them." + - name: "line_feed_03.mp3" + path: "roms/printer_samples/line_feed_03.mp3" + description: "ImageWriter II recording, one line feed" + category: game_data + required: false + bundled: true + size: 10481 + sha1: "5cd3dde3a97c3e40f03d803f84eb587d7d8258d0" + source_ref: "src/PrinterSoundDevice.cpp:434-436, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "The three line feeds play in turn. The recorded bank needs at least one of them." + - name: "page_feed_short.mp3" + path: "roms/printer_samples/page_feed_short.mp3" + description: "ImageWriter II recording, a paper feed of 1 to 3 inches" + category: game_data + required: false + bundled: true + size: 15709 + sha1: "417073a8125251d055a4c9d78fba3ff69a1fc6b9" + source_ref: "src/PrinterSoundDevice.cpp:437, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "page_feed_medium.mp3" + path: "roms/printer_samples/page_feed_medium.mp3" + description: "ImageWriter II recording, a paper feed of 3 to 7 inches" + category: game_data + required: false + bundled: true + size: 27203 + sha1: "f9d6648111dcb75fbfd5effa301de6e03757242c" + source_ref: "src/PrinterSoundDevice.cpp:438, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "page_feed_long.mp3" + path: "roms/printer_samples/page_feed_long.mp3" + description: "ImageWriter II recording, a longer paper feed" + category: game_data + required: false + bundled: true + size: 66385 + sha1: "ae3377a9aa9e2d4123ee40d7ca48c0369fdb325b" + source_ref: "src/PrinterSoundDevice.cpp:439, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "paper_tear_01.mp3" + path: "roms/printer_samples/paper_tear_01.mp3" + description: "ImageWriter II recording, sheet torn off" + category: game_data + required: false + bundled: true + size: 11527 + sha1: "e63fb9cb72a8f403a2dbf92b5b94e48fec68ee19" + source_ref: "src/PrinterSoundDevice.cpp:440-443, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "paper_tear_02.mp3" + path: "roms/printer_samples/paper_tear_02.mp3" + description: "ImageWriter II recording, sheet torn off" + category: game_data + required: false + bundled: true + size: 17274 + sha1: "3e5c670abaf401790dd42857ec2a8c956735b9a6" + source_ref: "src/PrinterSoundDevice.cpp:440-443, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "paper_tear_03.mp3" + path: "roms/printer_samples/paper_tear_03.mp3" + description: "ImageWriter II recording, sheet torn off" + category: game_data + required: false + bundled: true + size: 9437 + sha1: "3ada27aaf3d06b066a69d18e44b240ba9b1aced7" + source_ref: "src/PrinterSoundDevice.cpp:440-443, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "paper_tear_04.mp3" + path: "roms/printer_samples/paper_tear_04.mp3" + description: "ImageWriter II recording, sheet torn off" + category: game_data + required: false + bundled: true + size: 12572 + sha1: "1e58e92ffd7a0d0ef17c4a4e3b246c2fc5f436f1" + source_ref: "src/PrinterSoundDevice.cpp:440-443, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "paper_tear_05.mp3" + path: "roms/printer_samples/paper_tear_05.mp3" + description: "ImageWriter II recording, sheet torn off" + category: game_data + required: false + bundled: true + size: 18319 + sha1: "8774c81069059079a2bba070e8288fb78877818f" + source_ref: "src/PrinterSoundDevice.cpp:440-443, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "power_switch.mp3" + path: "roms/printer_samples/power_switch.mp3" + description: "ImageWriter II recording, printer switched off" + category: game_data + required: false + bundled: true + size: 16751 + sha1: "a3c4555810b819e61e492eb50ec4cea2cb433278" + source_ref: "src/PrinterSoundDevice.cpp:444, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "powerup_01.mp3" + path: "roms/printer_samples/powerup_01.mp3" + description: "ImageWriter II recording, printer switched on" + category: game_data + required: false + bundled: true + size: 56455 + sha1: "36fc1b574dd3c3261f00891cdf99978c13dcb0e1" + source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "powerup_02_closed.mp3" + path: "roms/printer_samples/powerup_02_closed.mp3" + description: "ImageWriter II recording, printer switched on" + category: game_data + required: false + bundled: true + size: 73702 + sha1: "9caf0408c818c7ab4279ada5562d794f9661d0a2" + source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "powerup_03.mp3" + path: "roms/printer_samples/powerup_03.mp3" + description: "ImageWriter II recording, printer switched on" + category: game_data + required: false + bundled: true + size: 66904 + sha1: "7894c42ea47ef4a1b780d0794dd7364c318d5d87" + source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "powerup_04_quick.mp3" + path: "roms/printer_samples/powerup_04_quick.mp3" + description: "ImageWriter II recording, printer switched on" + category: game_data + required: false + bundled: true + size: 37130 + sha1: "60e963376aca5ebdd6416716a3e34143d329b25e" + source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "powerup_05_color.mp3" + path: "roms/printer_samples/powerup_05_color.mp3" + description: "ImageWriter II recording, printer switched on" + category: game_data + required: false + bundled: true + size: 70567 + sha1: "6ea19a9d720d23262de19711694045b10fb1c7ea" + source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "powerup_06_mono.mp3" + path: "roms/printer_samples/powerup_06_mono.mp3" + description: "ImageWriter II recording, printer switched on" + category: game_data + required: false + bundled: true + size: 70566 + sha1: "cbb108a8f3548d6faaacc533c4684c54024f42c0" + source_ref: "src/PrinterSoundDevice.cpp:445-448, src/PrinterSoundDevice.cpp:449-452, src/MainWindow.cpp:395-402, packaging/bundle.manifest:69" + note: "Optional take of the recorded bank. A missing one leaves that event silent." + - name: "525_door_open.wav" + path: "roms/floppy_extras/525_door_open.wav" + description: "OpenEmulator Shugart SA400 recording, 5.25 inch drive door opening" + category: game_data + required: false + bundled: false + source_ref: "src/FloppySoundDevice.cpp:135-157, src/MainWindow.cpp:387-394, tools/install_drive_extras.py:43-55" + note: "Played with the MAME bank only. tools/install_drive_extras.py makes it from Shugart SA400 Open.ogg of openemulator/libemulation at 8288db41 (sha256 64197916aa6d5bada4cdcceaae9fae8b15fb1622bbc7dfa3da0ff8cc50dc7f36), transcoded to 16-bit mono WAV by ffmpeg. Packages do not carry it. Without it the event stays silent." + - name: "525_door_close.wav" + path: "roms/floppy_extras/525_door_close.wav" + description: "OpenEmulator Shugart SA400 recording, 5.25 inch drive door closing" + category: game_data + required: false + bundled: false + source_ref: "src/FloppySoundDevice.cpp:135-157, src/MainWindow.cpp:387-394, tools/install_drive_extras.py:43-55" + note: "Played with the MAME bank only. tools/install_drive_extras.py makes it from Shugart SA400 Close.ogg of openemulator/libemulation at 8288db41 (sha256 9df48a2b5c3590e6d3c0d19eb093aed4b310270a0dd3c59eddeeb1faf692bf55), transcoded to 16-bit mono WAV by ffmpeg. Packages do not carry it. Without it the event stays silent." + - name: "525_head_stop.wav" + path: "roms/floppy_extras/525_head_stop.wav" + description: "OpenEmulator Shugart SA400 recording, 5.25 inch head hitting the track 0 stop" + category: game_data + required: false + bundled: false + source_ref: "src/FloppySoundDevice.cpp:135-157, src/MainWindow.cpp:387-394, tools/install_drive_extras.py:43-55" + note: "Played with the MAME bank only. tools/install_drive_extras.py makes it from Shugart SA400 Stop.ogg of openemulator/libemulation at 8288db41 (sha256 9a5ed615cc3114b15e7555e1124557e3134896a1d08b69d51041f6e200d2b142), transcoded to 16-bit mono WAV by ffmpeg. Packages do not carry it. Without it the event stays silent." - name: "Disk Rotation.wav" path: "roms/virtual_ii_sons/lecteur/Disk Rotation.wav" description: "Virtual ][ recording, drive motor loop" @@ -1020,7 +1264,7 @@ files: required: false size: 18420 sha1: "553e664b2f41f1cc74e2525c966e9c71f9e3bd2f" - source_ref: "src/VirtualIISoundCatalog.h:20, src/FloppySoundDevice.cpp:176-190, src/FloppySoundDevice.cpp:192-228, src/MainWindow.cpp:387-403" + source_ref: "src/VirtualIISoundCatalog.h:20, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420" note: "The Virtual ][ bank is offered only when this file and the arm, insertion and removal takes have loaded. The bare Disk Rotation.wav and Disk Rotation.raw in the folder are tried next, the .raw read as headerless PCM. Virtual ][ Disk Rotation.raw (sha1 993b054ee6ecf3778186937593d591eba332bdd6) behind a mono 44100 Hz 16-bit PCM RIFF header." - name: "Boot.wav" path: "roms/virtual_ii_sons/lecteur/Boot.wav" @@ -1029,7 +1273,7 @@ files: required: false size: 6806 sha1: "15c67468555494a9336d8f1981806ecd05a47da4" - source_ref: "src/VirtualIISoundCatalog.h:21, src/FloppySoundDevice.cpp:176-190, src/FloppySoundDevice.cpp:192-228, src/MainWindow.cpp:387-403" + source_ref: "src/VirtualIISoundCatalog.h:21, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420" note: "The bare Boot.wav and Boot.raw in the folder are tried next, the .raw read as headerless PCM. Virtual ][ Boot.raw (sha1 06db331ec01064661bf64ed39b58a9b35aaec067) behind a mono 44100 Hz 16-bit PCM RIFF header." - name: "Move arm.aiff" path: "roms/virtual_ii_sons/lecteur/Move arm.aiff" @@ -1039,7 +1283,7 @@ files: size: 36510 sha1: "3e03cfef6a327adf9e2c09dd329a4c5b8e0aac52" aliases: ["Move arm.wav"] - source_ref: "src/VirtualIISoundCatalog.h:22, src/FloppySoundDevice.cpp:176-190, src/FloppySoundDevice.cpp:192-228, src/MainWindow.cpp:387-403" + source_ref: "src/VirtualIISoundCatalog.h:22, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420" note: "Needed for the bank. When the .aiff does not decode, the .wav name and then both bare names in the folder are tried. Virtual ][ Move arm.aiff unchanged." - name: "Disk Insertion.aiff" path: "roms/virtual_ii_sons/lecteur/Disk Insertion.aiff" @@ -1049,7 +1293,7 @@ files: size: 69146 sha1: "3da6c2e5986c38b6c7200bacc95ef076d0429152" aliases: ["Disk Insertion.wav"] - source_ref: "src/VirtualIISoundCatalog.h:23, src/FloppySoundDevice.cpp:176-190, src/FloppySoundDevice.cpp:192-228, src/MainWindow.cpp:387-403" + source_ref: "src/VirtualIISoundCatalog.h:23, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420" note: "Needed for the bank. When the .aiff does not decode, the .wav name and then both bare names in the folder are tried. Virtual ][ Disk Insertion.aiff unchanged." - name: "Disk Removal.aiff" path: "roms/virtual_ii_sons/lecteur/Disk Removal.aiff" @@ -1059,7 +1303,7 @@ files: size: 243894 sha1: "9c33c1c1d793c8b9d6ff2e7867ae3c51f2556355" aliases: ["Disk Removal.wav"] - source_ref: "src/VirtualIISoundCatalog.h:24, src/FloppySoundDevice.cpp:176-190, src/FloppySoundDevice.cpp:192-228, src/MainWindow.cpp:387-403" + source_ref: "src/VirtualIISoundCatalog.h:24, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420" note: "Needed for the bank. When the .aiff does not decode, the .wav name and then both bare names in the folder are tried. Virtual ][ Disk Removal.aiff unchanged." - name: "I-O Error.wav" path: "roms/virtual_ii_sons/lecteur/I-O Error.wav" @@ -1068,7 +1312,7 @@ files: required: false size: 4014 sha1: "464e3d8f9b50d21cef706503058cef63a5d73995" - source_ref: "src/VirtualIISoundCatalog.h:25, src/FloppySoundDevice.cpp:176-190, src/FloppySoundDevice.cpp:192-228, src/MainWindow.cpp:387-403" + source_ref: "src/VirtualIISoundCatalog.h:25, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420" note: "The bare I-O Error.wav and I-O Error.raw in the folder are tried next, the .raw read as headerless PCM. Virtual ][ I-O Error.raw (sha1 b123ef605fa977bcda49617cb96c7bc898281dbc) behind a mono 44100 Hz 16-bit PCM RIFF header." - name: "PopOn2.aiff" path: "roms/virtual_ii_sons/interface/PopOn2.aiff" @@ -1078,7 +1322,7 @@ files: size: 172338 sha1: "7473f2ade668f9155729e6dfc56775f998bb9ac3" aliases: ["PopOn2.wav"] - source_ref: "src/VirtualIISoundCatalog.h:26, src/FloppySoundDevice.cpp:176-190, src/FloppySoundDevice.cpp:192-228, src/MainWindow.cpp:387-403" + source_ref: "src/VirtualIISoundCatalog.h:26, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420" note: "Virtual ][ PopOn2.aiff unchanged." - name: "PopOff2.aiff" path: "roms/virtual_ii_sons/interface/PopOff2.aiff" @@ -1088,7 +1332,7 @@ files: size: 144702 sha1: "60b4b8bb589bcc3e4c6876a09d4aa4b391390798" aliases: ["PopOff2.wav"] - source_ref: "src/VirtualIISoundCatalog.h:27, src/FloppySoundDevice.cpp:176-190, src/FloppySoundDevice.cpp:192-228, src/MainWindow.cpp:387-403" + source_ref: "src/VirtualIISoundCatalog.h:27, src/FloppySoundDevice.cpp:200-214, src/FloppySoundDevice.cpp:216-252, src/MainWindow.cpp:404-420" note: "Virtual ][ PopOff2.aiff unchanged." - name: "Matrix Printer.wav" path: "roms/virtual_ii_sons/imprimante/Matrix Printer.wav" @@ -1097,7 +1341,7 @@ files: required: false size: 1316870 sha1: "0b0363772efc684ea0d21cb79e62a0df63f0c094" - source_ref: "src/VirtualIISoundCatalog.h:30-31, src/MainWindow.cpp:398-401, src/PrinterSoundDevice.cpp:80-103, src/PrinterSoundDevice.cpp:298-322" + source_ref: "src/VirtualIISoundCatalog.h:30-31, src/MainWindow.cpp:415-418, src/PrinterSoundDevice.cpp:92-115, src/PrinterSoundDevice.cpp:460-484" note: "Loaded when present, otherwise the printer sound is generated. The bare Matrix Printer.wav and Matrix Printer.raw in the folder are tried next, the .raw read as headerless PCM. Virtual ][ Matrix Printer.raw (sha1 6f6d26237389435693469b4dd0e0b69083797bff) behind a mono 44100 Hz 16-bit PCM RIFF header." - name: "DejaVuSans.ttf" path: "fonts/DejaVuSans.ttf" @@ -1127,7 +1371,7 @@ files: bundled: true size: 102046 sha1: "69358dd499148deae4112b49cedb7bec220584e2" - source_ref: "src/MainWindow_MiscPanels.cpp:780" + source_ref: "src/MainWindow_MiscPanels.cpp:800" - name: "Keyboard_AppleIIe.jpeg" path: "pic/Keyboard_AppleIIe.jpeg" description: "Apple //e keyboard photograph the clickable keyboard window is built on" @@ -1136,7 +1380,7 @@ files: bundled: true size: 568596 sha1: "dc85406f7bb69c4439088e78afab610afb753865" - source_ref: "src/KeyboardSkin.cpp:142-152, src/MainWindow_MiscPanels.cpp:623-634" + source_ref: "src/KeyboardSkin.cpp:142-152, src/MainWindow_MiscPanels.cpp:643-654" note: "Keyboard window picture for every profile outside the //c family. The window hotspots are fractions of this image. Without it the window has nothing to click." - name: "Keyboard_AppleIIc.png" path: "pic/Keyboard_AppleIIc.png" @@ -1146,7 +1390,7 @@ files: bundled: true size: 1743304 sha1: "f7c8a696d66ce9403b5c2f5f62b797c816961df0" - source_ref: "src/KeyboardSkin.cpp:142-152, src/MainWindow_MiscPanels.cpp:623-634" + source_ref: "src/KeyboardSkin.cpp:142-152, src/MainWindow_MiscPanels.cpp:643-654" note: "Keyboard window picture for the //c, //c PAL and //c Plus profiles. Without it the window has nothing to click." - name: "monitor2.png" path: "pic/retro/monitor/monitor2.png" @@ -1156,7 +1400,7 @@ files: bundled: true size: 24460 sha1: "1b8f16f4e74e6717d0332364c7b80cf20f37580f" - source_ref: "src/RetroArtwork.cpp:44-47, src/MainWindow_Screen.cpp:380-381" + source_ref: "src/RetroArtwork.cpp:44-47, src/MainWindow_Screen.cpp:367-368" note: "Drawn by default. Without it the screen has no bezel." - name: "driveopen.png" path: "pic/retro/drives/driveopen.png" From b99e7f91927ccf00e0ef14cbb8b6d49d0198dfb6 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:48:59 +0100 Subject: [PATCH 16/18] docs: pizza-boy-gbc pro 7.4.19 has no genuine copy --- emulators/pizza-boy-gbc.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/emulators/pizza-boy-gbc.yml b/emulators/pizza-boy-gbc.yml index 5c74ba3e5..e09e20aba 100644 --- a/emulators/pizza-boy-gbc.yml +++ b/emulators/pizza-boy-gbc.yml @@ -6,7 +6,7 @@ upstream: closed-source version_source: url: "https://play.google.com/store/apps/details?id=it.dbtecno.pizzaboypro&hl=en" pattern: '\[\[\["([^"]+)"\]\],\[\[\[\d+' - no_genuine_copy: "7.4.17" + no_genuine_copy: "7.4.19" author: "Pizza Emulators" profiled_date: "2026-10-24" core_version: "6.0.6" @@ -40,9 +40,9 @@ notes: | native reference first read on Basic 4.1.14 falls on the same lines and functions in 4.1.15, and mmu_load_bios keeps the 0x10000 clear, the 0x2000 read and the 0x100 and 0x900 gate. Java line numbers are those of Pro 6.0.6 unless a Basic 4.1.15 reference - is named. The Pro on the store is 7.4.17 and no genuine copy of it is reachable: - apkcombo no longer resolves, APKPure lists 7.4.17 as coming soon with no file, - APKMirror carries the Basic package alone, apkvision stops at Pro 5.2.2, and + is named. The Pro on the store is 7.4.19 and no genuine copy of it is reachable: + apkcombo no longer resolves, APKPure refuses the request, APKMirror carries + the Basic package alone and stops at 4.1.15, apkvision stops at Pro 5.2.2, and archive.org holds 6.0.6 alone. The Pro ships its core as a stripped armeabi-v7a build. It carries the same log strings and the same constants as the Basic core, the 64 KB clear, the 8192 byte read cap, the From 47d267fac1c558cd5d6b1e546552b87eae07fc26 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:51:25 +0100 Subject: [PATCH 17/18] fix: hash the xm6pro68k dll package libraries --- emulators/xm6pro68k.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/emulators/xm6pro68k.yml b/emulators/xm6pro68k.yml index 4d847f341..b748839a9 100644 --- a/emulators/xm6pro68k.yml +++ b/emulators/xm6pro68k.yml @@ -28,7 +28,9 @@ notes: | distributed only from mijet.eludevisibility.org as three 7-Zip packages: the program, a mandatory DLL Package and an optional Web Package that adds signed update downloads. Version.txt in the build analysed here reads 260920, and the - DLL Package it pairs with is version 260101. The first + DLL Package it pairs with is version 260101. Release 81 (261031) reads the + same system files, its executable naming only the .IPS patch extension in + addition. The first release, 120303, forked XM6 v2.05. XM6.exe is a 32-bit MFC application whose import directory names mfc90u.dll and MSVCR90.dll, so the Visual C++ 2008 runtime carried by the DLL Package, or the redistributable, must sit beside the executable @@ -253,7 +255,7 @@ files: - name: 7z.dll size: 1316352 - sha1: 8337c8056455aa25a4c2f14e53ae7e5e704d4f16 + sha1: 4bd854046c1bac850388ea29daece08cce46d332 system: sharp-x68000 required: false bundled: true @@ -266,8 +268,8 @@ files: writing XZ-compressed state files. - name: zlib1.dll - size: 130831 - sha1: 697f3d391f013adbb27dd767a6b956c3b32229b6 + size: 59904 + sha1: 6d957ba632df5b06d49a901f2772df4301610a2a system: sharp-x68000 required: false bundled: true From 4939f5e35e8fe7e69dd38f72844eec82c546bf8e Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 07:58:07 +0100 Subject: [PATCH 18/18] feat: reprofile supermodel3 on its 0.4 rebase --- emulators/supermodel3.yml | 70 ++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/emulators/supermodel3.yml b/emulators/supermodel3.yml index aea86ea3a..7735f9052 100644 --- a/emulators/supermodel3.yml +++ b/emulators/supermodel3.yml @@ -5,33 +5,37 @@ source: "https://github.com/DirtBagXon/model3emu-code-sinden" upstream: "https://github.com/trzy/Supermodel" author: "DirtBagXon" profiled_date: "2026-10-23" -source_commit: "11726c4bad3696a50a8b834eaba6aee3fa08a590" -prose_written_at: "11726c4bad3696a50a8b834eaba6aee3fa08a590" -upstream_commit: "14815455dc28fca2c8662fb1ed99d447ecf8f364" -upstream_frozen: "The fork is rebased on trzy's tree at 1481545, the revision its version string names. Later trzy commits are not in the fork." -core_version: "0.3a-1481545-mm DirtBagXon (Sinden)" +source_commit: "03318d26826e725338576a74945b3ea3fc7ebe5c" +prose_written_at: "03318d26826e725338576a74945b3ea3fc7ebe5c" +upstream_commit: "efbdc866fcddc9bff23da00b1722d17e52115567" +upstream_frozen: "The fork is rebased on trzy's tree at efbdc86, the revision its release names. Later trzy commits are not in the fork." +core_version: "0.4" version_basis: kind: file - path: "Src/Version.h" - pattern: '#define\s+SUPERMODEL_VERSION\s+"([^"]+)' + path: "Src/Version.cpp" + pattern: 'const std::string series_version = "([^"]+)"' display_name: "Sega - Model 3 (Supermodel, Sinden fork)" verification: existence cores: - "supermodel3" - "supermodel-sa" systems: + - "sega-model1" + - "sega-model2" - "sega-model3" - "real3d-pro1000" notes: | DirtBagXon's Supermodel fork with Sinden light gun support, rebased on - trzy's tree at 1481545, the revision its version string names. RetroPie + trzy's tree at efbdc86, the revision its release 0.4-efbdc86-dbx names. + The version string is the series 0.4 followed by the git revision a build + passes, or by the build date and "-mm DirtBagXon (Sinden)". RetroPie builds the main branch on x86 and the arm branch everywhere else, the arm branch at commit 454ed3f when the system SDL2 is 2.0.22 or older. The arm branch is a separate, older line (revision 6ae0cf2f237586c4a3cc791514ec1b0f3cd4c56c, "0.3a-8c6af68-arm-mm") and is described in its own paragraph below. Entries carry the main branch. - ref: Src/Version.h:32 + ref: Src/Version.cpp:39-55 RetroPie copies Config/Games.xml, and on x86 the Assets directory, into $md_conf_root/arcade/supermodel3 and starts the emulator from there. On @@ -39,15 +43,19 @@ notes: | relative to the working directory when Config/ exists there, otherwise under ~/.supermodel/ when present, otherwise under the XDG config and data homes. - ref: Src/OSD/Unix/FileSystemPath.cpp:99-157, Src/OSD/SDL/Main.cpp:121-123 + ref: Src/OSD/Unix/FileSystemPath.cpp:99-157, Src/OSD/SDL/Main.cpp:124-126 ROM sets are MAME format archives described by Games.xml. The game is chosen by the archive's own file name, which must match a game name, and the parent archive .zip is opened from the same directory. ROMs - inside are matched by CRC32. Model 3 boards carry their own program, - video, sound and drive board ROMs, so a Model 3 game reads nothing outside - its archives. - ref: Src/GameLoader.cpp:1044-1101 + inside are matched by CRC32. The main branch also runs Sega Model 1 + and Model 2 boards: Games.xml holds 10 Model 1, 90 Model 2 and 63 Model 3 + sets. Every board ROM of these sets, the Model 1 TGP program and + coprocessor tables included, is a region of the game's own set, + and a parent is another game, so a game reads nothing outside its + archives. + ref: Src/GameLoader.cpp:1145-1202, Src/GameLoader.cpp:277, + Src/OSD/SDL/Main.cpp:2703-2710 The main branch also emulates the Real3D Pro-1000 image generator, the hardware the Model 3 graphics derive from. Games.xml declares it as the @@ -55,15 +63,15 @@ notes: | update: p1_p4.bin (boot stub and loop code) and p2.bin (INIT ROM). The machine refuses to start without either region. A scsi_rom region is optional, a synthetic image is built when it is absent. - ref: Config/Games.xml:1404-1428, Src/Pro1000/Pro1000.cpp:2111-2143, + ref: Config/Games.xml:10030-10054, Src/Pro1000/Pro1000.cpp:1999-2031, Src/Pro1000/Pro1000.cpp:165-181 Supermodel.ini is optional. It is written from compiled-in defaults when absent. NVRAM/.nv is loaded when present and written on exit. External GLSL shaders are read only when VertexShader or FragmentShader names a file, both default to empty. - ref: Src/OSD/SDL/Main.cpp:1416-1436, Src/OSD/SDL/Main.cpp:2365, - Src/OSD/SDL/Main.cpp:807-838, Src/OSD/SDL/Main.cpp:1554-1555 + ref: Src/OSD/SDL/Main.cpp:1476-1496, Src/OSD/SDL/Main.cpp:2433, + Src/OSD/SDL/Main.cpp:816-847, Src/OSD/SDL/Main.cpp:1606-1607 The arm branch has no Pro-1000 emulation and no path resolution: the paths Config/Supermodel.ini, Config/Games.xml, NVRAM/.nv and @@ -82,12 +90,12 @@ files: path: "Config/Games.xml" required: true bundled: true - size: 152608 - sha1: "79fa74742f4b18e250c11c1dea5837fdf57cd54c" - md5: "f2f5f09ca0a275696319176b4f41b8d6" + size: 498145 + sha1: "c2bbcd686862fc5f14e80a5dee4eec504affa77f" + md5: "4b6145439a95d1a3cdee6f9367773562" description: "ROM set definitions" - note: "Parsed by the GameLoader constructor. Without it no game is defined, the archive name matches nothing and main returns 1. The path is the GameXMLFile key, so -game-xml-file moves it. The hash is that of Config/Games.xml at the pinned revision, 64 sets, which RetroPie copies on every install. Shipped in the 11726c4 Linux, macOS and Windows release archives." - source_ref: "upstream Src/OSD/SDL/Main.cpp:122, source Src/OSD/SDL/Main.cpp:1543, source Src/OSD/SDL/Main.cpp:2453-2458, source Src/GameLoader.cpp:601-610, source Src/GameLoader.cpp:1066-1071, source Src/GameLoader.cpp:1111-1113" + note: "Parsed by the GameLoader constructor. Without it no game is defined, the archive name matches nothing and main returns 1. The path is the GameXMLFile key, so -game-xml-file moves it. The hash is that of Config/Games.xml at the pinned revision, 164 sets, which RetroPie copies on every install. Shipped in the 0.4-efbdc86 Linux, macOS and Windows release archives." + source_ref: "source Src/OSD/SDL/Main.cpp:125, source Src/OSD/SDL/Main.cpp:1588, source Src/OSD/SDL/Main.cpp:2532-2537, source Src/GameLoader.cpp:658-667, source Src/GameLoader.cpp:1167-1172, source Src/GameLoader.cpp:1212-1214" - name: "p1crosshair.bmp" path: "Assets/p1crosshair.bmp" @@ -98,7 +106,7 @@ files: md5: "9012018f50f707c1707009346eb5d18b" description: "Player 1 light gun crosshair texture" note: "Both bitmaps are loaded whatever CrosshairStyle holds, and a failed load aborts startup before the machine is created." - source_ref: "upstream Src/OSD/SDL/Crosshair.cpp:34-51, source Src/OSD/SDL/Main.cpp:2509-2516" + source_ref: "source Src/OSD/SDL/Crosshair.cpp:34-51, source Src/OSD/SDL/Main.cpp:2588-2595" - name: "p2crosshair.bmp" path: "Assets/p2crosshair.bmp" @@ -108,19 +116,19 @@ files: sha1: "13c5e692c7acf2ec8243ac421d58fdf69c6c2370" md5: "866dbf59a0e2d849de2365e1c953cc97" 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. Both bitmaps are shipped in the 11726c4 release archives." - source_ref: "upstream Src/OSD/SDL/Crosshair.cpp:35, source Src/OSD/SDL/Crosshair.cpp:48-51" + note: "Read in the same call as the player 1 bitmap and equally fatal when it fails to load. Both bitmaps are shipped in the 0.4-efbdc86 release archives." + source_ref: "source Src/OSD/SDL/Crosshair.cpp:35, source Src/OSD/SDL/Crosshair.cpp:48-51" - name: "Music.xml" path: "Config/Music.xml" required: false bundled: true - size: 9224 - sha1: "b44ed959fe2948a03d81b98e67ca32f2b4c37e78" - md5: "ddb4e23db15dda67539eee24de23de4b" + size: 9229 + sha1: "5c86508cb337b604eecb9b881b4fc111d826f604" + md5: "6eeb3e30200e14aa28f958b8d34c2ded" description: "Custom MPEG music track map" - note: "Consulted only for a game with a DSB1 or DSB2 board, and skipped when absent. RetroPie does not copy it. Shipped in the 11726c4 release archives, the Windows zip with CRLF line endings (sha1 4c556c3a848ef61205a53a9a73ba5e46970d445f)." - source_ref: "upstream Src/OSD/SDL/Main.cpp:123, source Src/OSD/SDL/Main.cpp:963, source Src/Sound/MPEG/MpegAudio.cpp:88-102" + note: "Consulted only for a game with a DSB1 or DSB2 board, and skipped when absent. RetroPie does not copy it. Shipped in the 0.4-efbdc86 release archives, the Windows zip with CRLF line endings (sha1 311d762fab940658466cf223bc441b0f5fda372b)." + source_ref: "source Src/OSD/SDL/Main.cpp:126, source Src/OSD/SDL/Main.cpp:975, source Src/Sound/MPEG/MpegAudio.cpp:89-103" - name: "pro1000.zip" required: true @@ -128,7 +136,7 @@ files: system: real3d-pro1000 description: "Real3D Pro-1000 firmware set (SDK flash update, loop code 5.4, INIT ROM 54)" note: "Loaded as the content of the pro1000 machine, named after the set. Required to run the Pro-1000 only, Model 3 games never read it." - source_ref: "upstream Config/Games.xml:1404-1428, source Src/Pro1000/Pro1000.cpp:2111-2122, source Src/GameLoader.cpp:1066-1071" + source_ref: "source Config/Games.xml:10030-10054, source Src/Pro1000/Pro1000.cpp:1999-2010, source Src/GameLoader.cpp:1167-1172" contents: - name: "p1_p4.bin" description: "Flash parts 1 and 4, boot stub and loop code, loaded at 0xFFF00000"