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 ~/.d1x-rebirth / ~/.d2x-rebirth on Unix) is searched for the HOG and
PIG files; -hogdir on the command line adds another search path. On PIG files; -hogdir on the command line adds another search path. On
startup similar/main/inferno.cpp mounts descent.hog (D1) or startup similar/main/inferno.cpp mounts descent.hog (D1) or
descent2.hog / d2demo.hog (D2) via make_PHYSFSX_ComputedPathMount at descent2.hog / d2demo.hog (D2) via make_PHYSFSX_ComputedPathMount
lines 472-479. If neither hog is found the engine aborts with (similar/main/inferno.cpp:471-476). If neither hog is found the engine aborts with
UserError "Could not find a valid hog file". UserError "Could not find a valid hog file".
The size of the HOG picks the data edition (common/main/mission.h:58): 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 one of the PIG graphics families (groupa.pig / alien1.pig / alien2.pig
/ fire.pig / ice.pig / water.pig for retail, d2demo.pig for shareware) / 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 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 d2x.hog is the Descent 2: Vertigo expansion mission, probed in the
MISSION_DIR by inferno.cpp:542 to toggle the "Vertigo Enhanced" title. MISSION_DIR by similar/main/inferno.cpp:542 to toggle the "Vertigo Enhanced" title.
Movies (intro-h.mvl, robots-h.mvl, other-h.mvl or their -l low-res The movie libraries are named from three stems (intro, other, robots;
counterparts) are optional; the game plays without them. 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 + Only the free PC shareware pair (desc14sw.tar.gz = descent.hog +
descent.pig; d2shar10.tar.gz = d2demo.hog/pig/ham) is redistributable; descent.pig; d2shar10.tar.gz = d2demo.hog/pig/ham) is redistributable;
@@ -54,7 +57,7 @@ notes: |
files: files:
# ------ Descent 1 shareware (free) ------ # ------ Descent 1 shareware (free) ------
- name: descent.hog - name: descent.hog
path: dxx-rebirth/d1/shareware/descent.hog path: descent.hog
system: descent system: descent
category: game_data category: game_data
required: false required: false
@@ -66,7 +69,7 @@ files:
source_ref: "similar/main/mission.cpp:80; common/main/mission.h:67" source_ref: "similar/main/mission.cpp:80; common/main/mission.h:67"
- name: descent.pig - name: descent.pig
path: dxx-rebirth/d1/shareware/descent.pig path: descent.pig
system: descent system: descent
category: game_data category: game_data
required: false required: false
@@ -75,7 +78,7 @@ files:
# ------ Descent 1 retail ------ # ------ Descent 1 retail ------
- name: descent.hog - name: descent.hog
path: dxx-rebirth/d1/retail/descent.hog path: descent.hog
system: descent system: descent
category: game_data category: game_data
required: false required: false
@@ -87,7 +90,7 @@ files:
source_ref: "common/main/mission.h:61-64" source_ref: "common/main/mission.h:61-64"
- name: descent.pig - name: descent.pig
path: dxx-rebirth/d1/retail/descent.pig path: descent.pig
system: descent system: descent
category: game_data category: game_data
required: false required: false
@@ -96,7 +99,7 @@ files:
# ------ Descent 2 shareware (free) ------ # ------ Descent 2 shareware (free) ------
- name: d2demo.hog - name: d2demo.hog
path: dxx-rebirth/d2/shareware/d2demo.hog path: d2demo.hog
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -108,7 +111,7 @@ files:
source_ref: "similar/main/mission.cpp:107-108; common/main/mission.h:71" source_ref: "similar/main/mission.cpp:107-108; common/main/mission.h:71"
- name: d2demo.pig - name: d2demo.pig
path: dxx-rebirth/d2/shareware/d2demo.pig path: d2demo.pig
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -116,7 +119,7 @@ files:
source_ref: "similar/main/piggy.cpp:73" source_ref: "similar/main/piggy.cpp:73"
- name: d2demo.ham - name: d2demo.ham
path: dxx-rebirth/d2/shareware/d2demo.ham path: d2demo.ham
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -125,7 +128,7 @@ files:
# ------ Descent 2 retail ------ # ------ Descent 2 retail ------
- name: descent2.hog - name: descent2.hog
path: dxx-rebirth/d2/retail/descent2.hog path: descent2.hog
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -137,7 +140,7 @@ files:
source_ref: "common/main/mission.h:73-76" source_ref: "common/main/mission.h:73-76"
- name: descent2.ham - name: descent2.ham
path: dxx-rebirth/d2/retail/descent2.ham path: descent2.ham
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -145,7 +148,7 @@ files:
source_ref: "similar/main/piggy.cpp:74" source_ref: "similar/main/piggy.cpp:74"
- name: groupa.pig - name: groupa.pig
path: dxx-rebirth/d2/retail/groupa.pig path: groupa.pig
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -153,7 +156,7 @@ files:
source_ref: "similar/main/piggy.cpp:72; similar/main/inferno.cpp:689" source_ref: "similar/main/piggy.cpp:72; similar/main/inferno.cpp:689"
- name: alien1.pig - name: alien1.pig
path: dxx-rebirth/d2/retail/alien1.pig path: alien1.pig
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -161,7 +164,7 @@ files:
source_ref: "similar/main/piggy.cpp:87" source_ref: "similar/main/piggy.cpp:87"
- name: alien2.pig - name: alien2.pig
path: dxx-rebirth/d2/retail/alien2.pig path: alien2.pig
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -169,7 +172,7 @@ files:
source_ref: "similar/main/piggy.cpp:88" source_ref: "similar/main/piggy.cpp:88"
- name: fire.pig - name: fire.pig
path: dxx-rebirth/d2/retail/fire.pig path: fire.pig
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -177,7 +180,7 @@ files:
source_ref: "similar/main/piggy.cpp:89" source_ref: "similar/main/piggy.cpp:89"
- name: ice.pig - name: ice.pig
path: dxx-rebirth/d2/retail/ice.pig path: ice.pig
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -185,7 +188,7 @@ files:
source_ref: "similar/main/piggy.cpp:91" source_ref: "similar/main/piggy.cpp:91"
- name: water.pig - name: water.pig
path: dxx-rebirth/d2/retail/water.pig path: water.pig
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -193,7 +196,7 @@ files:
source_ref: "similar/main/piggy.cpp:92" source_ref: "similar/main/piggy.cpp:92"
- name: descent2.s22 - name: descent2.s22
path: dxx-rebirth/d2/retail/descent2.s22 path: descent2.s22
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -201,7 +204,7 @@ files:
source_ref: "similar/main/piggy.cpp:79" source_ref: "similar/main/piggy.cpp:79"
- name: descent2.s11 - name: descent2.s11
path: dxx-rebirth/d2/retail/descent2.s11 path: descent2.s11
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -209,7 +212,7 @@ files:
source_ref: "similar/main/piggy.cpp:79" source_ref: "similar/main/piggy.cpp:79"
- name: d2x.hog - name: d2x.hog
path: dxx-rebirth/d2/retail/missions/d2x.hog path: missions/d2x.hog
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
@@ -217,23 +220,25 @@ files:
source_ref: "similar/main/inferno.cpp:542" source_ref: "similar/main/inferno.cpp:542"
- name: intro-h.mvl - name: intro-h.mvl
path: dxx-rebirth/d2/retail/intro-h.mvl path: intro-h.mvl
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
description: "Descent 2 intro cinematic (high-res)" 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 - name: robots-h.mvl
path: dxx-rebirth/d2/retail/robots-h.mvl path: robots-h.mvl
system: descent2 system: descent2
category: game_data category: game_data
required: false 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 - name: other-h.mvl
path: dxx-rebirth/d2/retail/other-h.mvl path: other-h.mvl
system: descent2 system: descent2
category: game_data category: game_data
required: false required: false
description: "Descent 2 misc cinematics (high-res)" 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 openjk JKA MP, built from codemp/ with BuildMPEngine
openjo_sp JK2 SP, built from code/ with BuildJK2SPEngine openjo_sp JK2 SP, built from code/ with BuildJK2SPEngine
(same translation units, JK2_MODE defined, (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 ) BASEGAME = "base" (code/qcommon/q_shared.h:86). FS_Startup( BASEGAME )
adds base/ from cdpath, basepath, apppath, homepath via 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 Hard engine dependency: default.cfg (SP) or mpdefault.cfg (MP) must be
readable through the virtual filesystem, otherwise FS_Startup aborts readable through the virtual filesystem, otherwise FS_Startup aborts
with Com_Error( ERR_FATAL, "Couldn't load default.cfg" ) at 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. Both config files live inside the retail assets0.pk3.
Pure-server pak reference list uses NUM_ID_PAKS = 9 FS_idPak matches base/assets0 through base/assets8 (NUM_ID_PAKS = 9,
(codemp/qcommon/qcommon.h:567, codemp/qcommon/files.cpp:3169): the MP codemp/qcommon/qcommon.h:567, codemp/qcommon/files.cpp:3169-3170). The
client treats base/assets0.pk3 through base/assets8.pk3 as official id MP client never auto-downloads a pak with one of those names
paks and refuses to auto-download them, but this only governs server (codemp/qcommon/files.cpp:3241) and never offers one for download
compatibility, not file requirement. (codemp/qcommon/files.cpp:4447). The check does not make any of them
required.
files: files:
# ================================================================ # ================================================================
# Jedi Academy retail (base/, assets0.pk3 through assets3.pk3) # 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" - name: "assets0.pk3"
@@ -52,15 +54,15 @@ files:
system: jediacademy system: jediacademy
path: "base/assets0.pk3" path: "base/assets0.pk3"
required: true 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)" 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. Also holds the base menus, shaders, strings and the cgamex86.dll / jagamex86.dll VMs." note: "Carries default.cfg and mpdefault.cfg, the only files the SP and MP engines refuse to start without."
- name: "assets1.pk3" - name: "assets1.pk3"
category: game_data category: game_data
system: jediacademy system: jediacademy
path: "base/assets1.pk3" path: "base/assets1.pk3"
required: false 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." note: "Retail JKA base content (audio). Loader scans the directory, no hard reference."
- name: "assets2.pk3" - name: "assets2.pk3"
@@ -68,7 +70,7 @@ files:
system: jediacademy system: jediacademy
path: "base/assets2.pk3" path: "base/assets2.pk3"
required: false 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)." note: "Retail JKA base content (video/cinematics)."
- name: "assets3.pk3" - name: "assets3.pk3"
@@ -76,7 +78,7 @@ files:
system: jediacademy system: jediacademy
path: "base/assets3.pk3" path: "base/assets3.pk3"
required: false 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." note: "Retail JKA patch 1.01 content."
# ================================================================ # ================================================================
@@ -90,7 +92,7 @@ files:
system: jediknight2 system: jediknight2
path: "base/assets0.pk3" path: "base/assets0.pk3"
required: true 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." note: "Retail JK2 base archive. Carries default.cfg; openjo_sp aborts without it."
- name: "assets1.pk3" - name: "assets1.pk3"
@@ -98,7 +100,7 @@ files:
system: jediknight2 system: jediknight2
path: "base/assets1.pk3" path: "base/assets1.pk3"
required: false 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." note: "Retail JK2 base content."
- name: "assets2.pk3" - name: "assets2.pk3"
@@ -106,7 +108,7 @@ files:
system: jediknight2 system: jediknight2
path: "base/assets2.pk3" path: "base/assets2.pk3"
required: false 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." note: "Retail JK2 base content."
- name: "assets5.pk3" - name: "assets5.pk3"
@@ -114,5 +116,5 @@ files:
system: jediknight2 system: jediknight2
path: "base/assets5.pk3" path: "base/assets5.pk3"
required: false 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." 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" upstream: "https://github.com/dividebysandwich/rust-dos"
profiled_date: "2026-10-04" profiled_date: "2026-10-04"
source_commit: "12d8fe849f737b92d0b03b4db79cacc7ba898fab" source_commit: "12d8fe849f737b92d0b03b4db79cacc7ba898fab"
upstream_commit: "12d8fe849f737b92d0b03b4db79cacc7ba898fab"
core_version: "1.3.0" core_version: "1.3.0"
display_name: "DOS (Rust-DOS)" display_name: "DOS (Rust-DOS)"
cores: cores:
@@ -20,70 +21,70 @@ notes: |
libretro core declares supports_no_game = "true" with no firmware libretro core declares supports_no_game = "true" with no firmware
entries (libretro/rust_dos_libretro.info). entries (libretro/rust_dos_libretro.info).
Three optional firmware families enhance accuracy for games written Three optional firmware families serve games written for specific
for specific sound hardware. All three have HLE / software fallbacks sound hardware. None is needed with the default settings.
that keep audio working without the ROMs.
- AWE32 sample ROM (awe32.raw): the Creative Sound Blaster AWE32's - 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 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 SHA-256 the built-in download has to match (src/awe32/rom.rs:88-93).
programs load into its sample RAM but ROM sounds are silent A file found on disk is only checked for its length, 1 MB or the
(src/awe32/rom.rs:4-6). 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 - 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 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 and SC-155mkII. src/sc55/rom.rs:143-295 lists 14 romsets of 3 to 5
ROM files identified by the SHA-256 of their contents whatever the ROM files, each identified by the SHA-256 of its contents whatever
filenames are. The settings window can download eight of them from the file is called. The search covers sc55-roms/ and
the Internet Archive item roland-sc-55-series-roms soundcanvas-roms/ with their subfolders and zip archives
(src/sc55/download.rs:12-24, 39). Without a complete set, MIDI (src/sc55/rom.rs:352-362). The settings window can download eight
falls back to the OPL3 / soundfont / GUS synths of the sets from the Internet Archive item
(src/sc55/mod.rs:116-120). 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 - 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 (src/mt32.rs:1-6). munt identifies the ROMs from their contents;
SHA-1 table internally; rust-dos does not declare hashes. Without rust-dos declares no hashes and picks a control and PCM pair by
them (or without libmt32emu on the host), midisynth=mt32 fails and munt's ids (src/mt32.rs:254-278). Without them (or without
the other MIDI backends take over. 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 The libretro frontend adds its system directory and the rust-dos
search path (libretro/src/core.rs:148-157), so BIOS files sit next folder in it to the AWE32 and Sound Canvas search paths
to the core like any other RetroArch firmware. (libretro/src/core.rs:148-157).
files: files:
- name: "awe32.raw" - name: "awe32.raw"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
size: 1048576 # 1 MB (2 * ROM_WORDS, 512 Ki 16-bit words) size: 1048576 # 1 MB (2 * ROM_WORDS, 512 Ki 16-bit words)
sha256: "4e143b94f758734f594ded78f4e5115635975c16fa37fabeae0baa4938ca710e" sha256: "4e143b94f758734f594ded78f4e5115635975c16fa37fabeae0baa4938ca710e"
validation: [size, sha256] validation: [size]
description: "Creative Sound Blaster AWE32 sample ROM for the EMU8000 synth" 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/ # Sound Canvas ROM sets. The code names no file: each entry is labelled
# containing N ROM files identified by content hash (any filenames). # sc55-roms/<set name>/<location>, the folder the built-in download
# Only the 8 sets rust-dos can download from the Internet Archive # writes to. A ROM shared by several sets is listed once, except ROM1
# (src/sc55/download.rs:12-24) are listed here; the other 5 in the # of mk1-v1.20 and mk1-v1.21, listed under both.
# 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.
- name: "sc55-roms/mk1-v1.21/rom1.bin" - name: "sc55-roms/mk1-v1.21/rom1.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "7e1bacd1d7c62ed66e465ba05597dcd60dfc13fc23de0287fdbce6cf906c6544" sha256: "7e1bacd1d7c62ed66e465ba05597dcd60dfc13fc23de0287fdbce6cf906c6544"
validation: [sha256] validation: [sha256]
description: "Roland SC-55 v1.21 program ROM 1 (H8/532 code), auto-preferred set" 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" - name: "sc55-roms/mk1-v1.21/rom2.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "effc6132d68f7e300aaef915ccdd08aba93606c22d23e580daf9ea6617913af1" sha256: "effc6132d68f7e300aaef915ccdd08aba93606c22d23e580daf9ea6617913af1"
validation: [sha256] validation: [sha256]
@@ -93,77 +94,69 @@ files:
- name: "sc55-roms/mk1-v1.21/wave1.bin" - name: "sc55-roms/mk1-v1.21/wave1.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "5655509a531804f97ea2d7ef05b8fec20ebf46216b389a84c44169257a4d2007" sha256: "5655509a531804f97ea2d7ef05b8fec20ebf46216b389a84c44169257a4d2007"
validation: [sha256] validation: [sha256]
description: "Roland SC-55 Wave1 PCM (shared across all SC-55 mk1 versions)" description: "Roland SC-55 Wave1 PCM (shared across all SC-55 mk1 versions and SC-155)"
source_ref: "src/sc55/rom.rs:128 (MK1_WAVE1), 216" source_ref: "src/sc55/rom.rs:135 (MK1_WAVE1), 216"
- name: "sc55-roms/mk1-v1.21/wave2.bin" - name: "sc55-roms/mk1-v1.21/wave2.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "c655b159792d999b90df9e4fa782cf56411ba1eaa0bb3ac2bdaf09e1391006b1" sha256: "c655b159792d999b90df9e4fa782cf56411ba1eaa0bb3ac2bdaf09e1391006b1"
validation: [sha256] validation: [sha256]
description: "Roland SC-55 Wave2 PCM" 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" - name: "sc55-roms/mk1-v1.21/wave3.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "334b2d16be3c2362210fdbec1c866ad58badeb0f84fd9bf5d0ac599baf077cc2" sha256: "334b2d16be3c2362210fdbec1c866ad58badeb0f84fd9bf5d0ac599baf077cc2"
validation: [sha256] validation: [sha256]
description: "Roland SC-55 Wave3 PCM" 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" - name: "sc55-roms/mk1-v1.00/rom1.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "b4ecf44bc0520322b0d114d397951d3bf92ca6fa51d0d27b2407df58a6be2efe" sha256: "b4ecf44bc0520322b0d114d397951d3bf92ca6fa51d0d27b2407df58a6be2efe"
validation: [sha256] validation: [sha256]
description: "Roland SC-55 v1.00 program ROM 1" 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" - name: "sc55-roms/mk1-v1.00/rom2.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "014e2e21ea30de7a1e4f1cdea14dd9a719960535e257a9e40e98dbb1a5870226" sha256: "014e2e21ea30de7a1e4f1cdea14dd9a719960535e257a9e40e98dbb1a5870226"
validation: [sha256] validation: [sha256]
description: "Roland SC-55 v1.00 program ROM 2" 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" - name: "sc55-roms/mk1-v1.10/rom1.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "2fe88ec39f3ef4b1de8cdf74527419467975c47f7aacfcd07605e01d54bd89b5" sha256: "2fe88ec39f3ef4b1de8cdf74527419467975c47f7aacfcd07605e01d54bd89b5"
validation: [sha256] validation: [sha256]
description: "Roland SC-55 v1.10 program ROM 1" 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" - name: "sc55-roms/mk1-v1.10/rom2.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "ec064d6c4fc70ec990911089d966043cb819fba0e26e6f6afdd0a05e5301b91b" sha256: "ec064d6c4fc70ec990911089d966043cb819fba0e26e6f6afdd0a05e5301b91b"
validation: [sha256] validation: [sha256]
description: "Roland SC-55 v1.10 program ROM 2" 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" - name: "sc55-roms/mk1-v1.20/rom1.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "7e1bacd1d7c62ed66e465ba05597dcd60dfc13fc23de0287fdbce6cf906c6544" sha256: "7e1bacd1d7c62ed66e465ba05597dcd60dfc13fc23de0287fdbce6cf906c6544"
validation: [sha256] validation: [sha256]
@@ -173,7 +166,6 @@ files:
- name: "sc55-roms/mk1-v1.20/rom2.bin" - name: "sc55-roms/mk1-v1.20/rom2.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "22ce6ca59e6332143b335525e81fab501ea6fccce4b7e2f3bfc2cc8bf6612ff6" sha256: "22ce6ca59e6332143b335525e81fab501ea6fccce4b7e2f3bfc2cc8bf6612ff6"
validation: [sha256] validation: [sha256]
@@ -183,7 +175,6 @@ files:
- name: "sc55-roms/mk1-v2.00/rom1.bin" - name: "sc55-roms/mk1-v2.00/rom1.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "24a65c97cdbaa847d6f59193523ce63c73394b4b693a6517ee79441f2fb8a3ee" sha256: "24a65c97cdbaa847d6f59193523ce63c73394b4b693a6517ee79441f2fb8a3ee"
validation: [sha256] validation: [sha256]
@@ -193,7 +184,6 @@ files:
- name: "sc55-roms/mk1-v2.00/rom2.bin" - name: "sc55-roms/mk1-v2.00/rom2.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "f5dac35d450ab986570a209dff3816eec75cee669e161f54b51224b467dd0bcc" sha256: "f5dac35d450ab986570a209dff3816eec75cee669e161f54b51224b467dd0bcc"
validation: [sha256] validation: [sha256]
@@ -203,57 +193,51 @@ files:
- name: "sc55-roms/mk2-v1.01/rom1.bin" - name: "sc55-roms/mk2-v1.01/rom1.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "8a1eb33c7599b746c0c50283e4349a1bb1773b5c0ec0e9661219bf6c067d2042" sha256: "8a1eb33c7599b746c0c50283e4349a1bb1773b5c0ec0e9661219bf6c067d2042"
validation: [sha256] validation: [sha256]
description: "Roland SC-55mkII v1.01 H8/532 ROM 1 (shared with SC-55ST and SC-155mkII)" 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" - name: "sc55-roms/mk2-v1.01/rom2.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "a4c9fd821059054c7e7681d61f49ce6f42ed2fe407a7ec1ba0dfdc9722582ce0" sha256: "a4c9fd821059054c7e7681d61f49ce6f42ed2fe407a7ec1ba0dfdc9722582ce0"
validation: [sha256] validation: [sha256]
description: "Roland SC-55mkII v1.01 program ROM 2 (shared with SC-155mkII)" 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" - name: "sc55-roms/mk2-v1.01/smrom.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "b0b5f865a403f7308b4be8d0ed3ba2ed1c22db881b8a8326769dea222f6431d8" sha256: "b0b5f865a403f7308b4be8d0ed3ba2ed1c22db881b8a8326769dea222f6431d8"
validation: [sha256] validation: [sha256]
description: "Roland SC-55mkII sub-MCU (M37450) ROM (shared with SC-55ST and SC-155mkII)" 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" - name: "sc55-roms/mk2-v1.01/wave1.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "c6429e21b9b3a02fbd68ef0b2053668433bee0bccd537a71841bc70b8874243b" sha256: "c6429e21b9b3a02fbd68ef0b2053668433bee0bccd537a71841bc70b8874243b"
validation: [sha256] validation: [sha256]
description: "Roland SC-55mkII Wave1 PCM (shared with SC-55ST, SC-155mkII, SCB-55, RLP-3237)" description: "Roland SC-55mkII Wave1 PCM (shared with SC-55ST, SC-155mkII, SCB-55)"
source_ref: "src/sc55/rom.rs:127 (MK2_WAVE1), 143" source_ref: "src/sc55/rom.rs:133 (MK2_WAVE1), 151"
- name: "sc55-roms/mk2-v1.01/wave2.bin" - name: "sc55-roms/mk2-v1.01/wave2.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "5b753f6cef4cfc7fcafe1430fecbb94a739b874e55356246a46abe24097ee491" sha256: "5b753f6cef4cfc7fcafe1430fecbb94a739b874e55356246a46abe24097ee491"
validation: [sha256] validation: [sha256]
description: "Roland SC-55mkII Wave2 PCM (shared with SC-55ST, SC-155mkII, SCB-55 Wave3, CM-300 Wave3)" 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" - name: "sc55-roms/sc155-rev1/rom2.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "ceb7b9d3d9d264efe5dc3ba992b94f3be35eb6d0451abc574b6f6b5dc3db237b" sha256: "ceb7b9d3d9d264efe5dc3ba992b94f3be35eb6d0451abc574b6f6b5dc3db237b"
validation: [sha256] validation: [sha256]
@@ -263,7 +247,6 @@ files:
- name: "sc55-roms/cm300-v1.30/rom1.bin" - name: "sc55-roms/cm300-v1.30/rom1.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "9ec66abb5231b6c6f46f48b33d5412703041037d69a6803626ac402f25552af2" sha256: "9ec66abb5231b6c6f46f48b33d5412703041037d69a6803626ac402f25552af2"
validation: [sha256] validation: [sha256]
@@ -273,7 +256,6 @@ files:
- name: "sc55-roms/cm300-v1.30/rom2.bin" - name: "sc55-roms/cm300-v1.30/rom2.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "f89442734fdebacae87c7707c01b2d7fdbf5940abae738987aee912d34b5882e" sha256: "f89442734fdebacae87c7707c01b2d7fdbf5940abae738987aee912d34b5882e"
validation: [sha256] validation: [sha256]
@@ -283,19 +265,89 @@ files:
- name: "sc55-roms/cm300-v1.30/wave1.bin" - name: "sc55-roms/cm300-v1.30/wave1.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "40c093cbfb4441a5c884e623f882a80b96b2527f9fd431e074398d206c0f073d" sha256: "40c093cbfb4441a5c884e623f882a80b96b2527f9fd431e074398d206c0f073d"
validation: [sha256] validation: [sha256]
description: "Roland CM-300 Wave1 PCM (shared with CM-300 v1.10 and v1.20)" 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" - name: "sc55-roms/cm300-v1.30/wave2.bin"
system: dos system: dos
required: false required: false
hle_fallback: true
category: bios category: bios
sha256: "9bbbcac747bd6f7a2693f4ef10633db8ab626f17d3d9c47c83c3839d4dd2f613" sha256: "9bbbcac747bd6f7a2693f4ef10633db8ab626f17d3d9c47c83c3839d4dd2f613"
validation: [sha256] validation: [sha256]
description: "Roland CM-300 Wave2 PCM" 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 emulator: Sonic Mania Decompilation
type: standalone type: standalone
core_classification: game_engine core_classification: game_engine
source: "https://github.com/Rubberduckycooly/Sonic-Mania-Decompilation" source: "https://github.com/RSDKModding/Sonic-Mania-Decompilation"
upstream: "https://github.com/Rubberduckycooly/RSDKv5-Decompilation" upstream: "https://github.com/RSDKModding/RSDKv5-Decompilation"
source_commit: "9dc699428420d752af9767bdb13f585ee0881bc0" source_commit: "9dc699428420d752af9767bdb13f585ee0881bc0"
upstream_commit: "191d7aea6c262d891244172a8609ac69fbfd7571" upstream_commit: "191d7aea6c262d891244172a8609ac69fbfd7571"
profiled_date: "2026-10-04" profiled_date: "2026-10-04"
@@ -13,26 +13,33 @@ systems: [sonic-mania]
notes: | notes: |
Full RSDKv5 decompilation of Sonic Mania (Christian Whitehead / Headcannon, Full RSDKv5 decompilation of Sonic Mania (Christian Whitehead / Headcannon,
2017). Links against the shared RSDKv5-Decompilation engine; game code 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, LoadDataPack reads an RSDK v5 container: a 4-byte "RSDK" signature,
then a version byte and a 16-bit file count followed by MD5+offset+size the letter v and a version byte, a 16-bit file count, then an MD5 name
per entry. The signature is the only validation; the engine never hashes hash, offset and size per entry. The signature is the only validation;
the full pack. the engine never hashes the full pack.
ref: dependencies/RSDKv5/RSDKv5/RSDK/Core/Reader.cpp:107-164 (LoadDataPack) ref: RSDKv5/RSDK/Core/Reader.cpp:107-164 (LoadDataPack)
Settings.ini key Game:dataFile overrides the default "Data.rsdk". If Settings.ini key Game:dataFile overrides the default "Data.rsdk". If
the ini is absent the engine still calls LoadDataPack("Data.rsdk"). 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: files:
- name: "Data.rsdk" - name: "Data.rsdk"
category: game_data category: game_data
system: sonic-mania system: sonic-mania
required: true 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: | note: |
Sonic Mania game assets (RSDK v5 container, "RSDK" signature). Shipped Sonic Mania game assets (RSDK v5 container, "RSDK" signature). Shipped
inside the official Sonic Mania release (Steam, Epic, consoles). The inside the official Sonic Mania release (Steam, Epic, consoles).
engine aborts gameplay if the pack cannot be opened; without it only Without the pack the engine only finds the game if the same files
the dev-menu error path runs. sit extracted under Data/.
+18 -17
View File
@@ -1,8 +1,8 @@
emulator: Sonic 1 & 2 (2013) Decompilation emulator: Sonic 1 & 2 (2013) Decompilation
type: standalone type: standalone
core_classification: game_engine core_classification: game_engine
source: "https://github.com/Rubberduckycooly/Sonic-1-2-2013-Decompilation" source: "https://github.com/RSDKModding/RSDKv4-Decompilation"
upstream: "https://github.com/Rubberduckycooly/Sonic-1-2-2013-Decompilation" upstream: "https://github.com/RSDKModding/RSDKv4-Decompilation"
source_commit: "a7f5195e21fdad7b75e4587e249013feeea9e6f3" source_commit: "a7f5195e21fdad7b75e4587e249013feeea9e6f3"
core_version: "1.3.3" core_version: "1.3.3"
profiled_date: "2026-10-04" profiled_date: "2026-10-04"
@@ -17,37 +17,38 @@ notes: |
the loaded data pack (gameWindowText "Sonic 1" or "Sonic 2"). the loaded data pack (gameWindowText "Sonic 1" or "Sonic 2").
ref: RSDKv4/RetroEngine.cpp:423, RSDKv4/ModAPI.cpp:428 ref: RSDKv4/RetroEngine.cpp:423, RSDKv4/ModAPI.cpp:428
CheckRSDKFile just fopen()s the data pack; there is no signature or CheckRSDKFile opens the data pack and compares its first six bytes to
checksum test. The engine falls back to a loose Data/ + Bytecode/ tree the "RSDKvB" signature; there is no checksum test. The engine falls
if the pack is absent, and writes a usage.txt that asks for a pack named back to a loose Data/ + Bytecode/ tree if the pack is absent. When
Engine.dataFile[0] (default "Data.rsdk"). GameConfig.bin cannot be loaded either way it writes a usage.txt that
ref: RSDKv4/RetroEngine.cpp:296-331, RSDKv4/Userdata.cpp:251-263, asks for a pack named Engine.dataFile[0] (default "Data.rsdk").
RSDKv4/RetroEngine.cpp:484-521 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 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, section of settings.ini); the extras default to Data2.rsdk, Data3.rsdk,
Data4.rsdk once declared. 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: files:
- name: "Data.rsdk" - name: "Data.rsdk"
category: game_data category: game_data
system: sonic-1-2013 system: sonic-1-2013
required: true 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: | note: |
Sonic the Hedgehog (2013) assets. Shipped with the official Sonic Sonic the Hedgehog (2013) assets. Shipped with the official Sonic
Origins release and the delisted iOS/Android apps. Engine opens the Origins release and the delisted iOS/Android apps. The engine checks
file with fopen(); content identity is read from the embedded the six-byte signature only; content identity is read from the
GameConfig.bin, not the pack hash. embedded GameConfig.bin, not the pack hash.
- name: "Data.rsdk" - name: "Data.rsdk"
category: game_data category: game_data
system: sonic-2-2013 system: sonic-2-2013
required: true 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: | note: |
Sonic the Hedgehog 2 (2013) assets. Shipped with the official Sonic Sonic the Hedgehog 2 (2013) assets. Shipped with the official Sonic
Origins release and the delisted iOS/Android apps. Same engine Origins release and the delisted iOS/Android apps. Same default
filename as Sonic 1; the launcher selects which pack sits next to file name as Sonic 1; Dev:DataFile in settings.ini names another.
the binary at run time.
+8 -8
View File
@@ -1,8 +1,8 @@
emulator: Sonic CD Decompilation emulator: Sonic CD Decompilation
type: standalone type: standalone
core_classification: game_engine core_classification: game_engine
source: "https://github.com/Rubberduckycooly/Sonic-CD-11-Decompilation" source: "https://github.com/RSDKModding/RSDKv3-Decompilation"
upstream: "https://github.com/Rubberduckycooly/Sonic-CD-11-Decompilation" upstream: "https://github.com/RSDKModding/RSDKv3-Decompilation"
source_commit: "a99e16ad15f4f824c1b9f96a61b3f8576ab648e2" source_commit: "a99e16ad15f4f824c1b9f96a61b3f8576ab648e2"
profiled_date: "2026-10-04" profiled_date: "2026-10-04"
display_name: "Sonic CD (RSDKv3 Decomp)" display_name: "Sonic CD (RSDKv3 Decomp)"
@@ -14,11 +14,11 @@ notes: |
mobile/Steam port). Single binary; one data pack per install. mobile/Steam port). Single binary; one data pack per install.
CheckRSDKFile only fopen()s the pack; there is no signature test. If 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/ the file is absent the engine falls back to a loose Data/ tree. When
tree and, on first run, writes usage.txt describing the layout it GameConfig.bin cannot be loaded either way it writes usage.txt
wants. describing the layout it wants.
ref: RSDKv3/Reader.cpp:26-87 (CheckRSDKFile), RSDKv3/RetroEngine.cpp:280-321, ref: RSDKv3/Reader.cpp:26-87 (CheckRSDKFile), RSDKv3/RetroEngine.cpp:283-321,
RSDKv3/RetroEngine.cpp:328-363 RSDKv3/RetroEngine.cpp:329-366
settings.ini key Dev:DataFile overrides the default "Data.rsdk". settings.ini key Dev:DataFile overrides the default "Data.rsdk".
ref: RSDKv3/Userdata.cpp:352-353,467-468, RSDKv3/RetroEngine.hpp:437 ref: RSDKv3/Userdata.cpp:352-353,467-468, RSDKv3/RetroEngine.hpp:437
@@ -34,7 +34,7 @@ files:
category: game_data category: game_data
system: soniccd system: soniccd
required: true 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: | note: |
Sonic CD assets (RSDK v3 container). Shipped with the official Sonic CD assets (RSDK v3 container). Shipped with the official
Sonic CD release (Steam, iOS, Android, Sonic Origins). The engine Sonic CD release (Steam, iOS, Android, Sonic Origins). The engine