aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/saveload_v3.cpp
diff options
context:
space:
mode:
authorSven Hesse2007-08-02 22:12:20 +0000
committerSven Hesse2007-08-02 22:12:20 +0000
commita2aec6c753b7d2881a2460e039d5309e6120de62 (patch)
tree4dd9e2e6f774eb36d0e0ae07b941f51621c02e83 /engines/gob/saveload_v3.cpp
parent59089f95dd2e21065a424405b486e7138cf6b1c6 (diff)
downloadscummvm-rg350-a2aec6c753b7d2881a2460e039d5309e6120de62.tar.gz
scummvm-rg350-a2aec6c753b7d2881a2460e039d5309e6120de62.tar.bz2
scummvm-rg350-a2aec6c753b7d2881a2460e039d5309e6120de62.zip
Saving works now in Lost in Time
svn-id: r28418
Diffstat (limited to 'engines/gob/saveload_v3.cpp')
-rw-r--r--engines/gob/saveload_v3.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/engines/gob/saveload_v3.cpp b/engines/gob/saveload_v3.cpp
index 2f143d683a..249361e222 100644
--- a/engines/gob/saveload_v3.cpp
+++ b/engines/gob/saveload_v3.cpp
@@ -34,9 +34,14 @@
namespace Gob {
-SaveLoad_v3::SaveLoad_v3(GobEngine *vm, const char *targetName) :
+SaveLoad_v3::SaveLoad_v3(GobEngine *vm, const char *targetName,
+ uint32 screenshotSize, uint32 indexOffset, uint32 screenshotOffset) :
SaveLoad_v2(vm, targetName) {
+ _screenshotSize = screenshotSize;
+ _indexOffset = indexOffset;
+ _screenshotOffset = screenshotOffset;
+
_saveSlot = -1;
_stagesCount = 3;
@@ -81,7 +86,7 @@ uint32 SaveLoad_v3::getSaveGameSize() {
size = 1040 + (READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4) * 2;
if (_useScreenshots)
- size += 19968;
+ size += _screenshotSize;
return size;
}
@@ -126,7 +131,7 @@ int32 SaveLoad_v3::getSizeScreenshot() {
in = saveMan->openForLoading(setCurSlot(i));
if (in) {
delete in;
- size = (i + 1) * 19968 + 80;
+ size = (i + 1) * _screenshotSize + _screenshotOffset;
break;
}
}
@@ -218,11 +223,11 @@ bool SaveLoad_v3::loadScreenshot(int16 dataVar, int32 size, int32 offset) {
Common::SaveFileManager *saveMan = g_system->getSavefileManager();
Common::InSaveFile *in;
- int slot = (offset - 80) / 19968;
- int slotR = (offset - 80) % 19968;
+ int slot = (offset - _screenshotOffset) / _screenshotSize;
+ int slotR = (offset - _screenshotOffset) % _screenshotSize;
_useScreenshots = true;
- if ((size == 40) && (offset == 40)) {
+ if ((size == 40) && (offset == _indexOffset)) {
char buf[40];
memset(buf, 0, 40);
@@ -335,12 +340,12 @@ bool SaveLoad_v3::saveNotes(int16 dataVar, int32 size, int32 offset) {
}
bool SaveLoad_v3::saveScreenshot(int16 dataVar, int32 size, int32 offset) {
- int slot = (offset - 80) / 19968;
- int slotR = (offset - 80) % 19968;
+ int slot = (offset - _screenshotOffset) / _screenshotSize;
+ int slotR = (offset - _screenshotOffset) % _screenshotSize;
_useScreenshots = true;
- if ((offset < 80) && (size > 0)) {
+ if ((offset < _screenshotOffset) && (size > 0)) {
return true;