The Dig: 16 bit samples and mixer

svn-id: r4358
This commit is contained in:
Paweł Kołodziejski 2002-05-19 15:20:18 +00:00
parent db9cdefa40
commit c9a53bcf76
2 changed files with 21 additions and 5 deletions

View file

@ -125,23 +125,23 @@ void Scumm::processSoundQues()
}
if (bits == 12) {
uint32 s_size = (size * 2) / 3;
byte * buffer = (byte*)malloc (s_size);
byte * buffer = (byte*)malloc (s_size + 4);
uint32 l = 0, r = 0, tmp;
for (; l < size; l += 3)
{
tmp = (ptr[l + 1] & 0x0f) << 8;
tmp = (tmp | ptr[l + 0]) << 4;
tmp -= 0x8000;
// buffer[r++] = (uint8)(tmp & 0xff);
buffer[r++] = (uint8)((tmp >> 8) & 0xff);
buffer[r++] = (uint8)(tmp & 0xff);
tmp = (ptr[l + 1] & 0xf0) << 4;
tmp = (tmp | ptr[l + 2]) << 4;
tmp -= 0x8000;
// buffer[r++] = (uint8)(tmp & 0xff);
buffer[r++] = (uint8)((tmp >> 8) & 0xff);
buffer[r++] = (uint8)(tmp & 0xff);
}
_mixer->play_raw(NULL, buffer, s_size, rate, SoundMixer::FLAG_AUTOFREE);
_mixer->play_raw(NULL, buffer, s_size, rate, SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_16BITS);
}
} else {
warning("DIG: ignoring stereo sample");