dsp_rom: Remove illegal use of AX with SRS

This commit is contained in:
Pokechu22 2021-08-16 22:15:19 -07:00
parent c881f4db22
commit a5e2a0d973
4 changed files with 41 additions and 26 deletions

Binary file not shown.

View file

@ -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;

View file

@ -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:

View file

@ -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)
------------------------------------------------------- -------------------------------------------------------