diff options
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/saveload.cpp | 17 | ||||
-rw-r--r-- | scumm/saveload.h | 2 |
2 files changed, 18 insertions, 1 deletions
diff --git a/scumm/saveload.cpp b/scumm/saveload.cpp index 2972644c97..d90d34341a 100644 --- a/scumm/saveload.cpp +++ b/scumm/saveload.cpp @@ -164,6 +164,23 @@ bool ScummEngine::loadState(int slot, bool compat, SaveFileManager *mgr) { // it is not, hence we check & correct it here. if (_screenTop < 0) _screenTop = 0; + + // For a long time, we used incorrect locations for some camera related + // scumm vars. We now know the proper locations. To be able to properly use + // old save games, we update the old (bad) variables to the new (correct) + // ones. + if (hdr.ver <= 27 && _version == 8) { + _scummVars[VAR_CAMERA_MIN_X] = _scummVars[101]; + _scummVars[VAR_CAMERA_MAX_X] = _scummVars[102]; + _scummVars[VAR_CAMERA_MIN_Y] = _scummVars[103]; + _scummVars[VAR_CAMERA_MAX_Y] = _scummVars[104]; + _scummVars[VAR_CAMERA_THRESHOLD_X] = _scummVars[105]; + _scummVars[VAR_CAMERA_THRESHOLD_Y] = _scummVars[106]; + _scummVars[VAR_CAMERA_SPEED_X] = _scummVars[107]; + _scummVars[VAR_CAMERA_SPEED_Y] = _scummVars[108]; + _scummVars[VAR_CAMERA_ACCEL_X] = _scummVars[109]; + _scummVars[VAR_CAMERA_ACCEL_Y] = _scummVars[110]; + } // We could simply dirty colours 0-15 for 16-colour games -- nowadays // they handle their palette pretty much like the more recent games diff --git a/scumm/saveload.h b/scumm/saveload.h index 30d95a17e9..da76a4ba0f 100644 --- a/scumm/saveload.h +++ b/scumm/saveload.h @@ -32,7 +32,7 @@ namespace Scumm { // Can be useful for other ports too :) #define VER(x) x -#define CURRENT_VER 27 +#define CURRENT_VER 28 // To work around a warning in GCC 3.2 (and 3.1 ?) regarding non-POD types, // we use a small trick: instead of 0 we use 42. Why? Well, it seems newer GCC |