fix: check six engine profiles against source

This commit is contained in:
Abdessamad Derraz committed 2026-10-04 17:03:21 +02:00
1 parent b6c57bf6ed
commit b5127cd1ac
6 files changed
+221 -154

No files matched your search

+34 -29
View File
@@ -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: <stem>-h.mvl
is tried first, then <stem>-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)"
+19 -17
View File
@@ -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."
+122 -70
View File
@@ -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/<set name>/
(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/<set name>/<location>, 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"
+20 -13
View File
@@ -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/.
+18 -17
View File
@@ -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.
+8 -8
View File
@@ -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