From 0826501ef63c5b8e6b40299d25142a3562c6fde9 Mon Sep 17 00:00:00 2001 From: Colin Snover Date: Sun, 8 Jan 2017 22:59:30 -0600 Subject: SCI32: Fix audio, wave, VMD, Duck, CLUT, TGA, ZZZ, Etc patches Specifically, audio patches are used in at least PQ:SWAT (40103.AUD), Lighthouse (9103.AUD), and the GK2 demo (300.AUD). --- engines/sci/sound/audio.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'engines/sci/sound/audio.cpp') diff --git a/engines/sci/sound/audio.cpp b/engines/sci/sound/audio.cpp index e470b315cc..273c4c1a0d 100644 --- a/engines/sci/sound/audio.cpp +++ b/engines/sci/sound/audio.cpp @@ -397,12 +397,13 @@ Audio::RewindableAudioStream *AudioPlayer::getAudioStream(uint32 number, uint32 #endif } else { // Original source file - if (audioRes->_headerSize > 0) { + if ((audioRes->getUint8At(0) & 0x7f) == kResourceTypeAudio && audioRes->getUint32BEAt(2) == MKTAG('S','O','L',0)) { // SCI1.1 - Common::MemoryReadStream headerStream(audioRes->_header, audioRes->_headerSize, DisposeAfterUse::NO); + const uint8 headerSize = audioRes->getUint8At(1); + Common::MemoryReadStream headerStream = audioRes->subspan(kResourceHeaderSize, headerSize).toStream(); - if (readSOLHeader(&headerStream, audioRes->_headerSize, size, _audioRate, audioFlags, audioRes->size())) { - Common::MemoryReadStream dataStream(audioRes->toStream()); + if (readSOLHeader(&headerStream, headerSize, size, _audioRate, audioFlags, audioRes->size())) { + Common::MemoryReadStream dataStream(audioRes->subspan(kResourceHeaderSize + headerSize).toStream()); data = readSOLAudio(&dataStream, size, audioFlags, flags); } } else if (audioRes->size() > 4 && audioRes->getUint32BEAt(0) == MKTAG('R','I','F','F')) { -- cgit v1.2.3