diff options
Diffstat (limited to 'engines/toon/audio.cpp')
-rw-r--r-- | engines/toon/audio.cpp | 26 |
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; |