Merge pull request #5912 from ligfx/fixdspreset

dsp_rom: skip bootucode_ax when running from entrypoint
This commit is contained in:
Pierre Bourdon 2017-08-10 22:31:07 +02:00 committed by GitHub
commit d30b87947c
4 changed files with 28 additions and 13 deletions

Binary file not shown.

View File

@ -41,22 +41,26 @@ static bool VerifyRoms()
u32 hash_drom; // dsp_coef.bin
};
static const std::array<DspRomHashes, 5> known_roms = {
{// Official Nintendo ROM
{0x66f334fe, 0xf3b93527},
static const std::array<DspRomHashes, 6> known_roms = {{
// Official Nintendo ROM
{0x66f334fe, 0xf3b93527},
// LM1234 replacement ROM (Zelda UCode only)
{0x9c8f593c, 0x10000001},
// LM1234 replacement ROM (Zelda UCode only)
{0x9c8f593c, 0x10000001},
// delroth's improvement on LM1234 replacement ROM (Zelda and AX only,
// IPL/Card/GBA still broken)
{0xd9907f71, 0xb019c2fb},
// delroth's improvement on LM1234 replacement ROM (Zelda and AX only,
// IPL/Card/GBA still broken)
{0xd9907f71, 0xb019c2fb},
// above with improved resampling coefficients
{0xd9907f71, 0xdb6880c1},
// above with improved resampling coefficients
{0xd9907f71, 0xdb6880c1},
// above with support for GBA ucode
{0x3aa4a793, 0xa4a575f5}}};
// above with support for GBA ucode
{0x3aa4a793, 0xa4a575f5},
// above with fix to skip bootucode_ax when running from ROM entrypoint
{0x128ea7a2, 0xa4a575f5},
}};
u32 hash_irom = HashAdler32((u8*)g_dsp.irom, DSP_IROM_BYTE_SIZE);
u32 hash_drom = HashAdler32((u8*)g_dsp.coef, DSP_COEF_BYTE_SIZE);

View File

@ -55,7 +55,8 @@ param5:
jnz mainloop+#IROM_BASE
call wait_for_cpu_mbox+#IROM_BASE
lr $AR0, @CMBL
jmp 0x80b5
; skip the branch of bootucode that uses the AX registers
jmp bootucode_ix+#IROM_BASE
wait_dma:
lrs $AC0.M, @DSCR

View File

@ -1,3 +1,13 @@
Legal GC/WII DSP IROM replacement (v0.3.1)
-------------------------------------------------------
- irom: When running from the ROM entrypoint, skip the bootucode_ax branch
of the bootucode procedure. Since the ROM doesn't set any of the AX
registers, it could cause bad DMA transfers and crashes.
ligfx
10/aug/2017
Legal GC/WII DSP IROM replacement (v0.3)
-------------------------------------------------------