mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-20 03:01:02 +00:00
Fix Dig bundle 'clicking'
svn-id: r4197
This commit is contained in:
parent
ab0401242e
commit
eeda732b36
@ -393,6 +393,7 @@ Credits:
|
||||
Jonathan 'khalek' - Expert weaver in the Loom
|
||||
Nicolas Noble - Config file support
|
||||
Pawel Kolodziejski - Added missing Dig SMUSH codecs
|
||||
Felix Jakschitsc - His hard work on Zak256
|
||||
|
||||
And to all the contributors, users, and beta testers we've missed.
|
||||
Thanks!
|
||||
|
25
sound.cpp
25
sound.cpp
@ -684,7 +684,7 @@ typedef struct {int offset, size, codec;} COMP_table;
|
||||
void Scumm::decompressBundleSound(int index) {
|
||||
int i, z;
|
||||
COMP_table table[50];
|
||||
static unsigned char *CompInput, *CompOutput, *CompFinal;
|
||||
unsigned char *CompInput, *CompOutput, *CompFinal, *Final;
|
||||
int outputSize, finalSize;
|
||||
|
||||
fileSeek(_sfxFile, bundle_table[index].offset, SEEK_SET);
|
||||
@ -759,10 +759,25 @@ void Scumm::decompressBundleSound(int index) {
|
||||
free(CompOutput); CompOutput= NULL;
|
||||
}
|
||||
|
||||
/* FIXME: This is nasty. We are actually sending the whole
|
||||
decompressed packet to the mixer.. but the packet
|
||||
actually contains further subblocks! (eg, sync) */
|
||||
_mixer->play_raw(NULL, CompFinal, finalSize, 22050, SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE);
|
||||
{ /* Parse decompressed data */
|
||||
byte *ptr = CompFinal;
|
||||
int tag, size;
|
||||
tag = READ_BE_UINT32(ptr); ptr+=4;
|
||||
if (tag != 'iMUS') {
|
||||
warning("Decompression of bundle sound failed");
|
||||
free(CompFinal);
|
||||
return;
|
||||
}
|
||||
size = READ_BE_UINT32(ptr); ptr+=4;
|
||||
tag = READ_BE_UINT32(ptr); ptr+=4;
|
||||
size = READ_BE_UINT32(ptr); ptr+=size+4;
|
||||
tag = READ_BE_UINT32(ptr); ptr+=4;
|
||||
size = READ_BE_UINT32(ptr); ptr+=4;
|
||||
Final = (unsigned char *)malloc(size);
|
||||
memcpy(&Final[0], &ptr[0], size);
|
||||
_mixer->play_raw(NULL, Final, size, 22050, SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE);
|
||||
free(CompFinal);
|
||||
}
|
||||
}
|
||||
|
||||
void Scumm::playBundleSound(char *sound)
|
||||
|
Loading…
x
Reference in New Issue
Block a user