From 5311191687b678fda4a3379f5b79bc735329f35b Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Sat, 4 Jul 2015 01:10:28 +0300 Subject: SAGA: Add support for the scene descriptors of the ITE DOS demo --- engines/saga/scene.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'engines') diff --git a/engines/saga/scene.cpp b/engines/saga/scene.cpp index 4fa15d09e5..efd4c371b1 100644 --- a/engines/saga/scene.cpp +++ b/engines/saga/scene.cpp @@ -866,15 +866,13 @@ void Scene::loadSceneDescriptor(uint32 resourceId) { _sceneDescription.reset(); - if (resourceId == 0) { + if (resourceId == 0) return; - } _vm->_resource->loadResource(_sceneContext, resourceId, sceneDescriptorData); + ByteArrayReadStreamEndian readS(sceneDescriptorData, _sceneContext->isBigEndian()); - if (sceneDescriptorData.size() == 16) { - ByteArrayReadStreamEndian readS(sceneDescriptorData, _sceneContext->isBigEndian()); - + if (sceneDescriptorData.size() == 14 || sceneDescriptorData.size() == 16) { _sceneDescription.flags = readS.readSint16(); _sceneDescription.resourceListResourceId = readS.readSint16(); _sceneDescription.endSlope = readS.readSint16(); @@ -882,7 +880,10 @@ void Scene::loadSceneDescriptor(uint32 resourceId) { _sceneDescription.scriptModuleNumber = readS.readUint16(); _sceneDescription.sceneScriptEntrypointNumber = readS.readUint16(); _sceneDescription.startScriptEntrypointNumber = readS.readUint16(); - _sceneDescription.musicResourceId = readS.readSint16(); + if (sceneDescriptorData.size() == 16) + _sceneDescription.musicResourceId = readS.readSint16(); + } else { + warning("Scene::loadSceneDescriptor: Unknown scene descriptor data size (%d)", sceneDescriptorData.size()); } } -- cgit v1.2.3