aboutsummaryrefslogtreecommitdiff
path: root/engines/lastexpress/game
diff options
context:
space:
mode:
authorEvgeny Grechnikov2018-10-20 16:35:23 +0300
committerEvgeny Grechnikov2018-10-20 16:35:23 +0300
commitaf580eaa853b2434c0d237cff49f7f273444a06d (patch)
tree295dd4dfb9fadb348bd46bdc8512e16b19555c58 /engines/lastexpress/game
parent9f7ae73a7b7318311e5cc52d36e451cacfba8a02 (diff)
downloadscummvm-rg350-af580eaa853b2434c0d237cff49f7f273444a06d.tar.gz
scummvm-rg350-af580eaa853b2434c0d237cff49f7f273444a06d.tar.bz2
scummvm-rg350-af580eaa853b2434c0d237cff49f7f273444a06d.zip
LASTEXPRESS: save/load sound state
Warning: breaks compatibility with previous savefiles. They were mostly broken anyway, locking any NPC who waited for kActionEndSound when savefile was created.
Diffstat (limited to 'engines/lastexpress/game')
-rw-r--r--engines/lastexpress/game/savegame.cpp4
-rw-r--r--engines/lastexpress/game/savegame.h5
2 files changed, 5 insertions, 4 deletions
diff --git a/engines/lastexpress/game/savegame.cpp b/engines/lastexpress/game/savegame.cpp
index 8b45835fc7..97fd67e533 100644
--- a/engines/lastexpress/game/savegame.cpp
+++ b/engines/lastexpress/game/savegame.cpp
@@ -40,8 +40,6 @@
namespace LastExpress {
-#define DISABLE_COMPRESSION 1
-
// Names of savegames
static const struct {
const char *saveFile;
@@ -730,7 +728,7 @@ void SaveLoad::writeEntry(SavegameType type, EntityIndex entity, uint32 value) {
writeValue(ser, "inventory", WRAP_SYNC_FUNCTION(getInventory(), Inventory, saveLoadWithSerializer), 7 * 32);
writeValue(ser, "objects", WRAP_SYNC_FUNCTION(getObjects(), Objects, saveLoadWithSerializer), 5 * 128);
writeValue(ser, "entities", WRAP_SYNC_FUNCTION(getEntities(), Entities, saveLoadWithSerializer), 1262 * 40);
- writeValue(ser, "sound", WRAP_SYNC_FUNCTION(getSoundQueue(), SoundQueue, saveLoadWithSerializer), 3 * 4 + getSoundQueue()->count() * 64);
+ writeValue(ser, "sound", WRAP_SYNC_FUNCTION(getSoundQueue(), SoundQueue, saveLoadWithSerializer), 3 * 4 + getSoundQueue()->count() * 68);
writeValue(ser, "savepoints", WRAP_SYNC_FUNCTION(getSavePoints(), SavePoints, saveLoadWithSerializer), 128 * 16 + 4 + getSavePoints()->count() * 16);
_savegame->process();
diff --git a/engines/lastexpress/game/savegame.h b/engines/lastexpress/game/savegame.h
index f374e18a44..6c3105b8c0 100644
--- a/engines/lastexpress/game/savegame.h
+++ b/engines/lastexpress/game/savegame.h
@@ -79,8 +79,11 @@
namespace LastExpress {
+// our own hack until compression code will be confirmed stable
+#define DISABLE_COMPRESSION 1
+
// Savegame signatures
-#define SAVEGAME_SIGNATURE 0x12001200 // 301994496
+#define SAVEGAME_SIGNATURE (0x12001200 ^ DISABLE_COMPRESSION) // 301994496
#define SAVEGAME_ENTRY_SIGNATURE 0xE660E660 // 3865110112
#define WRAP_SYNC_FUNCTION(instance, className, method) \