diff --git a/emulators/dxx-rebirth.yml b/emulators/dxx-rebirth.yml index 7e825a5d..dd75e31c 100644 --- a/emulators/dxx-rebirth.yml +++ b/emulators/dxx-rebirth.yml @@ -22,8 +22,8 @@ notes: | ~/.d1x-rebirth / ~/.d2x-rebirth on Unix) is searched for the HOG and PIG files; -hogdir on the command line adds another search path. On startup similar/main/inferno.cpp mounts descent.hog (D1) or - descent2.hog / d2demo.hog (D2) via make_PHYSFSX_ComputedPathMount at - lines 472-479. If neither hog is found the engine aborts with + descent2.hog / d2demo.hog (D2) via make_PHYSFSX_ComputedPathMount + (similar/main/inferno.cpp:471-476). If neither hog is found the engine aborts with UserError "Could not find a valid hog file". The size of the HOG picks the data edition (common/main/mission.h:58): @@ -41,11 +41,14 @@ notes: | one of the PIG graphics families (groupa.pig / alien1.pig / alien2.pig / fire.pig / ice.pig / water.pig for retail, d2demo.pig for shareware) plus the sampled sound bank (descent2.s11 for 11 kHz or descent2.s22 - for 22 kHz; piggy.cpp:79). Mac shareware additionally bundles exit.ham. + for 22 kHz; similar/main/piggy.cpp:79). Mac shareware additionally bundles exit.ham. d2x.hog is the Descent 2: Vertigo expansion mission, probed in the - MISSION_DIR by inferno.cpp:542 to toggle the "Vertigo Enhanced" title. - Movies (intro-h.mvl, robots-h.mvl, other-h.mvl or their -l low-res - counterparts) are optional; the game plays without them. + MISSION_DIR by similar/main/inferno.cpp:542 to toggle the "Vertigo Enhanced" title. + The movie libraries are named from three stems (intro, other, robots; + d2x-rebirth/main/movie.cpp:93-95) and a resolution letter: -h.mvl + is tried first, then -l.mvl (d2x-rebirth/main/movie.cpp:660, + 672-677). A library that fails to mount is logged and skipped; the + game plays without movies. Only the free PC shareware pair (desc14sw.tar.gz = descent.hog + descent.pig; d2shar10.tar.gz = d2demo.hog/pig/ham) is redistributable; @@ -54,7 +57,7 @@ notes: | files: # ------ Descent 1 shareware (free) ------ - name: descent.hog - path: dxx-rebirth/d1/shareware/descent.hog + path: descent.hog system: descent category: game_data required: false @@ -66,7 +69,7 @@ files: source_ref: "similar/main/mission.cpp:80; common/main/mission.h:67" - name: descent.pig - path: dxx-rebirth/d1/shareware/descent.pig + path: descent.pig system: descent category: game_data required: false @@ -75,7 +78,7 @@ files: # ------ Descent 1 retail ------ - name: descent.hog - path: dxx-rebirth/d1/retail/descent.hog + path: descent.hog system: descent category: game_data required: false @@ -87,7 +90,7 @@ files: source_ref: "common/main/mission.h:61-64" - name: descent.pig - path: dxx-rebirth/d1/retail/descent.pig + path: descent.pig system: descent category: game_data required: false @@ -96,7 +99,7 @@ files: # ------ Descent 2 shareware (free) ------ - name: d2demo.hog - path: dxx-rebirth/d2/shareware/d2demo.hog + path: d2demo.hog system: descent2 category: game_data required: false @@ -108,7 +111,7 @@ files: source_ref: "similar/main/mission.cpp:107-108; common/main/mission.h:71" - name: d2demo.pig - path: dxx-rebirth/d2/shareware/d2demo.pig + path: d2demo.pig system: descent2 category: game_data required: false @@ -116,7 +119,7 @@ files: source_ref: "similar/main/piggy.cpp:73" - name: d2demo.ham - path: dxx-rebirth/d2/shareware/d2demo.ham + path: d2demo.ham system: descent2 category: game_data required: false @@ -125,7 +128,7 @@ files: # ------ Descent 2 retail ------ - name: descent2.hog - path: dxx-rebirth/d2/retail/descent2.hog + path: descent2.hog system: descent2 category: game_data required: false @@ -137,7 +140,7 @@ files: source_ref: "common/main/mission.h:73-76" - name: descent2.ham - path: dxx-rebirth/d2/retail/descent2.ham + path: descent2.ham system: descent2 category: game_data required: false @@ -145,7 +148,7 @@ files: source_ref: "similar/main/piggy.cpp:74" - name: groupa.pig - path: dxx-rebirth/d2/retail/groupa.pig + path: groupa.pig system: descent2 category: game_data required: false @@ -153,7 +156,7 @@ files: source_ref: "similar/main/piggy.cpp:72; similar/main/inferno.cpp:689" - name: alien1.pig - path: dxx-rebirth/d2/retail/alien1.pig + path: alien1.pig system: descent2 category: game_data required: false @@ -161,7 +164,7 @@ files: source_ref: "similar/main/piggy.cpp:87" - name: alien2.pig - path: dxx-rebirth/d2/retail/alien2.pig + path: alien2.pig system: descent2 category: game_data required: false @@ -169,7 +172,7 @@ files: source_ref: "similar/main/piggy.cpp:88" - name: fire.pig - path: dxx-rebirth/d2/retail/fire.pig + path: fire.pig system: descent2 category: game_data required: false @@ -177,7 +180,7 @@ files: source_ref: "similar/main/piggy.cpp:89" - name: ice.pig - path: dxx-rebirth/d2/retail/ice.pig + path: ice.pig system: descent2 category: game_data required: false @@ -185,7 +188,7 @@ files: source_ref: "similar/main/piggy.cpp:91" - name: water.pig - path: dxx-rebirth/d2/retail/water.pig + path: water.pig system: descent2 category: game_data required: false @@ -193,7 +196,7 @@ files: source_ref: "similar/main/piggy.cpp:92" - name: descent2.s22 - path: dxx-rebirth/d2/retail/descent2.s22 + path: descent2.s22 system: descent2 category: game_data required: false @@ -201,7 +204,7 @@ files: source_ref: "similar/main/piggy.cpp:79" - name: descent2.s11 - path: dxx-rebirth/d2/retail/descent2.s11 + path: descent2.s11 system: descent2 category: game_data required: false @@ -209,7 +212,7 @@ files: source_ref: "similar/main/piggy.cpp:79" - name: d2x.hog - path: dxx-rebirth/d2/retail/missions/d2x.hog + path: missions/d2x.hog system: descent2 category: game_data required: false @@ -217,23 +220,25 @@ files: source_ref: "similar/main/inferno.cpp:542" - name: intro-h.mvl - path: dxx-rebirth/d2/retail/intro-h.mvl + path: intro-h.mvl system: descent2 category: game_data required: false description: "Descent 2 intro cinematic (high-res)" - source_ref: "similar/main/titles.cpp:292" + source_ref: "d2x-rebirth/main/movie.cpp:93-95 (movielib_files), 660 (name format); similar/main/titles.cpp:292 (intro.mve)" - name: robots-h.mvl - path: dxx-rebirth/d2/retail/robots-h.mvl + path: robots-h.mvl system: descent2 category: game_data required: false - description: "Descent 2 robot briefings (high-res); recommended for single-player" + description: "Descent 2 robot briefings (high-res)" + source_ref: "d2x-rebirth/main/movie.cpp:93-95 (movielib_files), 660 (name format)" - name: other-h.mvl - path: dxx-rebirth/d2/retail/other-h.mvl + path: other-h.mvl system: descent2 category: game_data required: false description: "Descent 2 misc cinematics (high-res)" + source_ref: "d2x-rebirth/main/movie.cpp:93-95 (movielib_files), 660 (name format)" diff --git a/emulators/openjk.yml b/emulators/openjk.yml index bb5ddd50..1bbc3216 100644 --- a/emulators/openjk.yml +++ b/emulators/openjk.yml @@ -19,7 +19,7 @@ notes: | openjk JKA MP, built from codemp/ with BuildMPEngine openjo_sp JK2 SP, built from code/ with BuildJK2SPEngine (same translation units, JK2_MODE defined, - CMakeLists.txt:450-453) + code/CMakeLists.txt:450-453) BASEGAME = "base" (code/qcommon/q_shared.h:86). FS_Startup( BASEGAME ) adds base/ from cdpath, basepath, apppath, homepath via @@ -32,19 +32,21 @@ notes: | Hard engine dependency: default.cfg (SP) or mpdefault.cfg (MP) must be readable through the virtual filesystem, otherwise FS_Startup aborts with Com_Error( ERR_FATAL, "Couldn't load default.cfg" ) at - code/qcommon/files.cpp:3002,3041 and codemp/qcommon/files.cpp:4040,4089. + code/qcommon/files.cpp:3002-3003,3041 and + codemp/qcommon/files.cpp:4039-4040,4089. Both config files live inside the retail assets0.pk3. - Pure-server pak reference list uses NUM_ID_PAKS = 9 - (codemp/qcommon/qcommon.h:567, codemp/qcommon/files.cpp:3169): the MP - client treats base/assets0.pk3 through base/assets8.pk3 as official id - paks and refuses to auto-download them, but this only governs server - compatibility, not file requirement. + FS_idPak matches base/assets0 through base/assets8 (NUM_ID_PAKS = 9, + codemp/qcommon/qcommon.h:567, codemp/qcommon/files.cpp:3169-3170). The + MP client never auto-downloads a pak with one of those names + (codemp/qcommon/files.cpp:3241) and never offers one for download + (codemp/qcommon/files.cpp:4447). The check does not make any of them + required. files: # ================================================================ # Jedi Academy retail (base/, assets0.pk3 through assets3.pk3) - # Shared by openjk_sp (SP) and openjk (MP) — same base/ directory. + # Shared by openjk_sp (SP) and openjk (MP), same base/ directory. # ================================================================ - name: "assets0.pk3" @@ -52,15 +54,15 @@ files: system: jediacademy path: "base/assets0.pk3" required: true - source_ref: "code/qcommon/files.cpp:3002 (default.cfg ERR_FATAL), codemp/qcommon/files.cpp:4040 (mpdefault.cfg ERR_FATAL), codemp/qcommon/files.cpp:3169 (NUM_ID_PAKS index 0)" - note: "Carries default.cfg and mpdefault.cfg — the only files the SP and MP engines refuse to start without. Also holds the base menus, shaders, strings and the cgamex86.dll / jagamex86.dll VMs." + source_ref: "code/qcommon/files.cpp:3002-3003 (default.cfg ERR_FATAL), codemp/qcommon/files.cpp:4039-4040 (mpdefault.cfg ERR_FATAL), codemp/qcommon/files.cpp:3169-3170 (NUM_ID_PAKS index 0)" + note: "Carries default.cfg and mpdefault.cfg, the only files the SP and MP engines refuse to start without." - name: "assets1.pk3" category: game_data system: jediacademy path: "base/assets1.pk3" required: false - source_ref: "codemp/qcommon/files.cpp:3169 (NUM_ID_PAKS index 1)" + source_ref: "codemp/qcommon/files.cpp:3169-3170 (NUM_ID_PAKS index 1)" note: "Retail JKA base content (audio). Loader scans the directory, no hard reference." - name: "assets2.pk3" @@ -68,7 +70,7 @@ files: system: jediacademy path: "base/assets2.pk3" required: false - source_ref: "codemp/qcommon/files.cpp:3169 (NUM_ID_PAKS index 2)" + source_ref: "codemp/qcommon/files.cpp:3169-3170 (NUM_ID_PAKS index 2)" note: "Retail JKA base content (video/cinematics)." - name: "assets3.pk3" @@ -76,7 +78,7 @@ files: system: jediacademy path: "base/assets3.pk3" required: false - source_ref: "codemp/qcommon/files.cpp:3169 (NUM_ID_PAKS index 3)" + source_ref: "codemp/qcommon/files.cpp:3169-3170 (NUM_ID_PAKS index 3)" note: "Retail JKA patch 1.01 content." # ================================================================ @@ -90,7 +92,7 @@ files: system: jediknight2 path: "base/assets0.pk3" required: true - source_ref: "code/qcommon/files.cpp:3002 (default.cfg ERR_FATAL, built with JK2_MODE via CMakeLists.txt:450-453)" + source_ref: "code/qcommon/files.cpp:3002-3003 (default.cfg ERR_FATAL), code/CMakeLists.txt:450-453 (JK2_MODE build)" note: "Retail JK2 base archive. Carries default.cfg; openjo_sp aborts without it." - name: "assets1.pk3" @@ -98,7 +100,7 @@ files: system: jediknight2 path: "base/assets1.pk3" required: false - source_ref: "code/qcommon/files.cpp:2770 (Sys_ListFiles(curpath, \".pk3\", ...))" + source_ref: "code/qcommon/files.cpp:2770 (Sys_ListFiles over .pk3)" note: "Retail JK2 base content." - name: "assets2.pk3" @@ -106,7 +108,7 @@ files: system: jediknight2 path: "base/assets2.pk3" required: false - source_ref: "code/qcommon/files.cpp:2770 (Sys_ListFiles(curpath, \".pk3\", ...))" + source_ref: "code/qcommon/files.cpp:2770 (Sys_ListFiles over .pk3)" note: "Retail JK2 base content." - name: "assets5.pk3" @@ -114,5 +116,5 @@ files: system: jediknight2 path: "base/assets5.pk3" required: false - source_ref: "code/qcommon/files.cpp:2770 (Sys_ListFiles(curpath, \".pk3\", ...))" + source_ref: "code/qcommon/files.cpp:2770 (Sys_ListFiles over .pk3)" note: "Retail JK2 patch 1.04 content." diff --git a/emulators/rust_dos.yml b/emulators/rust_dos.yml index 912c1db4..33956a0d 100644 --- a/emulators/rust_dos.yml +++ b/emulators/rust_dos.yml @@ -5,6 +5,7 @@ source: "https://git.libretro.com/libretro/rust-dos" upstream: "https://github.com/dividebysandwich/rust-dos" profiled_date: "2026-10-04" source_commit: "12d8fe849f737b92d0b03b4db79cacc7ba898fab" +upstream_commit: "12d8fe849f737b92d0b03b4db79cacc7ba898fab" core_version: "1.3.0" display_name: "DOS (Rust-DOS)" cores: @@ -20,70 +21,70 @@ notes: | libretro core declares supports_no_game = "true" with no firmware entries (libretro/rust_dos_libretro.info). - Three optional firmware families enhance accuracy for games written - for specific sound hardware. All three have HLE / software fallbacks - that keep audio working without the ROMs. + Three optional firmware families serve games written for specific + sound hardware. None is needed with the default settings. - AWE32 sample ROM (awe32.raw): the Creative Sound Blaster AWE32's 1 MB sample ROM. src/awe32/rom.rs:13-17 declares FILE_NAME and the - required SHA-256. Without it, the EMU8000 synth still plays what - programs load into its sample RAM but ROM sounds are silent - (src/awe32/rom.rs:4-6). + SHA-256 the built-in download has to match (src/awe32/rom.rs:88-93). + A file found on disk is only checked for its length, 1 MB or the + two bytes shorter AWE-DUMP image (src/awe32/rom.rs:68-71). Without + it, the EMU8000 synth still plays what programs load into its + sample RAM but ROM sounds are silent (src/awe32/rom.rs:4-6, + src/sound.rs:26-38). - Roland Sound Canvas ROMs: a Rust port of Nuked-SC55 covers the SC-55, SC-55mkII, SC-55ST, CM-300/SCC-1, SCB-55, RLP-3237, SC-155 - and SC-155mkII. src/sc55/rom.rs:131-295 lists 13 romsets, each 4-5 - ROM files identified by the SHA-256 of their contents whatever the - filenames are. The settings window can download eight of them from - the Internet Archive item roland-sc-55-series-roms - (src/sc55/download.rs:12-24, 39). Without a complete set, MIDI - falls back to the OPL3 / soundfont / GUS synths - (src/sc55/mod.rs:116-120). + and SC-155mkII. src/sc55/rom.rs:143-295 lists 14 romsets of 3 to 5 + ROM files, each identified by the SHA-256 of its contents whatever + the file is called. The search covers sc55-roms/ and + soundcanvas-roms/ with their subfolders and zip archives + (src/sc55/rom.rs:352-362). The settings window can download eight + of the sets from the Internet Archive item + roland-sc-55-series-roms into sc55-roms// + (src/sc55/download.rs:12-24, 39, 63-82). With midisynth=sc55 and no + complete set, the MPU-401 gets no synthesizer and a warning is + logged (src/sc55/mod.rs:112-122, src/sound.rs:99-106). - Roland MT-32 ROMs: played by munt (libmt32emu) loaded at runtime - (src/mt32.rs:1-6). munt identifies the control+PCM pair by its own - SHA-1 table internally; rust-dos does not declare hashes. Without - them (or without libmt32emu on the host), midisynth=mt32 fails and - the other MIDI backends take over. + (src/mt32.rs:1-6). munt identifies the ROMs from their contents; + rust-dos declares no hashes and picks a control and PCM pair by + munt's ids (src/mt32.rs:254-278). Without them (or without + libmt32emu on the host), midisynth=mt32 fails with a warning and + the MPU-401 gets no synthesizer (src/sound.rs:94-98). - The libretro frontend adds its system directory to each loader's - search path (libretro/src/core.rs:148-157), so BIOS files sit next - to the core like any other RetroArch firmware. + The libretro frontend adds its system directory and the rust-dos + folder in it to the AWE32 and Sound Canvas search paths + (libretro/src/core.rs:148-157). files: - name: "awe32.raw" system: dos required: false - hle_fallback: true category: bios size: 1048576 # 1 MB (2 * ROM_WORDS, 512 Ki 16-bit words) sha256: "4e143b94f758734f594ded78f4e5115635975c16fa37fabeae0baa4938ca710e" - validation: [size, sha256] + validation: [size] description: "Creative Sound Blaster AWE32 sample ROM for the EMU8000 synth" - source_ref: "src/awe32/rom.rs:13 (FILE_NAME), 15-17 (DOWNLOAD_URL + SHA256), 60-63 (parse size check)" + source_ref: "src/awe32/rom.rs:13 (FILE_NAME), 16-17 (DOWNLOAD_URL + SHA256), 68-71 (parse size check), 88-93 (download hash check)" - # Sound Canvas ROM sets. Each entry is a directory under sc55-roms/ - # containing N ROM files identified by content hash (any filenames). - # Only the 8 sets rust-dos can download from the Internet Archive - # (src/sc55/download.rs:12-24) are listed here; the other 5 in the - # ROMSETS table (st-v1.01, sc155mk2-v1.01, cm300-v1.10, cm300-v1.20, - # scb55-v2.00, rlp3237-v2.01) share ROMs with these sets and are - # recognized when their files are present. + # Sound Canvas ROM sets. The code names no file: each entry is labelled + # sc55-roms//, the folder the built-in download + # writes to. A ROM shared by several sets is listed once, except ROM1 + # of mk1-v1.20 and mk1-v1.21, listed under both. - name: "sc55-roms/mk1-v1.21/rom1.bin" system: dos required: false - hle_fallback: true category: bios sha256: "7e1bacd1d7c62ed66e465ba05597dcd60dfc13fc23de0287fdbce6cf906c6544" validation: [sha256] description: "Roland SC-55 v1.21 program ROM 1 (H8/532 code), auto-preferred set" - source_ref: "src/sc55/rom.rs:213-220 (mk1-v1.21), 299 (PREFERRED)" + source_ref: "src/sc55/rom.rs:214, 299 (PREFERRED)" - name: "sc55-roms/mk1-v1.21/rom2.bin" system: dos required: false - hle_fallback: true category: bios sha256: "effc6132d68f7e300aaef915ccdd08aba93606c22d23e580daf9ea6617913af1" validation: [sha256] @@ -93,77 +94,69 @@ files: - name: "sc55-roms/mk1-v1.21/wave1.bin" system: dos required: false - hle_fallback: true category: bios sha256: "5655509a531804f97ea2d7ef05b8fec20ebf46216b389a84c44169257a4d2007" validation: [sha256] - description: "Roland SC-55 Wave1 PCM (shared across all SC-55 mk1 versions)" - source_ref: "src/sc55/rom.rs:128 (MK1_WAVE1), 216" + description: "Roland SC-55 Wave1 PCM (shared across all SC-55 mk1 versions and SC-155)" + source_ref: "src/sc55/rom.rs:135 (MK1_WAVE1), 216" - name: "sc55-roms/mk1-v1.21/wave2.bin" system: dos required: false - hle_fallback: true category: bios sha256: "c655b159792d999b90df9e4fa782cf56411ba1eaa0bb3ac2bdaf09e1391006b1" validation: [sha256] description: "Roland SC-55 Wave2 PCM" - source_ref: "src/sc55/rom.rs:129 (MK1_WAVE2), 217" + source_ref: "src/sc55/rom.rs:136 (MK1_WAVE2), 217" - name: "sc55-roms/mk1-v1.21/wave3.bin" system: dos required: false - hle_fallback: true category: bios sha256: "334b2d16be3c2362210fdbec1c866ad58badeb0f84fd9bf5d0ac599baf077cc2" validation: [sha256] description: "Roland SC-55 Wave3 PCM" - source_ref: "src/sc55/rom.rs:130 (MK1_WAVE3), 218" + source_ref: "src/sc55/rom.rs:137 (MK1_WAVE3), 218" - name: "sc55-roms/mk1-v1.00/rom1.bin" system: dos required: false - hle_fallback: true category: bios sha256: "b4ecf44bc0520322b0d114d397951d3bf92ca6fa51d0d27b2407df58a6be2efe" validation: [sha256] description: "Roland SC-55 v1.00 program ROM 1" - source_ref: "src/sc55/rom.rs:174" + source_ref: "src/sc55/rom.rs:181" - name: "sc55-roms/mk1-v1.00/rom2.bin" system: dos required: false - hle_fallback: true category: bios sha256: "014e2e21ea30de7a1e4f1cdea14dd9a719960535e257a9e40e98dbb1a5870226" validation: [sha256] description: "Roland SC-55 v1.00 program ROM 2" - source_ref: "src/sc55/rom.rs:175" + source_ref: "src/sc55/rom.rs:182" - name: "sc55-roms/mk1-v1.10/rom1.bin" system: dos required: false - hle_fallback: true category: bios sha256: "2fe88ec39f3ef4b1de8cdf74527419467975c47f7aacfcd07605e01d54bd89b5" validation: [sha256] description: "Roland SC-55 v1.10 program ROM 1" - source_ref: "src/sc55/rom.rs:187" + source_ref: "src/sc55/rom.rs:192" - name: "sc55-roms/mk1-v1.10/rom2.bin" system: dos required: false - hle_fallback: true category: bios sha256: "ec064d6c4fc70ec990911089d966043cb819fba0e26e6f6afdd0a05e5301b91b" validation: [sha256] description: "Roland SC-55 v1.10 program ROM 2" - source_ref: "src/sc55/rom.rs:188" + source_ref: "src/sc55/rom.rs:193" - name: "sc55-roms/mk1-v1.20/rom1.bin" system: dos required: false - hle_fallback: true category: bios sha256: "7e1bacd1d7c62ed66e465ba05597dcd60dfc13fc23de0287fdbce6cf906c6544" validation: [sha256] @@ -173,7 +166,6 @@ files: - name: "sc55-roms/mk1-v1.20/rom2.bin" system: dos required: false - hle_fallback: true category: bios sha256: "22ce6ca59e6332143b335525e81fab501ea6fccce4b7e2f3bfc2cc8bf6612ff6" validation: [sha256] @@ -183,7 +175,6 @@ files: - name: "sc55-roms/mk1-v2.00/rom1.bin" system: dos required: false - hle_fallback: true category: bios sha256: "24a65c97cdbaa847d6f59193523ce63c73394b4b693a6517ee79441f2fb8a3ee" validation: [sha256] @@ -193,7 +184,6 @@ files: - name: "sc55-roms/mk1-v2.00/rom2.bin" system: dos required: false - hle_fallback: true category: bios sha256: "f5dac35d450ab986570a209dff3816eec75cee669e161f54b51224b467dd0bcc" validation: [sha256] @@ -203,57 +193,51 @@ files: - name: "sc55-roms/mk2-v1.01/rom1.bin" system: dos required: false - hle_fallback: true category: bios sha256: "8a1eb33c7599b746c0c50283e4349a1bb1773b5c0ec0e9661219bf6c067d2042" validation: [sha256] description: "Roland SC-55mkII v1.01 H8/532 ROM 1 (shared with SC-55ST and SC-155mkII)" - source_ref: "src/sc55/rom.rs:125 (MK2_ROM1), 140" + source_ref: "src/sc55/rom.rs:131 (MK2_ROM1), 148" - name: "sc55-roms/mk2-v1.01/rom2.bin" system: dos required: false - hle_fallback: true category: bios sha256: "a4c9fd821059054c7e7681d61f49ce6f42ed2fe407a7ec1ba0dfdc9722582ce0" validation: [sha256] description: "Roland SC-55mkII v1.01 program ROM 2 (shared with SC-155mkII)" - source_ref: "src/sc55/rom.rs:141" + source_ref: "src/sc55/rom.rs:149" - name: "sc55-roms/mk2-v1.01/smrom.bin" system: dos required: false - hle_fallback: true category: bios sha256: "b0b5f865a403f7308b4be8d0ed3ba2ed1c22db881b8a8326769dea222f6431d8" validation: [sha256] description: "Roland SC-55mkII sub-MCU (M37450) ROM (shared with SC-55ST and SC-155mkII)" - source_ref: "src/sc55/rom.rs:126 (MK2_SMROM), 142" + source_ref: "src/sc55/rom.rs:132 (MK2_SMROM), 150" - name: "sc55-roms/mk2-v1.01/wave1.bin" system: dos required: false - hle_fallback: true category: bios sha256: "c6429e21b9b3a02fbd68ef0b2053668433bee0bccd537a71841bc70b8874243b" validation: [sha256] - description: "Roland SC-55mkII Wave1 PCM (shared with SC-55ST, SC-155mkII, SCB-55, RLP-3237)" - source_ref: "src/sc55/rom.rs:127 (MK2_WAVE1), 143" + description: "Roland SC-55mkII Wave1 PCM (shared with SC-55ST, SC-155mkII, SCB-55)" + source_ref: "src/sc55/rom.rs:133 (MK2_WAVE1), 151" - name: "sc55-roms/mk2-v1.01/wave2.bin" system: dos required: false - hle_fallback: true category: bios sha256: "5b753f6cef4cfc7fcafe1430fecbb94a739b874e55356246a46abe24097ee491" validation: [sha256] description: "Roland SC-55mkII Wave2 PCM (shared with SC-55ST, SC-155mkII, SCB-55 Wave3, CM-300 Wave3)" - source_ref: "src/sc55/rom.rs:128 (MK2_WAVE2), 144" + source_ref: "src/sc55/rom.rs:134 (MK2_WAVE2), 152" - name: "sc55-roms/sc155-rev1/rom2.bin" system: dos required: false - hle_fallback: true category: bios sha256: "ceb7b9d3d9d264efe5dc3ba992b94f3be35eb6d0451abc574b6f6b5dc3db237b" validation: [sha256] @@ -263,7 +247,6 @@ files: - name: "sc55-roms/cm300-v1.30/rom1.bin" system: dos required: false - hle_fallback: true category: bios sha256: "9ec66abb5231b6c6f46f48b33d5412703041037d69a6803626ac402f25552af2" validation: [sha256] @@ -273,7 +256,6 @@ files: - name: "sc55-roms/cm300-v1.30/rom2.bin" system: dos required: false - hle_fallback: true category: bios sha256: "f89442734fdebacae87c7707c01b2d7fdbf5940abae738987aee912d34b5882e" validation: [sha256] @@ -283,19 +265,89 @@ files: - name: "sc55-roms/cm300-v1.30/wave1.bin" system: dos required: false - hle_fallback: true category: bios sha256: "40c093cbfb4441a5c884e623f882a80b96b2527f9fd431e074398d206c0f073d" validation: [sha256] description: "Roland CM-300 Wave1 PCM (shared with CM-300 v1.10 and v1.20)" - source_ref: "src/sc55/rom.rs:132 (CM300_WAVE1), 260" + source_ref: "src/sc55/rom.rs:138 (CM300_WAVE1), 260" - name: "sc55-roms/cm300-v1.30/wave2.bin" system: dos required: false - hle_fallback: true category: bios sha256: "9bbbcac747bd6f7a2693f4ef10633db8ab626f17d3d9c47c83c3839d4dd2f613" validation: [sha256] description: "Roland CM-300 Wave2 PCM" - source_ref: "src/sc55/rom.rs:133 (CM300_WAVE2), 261" + source_ref: "src/sc55/rom.rs:139 (CM300_WAVE2), 261" + + - name: "sc55-roms/st-v1.01/rom2.bin" + system: dos + required: false + category: bios + sha256: "03517ac0a3b1ad8b69a1a4ee045e0c21da0170027bd1ba1bd3cf72cd017bbe6a" + validation: [sha256] + description: "Roland SC-55ST v1.01 program ROM 2 (ROM1, sub-MCU and wave ROMs shared with SC-55mkII)" + source_ref: "src/sc55/rom.rs:171" + + - name: "sc55-roms/cm300-v1.10/rom1.bin" + system: dos + required: false + category: bios + sha256: "72ed35481efbf25b3c492b83183655d17a3b266ecb30ffbc6dc977e6a8d261b2" + validation: [sha256] + description: "Roland CM-300 / SCC-1 v1.10 program ROM 1 (shared with v1.20)" + source_ref: "src/sc55/rom.rs:236" + + - name: "sc55-roms/cm300-v1.10/rom2.bin" + system: dos + required: false + category: bios + sha256: "0283d32e6993a0265710c4206463deb937b0c3a4819b69f471a0eca5865719f9" + validation: [sha256] + description: "Roland CM-300 / SCC-1 v1.10 program ROM 2" + source_ref: "src/sc55/rom.rs:237" + + - name: "sc55-roms/cm300-v1.20/rom2.bin" + system: dos + required: false + category: bios + sha256: "fef1acb1969525d66238be5e7811108919b07a4df5fbab656ad084966373483f" + validation: [sha256] + description: "Roland CM-300 / SCC-1 v1.20 program ROM 2" + source_ref: "src/sc55/rom.rs:248" + + - name: "sc55-roms/scb55-v2.00/rom1.bin" + system: dos + required: false + category: bios + sha256: "00df835d3f97fc8b0059db63f36d608eec2bfd1f51ad54eb5af52c868c1111b1" + validation: [sha256] + description: "Roland SCB-55 v2.00 program ROM 1 (shared with RLP-3237)" + source_ref: "src/sc55/rom.rs:269" + + - name: "sc55-roms/scb55-v2.00/rom2.bin" + system: dos + required: false + category: bios + sha256: "541be4d0b1ef0d07bb042ba67ffd099c8a5d746aac4cd24ce8842c034379f213" + validation: [sha256] + description: "Roland SCB-55 v2.00 program ROM 2" + source_ref: "src/sc55/rom.rs:270" + + - name: "sc55-roms/rlp3237-v2.01/rom2.bin" + system: dos + required: false + category: bios + sha256: "e0a3d6d9b05e82374a0d289901273ce560ce1ead86459c75f844158b32d204a9" + validation: [sha256] + description: "Roland RLP-3237 v2.01 program ROM 2" + source_ref: "src/sc55/rom.rs:280" + + - name: "sc55-roms/rlp3237-v2.01/wave1.bin" + system: dos + required: false + category: bios + sha256: "dae2a8bc0fd3bcaf3f5e3ab6c4c6fd30e2663bf26ca17afe52924874c0afc4e2" + validation: [sha256] + description: "Roland RLP-3237 Wave1 PCM" + source_ref: "src/sc55/rom.rs:281" diff --git a/emulators/sonic-mania.yml b/emulators/sonic-mania.yml index de2fac7f..2731de8a 100644 --- a/emulators/sonic-mania.yml +++ b/emulators/sonic-mania.yml @@ -1,8 +1,8 @@ emulator: Sonic Mania Decompilation type: standalone core_classification: game_engine -source: "https://github.com/Rubberduckycooly/Sonic-Mania-Decompilation" -upstream: "https://github.com/Rubberduckycooly/RSDKv5-Decompilation" +source: "https://github.com/RSDKModding/Sonic-Mania-Decompilation" +upstream: "https://github.com/RSDKModding/RSDKv5-Decompilation" source_commit: "9dc699428420d752af9767bdb13f585ee0881bc0" upstream_commit: "191d7aea6c262d891244172a8609ac69fbfd7571" profiled_date: "2026-10-04" @@ -13,26 +13,33 @@ systems: [sonic-mania] notes: | Full RSDKv5 decompilation of Sonic Mania (Christian Whitehead / Headcannon, 2017). Links against the shared RSDKv5-Decompilation engine; game code - lives in SonicMania/ and the engine in dependencies/RSDKv5. + lives in SonicMania/ and the engine in the dependencies/RSDKv5 + submodule, the upstream repository. The paths below are relative to + that repository. - LoadDataPack reads an RSDK v5 container with a 4-byte "RSDK" signature, - then a version byte and a 16-bit file count followed by MD5+offset+size - per entry. The signature is the only validation; the engine never hashes - the full pack. - ref: dependencies/RSDKv5/RSDKv5/RSDK/Core/Reader.cpp:107-164 (LoadDataPack) + LoadDataPack reads an RSDK v5 container: a 4-byte "RSDK" signature, + the letter v and a version byte, a 16-bit file count, then an MD5 name + hash, offset and size per entry. The signature is the only validation; + the engine never hashes the full pack. + ref: RSDKv5/RSDK/Core/Reader.cpp:107-164 (LoadDataPack) Settings.ini key Game:dataFile overrides the default "Data.rsdk". If the ini is absent the engine still calls LoadDataPack("Data.rsdk"). - ref: dependencies/RSDKv5/RSDKv5/RSDK/User/Core/UserCore.cpp:313,557 + ref: RSDKv5/RSDK/User/Core/UserCore.cpp:313,557 + + When no pack opens, LoadFile reads the same paths as loose files under + Data/ and the dev menu is turned on. + ref: RSDKv5/RSDK/Core/Reader.cpp:303-309, + RSDKv5/RSDK/User/Core/UserCore.cpp:312-314 files: - name: "Data.rsdk" category: game_data system: sonic-mania required: true - source_ref: "dependencies/RSDKv5/RSDKv5/RSDK/Core/Reader.cpp:107 (LoadDataPack), User/Core/UserCore.cpp:313" + source_ref: "RSDKv5/RSDK/User/Core/UserCore.cpp:313 (Game:dataFile default), RSDKv5/RSDK/User/Core/UserCore.cpp:557 (no Settings.ini), RSDKv5/RSDK/Core/Reader.cpp:107-121 (LoadDataPack signature check)" note: | Sonic Mania game assets (RSDK v5 container, "RSDK" signature). Shipped - inside the official Sonic Mania release (Steam, Epic, consoles). The - engine aborts gameplay if the pack cannot be opened; without it only - the dev-menu error path runs. + inside the official Sonic Mania release (Steam, Epic, consoles). + Without the pack the engine only finds the game if the same files + sit extracted under Data/. diff --git a/emulators/sonic2013.yml b/emulators/sonic2013.yml index 2c047183..ac4c8ff6 100644 --- a/emulators/sonic2013.yml +++ b/emulators/sonic2013.yml @@ -1,8 +1,8 @@ emulator: Sonic 1 & 2 (2013) Decompilation type: standalone core_classification: game_engine -source: "https://github.com/Rubberduckycooly/Sonic-1-2-2013-Decompilation" -upstream: "https://github.com/Rubberduckycooly/Sonic-1-2-2013-Decompilation" +source: "https://github.com/RSDKModding/RSDKv4-Decompilation" +upstream: "https://github.com/RSDKModding/RSDKv4-Decompilation" source_commit: "a7f5195e21fdad7b75e4587e249013feeea9e6f3" core_version: "1.3.3" profiled_date: "2026-10-04" @@ -17,37 +17,38 @@ notes: | the loaded data pack (gameWindowText "Sonic 1" or "Sonic 2"). ref: RSDKv4/RetroEngine.cpp:423, RSDKv4/ModAPI.cpp:428 - CheckRSDKFile just fopen()s the data pack; there is no signature or - checksum test. The engine falls back to a loose Data/ + Bytecode/ tree - if the pack is absent, and writes a usage.txt that asks for a pack named - Engine.dataFile[0] (default "Data.rsdk"). - ref: RSDKv4/RetroEngine.cpp:296-331, RSDKv4/Userdata.cpp:251-263, - RSDKv4/RetroEngine.cpp:484-521 + CheckRSDKFile opens the data pack and compares its first six bytes to + the "RSDKvB" signature; there is no checksum test. The engine falls + back to a loose Data/ + Bytecode/ tree if the pack is absent. When + GameConfig.bin cannot be loaded either way it writes a usage.txt that + asks for a pack named Engine.dataFile[0] (default "Data.rsdk"). + ref: RSDKv4/Reader.cpp:25-102, RSDKv4/RetroEngine.cpp:296-331, + RSDKv4/Userdata.cpp:251-263, RSDKv4/RetroEngine.cpp:483-520 Up to four packs can be mounted (DataFile, DataFile2..4 in the Dev section of settings.ini); the extras default to Data2.rsdk, Data3.rsdk, Data4.rsdk once declared. - ref: RSDKv4/RetroEngine.hpp:373, RSDKv4/Userdata.cpp:396-408 + ref: RSDKv4/Reader.hpp:38, RSDKv4/RetroEngine.cpp:324-331, + RSDKv4/Userdata.cpp:396-408 files: - name: "Data.rsdk" category: game_data system: sonic-1-2013 required: true - source_ref: "RSDKv4/RetroEngine.cpp:321 (CheckRSDKFile(\"Data.rsdk\")), RSDKv4/Userdata.cpp:252" + source_ref: "RSDKv4/Userdata.cpp:251-252 (default name), RSDKv4/Userdata.cpp:396-397 (Dev:DataFile), RSDKv4/RetroEngine.cpp:316-321 (CheckRSDKFile call), RSDKv4/Reader.cpp:38-46 (signature check)" note: | Sonic the Hedgehog (2013) assets. Shipped with the official Sonic - Origins release and the delisted iOS/Android apps. Engine opens the - file with fopen(); content identity is read from the embedded - GameConfig.bin, not the pack hash. + Origins release and the delisted iOS/Android apps. The engine checks + the six-byte signature only; content identity is read from the + embedded GameConfig.bin, not the pack hash. - name: "Data.rsdk" category: game_data system: sonic-2-2013 required: true - source_ref: "RSDKv4/RetroEngine.cpp:321 (CheckRSDKFile(\"Data.rsdk\")), RSDKv4/Userdata.cpp:252" + source_ref: "RSDKv4/Userdata.cpp:251-252 (default name), RSDKv4/Userdata.cpp:396-397 (Dev:DataFile), RSDKv4/RetroEngine.cpp:316-321 (CheckRSDKFile call), RSDKv4/Reader.cpp:38-46 (signature check)" note: | Sonic the Hedgehog 2 (2013) assets. Shipped with the official Sonic - Origins release and the delisted iOS/Android apps. Same engine - filename as Sonic 1; the launcher selects which pack sits next to - the binary at run time. + Origins release and the delisted iOS/Android apps. Same default + file name as Sonic 1; Dev:DataFile in settings.ini names another. diff --git a/emulators/soniccd.yml b/emulators/soniccd.yml index 0fee1209..1eaf6735 100644 --- a/emulators/soniccd.yml +++ b/emulators/soniccd.yml @@ -1,8 +1,8 @@ emulator: Sonic CD Decompilation type: standalone core_classification: game_engine -source: "https://github.com/Rubberduckycooly/Sonic-CD-11-Decompilation" -upstream: "https://github.com/Rubberduckycooly/Sonic-CD-11-Decompilation" +source: "https://github.com/RSDKModding/RSDKv3-Decompilation" +upstream: "https://github.com/RSDKModding/RSDKv3-Decompilation" source_commit: "a99e16ad15f4f824c1b9f96a61b3f8576ab648e2" profiled_date: "2026-10-04" display_name: "Sonic CD (RSDKv3 Decomp)" @@ -14,11 +14,11 @@ notes: | mobile/Steam port). Single binary; one data pack per install. CheckRSDKFile only fopen()s the pack; there is no signature test. If - the file is absent the engine falls back to a loose Data/ + Bytecode/ - tree and, on first run, writes usage.txt describing the layout it - wants. - ref: RSDKv3/Reader.cpp:26-87 (CheckRSDKFile), RSDKv3/RetroEngine.cpp:280-321, - RSDKv3/RetroEngine.cpp:328-363 + the file is absent the engine falls back to a loose Data/ tree. When + GameConfig.bin cannot be loaded either way it writes usage.txt + describing the layout it wants. + ref: RSDKv3/Reader.cpp:26-87 (CheckRSDKFile), RSDKv3/RetroEngine.cpp:283-321, + RSDKv3/RetroEngine.cpp:329-366 settings.ini key Dev:DataFile overrides the default "Data.rsdk". ref: RSDKv3/Userdata.cpp:352-353,467-468, RSDKv3/RetroEngine.hpp:437 @@ -34,7 +34,7 @@ files: category: game_data system: soniccd required: true - source_ref: "RSDKv3/RetroEngine.cpp:305 (CheckRSDKFile(dest)), RSDKv3/Userdata.cpp:352" + source_ref: "RSDKv3/Userdata.cpp:352 (default name), RSDKv3/Userdata.cpp:467-468 (Dev:DataFile), RSDKv3/RetroEngine.cpp:302-305 (CheckRSDKFile call)" note: | Sonic CD assets (RSDK v3 container). Shipped with the official Sonic CD release (Steam, iOS, Android, Sonic Origins). The engine