Corrected the step size bytes for the start of the DSP accelerator chunk. Patch by hk.konpie
This commit is contained in:
parent
711a8aa6ad
commit
32dbdbe92f
|
@ -15,7 +15,7 @@ static s16 ADPCM_Step(u32& _rSamplePos)
|
||||||
{
|
{
|
||||||
const s16 *pCoefTable = (const s16 *)&g_dsp.ifx_regs[DSP_COEF_A1_0];
|
const s16 *pCoefTable = (const s16 *)&g_dsp.ifx_regs[DSP_COEF_A1_0];
|
||||||
|
|
||||||
if (((_rSamplePos)& 15) == 0)
|
if ((_rSamplePos & 15) == 0)
|
||||||
{
|
{
|
||||||
g_dsp.ifx_regs[DSP_PRED_SCALE] = DSPHost::ReadHostMemory((_rSamplePos & ~15) >> 1);
|
g_dsp.ifx_regs[DSP_PRED_SCALE] = DSPHost::ReadHostMemory((_rSamplePos & ~15) >> 1);
|
||||||
_rSamplePos += 2;
|
_rSamplePos += 2;
|
||||||
|
@ -122,10 +122,10 @@ 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)
|
if ((EndAddress & 15) == 0)
|
||||||
step_size_bytes = 2;
|
|
||||||
else
|
|
||||||
step_size_bytes = 1;
|
step_size_bytes = 1;
|
||||||
|
else
|
||||||
|
step_size_bytes = 2;
|
||||||
val = ADPCM_Step(Address);
|
val = ADPCM_Step(Address);
|
||||||
break;
|
break;
|
||||||
case 0x0A: // 16-bit PCM audio
|
case 0x0A: // 16-bit PCM audio
|
||||||
|
@ -139,12 +139,12 @@ u16 dsp_read_accelerator()
|
||||||
val = DSPHost::ReadHostMemory(Address) << 8;
|
val = DSPHost::ReadHostMemory(Address) << 8;
|
||||||
g_dsp.ifx_regs[DSP_YN2] = g_dsp.ifx_regs[DSP_YN1];
|
g_dsp.ifx_regs[DSP_YN2] = g_dsp.ifx_regs[DSP_YN1];
|
||||||
g_dsp.ifx_regs[DSP_YN1] = val;
|
g_dsp.ifx_regs[DSP_YN1] = val;
|
||||||
step_size_bytes = 1;
|
step_size_bytes = 2;
|
||||||
Address++;
|
Address++;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ERROR_LOG(DSPLLE, "dsp_read_accelerator() - unknown format 0x%x", g_dsp.ifx_regs[DSP_FORMAT]);
|
ERROR_LOG(DSPLLE, "dsp_read_accelerator() - unknown format 0x%x", g_dsp.ifx_regs[DSP_FORMAT]);
|
||||||
step_size_bytes = 1;
|
step_size_bytes = 2;
|
||||||
Address++;
|
Address++;
|
||||||
val = 0;
|
val = 0;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -163,13 +163,14 @@ 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
|
|
||||||
{
|
if ((acc_end_addr & 15) == 0)
|
||||||
step_size_bytes = 1;
|
step_size_bytes = 1;
|
||||||
}
|
else
|
||||||
|
step_size_bytes = 2;
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
|
@ -205,7 +206,7 @@ u16 AcceleratorGetSample()
|
||||||
ret = DSP::ReadARAM(*acc_cur_addr) << 8;
|
ret = DSP::ReadARAM(*acc_cur_addr) << 8;
|
||||||
acc_pb->adpcm.yn2 = acc_pb->adpcm.yn1;
|
acc_pb->adpcm.yn2 = acc_pb->adpcm.yn1;
|
||||||
acc_pb->adpcm.yn1 = ret;
|
acc_pb->adpcm.yn1 = ret;
|
||||||
step_size_bytes = 1;
|
step_size_bytes = 2;
|
||||||
*acc_cur_addr += 1;
|
*acc_cur_addr += 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue