diff options
| author | skidau <skidau@gmail.com> | 2015-12-29 10:21:12 +1100 |
|---|---|---|
| committer | skidau <skidau@gmail.com> | 2015-12-29 10:21:12 +1100 |
| commit | d3d0aa69ce35d471cb699771cbaf797aef55bb2e (patch) | |
| tree | 9bf1026e89146b4c2410ac7346d7f1bc6e496df0 /Source/Core | |
| parent | aabcd441d9a9fa98565a6aaf82cf56b64b53767d (diff) | |
| parent | 5555822ca2ff0acaefb85d8690de1f0d61404db7 (diff) | |
Merge pull request #3397 from skidau/dsp-acc-loop-end
Catered for the case where ADPCM audio would loop before the end of the stream
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/DSP/DSPAccelerator.cpp | 12 | ||||
| -rw-r--r-- | Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h | 12 |
2 files changed, 20 insertions, 4 deletions
diff --git a/Source/Core/Core/DSP/DSPAccelerator.cpp b/Source/Core/Core/DSP/DSPAccelerator.cpp index 6a6ce0ffb4..b750d60ff9 100644 --- a/Source/Core/Core/DSP/DSPAccelerator.cpp +++ b/Source/Core/Core/DSP/DSPAccelerator.cpp @@ -121,10 +121,18 @@ u16 dsp_read_accelerator() switch (g_dsp.ifx_regs[DSP_FORMAT]) { case 0x00: // ADPCM audio - if ((EndAddress & 15) == 0) + switch (EndAddress & 15) + { + case 0: // Tom and Jerry step_size_bytes = 1; - else + break; + case 1: // Blazing Angels + step_size_bytes = 0; + break; + default: step_size_bytes = 2; + break; + } val = ADPCM_Step(Address); break; case 0x0A: // 16-bit PCM audio diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h b/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h index 98c60cac30..684aa2c16e 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h +++ b/Source/Core/Core/HW/DSPHLE/UCodes/AXVoice.h @@ -152,10 +152,18 @@ u16 AcceleratorGetSample() *acc_cur_addr += 2; } - if ((acc_end_addr & 15) == 0) + switch (acc_end_addr & 15) + { + case 0: // Tom and Jerry step_size_bytes = 1; - else + break; + case 1: // Blazing Angels + step_size_bytes = 0; + break; + default: step_size_bytes = 2; + break; + } int scale = 1 << (acc_pb->adpcm.pred_scale & 0xF); int coef_idx = (acc_pb->adpcm.pred_scale >> 4) & 0x7; |
