aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/saveload.cpp
diff options
context:
space:
mode:
authorTravis Howell2006-03-26 00:24:00 +0000
committerTravis Howell2006-03-26 00:24:00 +0000
commit67b8589c18ec712c5c577394d5213a54dcc005cc (patch)
tree74e4458c207629184dc855a826e2865416f3e377 /engines/scumm/saveload.cpp
parentdd505ff6aebbe3f321d8bbebabc32a471c2ac0c8 (diff)
downloadscummvm-rg350-67b8589c18ec712c5c577394d5213a54dcc005cc.tar.gz
scummvm-rg350-67b8589c18ec712c5c577394d5213a54dcc005cc.tar.bz2
scummvm-rg350-67b8589c18ec712c5c577394d5213a54dcc005cc.zip
Reduce size of saved games for HE games, music/speech resources don't need to be saved
svn-id: r21456
Diffstat (limited to 'engines/scumm/saveload.cpp')
-rw-r--r--engines/scumm/saveload.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp
index 4245f2ca30..a6f3f0462a 100644
--- a/engines/scumm/saveload.cpp
+++ b/engines/scumm/saveload.cpp
@@ -1402,7 +1402,7 @@ void ScummEngine::saveLoadResource(Serializer *ser, int type, int idx) {
void ScummEngine::saveResource(Serializer *ser, int type, int idx) {
assert(res.address[type][idx]);
- if ((res.mode[type] == 0) || (_game.heversion >= 60 && res.mode[type] == 2 && idx == 1)) {
+ if (res.mode[type] == 0) {
byte *ptr = res.address[type][idx];
uint32 size = ((MemBlkHeader *)ptr)->size;
@@ -1419,7 +1419,13 @@ void ScummEngine::saveResource(Serializer *ser, int type, int idx) {
}
void ScummEngine::loadResource(Serializer *ser, int type, int idx) {
- if ((res.mode[type] == 0) || (_game.heversion >= 60 && res.mode[type] == 2 && idx == 1)) {
+ if (_game.heversion >= 60 && ser->getVersion() <= VER(65) &&
+ ((type == rtSound && idx == 1) || (type == rtSpoolBuffer))) {
+ uint32 size = ser->loadUint32();
+ assert(size);
+ res.createResource(type, idx, size);
+ ser->loadBytes(getResourceAddress(type, idx), size);
+ } else if (res.mode[type] == 0) {
uint32 size = ser->loadUint32();
assert(size);
res.createResource(type, idx, size);
@@ -1432,6 +1438,10 @@ void ScummEngine::loadResource(Serializer *ser, int type, int idx) {
_newNames[idx] = ser->loadUint16();
}
} else if (res.mode[type] == 2) {
+ // HE Games use sound resource 1 for speech
+ if (_game.heversion >= 60 && idx == 1)
+ return;
+
ensureResourceLoaded(type, idx);
}
}