diff options
author | Martin Kiewitz | 2013-12-11 08:25:23 +0100 |
---|---|---|
committer | Martin Kiewitz | 2013-12-11 08:25:23 +0100 |
commit | 693d5e662595f60eed41feb5254a28bbd318094e (patch) | |
tree | 4d7461880aca44a8f9d517c326b306ddc45cecef /engines/sci/resource_audio.cpp | |
parent | 298f4a5c065c1dded3c3462ea5bfb97814f370e1 (diff) | |
download | scummvm-rg350-693d5e662595f60eed41feb5254a28bbd318094e.tar.gz scummvm-rg350-693d5e662595f60eed41feb5254a28bbd318094e.tar.bz2 scummvm-rg350-693d5e662595f60eed41feb5254a28bbd318094e.zip |
SCI: rave support (KQ6 hires portrait lip sync)
Thanks to wjp and [md5] for helping
Diffstat (limited to 'engines/sci/resource_audio.cpp')
-rw-r--r-- | engines/sci/resource_audio.cpp | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/engines/sci/resource_audio.cpp b/engines/sci/resource_audio.cpp index 8c39edc42e..268180b531 100644 --- a/engines/sci/resource_audio.cpp +++ b/engines/sci/resource_audio.cpp @@ -101,32 +101,34 @@ bool Resource::loadFromAudioVolumeSCI11(Common::SeekableReadStream *file) { } file->seek(-4, SEEK_CUR); - ResourceType type = _resMan->convertResType(file->readByte()); - if (((getType() == kResourceTypeAudio || getType() == kResourceTypeAudio36) && (type != kResourceTypeAudio)) - || ((getType() == kResourceTypeSync || getType() == kResourceTypeSync36) && (type != kResourceTypeSync))) { - warning("Resource type mismatch loading %s", _id.toString().c_str()); - unalloc(); - return false; - } - - _headerSize = file->readByte(); - - if (type == kResourceTypeAudio) { - if (_headerSize != 7 && _headerSize != 11 && _headerSize != 12) { - warning("Unsupported audio header"); + // Rave-resources (King's Quest 6) don't have any header at all + if (getType() != kResourceTypeRave) { + ResourceType type = _resMan->convertResType(file->readByte()); + if (((getType() == kResourceTypeAudio || getType() == kResourceTypeAudio36) && (type != kResourceTypeAudio)) + || ((getType() == kResourceTypeSync || getType() == kResourceTypeSync36) && (type != kResourceTypeSync))) { + warning("Resource type mismatch loading %s", _id.toString().c_str()); unalloc(); return false; } + + _headerSize = file->readByte(); + + if (type == kResourceTypeAudio) { + if (_headerSize != 7 && _headerSize != 11 && _headerSize != 12) { + warning("Unsupported audio header"); + unalloc(); + return false; + } - if (_headerSize != 7) { // Size is defined already from the map - // Load sample size - file->seek(7, SEEK_CUR); - size = file->readUint32LE(); - // Adjust offset to point at the header data again - file->seek(-11, SEEK_CUR); + if (_headerSize != 7) { // Size is defined already from the map + // Load sample size + file->seek(7, SEEK_CUR); + size = file->readUint32LE(); + // Adjust offset to point at the header data again + file->seek(-11, SEEK_CUR); + } } } - return loadPatch(file); } @@ -863,6 +865,7 @@ void AudioVolumeResourceSource::loadResource(ResourceManager *resMan, Resource * switch (res->getType()) { case kResourceTypeSync: case kResourceTypeSync36: + case kResourceTypeRave: // we should already have a (valid) size break; default: |