aboutsummaryrefslogtreecommitdiff
path: root/engines/saga
diff options
context:
space:
mode:
authorMax Horn2006-02-25 11:12:44 +0000
committerMax Horn2006-02-25 11:12:44 +0000
commit1f987027f8f901e48f064cdc766064f4bf4b6fc9 (patch)
treea012a7aa9f50ba936ea30ba582f5a3bae86d74ea /engines/saga
parenteef3ac0e73801774ee6b9fffc17849845d026ea8 (diff)
downloadscummvm-rg350-1f987027f8f901e48f064cdc766064f4bf4b6fc9.tar.gz
scummvm-rg350-1f987027f8f901e48f064cdc766064f4bf4b6fc9.tar.bz2
scummvm-rg350-1f987027f8f901e48f064cdc766064f4bf4b6fc9.zip
Removed last two uses of MKID
svn-id: r20872
Diffstat (limited to 'engines/saga')
-rw-r--r--engines/saga/saveload.cpp41
1 files changed, 24 insertions, 17 deletions
diff --git a/engines/saga/saveload.cpp b/engines/saga/saveload.cpp
index 761ae49521..d9eb7cc4d4 100644
--- a/engines/saga/saveload.cpp
+++ b/engines/saga/saveload.cpp
@@ -135,9 +135,12 @@ void SagaEngine::fillSaveList() {
if (_saveMarks[i]) {
name = calcSaveFileName(i);
if ((in = _saveFileMan->openForLoading(name)) != NULL) {
- in->read(&_saveHeader, sizeof(_saveHeader));
+ _saveHeader.type = in->readUint32BE();
+ _saveHeader.size = in->readUint32LE();
+ _saveHeader.version = in->readUint32LE();
+ in->read(_saveHeader.name, sizeof(_saveHeader.name));
- if (_saveHeader.type != MKID('SAGA')) {
+ if (_saveHeader.type != MKID_BE('SAGA')) {
error("SagaEngine::load wrong format");
}
strcpy(_saveFiles[_saveFilesCount].name, _saveHeader.name);
@@ -168,13 +171,18 @@ void SagaEngine::save(const char *fileName, const char *saveName) {
return;
}
- _saveHeader.type = MKID('SAGA');
+ _saveHeader.type = MKID_BE('SAGA');
_saveHeader.size = 0;
- _saveHeader.version = TO_LE_32(CURRENT_SAGA_VER);
+ _saveHeader.version = CURRENT_SAGA_VER;
strncpy(_saveHeader.name, saveName, SAVE_TITLE_SIZE);
out->write(&_saveHeader, sizeof(_saveHeader));
+ out->writeUint32BE(_saveHeader.type);
+ out->writeUint32LE(_saveHeader.size);
+ out->writeUint32LE(_saveHeader.version);
+ out->write(_saveHeader.name, sizeof(_saveHeader.name));
+
// Original game title
memset(title, 0, TITLESIZE);
strncpy(title, getGameDescription()->title, TITLESIZE);
@@ -221,18 +229,17 @@ void SagaEngine::load(const char *fileName) {
return;
}
- in->read(&_saveHeader, sizeof(_saveHeader));
-
- _saveHeader.size = FROM_LE_32(_saveHeader.size);
- _saveHeader.version = FROM_LE_32(_saveHeader.version);
-
- // This save was written in native endianness (fix that, so warning will show up)
- if (_saveHeader.version > CURRENT_SAGA_VER) {
-#ifdef SCUMM_LITTLE_ENDIAN
- _saveHeader.version = TO_BE_32(_saveHeader.version);
-#else
- _saveHeader.version = TO_LE_32(_saveHeader.version);
-#endif
+ _saveHeader.type = in->readUint32BE();
+ _saveHeader.size = in->readUint32LE();
+ _saveHeader.version = in->readUint32LE();
+ in->read(_saveHeader.name, sizeof(_saveHeader.name));
+
+ // Some older saves were not written in an endian safe fashion.
+ // We try to detect this here by checking for extremly high version values.
+ // If found, we retry with the data swapped.
+ // FIXME: Maybe display a warning/error message instead?
+ if (_saveHeader.version > 0xFFFFFF) {
+ _saveHeader.version = SWAP_BYTES_32(_saveHeader.version);
}
debug(2, "Save version: %x", _saveHeader.version);
@@ -240,7 +247,7 @@ void SagaEngine::load(const char *fileName) {
if (_saveHeader.version < 4)
warning("This savegame is not endian-safe. There may be problems");
- if (_saveHeader.type != MKID('SAGA')) {
+ if (_saveHeader.type != MKID_BE('SAGA')) {
error("SagaEngine::load wrong format");
}