mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-17 23:44:22 +00:00
More savegame-endianness fixes :/
svn-id: r33222
This commit is contained in:
parent
a5ebc88dbc
commit
5544e180a3
@ -147,6 +147,15 @@ void GobEngine::validateVideoMode(int16 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 {
|
||||
return _platform;
|
||||
}
|
||||
|
@ -79,6 +79,11 @@ class SaveLoad;
|
||||
#define VAR(var) READ_VAR_UINT32(var)
|
||||
|
||||
|
||||
enum Endianness {
|
||||
kEndiannessLE,
|
||||
kEndiannessBE
|
||||
};
|
||||
|
||||
enum GameType {
|
||||
kGameTypeNone = 0,
|
||||
kGameTypeGob1,
|
||||
@ -230,6 +235,7 @@ public:
|
||||
void validateLanguage();
|
||||
void validateVideoMode(int16 videoMode);
|
||||
|
||||
Endianness getEndianness() const;
|
||||
Common::Platform getPlatform() const;
|
||||
GameType getGameType() const;
|
||||
bool isCD() const;
|
||||
|
@ -296,9 +296,7 @@ void Inter::callSub(int16 retFlag) {
|
||||
}
|
||||
|
||||
void Inter::allocateVars(uint32 count) {
|
||||
if ((_vm->getPlatform() == Common::kPlatformAmiga) ||
|
||||
(_vm->getPlatform() == Common::kPlatformMacintosh) ||
|
||||
(_vm->getPlatform() == Common::kPlatformAtariST))
|
||||
if (_vm->getEndianness() == kEndiannessBE)
|
||||
_variables = new VariablesBE(count * 4);
|
||||
else
|
||||
_variables = new VariablesLE(count * 4);
|
||||
|
@ -153,7 +153,7 @@ bool TempSprite::fromBuffer(const byte *buffer, int32 size, bool palette) {
|
||||
}
|
||||
|
||||
|
||||
PlainSave::PlainSave() {
|
||||
PlainSave::PlainSave(Endianness endianness) : _endianness(endianness) {
|
||||
}
|
||||
|
||||
PlainSave::~PlainSave() {
|
||||
@ -230,7 +230,8 @@ bool PlainSave::save(int16 dataVar, int32 size, int32 offset, const char *name,
|
||||
}
|
||||
|
||||
bool retVal;
|
||||
retVal = SaveLoad::saveDataEndian(*out, dataVar, size, variables, variableSizes);
|
||||
retVal = SaveLoad::saveDataEndian(*out, dataVar, size,
|
||||
variables, variableSizes, _endianness);
|
||||
|
||||
out->finalize();
|
||||
if (out->ioFailed()) {
|
||||
@ -258,13 +259,14 @@ bool PlainSave::load(int16 dataVar, int32 size, int32 offset, const char *name,
|
||||
return false;
|
||||
}
|
||||
|
||||
bool retVal = SaveLoad::loadDataEndian(*in, dataVar, size, variables, variableSizes);
|
||||
bool retVal = SaveLoad::loadDataEndian(*in, dataVar, size,
|
||||
variables, variableSizes, _endianness);
|
||||
delete in;
|
||||
return retVal;
|
||||
}
|
||||
|
||||
|
||||
StagedSave::StagedSave() {
|
||||
StagedSave::StagedSave(Endianness endianness) : _endianness(endianness) {
|
||||
_mode = kModeNone;
|
||||
_name = 0;
|
||||
_loaded = false;
|
||||
@ -487,7 +489,7 @@ bool StagedSave::write() const {
|
||||
|
||||
} else
|
||||
result = SaveLoad::saveDataEndian(*out, 0, _stages[i].size,
|
||||
_stages[i].bufVar, _stages[i].bufVarSizes);
|
||||
_stages[i].bufVar, _stages[i].bufVarSizes, _endianness);
|
||||
}
|
||||
|
||||
if (result) {
|
||||
@ -533,7 +535,7 @@ bool StagedSave::read() {
|
||||
_stages[i].bufVarSizes = new byte[_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) {
|
||||
if (*sizes == 3)
|
||||
*((uint32 *) buf) = READ_LE_UINT32(buf);
|
||||
*((uint32 *) buf) = LE ? READ_LE_UINT32(buf) : READ_BE_UINT32(buf);
|
||||
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) {
|
||||
warning("SaveLoad::fromEndian(): Corrupted variables sizes");
|
||||
return false;
|
||||
@ -753,12 +757,19 @@ bool SaveLoad::fromEndian(byte *buf, const byte *sizes, uint32 count) {
|
||||
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) {
|
||||
if (*sizes == 3)
|
||||
WRITE_LE_UINT32(buf, *((uint32 *) buf));
|
||||
else if (*sizes == 1)
|
||||
WRITE_LE_UINT16(buf, *((uint16 *) buf));
|
||||
if (*sizes == 3) {
|
||||
if (endianness == kEndiannessLE)
|
||||
WRITE_LE_UINT32(buf, *((uint32 *) buf));
|
||||
else
|
||||
WRITE_BE_UINT32(buf, *((uint32 *) buf));
|
||||
} else if (*sizes == 1) {
|
||||
if (endianness == kEndiannessLE)
|
||||
WRITE_LE_UINT16(buf, *((uint16 *) buf));
|
||||
else
|
||||
WRITE_BE_UINT16(buf, *((uint16 *) buf));
|
||||
}
|
||||
else if (*sizes != 0) {
|
||||
warning("SaveLoad::toEndian(): Corrupted variables sizes");
|
||||
return false;
|
||||
@ -811,7 +822,8 @@ uint32 SaveLoad::write(Common::WriteStream &out,
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
@ -821,7 +833,7 @@ bool SaveLoad::loadDataEndian(Common::ReadStream &in,
|
||||
assert(varBuf && sizeBuf);
|
||||
|
||||
if (read(in, varBuf, sizeBuf, size) == size) {
|
||||
if (fromEndian(varBuf, sizeBuf, size)) {
|
||||
if (fromEndian(varBuf, sizeBuf, size, endianness)) {
|
||||
memcpy(variables + dataVar, varBuf, size);
|
||||
memcpy(variableSizes + dataVar, sizeBuf, size);
|
||||
retVal = true;
|
||||
@ -835,7 +847,8 @@ bool SaveLoad::loadDataEndian(Common::ReadStream &in,
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
@ -847,7 +860,7 @@ bool SaveLoad::saveDataEndian(Common::WriteStream &out,
|
||||
memcpy(varBuf, variables + 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)
|
||||
retVal = true;
|
||||
|
||||
|
@ -65,7 +65,7 @@ private:
|
||||
|
||||
class PlainSave {
|
||||
public:
|
||||
PlainSave();
|
||||
PlainSave(Endianness endianness);
|
||||
~PlainSave();
|
||||
|
||||
bool save(int16 dataVar, int32 size, int32 offset, const char *name,
|
||||
@ -77,11 +77,14 @@ public:
|
||||
const byte *variables, const byte *variableSizes) const;
|
||||
bool load(int16 dataVar, int32 size, int32 offset, const char *name,
|
||||
byte *variables, byte *variableSizes) const;
|
||||
|
||||
private:
|
||||
Endianness _endianness;
|
||||
};
|
||||
|
||||
class StagedSave {
|
||||
public:
|
||||
StagedSave();
|
||||
StagedSave(Endianness endianness);
|
||||
~StagedSave();
|
||||
|
||||
void addStage(int32 size, bool endianed = true);
|
||||
@ -114,6 +117,8 @@ private:
|
||||
kModeLoad
|
||||
};
|
||||
|
||||
Endianness _endianness;
|
||||
|
||||
Common::Array<Stage> _stages;
|
||||
enum Mode _mode;
|
||||
char *_name;
|
||||
@ -178,17 +183,19 @@ public:
|
||||
|
||||
static const char *stripPath(const char *fileName);
|
||||
|
||||
static bool fromEndian(byte *buf, const byte *sizes, uint32 count);
|
||||
static bool toEndian(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, Endianness endianness);
|
||||
static uint32 read(Common::ReadStream &in,
|
||||
byte *buf, byte *sizes, uint32 count);
|
||||
static uint32 write(Common::WriteStream &out,
|
||||
const byte *buf, const byte *sizes, uint32 count);
|
||||
|
||||
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,
|
||||
int16 dataVar, uint32 size, const byte *variables, const byte *variableSizes);
|
||||
int16 dataVar, uint32 size,
|
||||
const byte *variables, const byte *variableSizes, Endianness endianness);
|
||||
|
||||
protected:
|
||||
GobEngine *_vm;
|
||||
@ -228,8 +235,8 @@ protected:
|
||||
int32 _varSize;
|
||||
|
||||
TempSprite _tmpSprite;
|
||||
PlainSave _notes;
|
||||
StagedSave _save;
|
||||
PlainSave *_notes;
|
||||
StagedSave *_save;
|
||||
|
||||
byte _indexBuffer[600];
|
||||
bool _hasIndex;
|
||||
@ -306,8 +313,8 @@ protected:
|
||||
|
||||
TempSprite _screenshot;
|
||||
TempSprite _tmpSprite;
|
||||
PlainSave _notes;
|
||||
StagedSave _save;
|
||||
PlainSave *_notes;
|
||||
StagedSave *_save;
|
||||
|
||||
byte _propBuffer[1000];
|
||||
byte _indexBuffer[1200];
|
||||
@ -370,7 +377,7 @@ protected:
|
||||
|
||||
int32 _varSize;
|
||||
|
||||
StagedSave _save;
|
||||
StagedSave *_save;
|
||||
|
||||
byte _propBuffer[1000];
|
||||
byte _indexBuffer[1200];
|
||||
|
@ -45,6 +45,9 @@ SaveLoad_v2::SaveFile SaveLoad_v2::_saveFiles[] = {
|
||||
SaveLoad_v2::SaveLoad_v2(GobEngine *vm, const char *targetName) :
|
||||
SaveLoad(vm, targetName) {
|
||||
|
||||
_notes = new PlainSave(_vm->getEndianness());
|
||||
_save = new StagedSave(_vm->getEndianness());
|
||||
|
||||
_saveFiles[0].destName = new char[strlen(targetName) + 5];
|
||||
_saveFiles[1].destName = _saveFiles[0].destName;
|
||||
_saveFiles[2].destName = 0;
|
||||
@ -58,6 +61,9 @@ SaveLoad_v2::SaveLoad_v2(GobEngine *vm, const char *targetName) :
|
||||
}
|
||||
|
||||
SaveLoad_v2::~SaveLoad_v2() {
|
||||
delete _notes;
|
||||
delete _save;
|
||||
|
||||
delete[] _saveFiles[0].destName;
|
||||
delete[] _saveFiles[3].destName;
|
||||
}
|
||||
@ -227,7 +233,7 @@ bool SaveLoad_v2::loadGame(SaveFile &saveFile,
|
||||
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;
|
||||
}
|
||||
|
||||
@ -268,7 +274,7 @@ bool SaveLoad_v2::loadNotes(SaveFile &saveFile,
|
||||
|
||||
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,
|
||||
@ -313,10 +319,10 @@ bool SaveLoad_v2::saveGame(SaveFile &saveFile,
|
||||
|
||||
byte sizes[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;
|
||||
|
||||
if (!_save.save(dataVar, size, 40, saveFile.destName, _vm->_inter->_variables))
|
||||
if (!_save->save(dataVar, size, 40, saveFile.destName, _vm->_inter->_variables))
|
||||
return false;
|
||||
|
||||
}
|
||||
@ -350,7 +356,7 @@ bool SaveLoad_v2::saveNotes(SaveFile &saveFile,
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@ -360,8 +366,8 @@ void SaveLoad_v2::assertInited() {
|
||||
|
||||
_varSize = READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4;
|
||||
|
||||
_save.addStage(40);
|
||||
_save.addStage(_varSize);
|
||||
_save->addStage(40);
|
||||
_save->addStage(_varSize);
|
||||
}
|
||||
|
||||
} // End of namespace Gob
|
||||
|
@ -48,6 +48,9 @@ SaveLoad_v3::SaveLoad_v3(GobEngine *vm, const char *targetName,
|
||||
uint32 screenshotSize, int32 indexOffset, int32 screenshotOffset) :
|
||||
SaveLoad(vm, targetName) {
|
||||
|
||||
_notes = new PlainSave(_vm->getEndianness());
|
||||
_save = new StagedSave(_vm->getEndianness());
|
||||
|
||||
_screenshotSize = screenshotSize;
|
||||
_indexOffset = indexOffset;
|
||||
_screenshotOffset = screenshotOffset;
|
||||
@ -71,6 +74,9 @@ SaveLoad_v3::SaveLoad_v3(GobEngine *vm, const char *targetName,
|
||||
}
|
||||
|
||||
SaveLoad_v3::~SaveLoad_v3() {
|
||||
delete _notes;
|
||||
delete _save;
|
||||
|
||||
delete[] _saveFiles[0].destName;
|
||||
delete[] _saveFiles[3].destName;
|
||||
}
|
||||
@ -243,7 +249,7 @@ int32 SaveLoad_v3::getSizeNotes(SaveFile &saveFile) {
|
||||
int32 SaveLoad_v3::getSizeScreenshot(SaveFile &saveFile) {
|
||||
if (!_useScreenshots) {
|
||||
_useScreenshots = true;
|
||||
_save.addStage(_screenshotSize, false);
|
||||
_save->addStage(_screenshotSize, false);
|
||||
}
|
||||
|
||||
Common::SaveFileManager *saveMan = g_system->getSavefileManager();
|
||||
@ -312,7 +318,7 @@ bool SaveLoad_v3::loadGame(SaveFile &saveFile,
|
||||
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;
|
||||
}
|
||||
|
||||
@ -353,7 +359,7 @@ bool SaveLoad_v3::loadNotes(SaveFile &saveFile,
|
||||
|
||||
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,
|
||||
@ -363,7 +369,7 @@ bool SaveLoad_v3::loadScreenshot(SaveFile &saveFile,
|
||||
|
||||
if (!_useScreenshots) {
|
||||
_useScreenshots = true;
|
||||
_save.addStage(_screenshotSize, false);
|
||||
_save->addStage(_screenshotSize, false);
|
||||
}
|
||||
|
||||
if (offset == _indexOffset) {
|
||||
@ -395,7 +401,7 @@ bool SaveLoad_v3::loadScreenshot(SaveFile &saveFile,
|
||||
|
||||
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;
|
||||
return false;
|
||||
}
|
||||
@ -483,13 +489,13 @@ bool SaveLoad_v3::saveGame(SaveFile &saveFile,
|
||||
|
||||
_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;
|
||||
|
||||
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;
|
||||
|
||||
if (!_save.save(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables))
|
||||
if (!_save->save(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables))
|
||||
return false;
|
||||
|
||||
}
|
||||
@ -523,7 +529,7 @@ bool SaveLoad_v3::saveNotes(SaveFile &saveFile,
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@ -534,7 +540,7 @@ bool SaveLoad_v3::saveScreenshot(SaveFile &saveFile,
|
||||
|
||||
if (!_useScreenshots) {
|
||||
_useScreenshots = true;
|
||||
_save.addStage(_screenshotSize, false);
|
||||
_save->addStage(_screenshotSize, false);
|
||||
}
|
||||
|
||||
if (offset >= _screenshotOffset) {
|
||||
@ -571,7 +577,7 @@ bool SaveLoad_v3::saveScreenshot(SaveFile &saveFile,
|
||||
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;
|
||||
return false;
|
||||
}
|
||||
@ -588,9 +594,9 @@ void SaveLoad_v3::assertInited() {
|
||||
|
||||
_varSize = READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4;
|
||||
|
||||
_save.addStage(500);
|
||||
_save.addStage(40, false);
|
||||
_save.addStage(_varSize);
|
||||
_save->addStage(500);
|
||||
_save->addStage(40, false);
|
||||
_save->addStage(_varSize);
|
||||
}
|
||||
|
||||
void SaveLoad_v3::buildScreenshotIndex(byte *buffer, char *name, int n) {
|
||||
|
@ -50,6 +50,8 @@ SaveLoad_v4::SaveFile SaveLoad_v4::_saveFiles[] = {
|
||||
SaveLoad_v4::SaveLoad_v4(GobEngine *vm, const char *targetName) :
|
||||
SaveLoad(vm, targetName) {
|
||||
|
||||
_save = new StagedSave(_vm->getEndianness());
|
||||
|
||||
_firstSizeGame = true;
|
||||
|
||||
_saveFiles[0].destName = 0;
|
||||
@ -76,6 +78,8 @@ SaveLoad_v4::SaveLoad_v4(GobEngine *vm, const char *targetName) :
|
||||
}
|
||||
|
||||
SaveLoad_v4::~SaveLoad_v4() {
|
||||
delete _save;
|
||||
|
||||
delete[] _screenProps;
|
||||
delete[] _saveFiles[1].destName;
|
||||
}
|
||||
@ -297,7 +301,7 @@ bool SaveLoad_v4::loadGame(SaveFile &saveFile,
|
||||
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;
|
||||
}
|
||||
|
||||
@ -314,7 +318,7 @@ bool SaveLoad_v4::loadGameScreenProps(SaveFile &saveFile,
|
||||
|
||||
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))
|
||||
return false;
|
||||
|
||||
@ -393,13 +397,13 @@ bool SaveLoad_v4::saveGame(SaveFile &saveFile,
|
||||
|
||||
_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;
|
||||
|
||||
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;
|
||||
|
||||
if (!_save.save(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables))
|
||||
if (!_save->save(dataVar, size, 540, saveFile.destName, _vm->_inter->_variables))
|
||||
return false;
|
||||
|
||||
}
|
||||
@ -417,7 +421,7 @@ bool SaveLoad_v4::saveGameScreenProps(SaveFile &saveFile,
|
||||
|
||||
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))
|
||||
return false;
|
||||
|
||||
@ -430,10 +434,10 @@ void SaveLoad_v4::assertInited() {
|
||||
|
||||
_varSize = READ_LE_UINT32(_vm->_game->_totFileData + 0x2C) * 4;
|
||||
|
||||
_save.addStage(500);
|
||||
_save.addStage(40, false);
|
||||
_save.addStage(_varSize);
|
||||
_save.addStage(256000);
|
||||
_save->addStage(500);
|
||||
_save->addStage(40, false);
|
||||
_save->addStage(_varSize);
|
||||
_save->addStage(256000);
|
||||
}
|
||||
|
||||
} // End of namespace Gob
|
||||
|
Loading…
x
Reference in New Issue
Block a user