aboutsummaryrefslogtreecommitdiff
path: root/engines/toon/audio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/toon/audio.cpp')
-rw-r--r--engines/toon/audio.cpp26
1 files changed, 4 insertions, 22 deletions
diff --git a/engines/toon/audio.cpp b/engines/toon/audio.cpp
index d76a63c1ae..c2e0bf7b20 100644
--- a/engines/toon/audio.cpp
+++ b/engines/toon/audio.cpp
@@ -26,24 +26,10 @@
#include "toon/audio.h"
#include "common/memstream.h"
#include "common/substream.h"
+#include "audio/decoders/adpcm_intern.h"
namespace Toon {
-static int ADPCM_index[8] = {
- -1, -1, -1, -1, 2 , 4 , 6 , 8
-};
-static int ADPCM_table[89] = {
- 7, 8, 9, 10, 11, 12, 13, 14, 16, 17,
- 19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
- 50, 55, 60, 66, 73, 80, 88, 97, 107, 118,
- 130, 143, 157, 173, 190, 209, 230, 253, 279, 307,
- 337, 371, 408, 449, 494, 544, 598, 658, 724, 796,
- 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066,
- 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358,
- 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
- 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
-};
-
AudioManager::AudioManager(ToonEngine *vm, Audio::Mixer *mixer) : _vm(vm), _mixer(mixer) {
for (int32 i = 0; i < 16; i++)
_channels[i] = NULL;
@@ -372,7 +358,7 @@ void AudioStreamInstance::decodeADPCM(uint8 *comp, int16 *dest, int32 packetSize
int32 v31 = v30 & 0x8;
int32 v32 = v30 & 0x7;
- int32 v33 = ADPCM_table[v19];
+ int32 v33 = Audio::Ima_ADPCMStream::_imaTable[v19];
int32 v34 = v33 >> 3;
if (v32 & 4)
v34 += v33;
@@ -383,12 +369,8 @@ void AudioStreamInstance::decodeADPCM(uint8 *comp, int16 *dest, int32 packetSize
if (v32 & 1)
v34 += v33 >> 2;
- v19 += ADPCM_index[v32];
- if (v19 < 0)
- v19 = 0;
-
- if (v19 > 88)
- v19 = 88;
+ v19 += Audio::ADPCMStream::_stepAdjustTable[v32];
+ v19 = CLIP<int32>(v19, 0, ARRAYSIZE(Audio::Ima_ADPCMStream::_imaTable) - 1);
if (v31)
v18 -= v34;