[Scummvm-cvs-logs] SF.net SVN: scummvm:[54617] scummvm/trunk/engines/mohawk

bgk at users.sourceforge.net bgk at users.sourceforge.net
Mon Nov 29 21:55:50 CET 2010


Revision: 54617
          http://scummvm.svn.sourceforge.net/scummvm/?rev=54617&view=rev
Author:   bgk
Date:     2010-11-29 20:55:50 +0000 (Mon, 29 Nov 2010)

Log Message:
-----------
MOHAWK: Describe Myst opcode 9

Modified Paths:
--------------
    scummvm/trunk/engines/mohawk/myst_areas.cpp
    scummvm/trunk/engines/mohawk/myst_areas.h
    scummvm/trunk/engines/mohawk/myst_scripts.cpp
    scummvm/trunk/engines/mohawk/myst_scripts.h
    scummvm/trunk/engines/mohawk/myst_scripts_myst.cpp
    scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp

Modified: scummvm/trunk/engines/mohawk/myst_areas.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_areas.cpp	2010-11-29 20:55:31 UTC (rev 54616)
+++ scummvm/trunk/engines/mohawk/myst_areas.cpp	2010-11-29 20:55:50 UTC (rev 54617)
@@ -135,12 +135,12 @@
 	_left = rlstStream->readUint16LE() % 10000;
 	_top = rlstStream->readUint16LE() % 10000;
 	_loop = rlstStream->readUint16LE();
-	_u0 = rlstStream->readUint16LE();
+	_direction = rlstStream->readUint16LE();
 	_playBlocking = rlstStream->readUint16LE();
 	_playOnCardChange = rlstStream->readUint16LE();
 	_u3 = rlstStream->readUint16LE();
 
-	if (_u0 != 1)
+	if (_direction != 1)
 		warning("Type 6 _u0 != 1");
 	if (_u3 != 0)
 		warning("Type 6 _u3 != 0");
@@ -149,7 +149,7 @@
 	debugC(kDebugResource, "\tleft: %d", _left);
 	debugC(kDebugResource, "\ttop: %d", _top);
 	debugC(kDebugResource, "\tloop: %d", _loop);
-	debugC(kDebugResource, "\tu0: %d", _u0);
+	debugC(kDebugResource, "\tdirection: %d", _direction);
 	debugC(kDebugResource, "\tplayBlocking: %d", _playBlocking);
 	debugC(kDebugResource, "\tplayOnCardChange: %d", _playOnCardChange);
 	debugC(kDebugResource, "\tu3: %d", _u3);

Modified: scummvm/trunk/engines/mohawk/myst_areas.h
===================================================================
--- scummvm/trunk/engines/mohawk/myst_areas.h	2010-11-29 20:55:31 UTC (rev 54616)
+++ scummvm/trunk/engines/mohawk/myst_areas.h	2010-11-29 20:55:50 UTC (rev 54617)
@@ -84,7 +84,7 @@
 	uint16 _left;
 	uint16 _top;
 	uint16 _loop;
-	uint16 _u0;
+	uint16 _direction; // 1 => forward, -1 => backwards
 	uint16 _playBlocking;
 	uint16 _playOnCardChange;
 	uint16 _u3;

Modified: scummvm/trunk/engines/mohawk/myst_scripts.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts.cpp	2010-11-29 20:55:31 UTC (rev 54616)
+++ scummvm/trunk/engines/mohawk/myst_scripts.cpp	2010-11-29 20:55:50 UTC (rev 54617)
@@ -97,7 +97,7 @@
 		OPCODE(6, o_6_changeCard),
 		OPCODE(7, o_6_changeCard),
 		OPCODE(8, o_6_changeCard),
-		OPCODE(9, opcode_9),
+		OPCODE(9, o_9_triggerMovie),
 		OPCODE(10, o_10_toggleVarNoRedraw),
 		// Opcode 11 Not Present
 		OPCODE(12, o_2_changeCardSwitch),
@@ -340,27 +340,19 @@
 	} else
 		unknown(op, var, argc, argv);
 }
-void MystScriptParser::opcode_9(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+void MystScriptParser::o_9_triggerMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Trigger Type 6 Resource Movie..", op);
 	// If movie has sound, pause background music
 
-	varUnusedCheck(op, var);
+	int16 direction = 1;
+	if (argc == 1) {
+		direction = argv[0];
+	}
+	debugC(kDebugScript, "\tDirection: %d", direction);
 
-	if (argc == 0 || argc == 1) {
-		debugC(kDebugScript, "Opcode %d: Trigger Type 6 Resource Movie..", op);
-		// TODO: Add Logic to do this...
+	// Trigger resource 6 movie overriding play direction
 
-		// Used on Stoneship Card 2138 with 1 argument of 66535 as well as with
-		// no arguments. Seems logically consistent with play movie with optional
-		// start point or time direction control?
-
-		// This understanding of this opcode is based upon Stoneship Card 2197
-		// i.e. Sirrus' Desk, but since this is a single case, we should find
-		// more...
-		if (!((_vm->getCurStack() == kStoneshipStack && _vm->getCurCard() == 2197) ||
-		      (_vm->getCurStack() == kStoneshipStack && _vm->getCurCard() == 2138)))
-			warning("TODO: Opcode 9 on this card - Check function is consistent");
-	} else
-		unknown(op, var, argc, argv);
+	// If movie has sound, resume background music
 }
 
 void MystScriptParser::o_10_toggleVarNoRedraw(uint16 op, uint16 var, uint16 argc, uint16 *argv) {

Modified: scummvm/trunk/engines/mohawk/myst_scripts.h
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts.h	2010-11-29 20:55:31 UTC (rev 54616)
+++ scummvm/trunk/engines/mohawk/myst_scripts.h	2010-11-29 20:55:50 UTC (rev 54617)
@@ -84,7 +84,7 @@
 	DECLARE_OPCODE(takePage);
 	DECLARE_OPCODE(opcode_4);
 	DECLARE_OPCODE(o_6_changeCard);
-	DECLARE_OPCODE(opcode_9);
+	DECLARE_OPCODE(o_9_triggerMovie);
 	DECLARE_OPCODE(o_10_toggleVarNoRedraw);
 	DECLARE_OPCODE(o_14_drawAreaState);
 	DECLARE_OPCODE(o_15_redrawAreaForVar);

Modified: scummvm/trunk/engines/mohawk/myst_scripts_myst.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts_myst.cpp	2010-11-29 20:55:31 UTC (rev 54616)
+++ scummvm/trunk/engines/mohawk/myst_scripts_myst.cpp	2010-11-29 20:55:50 UTC (rev 54617)
@@ -62,7 +62,7 @@
 		OPCODE(6, o_6_changeCard),
 		OPCODE(7, o_6_changeCard),
 		OPCODE(8, o_6_changeCard),
-		OPCODE(9, opcode_9),
+		OPCODE(9, o_9_triggerMovie),
 		OPCODE(10, o_10_toggleVarNoRedraw),
 		// TODO: Opcode 10 to 11 Not Present
 		OPCODE(12, o_2_changeCardSwitch),

Modified: scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp	2010-11-29 20:55:31 UTC (rev 54616)
+++ scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp	2010-11-29 20:55:50 UTC (rev 54617)
@@ -62,7 +62,7 @@
 		OPCODE(6, o_6_changeCard),
 		OPCODE(7, o_6_changeCard),
 		OPCODE(8, o_6_changeCard),
-		OPCODE(9, opcode_9),
+		OPCODE(9, o_9_triggerMovie),
 		OPCODE(10, o_10_toggleVarNoRedraw),
 		// TODO: Opcode 10 to 11 Not Present
 		OPCODE(12, o_2_changeCardSwitch),


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list