Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fixed the random static audio that would sometimes occur in DSP HLE a…
…nd DSP LLE.
  • Loading branch information
skidau committed Jan 10, 2013
1 parent 3ebe071 commit 7bf72a6
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 8 deletions.
5 changes: 2 additions & 3 deletions Source/Core/Core/Src/DSP/DSPAccelerator.cpp
Expand Up @@ -165,11 +165,10 @@ u16 dsp_read_accelerator()
// Somehow, YN1 and YN2 must be initialized with their "loop" values,
// so yeah, it seems likely that we should raise an exception to let
// the DSP program do that, at least if DSP_FORMAT == 0x0A.
if (Address >= EndAddress)
if ((Address & ~0x1f) == (EndAddress & ~0x1f))
{
// Set address back to start address.
if ((Address & ~0x1f) == (EndAddress & ~0x1f))
Address = (g_dsp.ifx_regs[DSP_ACSAH] << 16) | g_dsp.ifx_regs[DSP_ACSAL];
Address = (g_dsp.ifx_regs[DSP_ACSAH] << 16) | g_dsp.ifx_regs[DSP_ACSAL];
DSPCore_SetException(EXP_ACCOV);
}

Expand Down
8 changes: 3 additions & 5 deletions Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX_Voice.h
Expand Up @@ -203,12 +203,10 @@ u16 AcceleratorGetSample()
//
// On real hardware, this would raise an interrupt that is handled by the
// UCode. We simulate what this interrupt does here.
if (*acc_cur_addr >= acc_end_addr)
if ((*acc_cur_addr & ~0x1F) == (acc_end_addr & ~0x1F))
{
// If we are really at the end (and we don't simply have cur_addr >
// end_addr all the time), loop back to loop_addr.
if ((*acc_cur_addr & ~0x1F) == (acc_end_addr & ~0x1F))
*acc_cur_addr = acc_loop_addr;
// If we are really at the end, loop back to loop_addr.
*acc_cur_addr = acc_loop_addr;

if (acc_pb->audio_addr.looping)
{
Expand Down

0 comments on commit 7bf72a6

Please sign in to comment.