fix: give each dolphin fork its own dsp rom table

This commit is contained in:
Abdessamad Derraz committed 2026-10-10 14:05:57 +02:00
1 parent f5a5d6f4bd
commit 527526a8e2
7 files changed
+70 -41

No files matched your search

+5 -5
View File
@@ -135,8 +135,8 @@ files:
required: false required: false
hle_fallback: true hle_fallback: true
size: 8192 size: 8192
validation: [size] validation: [size, adler32]
known_hash_adler32: "0x66f334fe" known_hash_adler32: ["0x66f334fe", "0x128ea7a2"]
adler32_byteswap: true adler32_byteswap: true
description: "DSP instruction ROM" 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." 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."
@@ -147,12 +147,12 @@ files:
required: false required: false
hle_fallback: true hle_fallback: true
size: 4096 size: 4096
validation: [size] validation: [size, adler32]
known_hash_adler32: "0xf3b93527" known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true adler32_byteswap: true
description: "DSP coefficient ROM" 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." 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_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"
- name: codehandler.bin - name: codehandler.bin
path: null path: null
+5 -5
View File
@@ -171,8 +171,8 @@ files:
required: false required: false
hle_fallback: true hle_fallback: true
size: 8192 size: 8192
validation: [size] validation: [size, adler32]
known_hash_adler32: "0x66f334fe" known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
adler32_byteswap: true adler32_byteswap: true
description: "DSP instruction ROM" 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." 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."
@@ -183,12 +183,12 @@ files:
required: false required: false
hle_fallback: true hle_fallback: true
size: 4096 size: 4096
validation: [size] validation: [size, adler32]
known_hash_adler32: "0xf3b93527" known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true adler32_byteswap: true
description: "DSP coefficient ROM" 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." 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_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"
- name: codehandler.bin - name: codehandler.bin
path: null path: null
+6 -6
View File
@@ -67,22 +67,22 @@ files:
size: 8192 size: 8192
required: false required: false
hle_fallback: true hle_fallback: true
validation: [size] validation: [size, adler32]
known_hash_adler32: "0x66f334fe" known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
adler32_byteswap: true adler32_byteswap: true
note: "DSP instruction ROM for LLE audio. Free replacement (v0.4) included" 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_ref: "Source/Core/Common/CommonPaths.h:136, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:84-117, Source/Core/Core/DSP/DSPCore.cpp:28-102"
- name: "dsp_coef.bin" - name: "dsp_coef.bin"
path: "GC/dsp_coef.bin" path: "GC/dsp_coef.bin"
size: 4096 size: 4096
required: false required: false
hle_fallback: true hle_fallback: true
validation: [size] validation: [size, adler32]
known_hash_adler32: "0xf3b93527" known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true adler32_byteswap: true
note: "DSP coefficient ROM for LLE audio and HLE polyphase resampling. Free replacement included" 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_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"
# -- GameCube Fonts -- # -- GameCube Fonts --
# Bundled free alternatives exist but have padding differences causing misplaced text. # Bundled free alternatives exist but have padding differences causing misplaced text.
+6 -6
View File
@@ -64,22 +64,22 @@ files:
size: 8192 size: 8192
required: false required: false
hle_fallback: true hle_fallback: true
validation: [size] validation: [size, adler32]
known_hash_adler32: "0x66f334fe" known_hash_adler32: ["0x66f334fe", "0x128ea7a2"]
adler32_byteswap: true adler32_byteswap: true
note: "DSP instruction ROM for LLE audio. Free replacement included" 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_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"
- name: "dsp_coef.bin" - name: "dsp_coef.bin"
path: "GC/dsp_coef.bin" path: "GC/dsp_coef.bin"
size: 4096 size: 4096
required: false required: false
hle_fallback: true hle_fallback: true
validation: [size] validation: [size, adler32]
known_hash_adler32: "0xf3b93527" known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true adler32_byteswap: true
note: "DSP coefficient ROM for LLE audio and HLE polyphase resampling. Free replacement included" 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_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"
# -- GameCube Fonts -- # -- GameCube Fonts --
# Bundled free alternatives exist but have padding differences causing misplaced text. # Bundled free alternatives exist but have padding differences causing misplaced text.
+6 -6
View File
@@ -68,22 +68,22 @@ files:
size: 8192 size: 8192
required: false required: false
hle_fallback: true hle_fallback: true
validation: [size] validation: [size, adler32]
known_hash_adler32: "0x66f334fe" known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
adler32_byteswap: true adler32_byteswap: true
note: "DSP instruction ROM for LLE audio. Free replacement (v0.4) included" 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_ref: "Source/Core/Common/CommonPaths.h:135, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-117, Source/Core/Core/DSP/DSPCore.cpp:28-102"
- name: "dsp_coef.bin" - name: "dsp_coef.bin"
path: "GC/dsp_coef.bin" path: "GC/dsp_coef.bin"
size: 4096 size: 4096
required: false required: false
hle_fallback: true hle_fallback: true
validation: [size] validation: [size, adler32]
known_hash_adler32: "0xf3b93527" known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true adler32_byteswap: true
note: "DSP coefficient ROM for LLE audio. Free replacement included" 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_ref: "Source/Core/Common/CommonPaths.h:138, Source/Core/Core/DSP/DSPCore.cpp:32-38, Source/Core/Core/DSP/DSPCore.cpp:28-102"
# -- GameCube Fonts -- # -- GameCube Fonts --
# Bundled free alternatives exist but have padding differences causing misplaced text. # Bundled free alternatives exist but have padding differences causing misplaced text.
+6 -6
View File
@@ -227,12 +227,12 @@ files:
path: "GC/dsp_rom.bin" path: "GC/dsp_rom.bin"
description: "DSP instruction ROM" description: "DSP instruction ROM"
size: 8192 size: 8192
validation: [size] validation: [size, adler32]
known_hash_adler32: "0x66f334fe" known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
adler32_byteswap: true adler32_byteswap: true
required: false required: false
hle_fallback: true 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_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"
note: > note: >
LoadDSPRom rejects any file whose length differs from DSP_IROM_BYTE_SIZE and LoadDSPRom rejects any file whose length differs from DSP_IROM_BYTE_SIZE and
swaps every 16 bit word before storing it, so the Adler32 in the source is swaps every 16 bit word before storing it, so the Adler32 in the source is
@@ -245,12 +245,12 @@ files:
path: "GC/dsp_coef.bin" path: "GC/dsp_coef.bin"
description: "DSP coefficient ROM" description: "DSP coefficient ROM"
size: 4096 size: 4096
validation: [size] validation: [size, adler32]
known_hash_adler32: "0xf3b93527" known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true adler32_byteswap: true
required: false required: false
hle_fallback: true 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_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"
note: > note: >
Also read by the HLE AX ucode for polyphase resampling. Adler32 is taken over Also read by the HLE AX ucode for polyphase resampling. Adler32 is taken over
the byte-swapped data (Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:100-102). the byte-swapped data (Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:100-102).
+36 -7
View File
@@ -515,9 +515,24 @@
"pattern": "^[a-fA-F0-9]{8}$" "pattern": "^[a-fA-F0-9]{8}$"
}, },
"known_hash_adler32": { "known_hash_adler32": {
"type": [ "description": "Adler-32 values the code accepts; a list when several revisions pass.",
"string", "oneOf": [
"integer" {
"type": [
"string",
"integer"
]
},
{
"type": "array",
"items": {
"type": [
"string",
"integer"
]
},
"minItems": 1
}
] ]
}, },
"validation": { "validation": {
@@ -648,12 +663,26 @@
"if": { "if": {
"anyOf": [ "anyOf": [
{ {
"required": ["path"], "required": [
"properties": {"path": {"type": "string", "pattern": "/$"}} "path"
],
"properties": {
"path": {
"type": "string",
"pattern": "/$"
}
}
}, },
{ {
"required": ["standalone_path"], "required": [
"properties": {"standalone_path": {"type": "string", "pattern": "/$"}} "standalone_path"
],
"properties": {
"standalone_path": {
"type": "string",
"pattern": "/$"
}
}
} }
] ]
}, },