From af580eaa853b2434c0d237cff49f7f273444a06d Mon Sep 17 00:00:00 2001 From: Evgeny Grechnikov Date: Sat, 20 Oct 2018 16:35:23 +0300 Subject: 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. --- engines/lastexpress/game/savegame.cpp | 4 +--- engines/lastexpress/game/savegame.h | 5 ++++- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'engines/lastexpress/game') 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) \ -- cgit v1.2.3