diff --git a/emulators/aps3e.yml b/emulators/aps3e.yml index 92b387d3c..7731e29bc 100644 --- a/emulators/aps3e.yml +++ b/emulators/aps3e.yml @@ -6,6 +6,7 @@ source_branch: main4 upstream: "https://github.com/RPCS3/rpcs3" profiled_date: "2026-10-06" source_commit: "c6ca18217f2f1563235f83d94df78e35423a1720" +prose_written_at: "c6ca18217f2f1563235f83d94df78e35423a1720" upstream_commit: "1f080485b95db2700c5cf244b1314f73b6cf564e" upstream_frozen: "RPCS3 is vendored whole under app/src/main/cpp/rpcs3 at this commit, the tree the 2.43 release reports as 20071-1f080485." core_version: "1.37-47-gc6ca182" diff --git a/emulators/arcadeduck.yml b/emulators/arcadeduck.yml index 1df81f16e..8188d9b02 100644 --- a/emulators/arcadeduck.yml +++ b/emulators/arcadeduck.yml @@ -3,10 +3,12 @@ type: standalone core_classification: community_fork source: "https://github.com/StillJC/ArcadeDuck" upstream: "https://github.com/stenzek/duckstation" -source_commit: "80cdb6da6b51d687192a6346efe4499b10fe4faf" +source_commit: "4a9313cacab2f396a87736a43907a70894e2c40f" +prose_written_at: "4a9313cacab2f396a87736a43907a70894e2c40f" +pin_frozen: "RetroBat, the only platform that ships it, packages this build: the ArcadeDuck.exe of its beta arcadeduck.7z (repo/win64/beta, 7 November 2026) reports 0.6.5-dev-buildD0014-g4a9313cac, the bump its changelog records (RetroBat CHANGELOG.md:7). The stable 8.3.1 package carries 0.5.3 build R0004 (26caf9cd). Later commits are not part of that package." upstream_commit: "526b4a128827ecaef037134095cd95f431b52d06" profiled_date: "2026-10-26" -core_version: "0.6.0-dev" +core_version: "0.6.5-dev" version_basis: kind: file path: "src/scmversion/arcadeduck_version.h" @@ -27,43 +29,46 @@ systems: - acclaim-zn1 - tecmo-tps - taito-fx1 + - taito-gnet mode: standalone notes: | - DuckStation fork that runs the PlayStation based arcade boards. RetroBat - installs the "latest" release of StillJC/ArcadeDuck unchanged: its - ArcadeDuck.exe and resources/arcadedb.yaml are byte for byte the release - archive arcadeduck-windows-x64-release.zip, release 0.6.0 built from 80cdb6d. - The release build strips the -dev suffix of the version the source carries. + DuckStation fork that runs the PlayStation based arcade boards. The RetroBat + beta package is dev build D0014 of 4a9313c, whose tree is the one the 0.6.5 + release R0006 builds from f74a43c, and its resources/arcadedb.yaml is byte for + byte the one of the release archive arcadeduck-windows-x64-release.zip, the + source file with CRLF line ends. The source names the version 0.6.5-dev. ref: source src/scmversion/arcadeduck_version.h:12 A game is a MAME style set identified by its archive name, .zip or .7z, through resources/arcadedb.yaml, read from the resources folder beside the executable. Without that file no archive is recognised and nothing boots. A clone reads the ROMs it lacks from the archives of its parents in the same - folder, so split and merged sets load as well as non-merged ones. - ref: source src/core/arcade/arcade_database.cpp:30, 1194-1211, 1391-1410, - source src/core/arcade/arcade_database.cpp:1459-1504, - source src/core/system.cpp:1622-1665 + folder, so split and merged sets load as well as non-merged ones. A Taito + G-Net game also starts from its CHD image, identified through the same + database. + ref: source src/core/arcade/arcade_database.cpp:34, 1207-1224, 1404-1423, + source src/core/arcade/arcade_database.cpp:1551-1596, + source src/core/system.cpp:1624-1678 Arcade boots skip the PlayStation BIOS scan: each board handler loads and checks its own BIOS. The PS1 BIOS search inherited from DuckStation only runs for a standard boot, which the RetroBat launcher never requests since it refuses anything but a .zip set. - ref: source src/core/system.cpp:1824-1825, emulatorLauncher Generators/ArcadeDuck.Generator.cs:46-48 + ref: source src/core/system.cpp:1837-1838, emulatorLauncher Generators/ArcadeDuck.Generator.cs:46-48 Board firmware is read from the BIOS directory (EmuFolders::Bios, the [BIOS] SearchDirectory setting). RetroBat points it at the folder of the game when the firmware archive sits there, else at the RetroBat bios folder. - ref: source src/core/settings.cpp:1791, source src/core/arcade/arcade_machine_handler.cpp:152-153, + ref: source src/core/settings.cpp:1794, source src/core/arcade/arcade_machine_handler.cpp:152-153, emulatorLauncher Generators/ArcadeDuck.Generator.cs:104-128 A member of a firmware archive is found by name, case insensitive, with the size listed in arcadedb.yaml and its CRC32, or by size and CRC32 under any name. Its data must then match the CRC32 and, when one is listed, the SHA-1. Any mismatch stops the boot. - ref: source src/core/arcade/systems/sony/zn/sony_zn.cpp:929-936, - source src/core/arcade/systems/namco/system11/namco_system11.cpp:193-200, + ref: source src/core/arcade/systems/sony/zn/sony_zn.cpp:1203-1210, + source src/core/arcade/systems/namco/system11/namco_system11.cpp:188-195, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444 Konami GV uses a fixed archive name and member, hardcoded in bios.cpp rather @@ -76,13 +81,15 @@ notes: | arcadedb.yaml also declares sys573.zip (Konami System 573) and gq863.zip (Konami Twinkle), but no machine handler exists for those boards at this revision, so their sets never get to the point of opening a firmware archive. - ref: source src/core/arcade/arcade_machine_handler.cpp:1032-1060 + ref: source src/core/arcade/arcade_machine_handler.cpp:1102-1132 Only the members a handler reads are listed under each archive: the 512 KiB main BIOS and the motherboard CAT702 security key for the ZN boards, c76.bin - for Namco System 11. The uPD78081 MCU ROM of the ZN boards is undumped and + for Namco System 11. The Taito G-Net handler also reads the U30 flash and the + second CAT702 key, and on COH-3002T the F35 EPROM, the COH-1002T socket being + left empty and filled with FF. The uPD78081 MCU ROM of the ZN boards is undumped and emulated without it. - ref: source src/core/arcade/systems/sony/zn/sony_zn.cpp:454 + ref: source src/core/arcade/systems/sony/zn/sony_zn.cpp:641 files: - name: "arcadedb.yaml" @@ -93,7 +100,7 @@ files: sha1: "4156be079a54776c9c78c0255abda295b379121a" md5: "813692f1264f8bd86ca2cb7a642c5793" description: "Arcade set, board and firmware database" - source_ref: "source src/core/arcade/arcade_database.cpp:30, 1194-1211, source src/arcadeduck-qt/qthost.cpp:2039-2046" + source_ref: "source src/core/arcade/arcade_database.cpp:34, 1207-1224, source src/arcadeduck-qt/qthost.cpp:2039-2046" note: "Hashes are those of the copy in the release archive, written with CRLF line endings. The repository copy at 80cdb6d holds the same text with LF endings." - name: "konamigv.zip" @@ -114,7 +121,7 @@ files: required: true category: bios_zip description: "Namco System 11 C76 firmware" - source_ref: "source src/core/arcade/arcade_machine_handler.cpp:152-157, source src/core/arcade/systems/namco/system11/namco_system11.cpp:193-200, 442-450, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:70" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:152-157, source src/core/arcade/systems/namco/system11/namco_system11.cpp:188-195, 437-445, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:70" note: "c76.bin is the internal ROM of the C76 sound and I/O MCU." contents: - name: "c76.bin" @@ -127,7 +134,7 @@ files: required: true category: bios_zip description: "Capcom ZN-1 (COH-1000C) BIOS" - source_ref: "source src/core/arcade/arcade_machine_handler.cpp:239-245, source src/core/arcade/systems/sony/zn/sony_zn.cpp:929-936, 2928-2937, 2995-3003, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:111" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:239-245, source src/core/arcade/systems/sony/zn/sony_zn.cpp:1203-1210, 3274-3283, 3341-3349, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:111" note: "The handler always asks for BIOS variant j, the Japanese mask ROM m534002c-13.ic353. msm27c402zb.ic353, the e variant listed beside it, is never read." contents: - name: "m534002c-13.ic353" @@ -144,7 +151,7 @@ files: required: true category: bios_zip description: "Capcom ZN-2 (COH-3002C) BIOS" - source_ref: "source src/core/arcade/arcade_machine_handler.cpp:290-319, 1042-1043, source src/core/arcade/systems/sony/zn/sony_zn.cpp:929-936, 2924-2949, 2995-3003, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:144, 155-156" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:290-319, 1112-1113, source src/core/arcade/systems/sony/zn/sony_zn.cpp:1203-1210, 3270-3295, 3341-3349, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:144, 155-156" contents: - name: "m534002c-59.ic353" size: 524288 @@ -160,7 +167,7 @@ files: required: true category: bios_zip description: "Video System ZN-1 (COH-1002V) BIOS" - source_ref: "source src/core/arcade/arcade_machine_handler.cpp:380-383, source src/core/arcade/systems/sony/zn/sony_zn.cpp:929-936, 2928-2937, 3120-3128, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:295" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:450-453, source src/core/arcade/systems/sony/zn/sony_zn.cpp:1203-1210, 3274-3283, 3466-3474, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:360" contents: - name: "coh-1002v.ic353" size: 524288 @@ -176,7 +183,7 @@ files: required: true category: bios_zip description: "Atlus ZN-1 (COH-1001L) BIOS" - source_ref: "source src/core/arcade/arcade_machine_handler.cpp:447-450, source src/core/arcade/systems/sony/zn/sony_zn.cpp:929-936, 2928-2937, 3222, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:265" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:517-520, source src/core/arcade/systems/sony/zn/sony_zn.cpp:1203-1210, 3274-3283, 3568, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:330" contents: - name: "m534002c-17.ic353" size: 524288 @@ -192,7 +199,7 @@ files: required: true category: bios_zip description: "Eighting/Raizing ZN-1 (COH-1002E) BIOS" - source_ref: "source src/core/arcade/arcade_machine_handler.cpp:531-534, source src/core/arcade/systems/sony/zn/sony_zn.cpp:929-936, 2928-2937, 3378, 3511, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:325" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:601-604, source src/core/arcade/systems/sony/zn/sony_zn.cpp:1203-1210, 3274-3283, 3724, 3857, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:390" contents: - name: "m27c402cz-54.ic353" size: 524288 @@ -208,7 +215,7 @@ files: required: true category: bios_zip description: "Time Warner / Atari ZN-1 (COH-1000W) BIOS" - source_ref: "source src/core/arcade/arcade_machine_handler.cpp:619-622, source src/core/arcade/systems/sony/zn/sony_zn.cpp:929-936, 2928-2937, 3594, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:236" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:689-692, source src/core/arcade/systems/sony/zn/sony_zn.cpp:1203-1210, 3274-3283, 3940, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:301" contents: - name: "msm27c402zb.ic353" size: 524288 @@ -224,7 +231,7 @@ files: required: true category: bios_zip description: "Acclaim ZN-1 (COH-1000A) BIOS" - source_ref: "source src/core/arcade/arcade_machine_handler.cpp:694-697, source src/core/arcade/systems/sony/zn/sony_zn.cpp:929-936, 2928-2937, 3733, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:207" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:764-767, source src/core/arcade/systems/sony/zn/sony_zn.cpp:1203-1210, 3274-3283, 4079, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:272" contents: - name: "m534002c-15.ic353" size: 524288 @@ -240,7 +247,7 @@ files: required: true category: bios_zip description: "Tecmo TPS (COH-1002M) BIOS" - source_ref: "source src/core/arcade/arcade_machine_handler.cpp:789-792, source src/core/arcade/systems/sony/zn/sony_zn.cpp:929-936, 2928-2937, 4064, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:356" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:859-862, source src/core/arcade/systems/sony/zn/sony_zn.cpp:1203-1210, 3274-3283, 4410, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:421" contents: - name: "m534002c-61.ic353" size: 524288 @@ -256,7 +263,7 @@ files: required: true category: bios_zip description: "Taito FX-1 (COH-1000T) BIOS" - source_ref: "source src/core/arcade/arcade_machine_handler.cpp:916-919, source src/core/arcade/systems/sony/zn/sony_zn.cpp:929-936, 2928-2937, 3846, 3954, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:176" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:986-989, source src/core/arcade/systems/sony/zn/sony_zn.cpp:1203-1210, 3274-3283, 4192, 4300, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:241" contents: - name: "m534002c-14.ic353" size: 524288 @@ -266,3 +273,55 @@ files: size: 8 crc32: "daac13e7" sha1: "96d94f2b06fb7ecd91454969f4959a583ffb9d5a" + + - name: "coh3002t.zip" + system: taito-gnet + required: true + category: bios_zip + description: "Taito G-Net (COH-3002T) BIOS" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:363-390, 1114-1115, source src/core/arcade/systems/sony/zn/sony_zn.cpp:3270-3293, 4598-4632, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:176, 185-189" + contents: + - name: "m534002c-60.ic353" + size: 524288 + crc32: "03967fa7" + sha1: "0e17fec2286e4e25deb23d40e41ce0986f373d49" + - name: "tt10.ic652" + size: 8 + crc32: "235510b1" + sha1: "2cc02113207a8f0b078152d31ce6503411750e70" + - name: "flash.u30" + size: 2097152 + crc32: "c48c8236" + sha1: "c6dad60266ce2ff635696bc0d91903c543273559" + - name: "f35-01_m27c800.bin" + size: 1048576 + crc32: "6225ec11" + sha1: "047852d456b6ff85f8e640887caa03cf3e63ffad" + - name: "tt16.u17" + size: 8 + crc32: "6bb167b3" + sha1: "9dcba08f10775a9adf2b1f382c947460edd3d239" + + - name: "coh1002t.zip" + system: taito-gnet + required: true + category: bios_zip + description: "Taito G-Net on a ZN-1 motherboard (COH-1002T) BIOS" + source_ref: "source src/core/arcade/arcade_machine_handler.cpp:363-390, 1114-1115, source src/core/arcade/systems/sony/zn/sony_zn.cpp:3270-3293, 4598-4632, source src/core/arcade/arcade_rom_loader.cpp:258-293, 356-444, source data/resources/arcadedb.yaml:209, 218-221" + contents: + - name: "m534002c-14.ic353" + size: 524288 + crc32: "e3f23b6e" + sha1: "e18907cf8c6ba54d96edba0a9a00487a90219e0d" + - name: "tt01.ic652" + size: 8 + crc32: "daac13e7" + sha1: "96d94f2b06fb7ecd91454969f4959a583ffb9d5a" + - name: "flash.u30" + size: 2097152 + crc32: "9100dbf2" + sha1: "9ce888bd2a7e575c8ca71d978cb85de22afb5660" + - name: "tt99.u17" + size: 8 + crc32: "2989b6eb" + sha1: "89981ec68d30729c27d31f820cbfd0c23ed14a03" diff --git a/emulators/armsx1.yml b/emulators/armsx1.yml index c54c7fc9d..24a435184 100644 --- a/emulators/armsx1.yml +++ b/emulators/armsx1.yml @@ -5,8 +5,8 @@ source: "https://github.com/ARMSX2/ARMSX1" source_branch: "android-compose" upstream: "https://github.com/allkern/psxe" profiled_date: "2026-10-26" -source_commit: "d96a5b8ad6ccccb40a431488aa89b06f0318c217" -core_version: "0.3.6" +source_commit: "61ae0d0797d1d11de00a0b64c116205cb910af77" +core_version: "0.3.18-dma" version_basis: kind: file path: "android/app/build.gradle" @@ -23,53 +23,43 @@ systems: notes: | PlayStation emulator forked from psxe. The released application is the - Android build, com.nanodata.armsx, version 0.3.6 at this revision. That - build runs libretro SwanStation, checked out as the core/swanstation - submodule at dd4805619bbbfc6e0d1776372cb16377088b448e and driven by an - in-process adapter, and no longer the psxe engine. The SDL desktop, iOS, - UWP, web and PSVita frontends in the same tree still build on psxe. The - release tags 0.1.5 to 0.3.6 all sit on 99b3081 of the main branch, a - 2026-09-05 tree that carries none of this code. The version is the - versionName android-compose builds. - ref: android/app/build.gradle:72-75, SWANSTATION-DEV.md:10-19 + Android build, com.nanodata.armsx, versionName 0.3.18-dma at this revision. + That build runs the PSX Lab engine from the psxlab tree, through the + ArmSxBackend adapter. The SDL desktop, iOS, UWP, web and PSVita frontends + in the same tree still build on psxe. The release tags 0.1.5 to 0.3.6 all + sit on 99b3081 of the main branch, a 2026-09-05 tree that carries none of + this code. The version is the versionName android-compose builds. + ref: android/app/build.gradle:87-90, PSXLAB-BACKEND.md:1-6 Android accepts a BIOS only through its importer. The setup wizard, the BIOS manager and its folder scan all ask getBiosInfoFromFd, which requires exactly 512 KB and then either the OpenBIOS signature at 0x78 or one of 25 - MD5 values taken from SwanStation's table. A recognised file is copied into - /bios under its own name. The wizard does not leave the - BIOS page until one is recognised. - ref: android/app/src/main/java/kr/co/iefriends/pcsx2/NativeApp.java:1252-1262, + MD5 values. A recognised file is copied into /bios under + its own name. The wizard does not leave the BIOS page until one is + recognised. + ref: android/app/src/main/java/kr/co/iefriends/pcsx2/NativeApp.java:1297-1307, android/app/src/main/java/com/armsx2/core/Ps1BiosProbe.java:16-79, android/app/src/main/java/com/armsx2/ui/onboarding/OnboardingViewModel.kt:183-203, android/app/src/main/java/com/armsx2/ui/onboarding/OnboardingViewModel.kt:250-255, android/app/src/main/java/com/armsx2/ui/bios/BiosManagerViewModel.kt:172-187 - Before each launch the settings store walks the BIOS folder, the search - folder and the selected file's folder, each sorted by path, then the older - user_bios.bin and bios.bin imports, and keeps the first 512 KB file whose - MD5 entry names the preferred_model console, SCPH-1001 by default. It writes - that path as [bios].resolved_file, and the adapter hands it to SwanStation - as the BIOS path of all three regions, relative to the system directory, - which is the folder of the selected BIOS or /bios. - ref: android/app/src/main/java/com/armsx2/config/Ps1SettingsStore.kt:176-195, - android/app/src/main/java/com/armsx2/core/Ps1BiosSelection.java:17-64, - android/app/src/main/java/com/armsx2/config/Ps1Settings.kt:32-33, - android/app/src/main/java/kr/co/iefriends/pcsx2/NativeApp.java:108-123, - native/swanstation/runtime.cpp:243-247, native/swanstation/runtime.cpp:255 - - No match leaves the path empty, and SwanStation scans the system directory - itself: files of 512 KB, 4 MB or 0x3E66F0 bytes, the first 512 KB hashed - against its 27-entry table, the first image of the console region returned, - otherwise the first known image of another region. An unknown image is - never used, and with nothing found the core boots its built-in OpenBIOS. - The region is Auto unless console.region says pal or ntsc, and Auto follows - the disc, NTSC-U without one. - ref: swanstation src/core/host_interface.cpp:100-194, - swanstation src/core/bios.cpp:28-104, - swanstation src/core/system.cpp:592-645, - swanstation src/core/system.cpp:677-682, - native/swanstation/runtime.cpp:209 + At launch the adapter lists the 512 KB files of the BIOS folder, the folder + of the BIOS the wizard selected or /bios, sorted by name. + It loads the file named by Filenames/BIOS, which the host sets to the + per-game BIOS or the wizard's file, else the first of the list, and refuses + anything but 512 KB. No hash is checked at that point, and with no file the + launch stops with "A 512 KiB PlayStation BIOS is required". The settings + store still writes the MD5 match for preferred_model as [bios].resolved_file + and an empty override_file, and the adapter reads neither for the choice. + ref: psxlab/app/src/main/java/dev/psxlab/ArmSxBackend.java:149-168, + psxlab/app/src/main/java/dev/psxlab/ArmSxBackend.java:338, + android/app/src/main/java/kr/co/iefriends/pcsx2/NativeApp.java:124-151, + android/app/src/main/java/kr/co/iefriends/pcsx2/NativeApp.java:225, + android/app/src/main/java/com/armsx2/runtime/MainActivityRuntime.kt:268-269, + android/app/src/main/java/com/armsx2/runtime/MainActivityRuntime.kt:1027-1038, + android/app/src/main/java/com/armsx2/runtime/MainActivityRuntime.kt:2850-2856, + android/app/src/main/java/com/armsx2/config/Ps1SettingsStore.kt:178-197, + android/app/src/main/java/com/armsx2/config/Ps1SettingsStore.kt:416-419 The psxe frontends take [bios].override_file or -b, by default bios.bin under SDL_GetPrefPath("nanodata", "armsx"), when that file exists. @@ -78,7 +68,7 @@ notes: | one named bios.bin, else the override path unchanged. psx_bios_load refuses anything but 512 KB or the 1 MB SCPH-5903 image and checks no hash. ref: frontend/config.c:54-57, frontend/config.c:279-352, - frontend/config.c:1378-1399, frontend/config.c:1535-1554, + frontend/config.c:1384-1405, frontend/config.c:1541-1560, frontend/main.cpp:2555-2561, psx/dev/bios.c:22-75 files: @@ -345,5 +335,5 @@ files: Read by the psxe frontends into the 512 KB region at 0x1f000000, which is filled with 0xff when no path is set. A path that is set and cannot be opened fails psx_init. The Android settings only display the key, and - the SwanStation adapter never reads it. + the PSX Lab adapter never reads it. source_ref: "psx/dev/exp1.c:12-44, psx/dev/exp1.h:9, psx/psx.c:312-313, frontend/config.c:93, frontend/main.cpp:2569-2570, android/app/src/main/java/com/armsx2/ui/settings/Ps1AdvancedTab.kt:102-108" diff --git a/emulators/dosbox-staging.yml b/emulators/dosbox-staging.yml index 7f64963c4..5a2ffdc2c 100644 --- a/emulators/dosbox-staging.yml +++ b/emulators/dosbox-staging.yml @@ -3,7 +3,8 @@ type: standalone core_classification: enhanced_fork source: "https://github.com/dosbox-staging/dosbox-staging" upstream: "https://github.com/dosbox-staging/dosbox-staging" -source_commit: "fa1856c057902be3e08856675d6cc1e7ffe43db6" +source_commit: "27b1b7ca719c21ef3444f7ad1cf2d9cd439527cc" +prose_written_at: "27b1b7ca719c21ef3444f7ad1cf2d9cd439527cc" profiled_date: "2026-10-26" core_version: "0.84.0-alpha" version_basis: @@ -41,7 +42,7 @@ notes: | from vcpkg. The machine setting selects a video adapter (hercules, cga, cga_mono, ega, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe) or a machine (pcjr, tandy). - ref: src/dosbox.cpp:1317-1329, vcpkg.json + ref: src/dosbox.cpp:1401-1413, vcpkg.json No system BIOS: the PC BIOS, video BIOS fonts, keyboard layouts and codepage tables are implemented in code. @@ -114,7 +115,7 @@ notes: | shaders and shader presets, CGA colour presets, drive noise samples, the mounted Y: drive utilities, the web interface and the manual pages. ref: src/misc/support.cpp:300-320, src/dos/dos_code_page.cpp:1828, src/dos/dos_keyboard_layout.cpp:70, - src/misc/messages.cpp:1073, src/gui/render/shader_manager.cpp:236,404, src/ints/int10_modes.cpp:2302, + src/misc/messages.cpp:1072, src/gui/render/shader_manager.cpp:236,404, src/ints/int10_modes.cpp:2302, src/audio/disk_noise.cpp:185, src/shell/autoexec.cpp:764 BIOSTEST.COM loads an arbitrary BIOS image at F000:0 and is compiled only diff --git a/emulators/gopher2600.yml b/emulators/gopher2600.yml index ba38a7837..78c45e000 100644 --- a/emulators/gopher2600.yml +++ b/emulators/gopher2600.yml @@ -4,7 +4,7 @@ core_classification: other source: "https://github.com/JetSetIlly/Gopher2600" upstream: "https://github.com/JetSetIlly/Gopher2600" profiled_date: "2026-08-08" -source_commit: "295b9e1c08203453677ea4184e284c0664f5949a" +source_commit: "e84bd84d4f4824c4965fd1ab278e37866fa60392" core_version: "v0.58.0" version_basis: kind: file @@ -71,9 +71,9 @@ notes: | are read from a project build tree beside the ROM. AtariVox speech uses the SpeakJet emulation compiled in, on by default (hardware/peripherals/atarivox/atarivox.go:152-170, - hardware/preferences/atarivox_preferences.go:78-83). With it off, the + hardware/preferences/atarivox_preferences.go:84-90). With it off, the festival binary is called as a process, its path taken from preferences - (hardware/preferences/atarivox_preferences.go:59). + (hardware/preferences/atarivox_preferences.go:65). files: - name: "Supercharger BIOS.bin" diff --git a/emulators/gopher64.yml b/emulators/gopher64.yml index 0440a049d..c636dcc7f 100644 --- a/emulators/gopher64.yml +++ b/emulators/gopher64.yml @@ -4,8 +4,9 @@ core_classification: other source: "https://github.com/gopher64/gopher64" upstream: "https://github.com/gopher64/gopher64" profiled_date: "2026-10-23" -source_commit: "87385e77432cd278ac8588c7ed3d5014fc0d6bab" -core_version: "1.1.42" +source_commit: "c8078773eb468c38b60c5a9d17cf9baa617ee988" +prose_written_at: "87385e77432cd278ac8588c7ed3d5014fc0d6bab" +core_version: "1.2.0" version_basis: kind: file path: "Cargo.toml" @@ -39,10 +40,11 @@ notes: | A Transfer Pak port reads two files whose paths come from the configuration, gb_rom_path and gb_ram_path, and attaches them when both are set - (src/lib.rs:194-200). The pair is a Game Boy cartridge and its save, supplied - by the player: the loader takes the ROM as is and only inspects the tail of - the RAM for MBC3 clock state (src/device/controller/gbcart.rs:37-75), then - writes the RAM back on shutdown (src/lib.rs:276-288). The code fixes no name, + (src/lib.rs:194-204). The pair is a Game Boy cartridge and its save, supplied + by the player: the loader takes the ROM as is, inspects the tail of the RAM + for MBC3 clock state and sizes the RAM to the size the ROM header declares + (src/device/controller/gbcart.rs:51-124), then + writes the RAM back on shutdown (src/lib.rs:280-292). The code fixes no name, size or hash for either, so neither carries a file entry here. The SC64 SD card image is created rather than obtained: an empty save is @@ -52,10 +54,10 @@ notes: | Everything else under the configuration, data and cache directories is written by the emulator: config.json and cheats.json (src/ui/config.rs:99-111,134-146), - retroachievements.json (src/lib.rs:209, src/retroachievements.rs:37,61), + retroachievements.json (src/lib.rs:213, src/retroachievements.rs:37,61), ice_config.json from the netplay server response (src/ui/netplay.rs:715-718, src/netplay.rs:419), the eeprom, sram, flash, mempak, sdcard and romsave saves - and the savestates (src/ui/storage.rs:213-233, src/savestates.rs:201,260). For + and the savestates (src/ui/storage.rs:217-237, src/savestates.rs:201,260). For a netplay launch the GUI serialises the cheats to the cache directory, passes them to a re-exec of itself through the hidden --cheats flag and deletes the file afterwards (src/ui/gui.rs:590-600,607-622,637, src/lib.rs:141-147). @@ -67,7 +69,7 @@ notes: | (src/ui/gui.rs:695-697), the RobotoMono face handed to SDL_ttf from memory (src/ui/video.rs:132, src/ui/input_profile.rs:99), the parallel-rdp SPIR-V modules (parallel-rdp/spirv.hpp and parallel-rdp/spirv_crt.hpp, used at - parallel-rdp/interface.cpp:4-5,638) and the Slint translations bundled at + parallel-rdp/interface.cpp:5-6,728) and the Slint translations bundled at build time (build.rs:11). files: [] diff --git a/emulators/jazz2-native.yml b/emulators/jazz2-native.yml index 8e5972a45..394b7f6dd 100644 --- a/emulators/jazz2-native.yml +++ b/emulators/jazz2-native.yml @@ -4,7 +4,7 @@ core_classification: game_engine source: "https://github.com/deathkiller/jazz2-native" upstream: "https://github.com/deathkiller/jazz2-native" profiled_date: "2026-10-04" -source_commit: "ff9ddb7be9c84bdcf71b22d9380da06135edeb62" +source_commit: "d436ec62052339527887909a6e0fa2db405749d8" core_version: "3.9.0" version_basis: kind: file @@ -17,20 +17,20 @@ systems: [jazz-jackrabbit-2] data_root: android: path: "Android/data/jazz2.resurrection/files" - source_ref: "Sources/Jazz2/ContentResolver.cpp:426-477, Sources/Shared/IO/AndroidAssetStream.cpp:213-216, CMakeLists.txt:35, Sources/nCine/Backends/Android/Bridge/app/build.gradle.in:11" + source_ref: "Sources/Jazz2/ContentResolver.cpp:506-557, Sources/Shared/IO/AndroidAssetStream.cpp:213-216, CMakeLists.txt:35, Sources/nCine/Backends/Android/Bridge/app/build.gradle.in:11" note: "with all-files access, the first of Games/Jazz² Resurrection, Games/Jazz2 Resurrection, Download/Jazz² Resurrection and Download/Jazz2 Resurrection on shared storage that holds Source, else the first one" ios: path: "Documents" - source_ref: "Sources/Jazz2/ContentResolver.cpp:485-489, Sources/Jazz2/ContentResolver.cpp:757-758" + source_ref: "Sources/Jazz2/ContentResolver.cpp:565-569, Sources/Jazz2/ContentResolver.cpp:837-838" windows: path: "" - source_ref: "Sources/nCine/MainApplication.cpp:696-715, Sources/Jazz2/ContentResolver.cpp:243-244, Sources/Jazz2/ContentResolver.cpp:389-390" + source_ref: "Sources/nCine/MainApplication.cpp:696-715, Sources/Jazz2/ContentResolver.cpp:244-245, Sources/Jazz2/ContentResolver.cpp:469-470" macos: path: "~/Library/Application Support/Jazz² Resurrection" - source_ref: "Sources/Jazz2/ContentResolver.cpp:490-494, Sources/Shared/IO/FileSystem.cpp:1767-1792, Sources/Shared/IO/FileSystem.cpp:1724-1731" + source_ref: "Sources/Jazz2/ContentResolver.cpp:570-574, Sources/Shared/IO/FileSystem.cpp:1768-1793, Sources/Shared/IO/FileSystem.cpp:1725-1732" linux: path: "$XDG_DATA_HOME/jazz2, else ~/.local/share/jazz2" - source_ref: "Sources/Jazz2/ContentResolver.cpp:495-571, Sources/Shared/IO/FileSystem.cpp:1933-1946, CMakeLists.txt:30, cmake/ncine_options.cmake:408-409" + source_ref: "Sources/Jazz2/ContentResolver.cpp:575-651, Sources/Shared/IO/FileSystem.cpp:1934-1947, CMakeLists.txt:30, cmake/ncine_options.cmake:274-275" note: "the folder of the executable for a portable copy with Content beside it. $XDG_DATA_HOME/Jazz² Resurrection when it already holds Cache. The AppImage uses the folder of the .AppImage when its Source holds Anims.j2a" notes: | @@ -38,18 +38,18 @@ notes: | ships its own Content/ tree (animations, metadata, translations) that sits next to the executable in a portable copy, or under /share// once installed. - ref: Sources/Jazz2/ContentResolver.cpp:196-248 (GetContentPath per - platform), Sources/Jazz2/ContentResolver.cpp:495-571 (Unix layouts) + ref: Sources/Jazz2/ContentResolver.cpp:197-249 (GetContentPath per + platform), Sources/Jazz2/ContentResolver.cpp:575-651 (Unix layouts) Original Jazz Jackrabbit 2 data is read from Source/ and converted on first launch into the engine's own formats under Cache/: Anims.j2a and Data.j2d into a package, then every .j2e, .j2l and the tilesets the levels name. Music and cinematics are read from Source/ as they are. - ref: Sources/Jazz2/ContentResolver.cpp:364-393 (GetSourcePath), - Sources/Main.cpp:2235-2299 (RefreshCache), - Sources/Jazz2/Compatibility/AssetConverter.cpp:477-493, - Sources/Jazz2/Compatibility/AssetConverter.cpp:642-768 + ref: Sources/Jazz2/ContentResolver.cpp:444-473 (GetSourcePath), + Sources/Main.cpp:2259-2323 (RefreshCache), + Sources/Jazz2/Compatibility/AssetConverter.cpp:478-494, + Sources/Jazz2/Compatibility/AssetConverter.cpp:686-848 Content/ is the engine runtime, shipped with the release package. Source/ holds the user's own copy of the 1998 game data. Without @@ -57,20 +57,20 @@ notes: | cache the engine starts but is not playable. A Content/ tree prepared by the AssetPacker tool carries Prebaked.pak: the conversion is then skipped and Source/ is not read. - ref: Sources/Main.cpp:2147-2153, - Sources/Jazz2/ContentResolver.cpp:738-746 + ref: Sources/Main.cpp:2171-2177, + Sources/Jazz2/ContentResolver.cpp:818-826 On Android, Apple, Unix, UWP, Switch and Vita a Content/ directory next to Cache/ (next to Source/ on iOS) is searched before the shipped one, its .pak files first. - ref: Sources/Jazz2/ContentResolver.cpp:748-787, - Sources/Jazz2/ContentResolver.cpp:853-902 + ref: Sources/Jazz2/ContentResolver.cpp:828-867, + Sources/Jazz2/ContentResolver.cpp:933-982 The libretro build looks for Content/ next to the loaded file, in the core assets directory or in /jazz2/, and for the original files in Source/ beside it, in the system directory itself or in /jazz2/Source/. - ref: Sources/Main.cpp:286-374 + ref: Sources/Main.cpp:294-382 files: # ================================================================ @@ -84,7 +84,7 @@ files: standalone_path: "Content/Animations/" mode: libretro required: true - source_ref: "Sources/Jazz2/ContentResolver.cpp:1394, Sources/Jazz2/ContentResolver.cpp:1543, Sources/Jazz2/ContentResolver.cpp:3371-3372" + source_ref: "Sources/Jazz2/ContentResolver.cpp:1613, Sources/Jazz2/ContentResolver.cpp:1762, Sources/Jazz2/ContentResolver.cpp:3601-3602" note: "Native graphics, sounds and the UI fonts, opened through OpenContentFile. No libretro build is published with the release, so the tree is placed by hand." - name: "Animations/" @@ -95,7 +95,7 @@ files: mode: standalone bundled: true required: true - source_ref: "Sources/Jazz2/ContentResolver.cpp:1394, Sources/Jazz2/ContentResolver.cpp:1543, Sources/Jazz2/ContentResolver.cpp:3371-3372" + source_ref: "Sources/Jazz2/ContentResolver.cpp:1613, Sources/Jazz2/ContentResolver.cpp:1762, Sources/Jazz2/ContentResolver.cpp:3601-3602" note: "Native graphics, sounds and the UI fonts, opened through OpenContentFile. Shipped beside the executable in the 3.8.0 Windows and Linux zips." - name: "Metadata/" @@ -105,7 +105,7 @@ files: standalone_path: "Content/Metadata/" mode: libretro required: true - source_ref: "Sources/Jazz2/ContentResolver.cpp:1141" + source_ref: "Sources/Jazz2/ContentResolver.cpp:1360" note: "Actor .res descriptors (Common, Enemy, Player, UI, Boss, ...). No libretro build is published with the release, so the tree is placed by hand." - name: "Metadata/" @@ -116,7 +116,7 @@ files: mode: standalone bundled: true required: true - source_ref: "Sources/Jazz2/ContentResolver.cpp:1141" + source_ref: "Sources/Jazz2/ContentResolver.cpp:1360" note: "Actor .res descriptors (Common, Enemy, Player, UI, Boss, ...). Shipped beside the executable in the 3.8.0 Windows and Linux zips." - name: "Translations/" @@ -126,7 +126,7 @@ files: standalone_path: "Content/Translations/" mode: libretro required: false - source_ref: "Sources/Main.cpp:2023-2031, Sources/Jazz2/UI/Menu/LanguageSelectSection.cpp:83-95" + source_ref: "Sources/Main.cpp:2047-2055, Sources/Jazz2/UI/Menu/LanguageSelectSection.cpp:83-95" note: "Language .mo bundles, searched in the user Content/Translations/ and in Cache/Translations/ first. Built-in English is used when none is loaded. No libretro build is published with the release, so the tree is placed by hand." - name: "Translations/" @@ -137,7 +137,7 @@ files: mode: standalone bundled: true required: false - source_ref: "Sources/Main.cpp:2023-2031, Sources/Jazz2/UI/Menu/LanguageSelectSection.cpp:83-95" + source_ref: "Sources/Main.cpp:2047-2055, Sources/Jazz2/UI/Menu/LanguageSelectSection.cpp:83-95" note: "Language .mo bundles, searched in the user Content/Translations/ and in Cache/Translations/ first. Built-in English is used when none is loaded. Shipped beside the executable in the 3.8.0 Windows and Linux zips." # ================================================================ @@ -151,7 +151,7 @@ files: path: "jazz2/Source/Anims.j2a" standalone_path: "Source/Anims.j2a" required: true - source_ref: "Sources/Main.cpp:2235-2251, Sources/Jazz2/Compatibility/AssetConverter.cpp:481-484" + source_ref: "Sources/Main.cpp:2259-2275, Sources/Jazz2/Compatibility/AssetConverter.cpp:482-485" note: "Main animation archive. The cache cannot be created without it and the game is not flagged playable." - name: "AnimsSw.j2a" @@ -160,7 +160,7 @@ files: path: "jazz2/Source/AnimsSw.j2a" standalone_path: "Source/AnimsSw.j2a" required: false - source_ref: "Sources/Main.cpp:2238-2240" + source_ref: "Sources/Main.cpp:2262-2264" note: "Animation archive of the shareware demo, read when Anims.j2a is absent." - name: "Data.j2d" @@ -169,7 +169,7 @@ files: path: "jazz2/Source/Data.j2d" standalone_path: "Source/Data.j2d" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:486-489" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:487-490" note: "Converted into the cache package when present." - name: "Plus.j2d" @@ -178,12 +178,12 @@ files: path: "jazz2/Source/Plus.j2d" standalone_path: "Source/Plus.j2d" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:416-461, Sources/Jazz2/Compatibility/AssetConverter.cpp:614-617, Sources/Jazz2/Compatibility/JJ2Level.cpp:1115" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:417-462, Sources/Jazz2/Compatibility/AssetConverter.cpp:658-661, Sources/Jazz2/Compatibility/JJ2Level.cpp:1322" note: "Data file of a JJ2+ installation. Read once a converted level names one of its TextureBG. textures. Without it a texture is made up for that layer." # Episode descriptors (.j2e) and level files (.j2l) are optional per # episode. Every one present in Source/ is converted. - # ref: Sources/Jazz2/Compatibility/AssetConverter.cpp:642-768 + # ref: Sources/Jazz2/Compatibility/AssetConverter.cpp:686-848 - name: "prince.j2e" category: game_data @@ -191,7 +191,7 @@ files: path: "jazz2/Source/prince.j2e" standalone_path: "Source/prince.j2e" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:44-47, Sources/Jazz2/Compatibility/AssetConverter.cpp:518-551, Sources/Jazz2/Compatibility/AssetConverter.cpp:592-594, Sources/Jazz2/Compatibility/AssetConverter.cpp:642-671" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:44-47, Sources/Jazz2/Compatibility/AssetConverter.cpp:545-589, Sources/Jazz2/Compatibility/AssetConverter.cpp:634-638, Sources/Jazz2/Compatibility/AssetConverter.cpp:686-734" note: "First episode of the chain prince, rescue, flash, monk." - name: "rescue.j2e" @@ -200,7 +200,7 @@ files: path: "jazz2/Source/rescue.j2e" standalone_path: "Source/rescue.j2e" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:44-47, Sources/Jazz2/Compatibility/AssetConverter.cpp:518-551, Sources/Jazz2/Compatibility/AssetConverter.cpp:595-596, Sources/Jazz2/Compatibility/AssetConverter.cpp:642-671" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:44-47, Sources/Jazz2/Compatibility/AssetConverter.cpp:545-589, Sources/Jazz2/Compatibility/AssetConverter.cpp:639-640, Sources/Jazz2/Compatibility/AssetConverter.cpp:686-734" note: "Second episode of the chain." - name: "flash.j2e" @@ -209,7 +209,7 @@ files: path: "jazz2/Source/flash.j2e" standalone_path: "Source/flash.j2e" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:518-545, Sources/Jazz2/Compatibility/AssetConverter.cpp:597-598, Sources/Jazz2/Compatibility/AssetConverter.cpp:642-671" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:545-572, Sources/Jazz2/Compatibility/AssetConverter.cpp:641-642, Sources/Jazz2/Compatibility/AssetConverter.cpp:686-734" note: "Third episode of the chain." - name: "monk.j2e" @@ -218,7 +218,7 @@ files: path: "jazz2/Source/monk.j2e" standalone_path: "Source/monk.j2e" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:518-545, Sources/Jazz2/Compatibility/AssetConverter.cpp:599-600, Sources/Jazz2/Compatibility/AssetConverter.cpp:642-671" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:545-572, Sources/Jazz2/Compatibility/AssetConverter.cpp:643-644, Sources/Jazz2/Compatibility/AssetConverter.cpp:686-734" note: "Fourth episode of the chain." - name: "share.j2e" @@ -227,7 +227,7 @@ files: path: "jazz2/Source/share.j2e" standalone_path: "Source/share.j2e" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:518-545, Sources/Jazz2/Compatibility/AssetConverter.cpp:572-573, Sources/Jazz2/Compatibility/AssetConverter.cpp:642-671" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:545-572, Sources/Jazz2/Compatibility/AssetConverter.cpp:614-615, Sources/Jazz2/Compatibility/AssetConverter.cpp:686-734" note: "Shareware Demo episode." - name: "xmas98.j2e" @@ -236,7 +236,7 @@ files: path: "jazz2/Source/xmas98.j2e" standalone_path: "Source/xmas98.j2e" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:574-575, Sources/Jazz2/Compatibility/AssetConverter.cpp:647, Sources/Jazz2/Compatibility/AssetConverter.cpp:655-656, Sources/Jazz2/Compatibility/AssetConverter.cpp:669" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:616-617, Sources/Jazz2/Compatibility/AssetConverter.cpp:691, Sources/Jazz2/Compatibility/AssetConverter.cpp:718-719, Sources/Jazz2/Compatibility/AssetConverter.cpp:732" note: "Holiday Hare '98. Stored under the name xmas99 and skipped when xmas99.j2e is present." - name: "xmas99.j2e" @@ -245,7 +245,7 @@ files: path: "jazz2/Source/xmas99.j2e" standalone_path: "Source/xmas99.j2e" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:507, Sources/Jazz2/Compatibility/AssetConverter.cpp:518-545, Sources/Jazz2/Compatibility/AssetConverter.cpp:576-577" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:520, Sources/Jazz2/Compatibility/AssetConverter.cpp:545-572, Sources/Jazz2/Compatibility/AssetConverter.cpp:618-619" note: "The Christmas Chronicles." - name: "secretf.j2e" @@ -254,7 +254,7 @@ files: path: "jazz2/Source/secretf.j2e" standalone_path: "Source/secretf.j2e" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:518-545, Sources/Jazz2/Compatibility/AssetConverter.cpp:578-579, Sources/Jazz2/Compatibility/AssetConverter.cpp:642-671" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:545-572, Sources/Jazz2/Compatibility/AssetConverter.cpp:620-621, Sources/Jazz2/Compatibility/AssetConverter.cpp:686-734" note: "The Secret Files episode." - name: "home.j2e" @@ -263,12 +263,12 @@ files: path: "jazz2/Source/home.j2e" standalone_path: "Source/home.j2e" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:658-664" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:721-727" note: "Entry that lists custom levels." # Levels of the Shareware Demo. Every .j2l present in Source/ is # converted, whatever its name. - # ref: Sources/Jazz2/Compatibility/AssetConverter.cpp:672-768 + # ref: Sources/Jazz2/Compatibility/AssetConverter.cpp:735-848 - name: "share1.j2l" category: game_data @@ -276,7 +276,7 @@ files: path: "jazz2/Source/share1.j2l" standalone_path: "Source/share1.j2l" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:518-556, Sources/Jazz2/Compatibility/AssetConverter.cpp:672-698, Sources/Jazz2/Compatibility/AssetConverter.cpp:721-735" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:545-598, Sources/Jazz2/Compatibility/AssetConverter.cpp:735-764, Sources/Jazz2/Compatibility/AssetConverter.cpp:787-808" note: "First level of share.j2e, stored as share/share1. Its exit names share2." - name: "share2.j2l" @@ -285,7 +285,7 @@ files: path: "jazz2/Source/share2.j2l" standalone_path: "Source/share2.j2l" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:518-556, Sources/Jazz2/Compatibility/AssetConverter.cpp:672-698, Sources/Jazz2/Compatibility/AssetConverter.cpp:721-735" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:545-598, Sources/Jazz2/Compatibility/AssetConverter.cpp:735-764, Sources/Jazz2/Compatibility/AssetConverter.cpp:787-808" note: "Second level of the Shareware Demo episode. Its exit names share3." - name: "share3.j2l" @@ -294,7 +294,7 @@ files: path: "jazz2/Source/share3.j2l" standalone_path: "Source/share3.j2l" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:518-556, Sources/Jazz2/Compatibility/AssetConverter.cpp:672-698, Sources/Jazz2/Compatibility/AssetConverter.cpp:721-735" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:545-598, Sources/Jazz2/Compatibility/AssetConverter.cpp:735-764, Sources/Jazz2/Compatibility/AssetConverter.cpp:787-808" note: "Third level of the Shareware Demo episode. Its exit ends the episode." - name: "sharectf.j2l" @@ -303,7 +303,7 @@ files: path: "jazz2/Source/sharectf.j2l" standalone_path: "Source/sharectf.j2l" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:76, Sources/Jazz2/Compatibility/AssetConverter.cpp:553-556, Sources/Jazz2/Compatibility/AssetConverter.cpp:672-698, Sources/Jazz2/Compatibility/AssetConverter.cpp:721-735" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:77, Sources/Jazz2/Compatibility/AssetConverter.cpp:592-598, Sources/Jazz2/Compatibility/AssetConverter.cpp:735-764, Sources/Jazz2/Compatibility/AssetConverter.cpp:787-808" note: "Capture the flag level of the Shareware Demo, stored under unknown/." - name: "sharect2.j2l" @@ -312,7 +312,7 @@ files: path: "jazz2/Source/sharect2.j2l" standalone_path: "Source/sharect2.j2l" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:76, Sources/Jazz2/Compatibility/AssetConverter.cpp:553-556, Sources/Jazz2/Compatibility/AssetConverter.cpp:672-698, Sources/Jazz2/Compatibility/AssetConverter.cpp:721-735" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:77, Sources/Jazz2/Compatibility/AssetConverter.cpp:592-598, Sources/Jazz2/Compatibility/AssetConverter.cpp:735-764, Sources/Jazz2/Compatibility/AssetConverter.cpp:787-808" note: "Capture the flag level of the Shareware Demo, stored under unknown/." - name: "sharetrs.j2l" @@ -321,14 +321,14 @@ files: path: "jazz2/Source/sharetrs.j2l" standalone_path: "Source/sharetrs.j2l" required: false - source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:76, Sources/Jazz2/Compatibility/AssetConverter.cpp:553-556, Sources/Jazz2/Compatibility/AssetConverter.cpp:672-698, Sources/Jazz2/Compatibility/AssetConverter.cpp:721-735" + source_ref: "Sources/Jazz2/Compatibility/AssetConverter.cpp:77, Sources/Jazz2/Compatibility/AssetConverter.cpp:592-598, Sources/Jazz2/Compatibility/AssetConverter.cpp:735-764, Sources/Jazz2/Compatibility/AssetConverter.cpp:787-808" note: "Treasure hunt level of the Shareware Demo, stored under unknown/." # Tilesets. Only those a converted level names are converted. The name # is read from the level, lowercased and looked up in Source/ without # regard to case. - # ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:178, 861-864, - # Sources/Jazz2/Compatibility/AssetConverter.cpp:749, 817-844 + # ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:187, 1055-1058, + # Sources/Jazz2/Compatibility/AssetConverter.cpp:829, 916-943 - name: "labrat1n.j2t" category: game_data @@ -336,7 +336,7 @@ files: path: "jazz2/Source/labrat1n.j2t" standalone_path: "Source/labrat1n.j2t" required: false - source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:178, Sources/Jazz2/Compatibility/JJ2Level.cpp:861-864, Sources/Jazz2/Compatibility/AssetConverter.cpp:749, Sources/Jazz2/Compatibility/AssetConverter.cpp:817-844" + source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:187, Sources/Jazz2/Compatibility/JJ2Level.cpp:1055-1058, Sources/Jazz2/Compatibility/AssetConverter.cpp:829, Sources/Jazz2/Compatibility/AssetConverter.cpp:916-943" note: "Tileset named by share1.j2l, sharect2.j2l and sharetrs.j2l." - name: "psych2.j2t" @@ -345,7 +345,7 @@ files: path: "jazz2/Source/psych2.j2t" standalone_path: "Source/psych2.j2t" required: false - source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:178, Sources/Jazz2/Compatibility/JJ2Level.cpp:861-864, Sources/Jazz2/Compatibility/AssetConverter.cpp:749, Sources/Jazz2/Compatibility/AssetConverter.cpp:817-844" + source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:187, Sources/Jazz2/Compatibility/JJ2Level.cpp:1055-1058, Sources/Jazz2/Compatibility/AssetConverter.cpp:829, Sources/Jazz2/Compatibility/AssetConverter.cpp:916-943" note: "Tileset named by share2.j2l." - name: "diam2.j2t" @@ -354,11 +354,11 @@ files: path: "jazz2/Source/diam2.j2t" standalone_path: "Source/diam2.j2t" required: false - source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:178, Sources/Jazz2/Compatibility/JJ2Level.cpp:861-864, Sources/Jazz2/Compatibility/AssetConverter.cpp:749, Sources/Jazz2/Compatibility/AssetConverter.cpp:817-844" + source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:187, Sources/Jazz2/Compatibility/JJ2Level.cpp:1055-1058, Sources/Jazz2/Compatibility/AssetConverter.cpp:829, Sources/Jazz2/Compatibility/AssetConverter.cpp:916-943" note: "Tileset named by share3.j2l and sharectf.j2l." # Music, read from the user Content/Music/, then Content/Music/, then Source/ - # ref: Sources/Jazz2/ContentResolver.cpp:3307-3328 + # ref: Sources/Jazz2/ContentResolver.cpp:3527-3558 - name: "menu.j2b" category: game_data @@ -366,7 +366,7 @@ files: path: "jazz2/Source/menu.j2b" standalone_path: "Source/menu.j2b" required: false - source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:514-516, Sources/Jazz2/Compatibility/AssetConverter.cpp:777-780" + source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:514-516, Sources/Jazz2/Compatibility/AssetConverter.cpp:876-879" note: "Main menu music." - name: "bonus2.j2b" @@ -375,7 +375,7 @@ files: path: "jazz2/Source/bonus2.j2b" standalone_path: "Source/bonus2.j2b" required: false - source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:508-509, Sources/Jazz2/Compatibility/AssetConverter.cpp:777-780" + source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:508-509, Sources/Jazz2/Compatibility/AssetConverter.cpp:876-879" note: "Menu music of the reforged main menu, picked at random with bonus3.j2b." - name: "bonus3.j2b" @@ -384,7 +384,7 @@ files: path: "jazz2/Source/bonus3.j2b" standalone_path: "Source/bonus3.j2b" required: false - source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:508-509, Sources/Jazz2/Compatibility/AssetConverter.cpp:777-780" + source_ref: "Sources/Jazz2/UI/Menu/MainMenu.cpp:508-509, Sources/Jazz2/Compatibility/AssetConverter.cpp:876-879" note: "Menu music of the reforged main menu, picked at random with bonus2.j2b." - name: "intro.j2b" @@ -393,7 +393,7 @@ files: path: "jazz2/Source/intro.j2b" standalone_path: "Source/intro.j2b" required: false - source_ref: "Sources/Jazz2/UI/Cinematics.cpp:549, Sources/Main.cpp:615, Sources/Jazz2/Compatibility/AssetConverter.cpp:777-780" + source_ref: "Sources/Jazz2/UI/Cinematics.cpp:549, Sources/Main.cpp:645, Sources/Jazz2/Compatibility/AssetConverter.cpp:876-879" note: "Music of the intro cinematic." - name: "ending.j2b" @@ -402,12 +402,12 @@ files: path: "jazz2/Source/ending.j2b" standalone_path: "Source/ending.j2b" required: false - source_ref: "Sources/Jazz2/UI/Cinematics.cpp:549, Sources/Main.cpp:1098, Sources/Jazz2/Compatibility/AssetConverter.cpp:777-780" + source_ref: "Sources/Jazz2/UI/Cinematics.cpp:549, Sources/Main.cpp:1128, Sources/Jazz2/Compatibility/AssetConverter.cpp:876-879" note: "Music of the ending cinematic." # Level music. The name is read from the level, lowercased and given # the .j2b extension when it has none. - # ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:182, 871-877 + # ref: Sources/Jazz2/Compatibility/JJ2Level.cpp:191, 1065-1071 - name: "labrat.j2b" category: game_data @@ -415,7 +415,7 @@ files: path: "jazz2/Source/labrat.j2b" standalone_path: "Source/labrat.j2b" required: false - source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:182, Sources/Jazz2/Compatibility/JJ2Level.cpp:871-877, Sources/Jazz2/LevelHandler.cpp:705-711, Sources/Jazz2/ContentResolver.cpp:3307-3320" + source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:191, Sources/Jazz2/Compatibility/JJ2Level.cpp:1065-1071, Sources/Jazz2/LevelHandler.cpp:832-838, Sources/Jazz2/ContentResolver.cpp:3527-3550" note: "Music named by share1.j2l, sharect2.j2l and sharetrs.j2l." - name: "funkyg.j2b" @@ -424,7 +424,7 @@ files: path: "jazz2/Source/funkyg.j2b" standalone_path: "Source/funkyg.j2b" required: false - source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:182, Sources/Jazz2/Compatibility/JJ2Level.cpp:871-877, Sources/Jazz2/LevelHandler.cpp:705-711, Sources/Jazz2/ContentResolver.cpp:3307-3320" + source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:191, Sources/Jazz2/Compatibility/JJ2Level.cpp:1065-1071, Sources/Jazz2/LevelHandler.cpp:832-838, Sources/Jazz2/ContentResolver.cpp:3527-3550" note: "Music named by share2.j2l." - name: "diamond.j2b" @@ -433,7 +433,7 @@ files: path: "jazz2/Source/diamond.j2b" standalone_path: "Source/diamond.j2b" required: false - source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:182, Sources/Jazz2/Compatibility/JJ2Level.cpp:871-877, Sources/Jazz2/LevelHandler.cpp:705-711, Sources/Jazz2/ContentResolver.cpp:3307-3320" + source_ref: "Sources/Jazz2/Compatibility/JJ2Level.cpp:191, Sources/Jazz2/Compatibility/JJ2Level.cpp:1065-1071, Sources/Jazz2/LevelHandler.cpp:832-838, Sources/Jazz2/ContentResolver.cpp:3527-3550" note: "Music named by share3.j2l and sharectf.j2l." - name: "boss2.j2b" @@ -442,7 +442,7 @@ files: path: "jazz2/Source/boss2.j2b" standalone_path: "Source/boss2.j2b" required: false - source_ref: "Sources/Jazz2/Compatibility/EventConverter.cpp:413-423, Sources/Jazz2/Compatibility/AssetConverter.cpp:762-765, Sources/Jazz2/LevelHandler.cpp:1599-1602, Sources/Jazz2/ContentResolver.cpp:3307-3320" + source_ref: "Sources/Jazz2/Compatibility/EventConverter.cpp:413-423, Sources/Jazz2/Compatibility/AssetConverter.cpp:842-845, Sources/Jazz2/LevelHandler.cpp:1785-1788, Sources/Jazz2/ContentResolver.cpp:3527-3550" note: "Boss music. The boss activation event carries a music index that is converted to boss1.j2b or boss2.j2b and recorded as music the level uses. share3.j2l carries index 1." # Cinematics, read from Content/Cinematics/ then from Source/ @@ -453,7 +453,7 @@ files: path: "jazz2/Source/intro.j2v" standalone_path: "Source/intro.j2v" required: false - source_ref: "Sources/Jazz2/UI/Cinematics.cpp:576-593, Sources/Main.cpp:615" + source_ref: "Sources/Jazz2/UI/Cinematics.cpp:576-593, Sources/Main.cpp:645" note: "Intro cinematic. Skipped when absent." - name: "ending.j2v" @@ -462,5 +462,5 @@ files: path: "jazz2/Source/ending.j2v" standalone_path: "Source/ending.j2v" required: false - source_ref: "Sources/Jazz2/UI/Cinematics.cpp:576-593, Sources/Main.cpp:1098" + source_ref: "Sources/Jazz2/UI/Cinematics.cpp:576-593, Sources/Main.cpp:1128" note: "Ending cinematic. Skipped when absent." diff --git a/emulators/kronos.yml b/emulators/kronos.yml index f5cf0a6dc..3b8d90937 100644 --- a/emulators/kronos.yml +++ b/emulators/kronos.yml @@ -6,6 +6,7 @@ source_branch: kronos upstream: "https://github.com/FCare/Kronos" profiled_date: "2026-03-24" source_commit: "3791ffb2221fda61d70aec5cca376418caf05669" +prose_written_at: "3791ffb2221fda61d70aec5cca376418caf05669" upstream_commit: "d0384bc33aad06bfa9cf5cd308c4bd7ae6cfc814" core_version: "2.7.0" version_basis: diff --git a/emulators/lightspark.yml b/emulators/lightspark.yml index 18a5852f1..08873bdcb 100644 --- a/emulators/lightspark.yml +++ b/emulators/lightspark.yml @@ -4,7 +4,8 @@ core_classification: game_engine source: "https://github.com/lightspark/lightspark" upstream: "https://github.com/lightspark/lightspark" profiled_date: "2026-08-08" -source_commit: "6f07fd65cb95b88ff73e905bf78a1a8b1ddf6049" +source_commit: "c24accae28d677406bc5047ad7e0778a39bfd27b" +prose_written_at: "c24accae28d677406bc5047ad7e0778a39bfd27b" core_version: "0.10.0" version_basis: kind: file @@ -41,7 +42,7 @@ notes: | Fonts named by the content go through fontconfig, which answers with whatever face the host has installed: FcFontMatch then FcPatternGetString(FC_FILE) hands a path straight to nvgCreateFont (src/backends/cachedsurface.cpp:147-168). No - name, path, size or hash is fixed anywhere, README.md:27-30 marks fontconfig + name, path, size or hash is fixed anywhere, README.md:81-84 marks fontconfig itself optional, and an unmatched family leaves nanoVGFontID at -1 and falls back to the embedded face. diff --git a/emulators/openjkdf2.yml b/emulators/openjkdf2.yml index 6b741fb4f..97baf448d 100644 --- a/emulators/openjkdf2.yml +++ b/emulators/openjkdf2.yml @@ -4,7 +4,7 @@ core_classification: game_engine source: "https://github.com/shinyquagsire23/OpenJKDF2" upstream: "https://github.com/shinyquagsire23/OpenJKDF2" profiled_date: "2026-10-04" -source_commit: "798f930402525a23b94671d85b97b00390342fa0" +source_commit: "ae6ed8a81b316421f08a46719b12a4fa9e2fbed9" core_version: "0.9.9.0" version_basis: kind: file @@ -80,7 +80,7 @@ files: category: game_data required: true source_ref: "src/Main/InstallHelper.c:36 (aRequiredAssets)" - note: "Multiplayer deathmatch episode. Default -episode value in src/Main/Main.c:121." + note: "Multiplayer deathmatch episode. Default -episode value in src/Main/Main.c:133." - name: "Res1hi.gob" path: "openjkdf2/resource/Res1hi.gob" diff --git a/emulators/raine.yml b/emulators/raine.yml index df8fff733..a432b11ae 100644 --- a/emulators/raine.yml +++ b/emulators/raine.yml @@ -5,7 +5,7 @@ source: "https://github.com/zelurker/raine" upstream: "https://github.com/zelurker/raine" profiled_date: "2026-10-20" source_commit: "8e25d5d8907ae459181610912b0030c955683015" -pin_frozen: "RetroBat, the only platform that ships it, installs this release: the raine.exe of its raine.7z package (8 August 2026) reports 0.97.5 and was built on 16 March 2025, the bump its changelog records (RetroBat CHANGELOG.md:176). Later commits are not part of that package." +pin_frozen: "RetroBat, the only platform that ships it, installs this release: the raine.exe of its raine.7z package (8 August 2026) reports 0.97.5 and was built on 16 March 2025, the bump its changelog records (RetroBat CHANGELOG.md:284). The beta 8.4.0 package of 7 November 2026 is the same archive. Later commits are not part of that package." core_version: "0.97.5" version_basis: kind: file diff --git a/emulators/super3.yml b/emulators/super3.yml index 1d0c01b7b..f8341b096 100644 --- a/emulators/super3.yml +++ b/emulators/super3.yml @@ -7,6 +7,7 @@ based_on: "Supermodel 0.3a through the arm branch of DirtBagXon/model3emu-code-s author: "izzy2lost" profiled_date: "2026-10-27" source_commit: "c410f82f771b33094b8c1cdbf96ef7c74ec9cff1" +prose_written_at: "c410f82f771b33094b8c1cdbf96ef7c74ec9cff1" core_version: "1.2.2" version_basis: kind: tag diff --git a/emulators/swanstation.yml b/emulators/swanstation.yml index c15e7e7a1..7416cee81 100644 --- a/emulators/swanstation.yml +++ b/emulators/swanstation.yml @@ -5,6 +5,7 @@ source: "https://github.com/libretro/swanstation" upstream: "https://github.com/stenzek/duckstation" profiled_date: "2026-03-25" source_commit: "631f0fb31b809e0f889d7c551fe695788e39c1d3" +prose_written_at: "631f0fb31b809e0f889d7c551fe695788e39c1d3" upstream_commit: "526b4a128827ecaef037134095cd95f431b52d06" core_version: "1.0.0" version_basis: @@ -129,3 +130,15 @@ files: note: "Only the first 512 KB are read and hashed. Their md5 c02a6fbb1b27359f84e92fae8bc21316 is the first PS3 entry of the table." source_ref: "source src/core/bios.h:9, source src/core/bios.cpp:70, source src/core/bios.cpp:82-99, source src/core/bios.cpp:129" aliases: [] + + - name: "openbios.bin" + found_by: "name" + description: "OpenBIOS" + region: [world] + required: false + hle_fallback: true + size: [524288, 4194304, 4089584] + validation: [size] + note: "OpenBIOS choice of the three region BIOS options, opened from the system directory by this name with a size check only. When the file is absent or of another size the directory scan runs, and with no image found the built-in OpenBIOS copy boots (system.cpp:678-682)." + source_ref: "source src/libretro/libretro_core_options.h:106, source src/libretro/libretro_core_options.h:120, source src/libretro/libretro_core_options.h:134, source src/core/host_interface.cpp:100-133, source src/core/bios.cpp:82-105, source src/core/system.cpp:678-682" + aliases: []