More savegame-endianness fixes :/

svn-id: r33222
This commit is contained in:
Sven Hesse 2008-07-23 02:41:02 +00:00
parent a5ebc88dbc
commit 5544e180a3
8 changed files with 112 additions and 63 deletions

View file

@ -147,6 +147,15 @@ void GobEngine::validateVideoMode(int16 videoMode) {
error("Video mode 0x%X is not supported!", videoMode); error("Video mode 0x%X is not supported!", videoMode);
} }
Endianness GobEngine::getEndianness() const {
if ((_vm->getPlatform() == Common::kPlatformAmiga) ||
(_vm->getPlatform() == Common::kPlatformMacintosh) ||
(_vm->getPlatform() == Common::kPlatformAtariST))
return kEndiannessBE;
return kEndiannessLE;
}
Common::Platform GobEngine::getPlatform() const { Common::Platform GobEngine::getPlatform() const {
return _platform; return _platform;
} }

View file

@ -79,6 +79,11 @@ class SaveLoad;
#define VAR(var) READ_VAR_UINT32(var) #define VAR(var) READ_VAR_UINT32(var)
enum Endianness {
kEndiannessLE,
kEndiannessBE
};
enum GameType { enum GameType {
kGameTypeNone = 0, kGameTypeNone = 0,
kGameTypeGob1, kGameTypeGob1,
@ -230,6 +235,7 @@ public:
void validateLanguage(); void validateLanguage();
void validateVideoMode(int16 videoMode); void validateVideoMode(int16 videoMode);
Endianness getEndianness() const;
Common::Platform getPlatform() const; Common::Platform getPlatform() const;
GameType getGameType() const; GameType getGameType() const;
bool isCD() const; bool isCD() const;

View file

@ -296,9 +296,7 @@ void Inter::callSub(int16 retFlag) {
} }
void Inter::allocateVars(uint32 count) { void Inter::allocateVars(uint32 count) {
if ((_vm->getPlatform() == Common::kPlatformAmiga) || if (_vm->getEndianness() == kEndiannessBE)
(_vm->getPlatform() == Common::kPlatformMacintosh) ||
(_vm->getPlatform() == Common::kPlatformAtariST))
_variables = new VariablesBE(count * 4); _variables = new VariablesBE(count * 4);
else else
_variables = new VariablesLE(count * 4); _variables = new VariablesLE(count * 4);

View file

@ -153,7 +153,7 @@ bool TempSprite::fromBuffer(const byte *buffer, int32 size, bool palette) {
} }
PlainSave::PlainSave() { PlainSave::PlainSave(Endianness endianness) : _endianness(endianness) {
} }
PlainSave::~PlainSave() { PlainSave::~PlainSave() {
@ -230,7 +230,8 @@ bool PlainSave::save(int16 dataVar, int32 size, int32 offset, const char *name,
} }
bool retVal; bool retVal;
retVal = SaveLoad::saveDataEndian(*out, dataVar, size, variables, variableSizes); retVal = SaveLoad::saveDataEndian(*out, dataVar, size,
variables, variableSizes, _endianness);
out->finalize(); out->finalize();
if (out->ioFailed()) { if (out->ioFailed()) {
@ -258,13 +259,14 @@ bool PlainSave::load(int16 dataVar, int32 size, int32 offset, const char *name,
return false; return false;
} }
bool retVal = SaveLoad::loadDataEndian(*in, dataVar, size, variables, variableSizes); bool retVal = SaveLoad::loadDataEndian(*in, dataVar, size,
variables, variableSizes, _endianness);
delete in; delete in;
return retVal; return retVal;
} }
StagedSave::StagedSave() { StagedSave::StagedSave(Endianness endianness) : _endianness(endianness) {
_mode = kModeNone; _mode = kModeNone;
_name = 0; _name = 0;
_loaded = false; _loaded = false;
@ -487,7 +489,7 @@ bool StagedSave::write() const {
} else } else
result = SaveLoad::saveDataEndian(*out, 0, _stages[i].size, result = SaveLoad::saveDataEndian(*out, 0, _stages[i].size,
_stages[i].bufVar, _stages[i].bufVarSizes); _stages[i].bufVar, _stages[i].bufVarSizes, _endianness);
} }
if (result) { if (result) {
@ -533,7 +535,7 @@ bool StagedSave::read() {
_stages[i].bufVarSizes = new byte[_stages[i].size]; _stages[i].bufVarSizes = new byte[_stages[i].size];
result = SaveLoad::loadDataEndian(*in, 0, _stages[i].size, result = SaveLoad::loadDataEndian(*in, 0, _stages[i].size,
_stages[i].bufVar, _stages[i].bufVarSizes); _stages[i].bufVar, _stages[i].bufVarSizes, _endianness);
} }
} }
@ -734,12 +736,14 @@ void SaveLoad::buildIndex(byte *buffer, char *name, int n, int32 size, int32 off
} }
} }
bool SaveLoad::fromEndian(byte *buf, const byte *sizes, uint32 count) { bool SaveLoad::fromEndian(byte *buf, const byte *sizes, uint32 count, Endianness endianness) {
bool LE = (endianness == kEndiannessLE);
while (count-- > 0) { while (count-- > 0) {
if (*sizes == 3) if (*sizes == 3)
*((uint32 *) buf) = READ_LE_UINT32(buf); *((uint32 *) buf) = LE ? READ_LE_UINT32(buf) : READ_BE_UINT32(buf);
else if (*sizes == 1) else if (*sizes == 1)
*((uint16 *) buf) = READ_LE_UINT16(buf); *((uint16 *) buf) = LE ? READ_LE_UINT16(buf) : READ_BE_UINT16(buf);
else if (*sizes != 0) { else if (*sizes != 0) {
warning("SaveLoad::fromEndian(): Corrupted variables sizes"); warning("SaveLoad::fromEndian(): Corrupted variables sizes");
return false; return false;
@ -753,12 +757,19 @@ bool SaveLoad::fromEndian(byte *buf, const byte *sizes, uint32 count) {
return true; return true;
} }
bool SaveLoad::toEndian(byte *buf, const byte *sizes, uint32 count) { bool SaveLoad::toEndian(byte *buf, const byte *sizes, uint32 count, Endianness endianness) {
while (count-- > 0) { while (count-- > 0) {
if (*sizes == 3) if (*sizes == 3) {
if (endianness == kEndiannessLE)
WRITE_LE_UINT32(buf, *((uint32 *) buf)); WRITE_LE_UINT32(buf, *((uint32 *) buf));
else if (*sizes == 1) else
WRITE_BE_UINT32(buf, *((uint32 *) buf));
} else if (*sizes == 1) {
if (endianness == kEndiannessLE)
WRITE_LE_UINT16(buf, *((uint16 *) buf)); WRITE_LE_UINT16(buf, *((uint16 *) buf));
else
WRITE_BE_UINT16(buf, *((uint16 *) buf));
}
else if (*sizes != 0) { else if (*sizes != 0) {
warning("SaveLoad::toEndian(): Corrupted variables sizes"); warning("SaveLoad::toEndian(): Corrupted variables sizes");
return false; return false;
@ -811,7 +822,8 @@ uint32 SaveLoad::write(Common::WriteStream &out,
} }
bool SaveLoad::loadDataEndian(Common::ReadStream &in, bool SaveLoad::loadDataEndian(Common::ReadStream &in,
int16 dataVar, uint32 size, byte *variables, byte *variableSizes) { int16 dataVar, uint32 size,
byte *variables, byte *variableSizes, Endianness endianness) {
bool retVal = false; bool retVal = false;
@ -821,7 +833,7 @@ bool SaveLoad::loadDataEndian(Common::ReadStream &in,
assert(varBuf && sizeBuf); assert(varBuf && sizeBuf);
if (read(in, varBuf, sizeBuf, size) == size) { if (read(in, varBuf, sizeBuf, size) == size) {
if (fromEndian(varBuf, sizeBuf, size)) { if (fromEndian(varBuf, sizeBuf, size, endianness)) {
memcpy(variables + dataVar, varBuf, size); memcpy(variables + dataVar, varBuf, size);
memcpy(variableSizes + dataVar, sizeBuf, size); memcpy(variableSizes + dataVar, sizeBuf, size);
retVal = true; retVal = true;
@ -835,7 +847,8 @@ bool SaveLoad::loadDataEndian(Common::ReadStream &in,
} }
bool SaveLoad::saveDataEndian(Common::WriteStream &out, bool SaveLoad::saveDataEndian(Common::WriteStream &out,
int16 dataVar, uint32 size, const byte *variables, const byte *variableSizes) { int16 dataVar, uint32 size,
const byte *variables, const byte *variableSizes, Endianness endianness) {
bool retVal = false; bool retVal = false;
@ -847,7 +860,7 @@ bool SaveLoad::saveDataEndian(Common::WriteStream &out,
memcpy(varBuf, variables + dataVar, size); memcpy(varBuf, variables + dataVar, size);
memcpy(sizeBuf, variableSizes + dataVar, size); memcpy(sizeBuf, variableSizes + dataVar, size);
if (toEndian(varBuf, sizeBuf, size)) if (toEndian(varBuf, sizeBuf, size, endianness))
if (write(out, varBuf, sizeBuf, size) == size) if (write(out, varBuf, sizeBuf, size) == size)
retVal = true; retVal = true;

View file

@ -65,7 +65,7 @@ private:
class PlainSave { class PlainSave {
public: public:
PlainSave(); PlainSave(Endianness endianness);
~PlainSave(); ~PlainSave();
bool save(int16 dataVar, int32 size, int32 offset, const char *name, bool save(int16 dataVar, int32 size, int32 offset, const char *name,
@ -77,11 +77,14 @@ public:
const byte *variables, const byte *variableSizes) const; const byte *variables, const byte *variableSizes) const;
bool load(int16 dataVar, int32 size, int32 offset, const char *name, bool load(int16 dataVar, int32 size, int32 offset, const char *name,
byte *variables, byte *variableSizes) const; byte *variables, byte *variableSizes) const;
private:
Endianness _endianness;
}; };
class StagedSave { class StagedSave {
public: public:
StagedSave(); StagedSave(Endianness endianness);
~StagedSave(); ~StagedSave();
void addStage(int32 size, bool endianed = true); void addStage(int32 size, bool endianed = true);
@ -114,6 +117,8 @@ private:
kModeLoad kModeLoad
}; };
Endianness _endianness;
Common::Array<Stage> _stages; Common::Array<Stage> _stages;
enum Mode _mode; enum Mode _mode;
char *_name; char *_name;
@ -178,17 +183,19 @@ public:
static const char *stripPath(const char *fileName); static const char *stripPath(const char *fileName);
static bool fromEndian(byte *buf, const byte *sizes, uint32 count); static bool fromEndian(byte *buf, const byte *sizes, uint32 count, Endianness endianness);
static bool toEndian(byte *buf, const byte *sizes, uint32 count); static bool toEndian(byte *buf, const byte *sizes, uint32 count, Endianness endianness);
static uint32 read(Common::ReadStream &in, static uint32 read(Common::ReadStream &in,
byte *buf, byte *sizes, uint32 count); byte *buf, byte *sizes, uint32 count);
static uint32 write(Common::WriteStream &out, static uint32 write(Common::WriteStream &out,
const byte *buf, const byte *sizes, uint32 count); const byte *buf, const byte *sizes, uint32 count);
static bool loadDataEndian(Common::ReadStream &in, static bool loadDataEndian(Common::ReadStream &in,
int16 dataVar, uint32 size, byte *variables, byte *variableSizes); int16 dataVar, uint32 size,
byte *variables, byte *variableSizes, Endianness endianness);
static bool saveDataEndian(Common::WriteStream &out, static bool saveDataEndian(Common::WriteStream &out,
int16 dataVar, uint32 size, const byte *variables, const byte *variableSizes); int16 dataVar, uint32 size,
const byte *variables, const byte *variableSizes, Endianness endianness);
protected: protected:
GobEngine *_vm; GobEngine *_vm;
@ -228,8 +235,8 @@ protected:
int32 _varSize; int32 _varSize;
TempSprite _tmpSprite; TempSprite _tmpSprite;
PlainSave _notes; PlainSave *_notes;
StagedSave _save; StagedSave *_save;
byte _indexBuffer[600]; byte _indexBuffer[600];
bool _hasIndex; bool _hasIndex;
@ -306,8 +313,8 @@ protected:
TempSprite _screenshot; TempSprite _screenshot;
TempSprite _tmpSprite; TempSprite _tmpSprite;
PlainSave _notes; PlainSave *_notes;
StagedSave _save; StagedSave *_save;
byte _propBuffer[1000]; byte _propBuffer[1000];
byte _indexBuffer[1200]; byte _indexBuffer[1200];
@ -370,7 +377,7 @@ protected:
int32 _varSize; int32 _varSize;
StagedSave _save; StagedSave *_save;
byte _propBuffer[1000]; byte _propBuffer[1000];
byte _indexBuffer[1200]; byte _indexBuffer[1200];

View file

@ -45,6 +45,9 @@ SaveLoad_v2::SaveFile SaveLoad_v2::_saveFiles[] = {
SaveLoad_v2::SaveLoad_v2(GobEngine *vm, const char *targetName) : SaveLoad_v2::SaveLoad_v2(GobEngine *vm, const char *targetName) :
SaveLoad(vm, targetName) { SaveLoad(vm, targetName) {
_notes = new PlainSave(_vm->getEndianness());
_save = new StagedSave(_vm->getEndianness());
_saveFiles[0].destName = new char[strlen(targetName) + 5]; _saveFiles[0].destName = new char[strlen(targetName) + 5];
_saveFiles[1].destName = _saveFiles[0].destName; _saveFiles[1].destName = _saveFiles[0].destName;
_saveFiles[2].destName = 0; _saveFiles[2].destName = 0;
@ -58,6 +61,9 @@ SaveLoad_v2::SaveLoad_v2(GobEngine *vm, const char *targetName) :
} }
SaveLoad_v2::~SaveLoad_v2() { SaveLoad_v2::~SaveLoad_v2() {
delete _notes;
delete _save;
delete[] _saveFiles[0].destName; delete[] _saveFiles[0].destName;
delete[] _saveFiles[3].destName; delete[] _saveFiles[3].destName;
} }
@ -227,7 +233,7 @@ bool SaveLoad_v2::loadGame(SaveFile &saveFile,
return false; return false;
} }
if (!_save.load(dataVar, size, 40, saveFile.destName, _vm->_inter->_variables)) if (!_save->load(dataVar, size, 40, saveFile.destName, _vm->_inter->_variables))
return false; return false;
} }
@ -268,7 +274,7 @@ bool SaveLoad_v2::loadNotes(SaveFile &saveFile,
debugC(2, kDebugSaveLoad, "Loading the notes"); debugC(2, kDebugSaveLoad, "Loading the notes");
return _notes.load(dataVar, size, offset, saveFile.destName, _vm->_inter->_variables); return _notes->load(dataVar, size, offset, saveFile.destName, _vm->_inter->_variables);
} }
bool SaveLoad_v2::saveGame(SaveFile &saveFile, bool SaveLoad_v2::saveGame(SaveFile &saveFile,
@ -313,10 +319,10 @@ bool SaveLoad_v2::saveGame(SaveFile &saveFile,
byte sizes[40]; byte sizes[40];
memset(sizes, 0, 40); memset(sizes, 0, 40);
if(!_save.save(0, 40, 0, saveFile.destName, _indexBuffer + (slot * 40), sizes)) if(!_save->save(0, 40, 0, saveFile.destName, _indexBuffer + (slot * 40), sizes))
return false; return false;
if (!_save.save(dataVar, size, 40, saveFile.destName, _vm->_inter->_variables)) if (!_save->save(dataVar, size, 40, saveFile.destName, _vm->_inter->_variables))
return false; return false;
} }
@ -350,7 +356,7 @@ bool SaveLoad_v2::saveNotes(SaveFile &saveFile,
debugC(2, kDebugSaveLoad, "Saving the notes"); debugC(2, kDebugSaveLoad, "Saving the notes");
return _notes.save(dataVar, size, offset, saveFile.destName, _vm->_inter->_variables); return _notes->save(dataVar, size, offset, saveFile.destName, _vm->_inter->_variables);
return false; return false;
} }
@ -360,8 +366,8 @@ void SaveLoad_v2::assertInited() {
_varSize = READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4; _varSize = READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4;
_save.addStage(40); _save->addStage(40);
_save.addStage(_varSize); _save->addStage(_varSize);
} }
} // End of namespace Gob } // End of namespace Gob

View file

@ -48,6 +48,9 @@ SaveLoad_v3::SaveLoad_v3(GobEngine *vm, const char *targetName,
uint32 screenshotSize, int32 indexOffset, int32 screenshotOffset) : uint32 screenshotSize, int32 indexOffset, int32 screenshotOffset) :
SaveLoad(vm, targetName) { SaveLoad(vm, targetName) {
_notes = new PlainSave(_vm->getEndianness());
_save = new StagedSave(_vm->getEndianness());
_screenshotSize = screenshotSize; _screenshotSize = screenshotSize;
_indexOffset = indexOffset; _indexOffset = indexOffset;
_screenshotOffset = screenshotOffset; _screenshotOffset = screenshotOffset;
@ -71,6 +74,9 @@ SaveLoad_v3::SaveLoad_v3(GobEngine *vm, const char *targetName,
} }
SaveLoad_v3::~SaveLoad_v3() { SaveLoad_v3::~SaveLoad_v3() {
delete _notes;
delete _save;
delete[] _saveFiles[0].destName; delete[] _saveFiles[0].destName;
delete[] _saveFiles[3].destName; delete[] _saveFiles[3].destName;
} }
@ -243,7 +249,7 @@ int32 SaveLoad_v3::getSizeNotes(SaveFile &saveFile) {
int32 SaveLoad_v3::getSizeScreenshot(SaveFile &saveFile) { int32 SaveLoad_v3::getSizeScreenshot(SaveFile &saveFile) {
if (!_useScreenshots) { if (!_useScreenshots) {
_useScreenshots = true; _useScreenshots = true;
_save.addStage(_screenshotSize, false); _save->addStage(_screenshotSize, false);
} }
Common::SaveFileManager *saveMan = g_system->getSavefileManager(); Common::SaveFileManager *saveMan = g_system->getSavefileManager();
@ -312,7 +318,7 @@ bool SaveLoad_v3::loadGame(SaveFile &saveFile,
return false; return false;
} }
if (!_save.load(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables)) if (!_save->load(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables))
return false; return false;
} }
@ -353,7 +359,7 @@ bool SaveLoad_v3::loadNotes(SaveFile &saveFile,
debugC(2, kDebugSaveLoad, "Loading the notes"); debugC(2, kDebugSaveLoad, "Loading the notes");
return _notes.load(dataVar, size, offset, saveFile.destName, _vm->_inter->_variables); return _notes->load(dataVar, size, offset, saveFile.destName, _vm->_inter->_variables);
} }
bool SaveLoad_v3::loadScreenshot(SaveFile &saveFile, bool SaveLoad_v3::loadScreenshot(SaveFile &saveFile,
@ -363,7 +369,7 @@ bool SaveLoad_v3::loadScreenshot(SaveFile &saveFile,
if (!_useScreenshots) { if (!_useScreenshots) {
_useScreenshots = true; _useScreenshots = true;
_save.addStage(_screenshotSize, false); _save->addStage(_screenshotSize, false);
} }
if (offset == _indexOffset) { if (offset == _indexOffset) {
@ -395,7 +401,7 @@ bool SaveLoad_v3::loadScreenshot(SaveFile &saveFile,
byte *buffer = new byte[_screenshotSize]; byte *buffer = new byte[_screenshotSize];
if (!_save.load(0, _screenshotSize, _varSize + 540, saveFile.destName, buffer, 0)) { if (!_save->load(0, _screenshotSize, _varSize + 540, saveFile.destName, buffer, 0)) {
delete[] buffer; delete[] buffer;
return false; return false;
} }
@ -483,13 +489,13 @@ bool SaveLoad_v3::saveGame(SaveFile &saveFile,
_hasIndex = false; _hasIndex = false;
if(!_save.save(0, 500, 0, saveFile.destName, _propBuffer, _propBuffer + 500)) if(!_save->save(0, 500, 0, saveFile.destName, _propBuffer, _propBuffer + 500))
return false; return false;
if(!_save.save(0, 40, 500, saveFile.destName, _indexBuffer + (saveFile.slot * 40), 0)) if(!_save->save(0, 40, 500, saveFile.destName, _indexBuffer + (saveFile.slot * 40), 0))
return false; return false;
if (!_save.save(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables)) if (!_save->save(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables))
return false; return false;
} }
@ -523,7 +529,7 @@ bool SaveLoad_v3::saveNotes(SaveFile &saveFile,
debugC(2, kDebugSaveLoad, "Saving the notes"); debugC(2, kDebugSaveLoad, "Saving the notes");
return _notes.save(dataVar, size - 160, offset, saveFile.destName, _vm->_inter->_variables); return _notes->save(dataVar, size - 160, offset, saveFile.destName, _vm->_inter->_variables);
return false; return false;
} }
@ -534,7 +540,7 @@ bool SaveLoad_v3::saveScreenshot(SaveFile &saveFile,
if (!_useScreenshots) { if (!_useScreenshots) {
_useScreenshots = true; _useScreenshots = true;
_save.addStage(_screenshotSize, false); _save->addStage(_screenshotSize, false);
} }
if (offset >= _screenshotOffset) { if (offset >= _screenshotOffset) {
@ -571,7 +577,7 @@ bool SaveLoad_v3::saveScreenshot(SaveFile &saveFile,
return false; return false;
} }
if (!_save.save(0, _screenshotSize, _varSize + 540, saveFile.destName, buffer, 0)) { if (!_save->save(0, _screenshotSize, _varSize + 540, saveFile.destName, buffer, 0)) {
delete[] buffer; delete[] buffer;
return false; return false;
} }
@ -588,9 +594,9 @@ void SaveLoad_v3::assertInited() {
_varSize = READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4; _varSize = READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4;
_save.addStage(500); _save->addStage(500);
_save.addStage(40, false); _save->addStage(40, false);
_save.addStage(_varSize); _save->addStage(_varSize);
} }
void SaveLoad_v3::buildScreenshotIndex(byte *buffer, char *name, int n) { void SaveLoad_v3::buildScreenshotIndex(byte *buffer, char *name, int n) {

View file

@ -50,6 +50,8 @@ SaveLoad_v4::SaveFile SaveLoad_v4::_saveFiles[] = {
SaveLoad_v4::SaveLoad_v4(GobEngine *vm, const char *targetName) : SaveLoad_v4::SaveLoad_v4(GobEngine *vm, const char *targetName) :
SaveLoad(vm, targetName) { SaveLoad(vm, targetName) {
_save = new StagedSave(_vm->getEndianness());
_firstSizeGame = true; _firstSizeGame = true;
_saveFiles[0].destName = 0; _saveFiles[0].destName = 0;
@ -76,6 +78,8 @@ SaveLoad_v4::SaveLoad_v4(GobEngine *vm, const char *targetName) :
} }
SaveLoad_v4::~SaveLoad_v4() { SaveLoad_v4::~SaveLoad_v4() {
delete _save;
delete[] _screenProps; delete[] _screenProps;
delete[] _saveFiles[1].destName; delete[] _saveFiles[1].destName;
} }
@ -297,7 +301,7 @@ bool SaveLoad_v4::loadGame(SaveFile &saveFile,
return false; return false;
} }
if (!_save.load(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables)) if (!_save->load(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables))
return false; return false;
} }
@ -314,7 +318,7 @@ bool SaveLoad_v4::loadGameScreenProps(SaveFile &saveFile,
setCurrentSlot(saveFile.destName, saveFile.sourceName[4] - '0'); setCurrentSlot(saveFile.destName, saveFile.sourceName[4] - '0');
if (!_save.load(0, 256000, _varSize + 540, saveFile.destName, if (!_save->load(0, 256000, _varSize + 540, saveFile.destName,
_screenProps, _screenProps + 256000)) _screenProps, _screenProps + 256000))
return false; return false;
@ -393,13 +397,13 @@ bool SaveLoad_v4::saveGame(SaveFile &saveFile,
_hasIndex = false; _hasIndex = false;
if(!_save.save(0, 500, 0, saveFile.destName, _propBuffer, _propBuffer + 500)) if(!_save->save(0, 500, 0, saveFile.destName, _propBuffer, _propBuffer + 500))
return false; return false;
if(!_save.save(0, 40, 500, saveFile.destName, _indexBuffer + (slot * 40), 0)) if(!_save->save(0, 40, 500, saveFile.destName, _indexBuffer + (slot * 40), 0))
return false; return false;
if (!_save.save(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables)) if (!_save->save(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables))
return false; return false;
} }
@ -417,7 +421,7 @@ bool SaveLoad_v4::saveGameScreenProps(SaveFile &saveFile,
setCurrentSlot(saveFile.destName, saveFile.sourceName[4] - '0'); setCurrentSlot(saveFile.destName, saveFile.sourceName[4] - '0');
if (!_save.save(0, 256000, _varSize + 540, saveFile.destName, if (!_save->save(0, 256000, _varSize + 540, saveFile.destName,
_screenProps, _screenProps + 256000)) _screenProps, _screenProps + 256000))
return false; return false;
@ -430,10 +434,10 @@ void SaveLoad_v4::assertInited() {
_varSize = READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4; _varSize = READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4;
_save.addStage(500); _save->addStage(500);
_save.addStage(40, false); _save->addStage(40, false);
_save.addStage(_varSize); _save->addStage(_varSize);
_save.addStage(256000); _save->addStage(256000);
} }
} // End of namespace Gob } // End of namespace Gob