dsp_rom: skip bootucode_ax when running from entrypoint

This could cause the first branch of the bootucode procedure, which
takes its parameters from the AX registers, to run during the ROM init
sequence. Since the ROM doesn't set any of the AX registers, the values
aren't meaningful, and can cause bad DMA transfers and crashes.
This commit is contained in:
Michael M
2017-08-10 10:42:53 -07:00
parent f2a9ad0089
commit fcb1eb9d3b
4 changed files with 28 additions and 13 deletions

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