aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2009-08-29 14:08:19 +0000
committerTravis Howell2009-08-29 14:08:19 +0000
commit1be7ab068e2bcda5aee5346dcd4b5515dc7b8146 (patch)
tree0baa2a0e67c3f2adeb17d4d1162d49313ba044c8
parent08bc900e50da9896b363c461478568047f76bcd3 (diff)
downloadscummvm-rg350-1be7ab068e2bcda5aee5346dcd4b5515dc7b8146.tar.gz
scummvm-rg350-1be7ab068e2bcda5aee5346dcd4b5515dc7b8146.tar.bz2
scummvm-rg350-1be7ab068e2bcda5aee5346dcd4b5515dc7b8146.zip
Add patch #2846581 - MM C64: savedialog.
svn-id: r43801
-rw-r--r--engines/scumm/input.cpp3
-rw-r--r--engines/scumm/script_v4.cpp14
2 files changed, 10 insertions, 7 deletions
diff --git a/engines/scumm/input.cpp b/engines/scumm/input.cpp
index ab32992b03..73e7285f81 100644
--- a/engines/scumm/input.cpp
+++ b/engines/scumm/input.cpp
@@ -444,6 +444,9 @@ void ScummEngine_v2::processKeyboard(Common::KeyState lastKeyHit) {
// On Alt-F5 prepare savegame for the original save/load dialog.
if (lastKeyHit.keycode == Common::KEYCODE_F5 && lastKeyHit.flags == Common::KBD_ALT) {
prepareSavegame();
+ if (_game.id == GID_MANIAC && _game.version == 0) {
+ runScript(2, 0, 0, 0);
+ }
}
if (VAR_KEYPRESS != 0xFF && _mouseAndKeyboardStat) { // Key Input
diff --git a/engines/scumm/script_v4.cpp b/engines/scumm/script_v4.cpp
index 3075b85207..ab647f72c6 100644
--- a/engines/scumm/script_v4.cpp
+++ b/engines/scumm/script_v4.cpp
@@ -393,16 +393,12 @@ void ScummEngine_v4::loadIQPoints(byte *ptr, int size) {
void ScummEngine_v4::o4_saveLoadGame() {
getResultPos();
+ byte slot;
byte a = getVarOrDirectByte(PARAM_1);
- byte slot = a & 0x1F;
byte result = 0;
- // Slot numbers in older games start with 0, in newer games with 1
- if (_game.version <= 2)
- slot++;
-
- if ((_game.id == GID_MANIAC) && (_game.version <= 1)) {
- // Convert older load/save screen
+ if (_game.version <= 1) {
+ // Convert V0/V1 load/save screen (they support only one savegame per disk)
// 1 Load
// 2 Save
slot = 1;
@@ -411,6 +407,10 @@ void ScummEngine_v4::o4_saveLoadGame() {
else if ((a == 2) || (_game.platform == Common::kPlatformNES))
_opcode = 0x80;
} else {
+ slot = a & 0x1F;
+ // Slot numbers in older games start with 0, in newer games with 1
+ if (_game.version <= 2)
+ slot++;
_opcode = a & 0xE0;
}