diff options
Diffstat (limited to 'engines/saga/rscfile.cpp')
-rw-r--r-- | engines/saga/rscfile.cpp | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/engines/saga/rscfile.cpp b/engines/saga/rscfile.cpp index 318d8b71b7..3063e8a9a6 100644 --- a/engines/saga/rscfile.cpp +++ b/engines/saga/rscfile.cpp @@ -683,22 +683,24 @@ void Resource::loadGlobalResources(int chapter, int actorsEntrance) { _vm->_anim->loadCutawayList(resourcePointer, resourceLength); - _vm->_resource->loadResource(resourceContext, _metaResource.songTableID, resourcePointer, resourceLength); + if (_metaResource.songTableID > 0) { + _vm->_resource->loadResource(resourceContext, _metaResource.songTableID, resourcePointer, resourceLength); - if (resourceLength == 0) { - error("Resource::loadGlobalResources Can't load songs list for current track"); - } + if (resourceLength == 0) { + error("Resource::loadGlobalResources Can't load songs list for current track"); + } - free(_vm->_music->_songTable); - - _vm->_music->_songTableLen = resourceLength / 4; - _vm->_music->_songTable = (int32 *)malloc(sizeof(int32) * _vm->_music->_songTableLen); + free(_vm->_music->_songTable); + + _vm->_music->_songTableLen = resourceLength / 4; + _vm->_music->_songTable = (int32 *)malloc(sizeof(int32) * _vm->_music->_songTableLen); - MemoryReadStream songS(resourcePointer, resourceLength); + MemoryReadStream songS(resourcePointer, resourceLength); - for (i = 0; i < _vm->_music->_songTableLen; i++) - _vm->_music->_songTable[i] = songS.readSint32LE(); - free(resourcePointer); + for (i = 0; i < _vm->_music->_songTableLen; i++) + _vm->_music->_songTable[i] = songS.readSint32LE(); + free(resourcePointer); + } int voiceLUTResourceID = 0; @@ -730,6 +732,9 @@ void Resource::loadGlobalResources(int chapter, int actorsEntrance) { voiceLUTResourceID = 28; break; case 7: + // IHNM demo + _vm->_sndRes->setVoiceBank(0); + voiceLUTResourceID = 17; break; case 8: _vm->_sndRes->setVoiceBank(0); |