mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-25 23:29:44 -06:00
Fixed the step_size_bytes in the ADPCM Accelerator loop taking into account the varying number of bytes that ADPCM steps by.
This commit is contained in:
@ -122,8 +122,11 @@ u16 dsp_read_accelerator()
|
|||||||
switch (g_dsp.ifx_regs[DSP_FORMAT])
|
switch (g_dsp.ifx_regs[DSP_FORMAT])
|
||||||
{
|
{
|
||||||
case 0x00: // ADPCM audio
|
case 0x00: // ADPCM audio
|
||||||
|
if ((Address & 15) == 0)
|
||||||
|
step_size_bytes = 2;
|
||||||
|
else
|
||||||
|
step_size_bytes = 1;
|
||||||
val = ADPCM_Step(Address);
|
val = ADPCM_Step(Address);
|
||||||
step_size_bytes = 2;
|
|
||||||
break;
|
break;
|
||||||
case 0x0A: // 16-bit PCM audio
|
case 0x0A: // 16-bit PCM audio
|
||||||
val = (DSPHost::ReadHostMemory(Address * 2) << 8) | DSPHost::ReadHostMemory(Address * 2 + 1);
|
val = (DSPHost::ReadHostMemory(Address * 2) << 8) | DSPHost::ReadHostMemory(Address * 2 + 1);
|
||||||
|
@ -163,9 +163,13 @@ u16 AcceleratorGetSample()
|
|||||||
if ((*acc_cur_addr & 15) == 0)
|
if ((*acc_cur_addr & 15) == 0)
|
||||||
{
|
{
|
||||||
acc_pb->adpcm.pred_scale = DSP::ReadARAM((*acc_cur_addr & ~15) >> 1);
|
acc_pb->adpcm.pred_scale = DSP::ReadARAM((*acc_cur_addr & ~15) >> 1);
|
||||||
|
step_size_bytes = 2;
|
||||||
*acc_cur_addr += 2;
|
*acc_cur_addr += 2;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
step_size_bytes = 1;
|
||||||
|
}
|
||||||
int scale = 1 << (acc_pb->adpcm.pred_scale & 0xF);
|
int scale = 1 << (acc_pb->adpcm.pred_scale & 0xF);
|
||||||
int coef_idx = (acc_pb->adpcm.pred_scale >> 4) & 0x7;
|
int coef_idx = (acc_pb->adpcm.pred_scale >> 4) & 0x7;
|
||||||
|
|
||||||
@ -184,7 +188,6 @@ u16 AcceleratorGetSample()
|
|||||||
|
|
||||||
acc_pb->adpcm.yn2 = acc_pb->adpcm.yn1;
|
acc_pb->adpcm.yn2 = acc_pb->adpcm.yn1;
|
||||||
acc_pb->adpcm.yn1 = val;
|
acc_pb->adpcm.yn1 = val;
|
||||||
step_size_bytes = 2;
|
|
||||||
*acc_cur_addr += 1;
|
*acc_cur_addr += 1;
|
||||||
ret = val;
|
ret = val;
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user