From abaaf0cad9a63c1a6f1946a8a90facd1535e762d Mon Sep 17 00:00:00 2001 From: Max Horn Date: Fri, 13 May 2011 11:39:51 +0200 Subject: SCUMM: Tweak sound res syncing --- engines/scumm/saveload.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'engines/scumm/saveload.cpp') diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp index 376351c19a..d81095a37b 100644 --- a/engines/scumm/saveload.cpp +++ b/engines/scumm/saveload.cpp @@ -1636,7 +1636,11 @@ void ScummEngine_v100he::saveOrLoad(Serializer *s) { void ScummEngine::loadResourceOLD(Serializer *ser, int type, int idx) { uint32 size; - if (_res->_types[type]._mode == kDynamicResTypeMode) { + if (type == rtSound && ser->getVersion() >= VER(23)) { + // Save/load only a list of resource numbers that need to be reloaded. + if (ser->loadUint16()) + ensureResourceLoaded(rtSound, idx); + } else if (_res->_types[type]._mode == kDynamicResTypeMode) { size = ser->loadUint32(); if (size) { _res->createResource(type, idx, size); @@ -1655,10 +1659,6 @@ void ScummEngine::loadResourceOLD(Serializer *ser, int type, int idx) { _newNames[idx] = ser->loadUint16(); } } - } else if (_res->_types[type]._mode == kSoundResTypeMode && ser->getVersion() >= VER(23)) { - // Save/load only a list of resource numbers that need to be reloaded. - if (ser->loadUint16()) - ensureResourceLoaded(type, idx); } } @@ -1688,11 +1688,17 @@ void ScummEngine::loadResource(Serializer *ser, int type, int idx) { assert(size); _res->createResource(type, idx, size); ser->loadBytes(getResourceAddress(type, idx), size); + } else if (type == rtSound) { + // HE Games use sound resource 1 for speech + if (_game.heversion >= 60 && idx == 1) + return; + + ensureResourceLoaded(rtSound, idx); } else if (_res->_types[type]._mode == kDynamicResTypeMode) { uint32 size = ser->loadUint32(); assert(size); - _res->createResource(type, idx, size); - ser->loadBytes(getResourceAddress(type, idx), size); + byte *ptr = _res->createResource(type, idx, size); + ser->loadBytes(ptr, size); if (type == rtInventory) { _inventory[idx] = ser->loadUint16(); @@ -1700,12 +1706,6 @@ void ScummEngine::loadResource(Serializer *ser, int type, int idx) { if (type == rtObjectName) { _newNames[idx] = ser->loadUint16(); } - } else if (_res->_types[type]._mode == kSoundResTypeMode) { - // HE Games use sound resource 1 for speech - if (_game.heversion >= 60 && idx == 1) - return; - - ensureResourceLoaded(type, idx); } } -- cgit v1.2.3