aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/saveload.cpp
diff options
context:
space:
mode:
authorTravis Howell2007-11-06 12:22:52 +0000
committerTravis Howell2007-11-06 12:22:52 +0000
commit443dff5285f0654be4a6f843b8262bd07bb95036 (patch)
tree4cf62d53140b7e6d756c05ee09a625865ce70580 /engines/scumm/saveload.cpp
parent3598192859797d8b7cc33a22af21f04bd45af01a (diff)
downloadscummvm-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.cpp37
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;