mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-09 07:39:26 +01:00
dsp_rom: Remove illegal use of AX with SRS
This commit is contained in:
parent
c881f4db22
commit
a5e2a0d973
Binary file not shown.
@ -33,7 +33,7 @@ static bool VerifyRoms(const SDSP& dsp)
|
|||||||
u32 hash_drom; // dsp_coef.bin
|
u32 hash_drom; // dsp_coef.bin
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::array<DspRomHashes, 6> known_roms = {{
|
static const std::array<DspRomHashes, 7> known_roms = {{
|
||||||
// Official Nintendo ROM
|
// Official Nintendo ROM
|
||||||
{0x66f334fe, 0xf3b93527},
|
{0x66f334fe, 0xf3b93527},
|
||||||
|
|
||||||
@ -52,6 +52,9 @@ static bool VerifyRoms(const SDSP& dsp)
|
|||||||
|
|
||||||
// above with fix to skip bootucode_ax when running from ROM entrypoint
|
// above with fix to skip bootucode_ax when running from ROM entrypoint
|
||||||
{0x128ea7a2, 0xa4a575f5},
|
{0x128ea7a2, 0xa4a575f5},
|
||||||
|
|
||||||
|
// above with fixes for invalid use of SRS instruction
|
||||||
|
{0xe789b5a5, 0xa4a575f5},
|
||||||
}};
|
}};
|
||||||
|
|
||||||
const u32 hash_irom =
|
const u32 hash_irom =
|
||||||
@ -69,28 +72,30 @@ static bool VerifyRoms(const SDSP& dsp)
|
|||||||
|
|
||||||
if (rom_idx < 0)
|
if (rom_idx < 0)
|
||||||
{
|
{
|
||||||
if (AskYesNoFmtT("Your DSP ROMs have incorrect hashes.\n"
|
if (AskYesNoFmtT("Your DSP ROMs have incorrect hashes.\n\n"
|
||||||
|
"Delete the dsp_rom.bin and dsp_coef.bin files in the GC folder in the Global "
|
||||||
|
"User Directory to use the free DSP ROM, or replace them with good dumps from "
|
||||||
|
"a real GameCube/Wii.\n\n"
|
||||||
"Would you like to stop now to fix the problem?\n"
|
"Would you like to stop now to fix the problem?\n"
|
||||||
"If you select \"No\", audio might be garbled."))
|
"If you select \"No\", audio might be garbled."))
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rom_idx == 1)
|
if (rom_idx >= 1 && rom_idx <= 5)
|
||||||
{
|
{
|
||||||
Host::OSD_AddMessage("You are using an old free DSP ROM made by the Dolphin Team.", 6000);
|
if (AskYesNoFmtT(
|
||||||
Host::OSD_AddMessage("Only games using the Zelda UCode will work correctly.", 6000);
|
"You are using an old free DSP ROM made by the Dolphin Team.\n"
|
||||||
}
|
"Due to emulation accuracy improvements, this ROM no longer works correctly.\n\n"
|
||||||
else if (rom_idx == 2 || rom_idx == 3)
|
"Delete the dsp_rom.bin and dsp_coef.bin files in the GC folder in the Global "
|
||||||
{
|
"User Directory to use the most recent free DSP ROM, or replace them with "
|
||||||
Host::OSD_AddMessage("You are using a free DSP ROM made by the Dolphin Team.", 8000);
|
"good dumps from a real GameCube/Wii.\n\n"
|
||||||
Host::OSD_AddMessage("All Wii games will work correctly, and most GameCube games", 8000);
|
"Would you like to stop now to fix the problem?\n"
|
||||||
Host::OSD_AddMessage("should also work fine, but the GBA/CARD UCodes will not work.", 8000);
|
"If you select \"No\", audio might be garbled."))
|
||||||
}
|
{
|
||||||
else if (rom_idx == 4)
|
return false;
|
||||||
{
|
}
|
||||||
Host::OSD_AddMessage("You are using a free DSP ROM made by the Dolphin Team.", 8000);
|
|
||||||
Host::OSD_AddMessage("All Wii games will work correctly, and most GameCube games", 8000);
|
|
||||||
Host::OSD_AddMessage("should also work fine, but the CARD UCode will not work.", 8000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -86,11 +86,11 @@ WARNPC 0x8b
|
|||||||
ORG 0x8b
|
ORG 0x8b
|
||||||
; called by GBA ucode
|
; called by GBA ucode
|
||||||
dram_to_cpu:
|
dram_to_cpu:
|
||||||
srs @DSMAH, $AX0.H
|
sr @DSMAH, $AX0.H
|
||||||
srs @DSMAL, $AX0.L
|
sr @DSMAL, $AX0.L
|
||||||
si @DSCR, #0x1
|
si @DSCR, #0x1
|
||||||
srs @DSPA, $AX1.H
|
sr @DSPA, $AX1.H
|
||||||
srs @DSBL, $AX1.L
|
sr @DSBL, $AX1.L
|
||||||
call wait_dma+#IROM_BASE
|
call wait_dma+#IROM_BASE
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -108,11 +108,11 @@ ORG 0xbc
|
|||||||
; called by GBA ucode
|
; called by GBA ucode
|
||||||
bootucode_ax:
|
bootucode_ax:
|
||||||
lris $AC0.M, #0
|
lris $AC0.M, #0
|
||||||
srs @DSCR, $AC0.M
|
srs @DSCR, $AC0.M
|
||||||
srs @DSMAH, $AX0.H
|
sr @DSMAH, $AX0.H
|
||||||
srs @DSMAL, $AX0.L
|
sr @DSMAL, $AX0.L
|
||||||
srs @DSPA, $AX1.H
|
sr @DSPA, $AX1.H
|
||||||
srs @DSBL, $AX1.L
|
sr @DSBL, $AX1.L
|
||||||
call wait_dma+#IROM_BASE
|
call wait_dma+#IROM_BASE
|
||||||
|
|
||||||
bootucode_ix:
|
bootucode_ix:
|
||||||
|
@ -1,3 +1,13 @@
|
|||||||
|
Legal GC/WII DSP IROM replacement (v0.4)
|
||||||
|
-------------------------------------------------------
|
||||||
|
|
||||||
|
- irom: Minor accuracy and documentation improvements
|
||||||
|
- irom: Remove use of SRS instruction with AX registers, as those instructions
|
||||||
|
do not actually exist
|
||||||
|
|
||||||
|
Tilka, Pokechu22
|
||||||
|
17/aug/2021
|
||||||
|
|
||||||
Legal GC/WII DSP IROM replacement (v0.3.1)
|
Legal GC/WII DSP IROM replacement (v0.3.1)
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user