aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorRobert Crossfield2014-12-08 19:04:17 +1100
committerRobert Crossfield2014-12-08 19:12:27 +1100
commit962c8b4524f46bbc2394d7a80972db0a474221a3 (patch)
tree516bf897b99b7da412c61d510359143df93c351f /engines
parentd83438225e40f513a43b2c9b5d9b71a3afbc375e (diff)
downloadscummvm-rg350-962c8b4524f46bbc2394d7a80972db0a474221a3.tar.gz
scummvm-rg350-962c8b4524f46bbc2394d7a80972db0a474221a3.tar.bz2
scummvm-rg350-962c8b4524f46bbc2394d7a80972db0a474221a3.zip
SCUMM: Maniac V0 Demo: Allow F7 to restart, Add handler for opcode 0x6e (o_screenPrepare)
Diffstat (limited to 'engines')
-rw-r--r--engines/scumm/file.cpp2
-rw-r--r--engines/scumm/input.cpp12
-rw-r--r--engines/scumm/script_v0.cpp6
-rw-r--r--engines/scumm/scumm_v0.h1
4 files changed, 17 insertions, 4 deletions
diff --git a/engines/scumm/file.cpp b/engines/scumm/file.cpp
index 7ead4c25b5..96b46aa21a 100644
--- a/engines/scumm/file.cpp
+++ b/engines/scumm/file.cpp
@@ -227,7 +227,7 @@ static const int maniacDemoResourcesPerFile[55] = {
0, 1, 0, 0, 2, 0, 0, 1, 0, 0,
2, 7, 1, 11, 0, 0, 5, 1, 0, 0,
1, 0, 1, 3, 4, 3, 1, 0, 0, 1,
- 1, 2, 0, 0, 0
+ 2, 2, 0, 0, 0
};
static const int zakResourcesPerFile[59] = {
diff --git a/engines/scumm/input.cpp b/engines/scumm/input.cpp
index 824dfec144..86048af57c 100644
--- a/engines/scumm/input.cpp
+++ b/engines/scumm/input.cpp
@@ -452,8 +452,16 @@ void ScummEngine_v2::processKeyboard(Common::KeyState lastKeyHit) {
lastKeyHit = Common::KeyState(Common::KEYCODE_ESCAPE);
// F7 is used to skip cutscenes in the Commodote 64 version of Maniac Mansion
} else if (_game.id == GID_MANIAC &&_game.platform == Common::kPlatformC64) {
- if (lastKeyHit.keycode == Common::KEYCODE_F7 && lastKeyHit.hasFlags(0))
- lastKeyHit = Common::KeyState(Common::KEYCODE_ESCAPE);
+ // Demo always F7 to be pressed to restart
+ if (_game.features & GF_DEMO) {
+ if (_roomResource != 0x2D && lastKeyHit.keycode == Common::KEYCODE_F7 && lastKeyHit.hasFlags(0)) {
+ restart();
+ return;
+ }
+ } else {
+ if (lastKeyHit.keycode == Common::KEYCODE_F7 && lastKeyHit.hasFlags(0))
+ lastKeyHit = Common::KeyState(Common::KEYCODE_ESCAPE);
+ }
// 'B' is used to skip cutscenes in the NES version of Maniac Mansion
} else if (_game.id == GID_MANIAC &&_game.platform == Common::kPlatformNES) {
if (lastKeyHit.keycode == Common::KEYCODE_b && lastKeyHit.hasFlags(Common::KBD_SHIFT))
diff --git a/engines/scumm/script_v0.cpp b/engines/scumm/script_v0.cpp
index 8d9d196b62..609cbd1e89 100644
--- a/engines/scumm/script_v0.cpp
+++ b/engines/scumm/script_v0.cpp
@@ -172,7 +172,7 @@ void ScummEngine_v0::setupOpcodes() {
/* 6C */
OPCODE(0x6c, o_stopCurrentScript);
OPCODE(0x6d, o2_putActorInRoom);
- OPCODE(0x6e, o2_dummy);
+ OPCODE(0x6e, o_screenPrepare);
OPCODE(0x6f, o2_ifState08);
/* 70 */
OPCODE(0x70, o_lights);
@@ -982,6 +982,10 @@ void ScummEngine_v0::o_setOwnerOf() {
setOwnerOf(obj, owner);
}
+void ScummEngine_v0::o_screenPrepare() {
+
+}
+
void ScummEngine_v0::resetSentence() {
_activeVerb = kVerbWalkTo;
_activeObject = 0;
diff --git a/engines/scumm/scumm_v0.h b/engines/scumm/scumm_v0.h
index e2f4a2ffbf..4098d639c4 100644
--- a/engines/scumm/scumm_v0.h
+++ b/engines/scumm/scumm_v0.h
@@ -166,6 +166,7 @@ protected:
void o_cutscene();
void o_endCutscene();
void o_setOwnerOf();
+ void o_screenPrepare();
byte VAR_ACTIVE_OBJECT2;
byte VAR_IS_SOUND_RUNNING;