mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-09-05 17:15:49 +00:00
DSP: Fix ACCOV not suspending accelerator reads
When an ACCOV is triggered, the accelerator stops reading back anything and updating the current address until the YN2 register is set. This is kept track of internally by the DSP; this state is not exposed via any register. However, we need to emulate this behaviour correctly because some ucodes rely on it (notably AX GC); failure to emulate it will result in reading past the end and start address for non-looped voices.
This commit is contained in:
parent
8310a672b0
commit
bd03f2e46e
4 changed files with 16 additions and 5 deletions
|
@ -199,10 +199,10 @@ protected:
|
|||
|
||||
#ifdef AX_WII
|
||||
// One of the few meaningful differences between AXGC and AXWii:
|
||||
// while AXGC handles non looping voices ending by having 0000
|
||||
// samples at the loop address, AXWii has the 0000 samples
|
||||
// internally in DRAM and use an internal pointer to it (loop addr
|
||||
// does not contain 0000 samples on AXWii!).
|
||||
// while AXGC handles non looping voices ending by relying on the
|
||||
// accelerator to stop reads once the loop address is reached,
|
||||
// AXWii has the 0000 samples internally in DRAM and use an internal
|
||||
// pointer to it (loop addr does not contain 0000 samples on AXWii!).
|
||||
acc_end_reached = true;
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue