The Dig: 16 bit samples and mixer
svn-id: r4358
This commit is contained in:
parent
db9cdefa40
commit
c9a53bcf76
2 changed files with 21 additions and 5 deletions
|
@ -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");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue