fix: resolve the DSP ROMs as a pair the code takes

Dolphin and its forks hash dsp_rom.bin and dsp_coef.bin together and
warn on any combination outside known_roms. The profiles now carry the
accepted pairs, and the resolver keeps both files inside the first pair
the collection holds whole: MMJR and Ishiiruka were served the free ROM
beside the official coefficients.
This commit is contained in:
Abdessamad Derraz committed 2026-10-17 18:20:00 +02:00
1 parent d41933cdcf
commit 5a3d9bdc9d
10 files changed
+170 -5

No files matched your search

+4
View File
@@ -144,6 +144,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0x128ea7a2"]
adler32_byteswap: true
adler32_pairs_with: "dsp_coef.bin"
adler32_pairs: [["0x66f334fe", "0xf3b93527"], ["0x128ea7a2", "0xa4a575f5"]]
description: "DSP instruction ROM"
note: "DSP LLE only, and LLE aborts when the file is absent or not 8192 bytes. The adler32 is taken over the byte-swapped image and the value here is the Nintendo pair; five replacement pairs are also accepted."
source_ref: "Source/Core/Common/CommonPaths.h:108, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:120-152, Source/Core/Core/DSP/DSPCore.h:35, Source/Core/Core/DSP/DSPCore.cpp:38-80"
@@ -156,6 +158,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_rom.bin"
adler32_pairs: [["0xf3b93527", "0x66f334fe"], ["0xa4a575f5", "0x128ea7a2"]]
description: "DSP coefficient ROM"
note: "Read by DSP LLE alongside the instruction ROM, and by the AX ucode under HLE for polyphase resampling, which drops any file that is not 0x1000 bytes and plays on without it."
source_ref: "Source/Core/Common/CommonPaths.h:109, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:120-152, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:45-70, Source/Core/Core/DSP/DSPCore.h:49, Source/Core/Core/DSP/DSPCore.cpp:38-105"
+4
View File
@@ -180,6 +180,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_coef.bin"
adler32_pairs: [["0x66f334fe", "0xf3b93527"], ["0xe789b5a5", "0xa4a575f5"]]
description: "DSP instruction ROM"
note: "DSP LLE only, and a file that is absent or not 8192 bytes fails initialisation, which aborts the emulation thread. The adler32 is taken over the byte-swapped image and the value here is the Nintendo pair; six replacement pairs are also accepted."
source_ref: "Source/Core/Common/CommonPaths.h:120, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-105, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:107-120, Source/Core/Core/DSP/DSPCore.h:44, Source/Core/Core/DSP/DSPCore.cpp:28-71"
@@ -192,6 +194,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_rom.bin"
adler32_pairs: [["0xf3b93527", "0x66f334fe"], ["0xa4a575f5", "0xe789b5a5"]]
description: "DSP coefficient ROM"
note: "Read by DSP LLE alongside the instruction ROM, and by the AX ucode under HLE for polyphase resampling, which drops any file that is not 0x1000 bytes and plays on without it."
source_ref: "Source/Core/Common/CommonPaths.h:121, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-120, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:42-69, Source/Core/Core/DSP/DSPCore.h:58, Source/Core/Core/DSP/DSPCore.cpp:28-102"
+4
View File
@@ -78,6 +78,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_coef.bin"
adler32_pairs: [["0x66f334fe", "0xf3b93527"], ["0xe789b5a5", "0xa4a575f5"]]
note: "DSP instruction ROM for LLE audio. Free replacement (v0.4) included"
source_ref: "Source/Core/Common/CommonPaths.h:136, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:84-117, Source/Core/Core/DSP/DSPCore.cpp:28-102"
@@ -90,6 +92,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_rom.bin"
adler32_pairs: [["0xf3b93527", "0x66f334fe"], ["0xa4a575f5", "0xe789b5a5"]]
note: "DSP coefficient ROM for LLE audio and HLE polyphase resampling. Free replacement included"
source_ref: "Source/Core/Common/CommonPaths.h:137, Source/Core/Core/DSP/DSPCore.cpp:32-33, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:55-62, Source/Core/Core/DSP/DSPCore.cpp:28-102"
+4
View File
@@ -74,6 +74,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0x128ea7a2"]
adler32_byteswap: true
adler32_pairs_with: "dsp_coef.bin"
adler32_pairs: [["0x66f334fe", "0xf3b93527"], ["0x128ea7a2", "0xa4a575f5"]]
note: "DSP instruction ROM for LLE audio. Free replacement included"
source_ref: "Source/Core/Common/CommonPaths.h:112, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:142-150, Source/Core/Core/DSP/DSPCore.cpp:48,67, Source/Core/Core/DSP/DSPCore.cpp:38-105"
@@ -86,6 +88,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_rom.bin"
adler32_pairs: [["0xf3b93527", "0x66f334fe"], ["0xa4a575f5", "0x128ea7a2"]]
note: "DSP coefficient ROM for LLE audio and HLE polyphase resampling. Free replacement included"
source_ref: "Source/Core/Common/CommonPaths.h:113, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:143-153, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:43-72, Source/Core/Core/DSP/DSPCore.cpp:48,68, Source/Core/Core/DSP/DSPCore.cpp:38-105"
+4
View File
@@ -71,6 +71,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_coef.bin"
adler32_pairs: [["0x66f334fe", "0xf3b93527"], ["0xe789b5a5", "0xa4a575f5"]]
note: "DSP instruction ROM for LLE audio. Free replacement (v0.4) included"
source_ref: "Source/Core/Common/CommonPaths.h:135, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-117, Source/Core/Core/DSP/DSPCore.cpp:28-102"
@@ -82,6 +84,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_rom.bin"
adler32_pairs: [["0xf3b93527", "0x66f334fe"], ["0xa4a575f5", "0xe789b5a5"]]
note: "DSP coefficient ROM for LLE audio. Free replacement included"
source_ref: "Source/Core/Common/CommonPaths.h:138, Source/Core/Core/DSP/DSPCore.cpp:32-38, Source/Core/Core/DSP/DSPCore.cpp:28-102"
+4
View File
@@ -230,6 +230,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_coef.bin"
adler32_pairs: [["0x66f334fe", "0xf3b93527"], ["0xe789b5a5", "0xa4a575f5"]]
required: false
hle_fallback: true
source_ref: "Source/Core/Common/CommonPaths.h:145, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-105,109-118, Source/Core/Core/DSP/DSPCore.h:44, Source/Core/Core/DSP/DSPCore.cpp:36-38, Source/Core/Core/DSP/DSPCore.cpp:28-102"
@@ -248,6 +250,8 @@ files:
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_rom.bin"
adler32_pairs: [["0xf3b93527", "0x66f334fe"], ["0xa4a575f5", "0xe789b5a5"]]
required: false
hle_fallback: true
source_ref: "Source/Core/Common/CommonPaths.h:146, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-105,110-119, Source/Core/Core/DSP/DSPCore.h:58, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:61-62, Source/Core/Core/DSP/DSPCore.cpp:28-102"