diff options
author | Travis Howell | 2007-11-06 12:22:52 +0000 |
---|---|---|
committer | Travis Howell | 2007-11-06 12:22:52 +0000 |
commit | 443dff5285f0654be4a6f843b8262bd07bb95036 (patch) | |
tree | 4cf62d53140b7e6d756c05ee09a625865ce70580 /engines/scumm/saveload.cpp | |
parent | 3598192859797d8b7cc33a22af21f04bd45af01a (diff) | |
download | scummvm-rg350-443dff5285f0654be4a6f843b8262bd07bb95036.tar.gz scummvm-rg350-443dff5285f0654be4a6f843b8262bd07bb95036.tar.bz2 scummvm-rg350-443dff5285f0654be4a6f843b8262bd07bb95036.zip |
Add support for original load/save system in HE games.
svn-id: r29434
Diffstat (limited to 'engines/scumm/saveload.cpp')
-rw-r--r-- | engines/scumm/saveload.cpp | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp index 2aa64ff409..17f0152b75 100644 --- a/engines/scumm/saveload.cpp +++ b/engines/scumm/saveload.cpp @@ -86,26 +86,34 @@ void ScummEngine::requestLoad(int slot) { _saveLoadFlag = 2; // 2 for load } +static bool saveSaveGameHeader(Common::OutSaveFile *out, SaveGameHeader &hdr) { + hdr.type = MKID_BE('SCVM'); + hdr.size = 0; + hdr.ver = CURRENT_VER; + + out->writeUint32BE(hdr.type); + out->writeUint32LE(hdr.size); + out->writeUint32LE(hdr.ver); + out->write(hdr.name, sizeof(hdr.name)); + return true; +} + bool ScummEngine::saveState(int slot, bool compat) { char filename[256]; Common::OutSaveFile *out; SaveGameHeader hdr; - makeSavegameName(filename, slot, compat); - + if (_saveLoadSlot == 255) { + // Allow custom filenames for save game system in HE Games + memcpy(filename, _saveLoadFileName, sizeof(_saveLoadFileName)); + } else { + makeSavegameName(filename, slot, compat); + } if (!(out = _saveFileMan->openForSaving(filename))) return false; memcpy(hdr.name, _saveLoadName, sizeof(hdr.name)); - - hdr.type = MKID_BE('SCVM'); - hdr.size = 0; - hdr.ver = CURRENT_VER; - - out->writeUint32BE(hdr.type); - out->writeUint32LE(hdr.size); - out->writeUint32LE(hdr.ver); - out->write(hdr.name, sizeof(hdr.name)); + saveSaveGameHeader(out, hdr); saveThumbnail(out); saveInfos(out); @@ -137,7 +145,12 @@ bool ScummEngine::loadState(int slot, bool compat) { SaveGameHeader hdr; int sb, sh; - makeSavegameName(filename, slot, compat); + if (_saveLoadSlot == 255) { + // Allow custom filenames for save game system in HE Games + memcpy(filename, _saveLoadFileName, sizeof(_saveLoadFileName)); + } else { + makeSavegameName(filename, slot, compat); + } if (!(in = _saveFileMan->openForLoading(filename))) return false; |