aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMatthew Hoops2010-12-01 02:45:31 +0000
committerMatthew Hoops2010-12-01 02:45:31 +0000
commitb9cfb529274219bb5638294a5759324503aa933e (patch)
tree276fda02a34078680cf30d3d17a2718632381ead /engines
parent261cf2390178c6e67874d162799b357da73036a5 (diff)
downloadscummvm-rg350-b9cfb529274219bb5638294a5759324503aa933e.tar.gz
scummvm-rg350-b9cfb529274219bb5638294a5759324503aa933e.tar.bz2
scummvm-rg350-b9cfb529274219bb5638294a5759324503aa933e.zip
MOHAWK: Split mechanical opcodes into their own class
svn-id: r54692
Diffstat (limited to 'engines')
-rw-r--r--engines/mohawk/module.mk1
-rw-r--r--engines/mohawk/myst.cpp4
-rw-r--r--engines/mohawk/myst_stacks/mechanical.cpp576
-rw-r--r--engines/mohawk/myst_stacks/mechanical.h99
-rw-r--r--engines/mohawk/myst_stacks/myst.cpp434
-rw-r--r--engines/mohawk/myst_stacks/myst.h15
6 files changed, 680 insertions, 449 deletions
diff --git a/engines/mohawk/module.mk b/engines/mohawk/module.mk
index 3de63e5b8e..6ef0ab814e 100644
--- a/engines/mohawk/module.mk
+++ b/engines/mohawk/module.mk
@@ -25,6 +25,7 @@ MODULE_OBJS = \
video.o \
myst_stacks/channelwood.o \
myst_stacks/credits.o \
+ myst_stacks/mechanical.o \
myst_stacks/myst.o \
myst_stacks/selenitic.o \
myst_stacks/stoneship.o
diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp
index 4d61311466..b7ce6dd2e3 100644
--- a/engines/mohawk/myst.cpp
+++ b/engines/mohawk/myst.cpp
@@ -41,6 +41,7 @@
// The stacks
#include "mohawk/myst_stacks/channelwood.h"
#include "mohawk/myst_stacks/credits.h"
+#include "mohawk/myst_stacks/mechanical.h"
#include "mohawk/myst_stacks/myst.h"
#include "mohawk/myst_stacks/selenitic.h"
#include "mohawk/myst_stacks/stoneship.h"
@@ -384,6 +385,9 @@ void MohawkEngine_Myst::changeToStack(uint16 stack) {
case kCreditsStack:
_scriptParser = new MystScriptParser_Credits(this);
break;
+ case kMechanicalStack:
+ _scriptParser = new MystScriptParser_Mechanical(this);
+ break;
case kSeleniticStack:
_scriptParser = new MystScriptParser_Selenitic(this);
break;
diff --git a/engines/mohawk/myst_stacks/mechanical.cpp b/engines/mohawk/myst_stacks/mechanical.cpp
new file mode 100644
index 0000000000..bb4712c947
--- /dev/null
+++ b/engines/mohawk/myst_stacks/mechanical.cpp
@@ -0,0 +1,576 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include "mohawk/myst.h"
+#include "mohawk/graphics.h"
+#include "mohawk/myst_areas.h"
+#include "mohawk/sound.h"
+#include "mohawk/video.h"
+#include "mohawk/myst_stacks/mechanical.h"
+
+#include "gui/message.h"
+
+namespace Mohawk {
+
+#define OPCODE(op, x) { op, &MystScriptParser::x, #x }
+#define SPECIFIC_OPCODE(op, x) { op, (OpcodeProcMyst) &MystScriptParser_Mechanical::x, #x }
+
+MystScriptParser_Mechanical::MystScriptParser_Mechanical(MohawkEngine_Myst *vm) : MystScriptParser(vm) {
+ setupOpcodes();
+}
+
+MystScriptParser_Mechanical::~MystScriptParser_Mechanical() {
+}
+
+void MystScriptParser_Mechanical::setupOpcodes() {
+ // "invalid" opcodes do not exist or have not been observed
+ // "unknown" opcodes exist, but their meaning is unknown
+
+ static const MystOpcode myst_opcodes[] = {
+ // "Standard" Opcodes
+ OPCODE(0, o_toggleVar),
+ OPCODE(1, o_setVar),
+ OPCODE(2, o_changeCardSwitch),
+ OPCODE(3, o_takePage),
+ OPCODE(4, o_redrawCard),
+ // TODO: Opcode 5 Not Present
+ OPCODE(6, o_goToDest),
+ OPCODE(7, o_goToDest),
+ OPCODE(8, o_goToDest),
+ OPCODE(9, o_triggerMovie),
+ OPCODE(10, o_toggleVarNoRedraw),
+ // TODO: Opcode 10 to 11 Not Present
+ OPCODE(12, o_changeCardSwitch),
+ OPCODE(13, o_changeCardSwitch),
+ OPCODE(14, o_drawAreaState),
+ OPCODE(15, o_redrawAreaForVar),
+ OPCODE(16, o_changeCardDirectional),
+ OPCODE(17, o_changeCardPush),
+ OPCODE(18, o_changeCardPop),
+ OPCODE(19, o_enableAreas),
+ OPCODE(20, o_disableAreas),
+ OPCODE(21, o_directionalUpdate),
+ OPCODE(22, o_goToDest),
+ OPCODE(23, o_toggleAreasActivation),
+ OPCODE(24, o_playSound),
+ // TODO: Opcode 25 Not Present
+ OPCODE(26, o_stopSoundBackground),
+ OPCODE(27, o_playSoundBlocking),
+ OPCODE(28, o_restoreDefaultRect),
+ OPCODE(29, o_blitRect),
+ OPCODE(30, o_changeSound),
+ OPCODE(31, o_soundPlaySwitch),
+ OPCODE(32, o_soundResumeBackground),
+ OPCODE(33, o_blitRect),
+ OPCODE(34, o_changeCard),
+ OPCODE(35, o_drawImageChangeCard),
+ OPCODE(36, o_changeMainCursor),
+ OPCODE(37, o_hideCursor),
+ OPCODE(38, o_showCursor),
+ OPCODE(39, o_delay),
+ OPCODE(40, o_changeStack),
+ OPCODE(41, o_changeCardPlaySoundDirectional),
+ OPCODE(42, o_directionalUpdatePlaySound),
+ OPCODE(43, o_saveMainCursor),
+ OPCODE(44, o_restoreMainCursor),
+ // TODO: Opcode 45 Not Present
+ OPCODE(46, o_soundWaitStop),
+ // TODO: Opcodes 47 to 99 Not Present
+
+ // "Stack-Specific" Opcodes
+ SPECIFIC_OPCODE(104, opcode_104),
+ SPECIFIC_OPCODE(105, opcode_105),
+ SPECIFIC_OPCODE(121, opcode_121),
+ SPECIFIC_OPCODE(122, opcode_122),
+ SPECIFIC_OPCODE(123, opcode_123),
+ SPECIFIC_OPCODE(124, opcode_124),
+ SPECIFIC_OPCODE(125, opcode_125),
+ SPECIFIC_OPCODE(126, opcode_126),
+ SPECIFIC_OPCODE(127, opcode_127),
+ SPECIFIC_OPCODE(128, opcode_128),
+ SPECIFIC_OPCODE(129, opcode_129),
+ SPECIFIC_OPCODE(130, opcode_130),
+ SPECIFIC_OPCODE(131, opcode_131),
+ SPECIFIC_OPCODE(132, opcode_132),
+
+ // "Init" Opcodes
+ SPECIFIC_OPCODE(200, opcode_200),
+ SPECIFIC_OPCODE(201, opcode_201),
+ SPECIFIC_OPCODE(202, opcode_202),
+ SPECIFIC_OPCODE(203, opcode_203),
+ SPECIFIC_OPCODE(204, opcode_204),
+ SPECIFIC_OPCODE(205, opcode_205),
+ SPECIFIC_OPCODE(206, opcode_206),
+ SPECIFIC_OPCODE(209, opcode_209),
+
+ // "Exit" Opcodes
+ SPECIFIC_OPCODE(300, opcode_300),
+
+ OPCODE(0xFFFF, NOP)
+ };
+
+ _opcodes = myst_opcodes;
+ _opcodeCount = ARRAYSIZE(myst_opcodes);
+}
+
+void MystScriptParser_Mechanical::disablePersistentScripts() {
+ opcode_200_disable();
+ opcode_201_disable();
+ opcode_202_disable();
+ opcode_203_disable();
+ opcode_204_disable();
+ opcode_205_disable();
+ opcode_206_disable();
+ opcode_209_disable();
+}
+
+void MystScriptParser_Mechanical::runPersistentScripts() {
+ opcode_200_run();
+ opcode_201_run();
+ opcode_202_run();
+ opcode_203_run();
+ opcode_204_run();
+ opcode_205_run();
+ opcode_206_run();
+ opcode_209_run();
+}
+
+void MystScriptParser_Mechanical::opcode_104(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ // Used on Mechanical Card 6043 (Weapons Rack with Snake Box)
+ if (argc == 0) {
+ debugC(kDebugScript, "Opcode %d: Trigger Playing Of Snake Movie", op);
+
+ // TODO: Trigger Type 6 To Play Snake Movie.. Resource #3 on card.
+ } else
+ unknown(op, var, argc, argv);
+
+}
+
+void MystScriptParser_Mechanical::opcode_105(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ if (argc == 0) {
+ debugC(kDebugScript, "Opcode %d: Play Stairs Movement Movie", op);
+
+ if (_vm->_varStore->getVar(10)) {
+ // TODO: Play Movie from 0 to 1/2 way...
+ _vm->_video->playMovie(_vm->wrapMovieFilename("hhstairs", kMechanicalStack), 174, 222);
+ } else {
+ // TODO: Play Movie from 1/2 way to end...
+ _vm->_video->playMovie(_vm->wrapMovieFilename("hhstairs", kMechanicalStack), 174, 222);
+ }
+ }
+}
+
+
+void MystScriptParser_Mechanical::opcode_121(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ if (argc == 2) {
+ uint16 startTime = argv[0];
+ uint16 endTime = argv[1];
+
+ warning("TODO: Opcode %d Movie Time Index %d to %d\n", op, startTime, endTime);
+ // TODO: Need version of playMovie blocking which allows selection
+ // of start and finish points.
+ _vm->_video->playMovie(_vm->wrapMovieFilename("ewindow", kMechanicalStack), 253, 0);
+ } else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_122(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ if (argc == 0) {
+ // Used on Card 6120 (Elevator)
+ // Called when Exit Midde Button Pressed
+
+ // TODO: hcelev? Movie of Elevator?
+ } else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_123(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ if (argc == 2) {
+ // Used on Card 6154
+ uint16 start_time = argv[0];
+ uint16 end_time = argv[1];
+
+ warning("TODO: Opcode %d Movie Time Index %d to %d\n", op, start_time, end_time);
+ // TODO: Need version of playMovie blocking which allows selection
+ // of start and finish points.
+ // TODO: Not 100% sure about movie position
+ _vm->_video->playMovie(_vm->wrapMovieFilename("hcelev", kMechanicalStack), 205, 40);
+ } else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_124(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ if (argc == 0) {
+ // Used by Card 6156 (Fortress Rotation Controls)
+ // Called when Red Exit Button Pressed to raise Elevator
+
+ // TODO: Fill in Code...
+ } else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_125(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ if (argc == 0) {
+ // Used on Card 6267 (Code Lock)
+ // Called by Red Execute Button...
+ debugC(kDebugScript, "Opcode %d: Code Lock Execute...", op);
+
+ // TODO: Fill in Logic For Code Lock...
+ } else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_126(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ if (argc == 0) {
+ // Used by Card 6120 (Fortress Elevator)
+ // Called when Red Exit Button Pressed to raise Elevator and
+ // exit is clicked...
+
+ // TODO: Fill in Code...
+ } else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_127(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ if (argc == 0) {
+ // Used for Mech Card 6226 (3 Crystals)
+ _vm->_varStore->setVar(20, 1);
+ } else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_128(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ if (argc == 0) {
+ // Used for Mech Card 6226 (3 Crystals)
+ _vm->_varStore->setVar(20, 0);
+ } else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_129(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ if (argc == 0) {
+ // Used for Mech Card 6226 (3 Crystals)
+ _vm->_varStore->setVar(21, 1);
+ } else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_130(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ if (argc == 0) {
+ // Used for Mech Card 6226 (3 Crystals)
+ _vm->_varStore->setVar(21, 0);
+ } else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_131(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ if (argc == 0) {
+ // Used for Mech Card 6226 (3 Crystals)
+ _vm->_varStore->setVar(22, 1);
+ } else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_132(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ if (argc == 0) {
+ // Used for Mech Card 6226 (3 Crystals)
+ _vm->_varStore->setVar(22, 0);
+ } else
+ unknown(op, var, argc, argv);
+}
+
+static struct {
+ bool enabled;
+ uint16 var;
+} g_opcode200Parameters;
+
+void MystScriptParser_Mechanical::opcode_200_run() {
+ // Used on Card 6238 (Sirrus' Throne) and Card 6027 (Achenar's Throne)
+ // g_opcode200Parameters.var == 0 for Achenar
+ // g_opcode200Parameters.var == 1 for Sirrus
+
+ // TODO: Fill in Function...
+ // Variable indicates that this is related to Secret Panel State
+}
+
+void MystScriptParser_Mechanical::opcode_200_disable() {
+ g_opcode200Parameters.enabled = false;
+ g_opcode200Parameters.var = 0;
+}
+
+void MystScriptParser_Mechanical::opcode_200(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ // Used on Card 6238 (Sirrus' Throne) and Card 6027 (Achenar's Throne)
+ if (argc == 0) {
+ g_opcode200Parameters.var = var;
+ g_opcode200Parameters.enabled = true;
+ } else
+ unknown(op, var, argc, argv);
+}
+
+static struct {
+ uint16 u0;
+ uint16 u1;
+ uint16 u2;
+
+ bool enabled;
+} g_opcode201Parameters;
+
+void MystScriptParser_Mechanical::opcode_201_run() {
+ // Used for Card 6159 (Facing Corridor to Fortress Elevator)
+
+ // g_opcode201Parameters.u0
+ // g_opcode201Parameters.u1
+ // g_opcode201Parameters.u2
+
+ // TODO: Fill in Function...
+}
+
+void MystScriptParser_Mechanical::opcode_201_disable() {
+ g_opcode201Parameters.enabled = false;
+ g_opcode201Parameters.u0 = 0;
+ g_opcode201Parameters.u1 = 0;
+ g_opcode201Parameters.u2 = 0;
+}
+
+void MystScriptParser_Mechanical::opcode_201(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ // Used for Card 6159 (Facing Corridor to Fortress Elevator)
+ if (argc == 3) {
+ g_opcode201Parameters.u0 = argv[0];
+ g_opcode201Parameters.u1 = argv[1];
+ g_opcode201Parameters.u2 = argv[2];
+
+ g_opcode201Parameters.enabled = true;
+ } else
+ unknown(op, var, argc, argv);
+}
+
+static struct {
+ bool enabled;
+} g_opcode202Parameters;
+
+void MystScriptParser_Mechanical::opcode_202_run() {
+ // Used for Card 6220 (Sirrus' Mechanical Bird)
+ // TODO: Fill in Function
+}
+
+void MystScriptParser_Mechanical::opcode_202_disable() {
+ g_opcode202Parameters.enabled = false;
+}
+
+void MystScriptParser_Mechanical::opcode_202(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ // Used for Card 6220 (Sirrus' Mechanical Bird)
+ if (argc == 0)
+ g_opcode202Parameters.enabled = true;
+ else
+ unknown(op, var, argc, argv);
+}
+
+static struct {
+ bool enabled;
+} g_opcode203Parameters;
+
+void MystScriptParser_Mechanical::opcode_203_run() {
+ if (g_opcode203Parameters.enabled) {
+ // Used for Card 6043 (Weapons Rack with Snake Box)
+ // TODO: Fill in Logic for Snake Box...
+ }
+}
+
+void MystScriptParser_Mechanical::opcode_203_disable() {
+ g_opcode203Parameters.enabled = false;
+}
+
+void MystScriptParser_Mechanical::opcode_203(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ // Used for Card 6043 (Weapons Rack with Snake Box)
+ if (argc == 0)
+ g_opcode203Parameters.enabled = true;
+ else
+ unknown(op, var, argc, argv);
+}
+
+static struct {
+ bool enabled;
+ uint16 soundId;
+} g_opcode204Parameters;
+
+void MystScriptParser_Mechanical::opcode_204_run() {
+ if (g_opcode204Parameters.enabled) {
+ // TODO: Fill in Logic.
+ // Var 12 holds Large Cog Position in range 0 to 5
+ // - For animation
+ // Var 11 holds C position in range 0 to 9
+ // - 4 for Correct Answer
+ // C Movement Sound
+ //_vm->_sound->playSound(g_opcode204Parameters.soundId);
+ }
+}
+
+void MystScriptParser_Mechanical::opcode_204_disable() {
+ g_opcode204Parameters.enabled = false;
+}
+
+void MystScriptParser_Mechanical::opcode_204(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ // Used for Card 6180 (Lower Elevator Puzzle)
+ if (argc == 1) {
+ g_opcode204Parameters.soundId = argv[0];
+ g_opcode204Parameters.enabled = true;
+ } else
+ unknown(op, var, argc, argv);
+}
+
+static struct {
+ uint16 soundIdPosition[4];
+
+ bool enabled;
+} g_opcode205Parameters;
+
+void MystScriptParser_Mechanical::opcode_205_run() {
+ // Used for Card 6156 (Fortress Rotation Controls)
+ // TODO: Fill in function...
+ // g_opcode205Parameters.soundIdPosition[4]
+}
+
+void MystScriptParser_Mechanical::opcode_205_disable() {
+ g_opcode205Parameters.enabled = false;
+}
+
+void MystScriptParser_Mechanical::opcode_205(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ // Used for Card 6156 (Fortress Rotation Controls)
+
+ if (argc == 4) {
+ g_opcode205Parameters.soundIdPosition[0] = argv[0];
+ g_opcode205Parameters.soundIdPosition[1] = argv[1];
+ g_opcode205Parameters.soundIdPosition[2] = argv[2];
+ g_opcode205Parameters.soundIdPosition[3] = argv[3];
+
+ g_opcode205Parameters.enabled = true;
+ } else
+ unknown(op, var, argc, argv);
+}
+
+static struct {
+ uint16 soundIdStart[2];
+ uint16 soundIdPosition[4];
+
+ bool enabled;
+} g_opcode206Parameters;
+
+void MystScriptParser_Mechanical::opcode_206_run() {
+ if (g_opcode206Parameters.enabled) {
+ // Used for Card 6044 (Fortress Rotation Simulator)
+
+ // g_opcode206Parameters.soundIdStart[2]
+ // g_opcode206Parameters.soundIdPosition[4]
+
+ // TODO: Fill in function...
+ }
+}
+
+void MystScriptParser_Mechanical::opcode_206_disable() {
+ g_opcode206Parameters.enabled = false;
+}
+
+void MystScriptParser_Mechanical::opcode_206(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ // Used for Card 6044 (Fortress Rotation Simulator)
+ if (argc == 6) {
+ g_opcode206Parameters.soundIdStart[0] = argv[0];
+ g_opcode206Parameters.soundIdStart[1] = argv[1];
+ g_opcode206Parameters.soundIdPosition[0] = argv[2];
+ g_opcode206Parameters.soundIdPosition[1] = argv[3];
+ g_opcode206Parameters.soundIdPosition[2] = argv[4];
+ g_opcode206Parameters.soundIdPosition[3] = argv[5];
+
+ g_opcode206Parameters.enabled = true;
+ } else
+ unknown(op, var, argc, argv);
+}
+
+
+static struct {
+ bool enabled;
+} g_opcode209Parameters;
+
+void MystScriptParser_Mechanical::opcode_209_run() {
+ // Used for Card 6044 (Fortress Rotation Simulator)
+
+ // TODO: Implement Function For Secret Panel State as
+ // per Opcode 200 function (Mechanical)
+}
+
+void MystScriptParser_Mechanical::opcode_209_disable() {
+ g_opcode209Parameters.enabled = false;
+}
+
+void MystScriptParser_Mechanical::opcode_209(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ varUnusedCheck(op, var);
+
+ // Used for Card 6044 (Fortress Rotation Simulator)
+ if (argc == 0)
+ g_opcode209Parameters.enabled = true;
+ else
+ unknown(op, var, argc, argv);
+}
+
+void MystScriptParser_Mechanical::opcode_300(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+ // Used in Card 6156 (Fortress Elevator View)
+ varUnusedCheck(op, var);
+ // TODO: Fill in Logic. Clearing Variable for View?
+}
+
+} // End of namespace Mohawk
diff --git a/engines/mohawk/myst_stacks/mechanical.h b/engines/mohawk/myst_stacks/mechanical.h
new file mode 100644
index 0000000000..0b4036853f
--- /dev/null
+++ b/engines/mohawk/myst_stacks/mechanical.h
@@ -0,0 +1,99 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef MYST_SCRIPTS_MECHANICAL_H
+#define MYST_SCRIPTS_MECHANICAL_H
+
+#include "common/scummsys.h"
+#include "common/util.h"
+#include "mohawk/myst_scripts.h"
+
+namespace Mohawk {
+
+#define DECLARE_OPCODE(x) void x(uint16 op, uint16 var, uint16 argc, uint16 *argv)
+
+class MohawkEngine_Myst;
+struct MystScriptEntry;
+
+class MystScriptParser_Mechanical : public MystScriptParser {
+public:
+ MystScriptParser_Mechanical(MohawkEngine_Myst *vm);
+ ~MystScriptParser_Mechanical();
+
+ void disablePersistentScripts();
+ void runPersistentScripts();
+
+private:
+ void setupOpcodes();
+
+ void opcode_200_run();
+ void opcode_200_disable();
+ void opcode_201_run();
+ void opcode_201_disable();
+ void opcode_202_run();
+ void opcode_202_disable();
+ void opcode_203_run();
+ void opcode_203_disable();
+ void opcode_204_run();
+ void opcode_204_disable();
+ void opcode_205_run();
+ void opcode_205_disable();
+ void opcode_206_run();
+ void opcode_206_disable();
+ void opcode_209_run();
+ void opcode_209_disable();
+
+ DECLARE_OPCODE(opcode_104);
+ DECLARE_OPCODE(opcode_105);
+ DECLARE_OPCODE(opcode_121);
+ DECLARE_OPCODE(opcode_122);
+ DECLARE_OPCODE(opcode_123);
+ DECLARE_OPCODE(opcode_124);
+ DECLARE_OPCODE(opcode_125);
+ DECLARE_OPCODE(opcode_126);
+ DECLARE_OPCODE(opcode_127);
+ DECLARE_OPCODE(opcode_128);
+ DECLARE_OPCODE(opcode_129);
+ DECLARE_OPCODE(opcode_130);
+ DECLARE_OPCODE(opcode_131);
+ DECLARE_OPCODE(opcode_132);
+
+ DECLARE_OPCODE(opcode_200);
+ DECLARE_OPCODE(opcode_201);
+ DECLARE_OPCODE(opcode_202);
+ DECLARE_OPCODE(opcode_203);
+ DECLARE_OPCODE(opcode_204);
+ DECLARE_OPCODE(opcode_205);
+ DECLARE_OPCODE(opcode_206);
+ DECLARE_OPCODE(opcode_209);
+
+ DECLARE_OPCODE(opcode_300);
+};
+
+} // End of namespace Mohawk
+
+#undef DECLARE_OPCODE
+
+#endif
diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp
index c4cc4cce11..8aaaf4a662 100644
--- a/engines/mohawk/myst_stacks/myst.cpp
+++ b/engines/mohawk/myst_stacks/myst.cpp
@@ -124,17 +124,6 @@ void MystScriptParser_Myst::setupOpcodes() {
SPECIFIC_OPCODE(119, opcode_119),
SPECIFIC_OPCODE(120, opcode_120),
SPECIFIC_OPCODE(121, opcode_121),
- SPECIFIC_OPCODE(122, opcode_122),
- SPECIFIC_OPCODE(123, opcode_123),
- SPECIFIC_OPCODE(124, opcode_124),
- SPECIFIC_OPCODE(125, opcode_125),
- SPECIFIC_OPCODE(126, opcode_126),
- SPECIFIC_OPCODE(127, opcode_127),
- SPECIFIC_OPCODE(128, opcode_128),
- SPECIFIC_OPCODE(129, opcode_129),
- SPECIFIC_OPCODE(130, opcode_130),
- SPECIFIC_OPCODE(131, opcode_131),
- SPECIFIC_OPCODE(132, opcode_132),
SPECIFIC_OPCODE(133, opcode_133),
// TODO: Opcodes 134 to 146 Not Present
SPECIFIC_OPCODE(147, opcode_147),
@@ -207,9 +196,7 @@ void MystScriptParser_Myst::disablePersistentScripts() {
opcode_201_disable();
opcode_202_disable();
opcode_203_disable();
- opcode_204_disable();
opcode_205_disable();
- opcode_206_disable();
opcode_209_disable();
opcode_210_disable();
opcode_211_disable();
@@ -221,9 +208,7 @@ void MystScriptParser_Myst::runPersistentScripts() {
opcode_201_run();
opcode_202_run();
opcode_203_run();
- opcode_204_run();
opcode_205_run();
- opcode_206_run();
opcode_209_run();
opcode_210_run();
opcode_211_run();
@@ -435,17 +420,6 @@ void MystScriptParser_Myst::opcode_104(uint16 op, uint16 var, uint16 argc, uint1
} else
unknown(op, var, argc, argv);
break;
- case kMechanicalStack:
- varUnusedCheck(op, var);
-
- // Used on Mechanical Card 6043 (Weapons Rack with Snake Box)
- if (argc == 0) {
- debugC(kDebugScript, "Opcode %d: Trigger Playing Of Snake Movie", op);
-
- // TODO: Trigger Type 6 To Play Snake Movie.. Resource #3 on card.
- } else
- unknown(op, var, argc, argv);
- break;
default:
unknown(op, var, argc, argv);
break;
@@ -489,21 +463,6 @@ void MystScriptParser_Myst::opcode_105(uint16 op, uint16 var, uint16 argc, uint1
} else
unknown(op, var, argc, argv);
break;
- case kMechanicalStack:
- varUnusedCheck(op, var);
-
- if (argc == 0) {
- debugC(kDebugScript, "Opcode %d: Play Stairs Movement Movie", op);
-
- if (_vm->_varStore->getVar(10)) {
- // TODO: Play Movie from 0 to 1/2 way...
- _vm->_video->playMovie(_vm->wrapMovieFilename("hhstairs", kMechanicalStack), 174, 222);
- } else {
- // TODO: Play Movie from 1/2 way to end...
- _vm->_video->playMovie(_vm->wrapMovieFilename("hhstairs", kMechanicalStack), 174, 222);
- }
- }
- break;
default:
unknown(op, var, argc, argv);
break;
@@ -851,20 +810,6 @@ void MystScriptParser_Myst::opcode_121(uint16 op, uint16 var, uint16 argc, uint1
} else
unknown(op, var, argc, argv);
break;
- case kMechanicalStack:
- varUnusedCheck(op, var);
-
- if (argc == 2) {
- uint16 startTime = argv[0];
- uint16 endTime = argv[1];
-
- warning("TODO: Opcode %d Movie Time Index %d to %d\n", op, startTime, endTime);
- // TODO: Need version of playMovie blocking which allows selection
- // of start and finish points.
- _vm->_video->playMovie(_vm->wrapMovieFilename("ewindow", kMechanicalStack), 253, 0);
- } else
- unknown(op, var, argc, argv);
- break;
default:
varUnusedCheck(op, var);
@@ -873,208 +818,6 @@ void MystScriptParser_Myst::opcode_121(uint16 op, uint16 var, uint16 argc, uint1
}
}
-void MystScriptParser_Myst::opcode_122(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
-
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- if (argc == 0) {
- // Used on Card 6120 (Elevator)
- // Called when Exit Midde Button Pressed
-
- // TODO: hcelev? Movie of Elevator?
- } else
- unknown(op, var, argc, argv);
- break;
- default:
- unknown(op, var, argc, argv);
- break;
- }
-}
-
-void MystScriptParser_Myst::opcode_123(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
-
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- if (argc == 2) {
- // Used on Card 6154
- uint16 start_time = argv[0];
- uint16 end_time = argv[1];
-
- warning("TODO: Opcode %d Movie Time Index %d to %d\n", op, start_time, end_time);
- // TODO: Need version of playMovie blocking which allows selection
- // of start and finish points.
- // TODO: Not 100% sure about movie position
- _vm->_video->playMovie(_vm->wrapMovieFilename("hcelev", kMechanicalStack), 205, 40);
- } else
- unknown(op, var, argc, argv);
- break;
- default:
- unknown(op, var, argc, argv);
- break;
- }
-}
-
-void MystScriptParser_Myst::opcode_124(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
-
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- if (argc == 0) {
- // Used by Card 6156 (Fortress Rotation Controls)
- // Called when Red Exit Button Pressed to raise Elevator
-
- // TODO: Fill in Code...
- } else
- unknown(op, var, argc, argv);
- break;
- default:
- unknown(op, var, argc, argv);
- break;
- }
-}
-
-void MystScriptParser_Myst::opcode_125(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- if (argc == 0) {
- // Used on Card 6267 (Code Lock)
- // Called by Red Execute Button...
- debugC(kDebugScript, "Opcode %d: Code Lock Execute...", op);
-
- // TODO: Fill in Logic For Code Lock...
- } else
- unknown(op, var, argc, argv);
- break;
- default:
- unknown(op, var, argc, argv);
- break;
- }
-}
-
-void MystScriptParser_Myst::opcode_126(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
-
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- if (argc == 0) {
- // Used by Card 6120 (Fortress Elevator)
- // Called when Red Exit Button Pressed to raise Elevator and
- // exit is clicked...
-
- // TODO: Fill in Code...
- } else
- unknown(op, var, argc, argv);
- break;
- default:
- unknown(op, var, argc, argv);
- break;
- }
-}
-
-void MystScriptParser_Myst::opcode_127(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
-
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- if (argc == 0) {
- // Used for Mech Card 6226 (3 Crystals)
- _vm->_varStore->setVar(20, 1);
- } else
- unknown(op, var, argc, argv);
- break;
- default:
- unknown(op, var, argc, argv);
- break;
- }
-}
-
-void MystScriptParser_Myst::opcode_128(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
-
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- if (argc == 0) {
- // Used for Mech Card 6226 (3 Crystals)
- _vm->_varStore->setVar(20, 0);
- } else
- unknown(op, var, argc, argv);
- break;
- default:
- unknown(op, var, argc, argv);
- break;
- }
-}
-
-void MystScriptParser_Myst::opcode_129(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
-
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- if (argc == 0) {
- // Used for Mech Card 6226 (3 Crystals)
- _vm->_varStore->setVar(21, 1);
- } else
- unknown(op, var, argc, argv);
- break;
- default:
- unknown(op, var, argc, argv);
- break;
- }
-}
-
-void MystScriptParser_Myst::opcode_130(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
-
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- if (argc == 0) {
- // Used for Mech Card 6226 (3 Crystals)
- _vm->_varStore->setVar(21, 0);
- } else
- unknown(op, var, argc, argv);
- break;
- default:
- unknown(op, var, argc, argv);
- break;
- }
-}
-
-void MystScriptParser_Myst::opcode_131(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
-
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- if (argc == 0) {
- // Used for Mech Card 6226 (3 Crystals)
- _vm->_varStore->setVar(22, 1);
- } else
- unknown(op, var, argc, argv);
- break;
- default:
- unknown(op, var, argc, argv);
- break;
- }
-}
-
-void MystScriptParser_Myst::opcode_132(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- varUnusedCheck(op, var);
-
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- if (argc == 0) {
- // Used for Mech Card 6226 (3 Crystals)
- _vm->_varStore->setVar(22, 0);
- } else
- unknown(op, var, argc, argv);
- break;
- default:
- unknown(op, var, argc, argv);
- break;
- }
-}
-
void MystScriptParser_Myst::opcode_133(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
varUnusedCheck(op, var);
@@ -1414,14 +1157,6 @@ void MystScriptParser_Myst::opcode_200_run() {
lastImageIndex = curImageIndex;
break;
- case kMechanicalStack:
- // Used on Card 6238 (Sirrus' Throne) and Card 6027 (Achenar's Throne)
- // g_opcode200Parameters.var == 0 for Achenar
- // g_opcode200Parameters.var == 1 for Sirrus
-
- // TODO: Fill in Function...
- // Variable indicates that this is related to Secret Panel State
- break;
case kDemoSlidesStack:
// Used on Cards...
if (_vm->_system->getMillis() - g_opcode200Parameters.lastCardTime >= 2 * 1000)
@@ -1485,14 +1220,6 @@ void MystScriptParser_Myst::opcode_200(uint16 op, uint16 var, uint16 argc, uint1
} else
unknown(op, var, argc, argv);
break;
- case kMechanicalStack:
- // Used on Card 6238 (Sirrus' Throne) and Card 6027 (Achenar's Throne)
- if (argc == 0) {
- g_opcode200Parameters.var = var;
- g_opcode200Parameters.enabled = true;
- } else
- unknown(op, var, argc, argv);
- break;
case kDniStack:
varUnusedCheck(op, var);
// Used on Card 5014
@@ -1531,10 +1258,6 @@ void MystScriptParser_Myst::opcode_200(uint16 op, uint16 var, uint16 argc, uint1
}
static struct {
- uint16 u0;
- uint16 u1;
- uint16 u2;
-
uint16 lastVar105;
uint16 soundId;
@@ -1552,15 +1275,6 @@ void MystScriptParser_Myst::opcode_201_run() {
_vm->_sound->playSound(g_opcode201Parameters.soundId);
g_opcode201Parameters.lastVar105 = var105;
break;
- case kMechanicalStack:
- // Used for Card 6159 (Facing Corridor to Fortress Elevator)
-
- // g_opcode201Parameters.u0
- // g_opcode201Parameters.u1
- // g_opcode201Parameters.u2
-
- // TODO: Fill in Function...
- break;
case kDemoStack:
// Used on Card 2001, 2002 and 2003
@@ -1595,17 +1309,6 @@ void MystScriptParser_Myst::opcode_201(uint16 op, uint16 var, uint16 argc, uint1
} else
unknown(op, var, argc, argv);
break;
- case kMechanicalStack:
- // Used for Card 6159 (Facing Corridor to Fortress Elevator)
- if (argc == 3) {
- g_opcode201Parameters.u0 = argv[0];
- g_opcode201Parameters.u1 = argv[1];
- g_opcode201Parameters.u2 = argv[2];
-
- g_opcode201Parameters.enabled = true;
- } else
- unknown(op, var, argc, argv);
- break;
case kDemoStack:
// Used on Card 2001, 2002 and 2003
if (argc == 0) {
@@ -1635,10 +1338,6 @@ void MystScriptParser_Myst::opcode_202_run(void) {
// Type 11 Hotspot for control..
// Var 304 controls presence of Myst Library Image
break;
- case kMechanicalStack:
- // Used for Card 6220 (Sirrus' Mechanical Bird)
- // TODO: Fill in Function
- break;
default:
break;
}
@@ -1662,13 +1361,6 @@ void MystScriptParser_Myst::opcode_202(uint16 op, uint16 var, uint16 argc, uint1
} else
unknown(op, var, argc, argv);
break;
- case kMechanicalStack:
- // Used for Card 6220 (Sirrus' Mechanical Bird)
- if (argc == 0) {
- g_opcode202Parameters.enabled = true;
- } else
- unknown(op, var, argc, argv);
- break;
default:
varUnusedCheck(op, var);
@@ -1692,10 +1384,6 @@ void MystScriptParser_Myst::opcode_203_run(void) {
//debugC(kDebugScript, "Opcode %d: Clear Dock Forechamber Door Variable", op);
//_vm->_varStore->setVar(105, 0);
break;
- case kMechanicalStack:
- // Used for Card 6043 (Weapons Rack with Snake Box)
- // TODO: Fill in Logic for Snake Box...
- break;
}
}
}
@@ -1713,48 +1401,12 @@ void MystScriptParser_Myst::opcode_203(uint16 op, uint16 var, uint16 argc, uint1
// Set forechamber door to closed
setVarValue(105, 0);
break;
- case kMechanicalStack:
- // Used for Card 6043 (Weapons Rack with Snake Box)
- if (argc == 0) {
- g_opcode203Parameters.enabled = true;
- } else
- unknown(op, var, argc, argv);
- break;
default:
unknown(op, var, argc, argv);
break;
}
}
-static struct {
- bool enabled;
- uint16 soundId;
-} g_opcode204Parameters;
-
-void MystScriptParser_Myst::opcode_204_run(void) {
- if (g_opcode204Parameters.enabled) {
- switch (_vm->getCurStack()) {
- case kMystStack:
- // Used for Card 4134 and 4149 (Dock)
- // TODO: Not sure of function. Not Gulls (at least directly). Fill in Logic.
- break;
- case kMechanicalStack:
- // TODO: Fill in Logic.
- // Var 12 holds Large Cog Position in range 0 to 5
- // - For animation
- // Var 11 holds C position in range 0 to 9
- // - 4 for Correct Answer
- // C Movement Sound
- //_vm->_sound->playSound(g_opcode204Parameters.soundId);
- break;
- }
- }
-}
-
-void MystScriptParser_Myst::opcode_204_disable(void) {
- g_opcode204Parameters.enabled = false;
-}
-
void MystScriptParser_Myst::opcode_204(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
varUnusedCheck(op, var);
@@ -1762,14 +1414,6 @@ void MystScriptParser_Myst::opcode_204(uint16 op, uint16 var, uint16 argc, uint1
case kMystStack:
// Used for Card 4134 and 4149 (Dock)
break;
- case kMechanicalStack:
- // Used for Card 6180 (Lower Elevator Puzzle)
- if (argc == 1) {
- g_opcode204Parameters.soundId = argv[0];
- g_opcode204Parameters.enabled = true;
- } else
- unknown(op, var, argc, argv);
- break;
default:
unknown(op, var, argc, argv);
break;
@@ -1777,8 +1421,6 @@ void MystScriptParser_Myst::opcode_204(uint16 op, uint16 var, uint16 argc, uint1
}
static struct {
- uint16 soundIdPosition[4];
-
bool enabled;
} g_opcode205Parameters;
@@ -1789,11 +1431,6 @@ void MystScriptParser_Myst::opcode_205_run(void) {
// Used for Card 4532 (Rocketship Piano)
// TODO: Fill in function...
break;
- case kMechanicalStack:
- // Used for Card 6156 (Fortress Rotation Controls)
- // TODO: Fill in function...
- // g_opcode205Parameters.soundIdPosition[4]
- break;
}
}
}
@@ -1814,51 +1451,12 @@ void MystScriptParser_Myst::opcode_205(uint16 op, uint16 var, uint16 argc, uint1
} else
unknown(op, var, argc, argv);
break;
- case kMechanicalStack:
- // Used for Card 6156 (Fortress Rotation Controls)
-
- if (argc == 4) {
- g_opcode205Parameters.soundIdPosition[0] = argv[0];
- g_opcode205Parameters.soundIdPosition[1] = argv[1];
- g_opcode205Parameters.soundIdPosition[2] = argv[2];
- g_opcode205Parameters.soundIdPosition[3] = argv[3];
-
- g_opcode205Parameters.enabled = true;
- } else
- unknown(op, var, argc, argv);
- break;
default:
unknown(op, var, argc, argv);
break;
}
}
-static struct {
- uint16 soundIdStart[2];
- uint16 soundIdPosition[4];
-
- bool enabled;
-} g_opcode206Parameters;
-
-void MystScriptParser_Myst::opcode_206_run(void) {
- if (g_opcode206Parameters.enabled) {
- switch (_vm->getCurStack()) {
- case kMechanicalStack:
- // Used for Card 6044 (Fortress Rotation Simulator)
-
- // g_opcode206Parameters.soundIdStart[2]
- // g_opcode206Parameters.soundIdPosition[4]
-
- // TODO: Fill in function...
- break;
- }
- }
-}
-
-void MystScriptParser_Myst::opcode_206_disable(void) {
- g_opcode206Parameters.enabled = false;
-}
-
void MystScriptParser_Myst::opcode_206(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
varUnusedCheck(op, var);
@@ -1867,20 +1465,6 @@ void MystScriptParser_Myst::opcode_206(uint16 op, uint16 var, uint16 argc, uint1
// Used for Card 4256 (Butterfly Movie Activation)
// TODO: Implement Logic...
break;
- case kMechanicalStack:
- // Used for Card 6044 (Fortress Rotation Simulator)
- if (argc == 6) {
- g_opcode206Parameters.soundIdStart[0] = argv[0];
- g_opcode206Parameters.soundIdStart[1] = argv[1];
- g_opcode206Parameters.soundIdPosition[0] = argv[2];
- g_opcode206Parameters.soundIdPosition[1] = argv[3];
- g_opcode206Parameters.soundIdPosition[2] = argv[4];
- g_opcode206Parameters.soundIdPosition[3] = argv[5];
-
- g_opcode206Parameters.enabled = true;
- } else
- unknown(op, var, argc, argv);
- break;
default:
unknown(op, var, argc, argv);
break;
@@ -1931,12 +1515,6 @@ void MystScriptParser_Myst::opcode_209_run(void) {
// TODO: Code to trigger Type 6 to play movie...
break;
- case kMechanicalStack:
- // Used for Card 6044 (Fortress Rotation Simulator)
-
- // TODO: Implement Function For Secret Panel State as
- // per Opcode 200 function (Mechanical)
- break;
default:
break;
}
@@ -1962,13 +1540,6 @@ void MystScriptParser_Myst::opcode_209(uint16 op, uint16 var, uint16 argc, uint1
} else
unknown(op, var, argc, argv);
break;
- case kMechanicalStack:
- // Used for Card 6044 (Fortress Rotation Simulator)
- if (argc == 0) {
- g_opcode209Parameters.enabled = true;
- } else
- unknown(op, var, argc, argv);
- break;
default:
unknown(op, var, argc, argv);
break;
@@ -2484,11 +2055,6 @@ void MystScriptParser_Myst::opcode_300(uint16 op, uint16 var, uint16 argc, uint1
debugC(kDebugScript, "Var: %d", var);
// TODO: Fill in Logic
break;
- case kMechanicalStack:
- // Used in Card 6156 (Fortress Elevator View)
- varUnusedCheck(op, var);
- // TODO: Fill in Logic. Clearing Variable for View?
- break;
case kDniStack:
// Used in Card 5014 (Atrus Writing)
varUnusedCheck(op, var);
diff --git a/engines/mohawk/myst_stacks/myst.h b/engines/mohawk/myst_stacks/myst.h
index 4795fe54fc..2b141f0992 100644
--- a/engines/mohawk/myst_stacks/myst.h
+++ b/engines/mohawk/myst_stacks/myst.h
@@ -56,12 +56,8 @@ private:
void opcode_202_disable();
void opcode_203_run();
void opcode_203_disable();
- void opcode_204_run();
- void opcode_204_disable();
void opcode_205_run();
void opcode_205_disable();
- void opcode_206_run();
- void opcode_206_disable();
void opcode_209_run();
void opcode_209_disable();
void opcode_210_run();
@@ -87,17 +83,6 @@ private:
DECLARE_OPCODE(opcode_119);
DECLARE_OPCODE(opcode_120);
DECLARE_OPCODE(opcode_121);
- DECLARE_OPCODE(opcode_122);
- DECLARE_OPCODE(opcode_123);
- DECLARE_OPCODE(opcode_124);
- DECLARE_OPCODE(opcode_125);
- DECLARE_OPCODE(opcode_126);
- DECLARE_OPCODE(opcode_127);
- DECLARE_OPCODE(opcode_128);
- DECLARE_OPCODE(opcode_129);
- DECLARE_OPCODE(opcode_130);
- DECLARE_OPCODE(opcode_131);
- DECLARE_OPCODE(opcode_132);
DECLARE_OPCODE(opcode_133);
DECLARE_OPCODE(opcode_147);
DECLARE_OPCODE(opcode_164);