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

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


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

Log Message:
-----------
MOHAWK: Implement / fix Myst opcode 4.

Modified Paths:
--------------
    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_scripts.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts.cpp	2010-11-29 20:56:39 UTC (rev 54620)
+++ scummvm/trunk/engines/mohawk/myst_scripts.cpp	2010-11-29 20:56:56 UTC (rev 54621)
@@ -94,7 +94,7 @@
 		OPCODE(1, o_1_setVar),
 		OPCODE(2, o_2_changeCardSwitch),
 		OPCODE(3, takePage),
-		OPCODE(4, opcode_4),
+		OPCODE(4, o_4_redrawCard),
 		// Opcode 5 Not Present
 		OPCODE(6, o_6_goToDest),
 		OPCODE(7, o_6_goToDest),
@@ -306,41 +306,21 @@
 		unknown(op, var, argc, argv);
 }
 
-void MystScriptParser::opcode_4(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	// Used on Exit Script of Mechanical Card 6044 (Fortress Rotation Simulator)
+void MystScriptParser::o_4_redrawCard(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Redraw card", op);
 
-	if (argc == 0 && _vm->getCurStack() == kSeleniticStack && _vm->getCurCard() == 1275) {
-		// TODO: Fixes Selenitic Card 1275, but not sure if this is correct for general case..
-		// as it breaks Selenitic Card 1257, though this may be due to screen update. Also,
-		// this may actually be a "Force Card Reload" or "VIEW conditional re-evaluation".. in
-		// the general case, rather than this image blit...
-		uint16 var_value = getVar(var);
-		if (var_value < _vm->_view.scriptResCount) {
-			if (_vm->_view.scriptResources[var_value].type == 1) { // TODO: Add Symbols for Types
-				_vm->_gfx->copyImageToScreen(_vm->_view.scriptResources[var_value].id, Common::Rect(0, 0, 544, 333));
-				_vm->_gfx->updateScreen();
-			} else
-				warning("Opcode %d: Script Resource %d Type Not Image", op, var_value);
-		} else
-			warning("Opcode %d: var %d value %d outside Script Resource Range %d", op, var, var_value, _vm->_view.scriptResCount);
-	} else
-		unknown(op, var, argc, argv);
+	// TODO: Is redrawing the background correct ?
+	_vm->drawCardBackground();
+	_vm->drawResourceImages();
 }
 
 void MystScriptParser::o_6_goToDest(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	varUnusedCheck(op, var);
+	debugC(kDebugScript, "Opcode %d: Change To Dest of Invoking Resource", op);
 
-	if (argc == 0) {
-		// Used for Selenitic Card 1286 Resource #0
-		// Used for Myst Card 4143 Resource #0 & #5
-		debugC(kDebugScript, "Opcode %d: Change To Dest of Invoking Resource", op);
-
-		if (_invokingResource != NULL)
-			_vm->changeToCard(_invokingResource->getDest());
-		else
-			warning("Opcode %d: Missing invokingResource", op);
-	} else
-		unknown(op, var, argc, argv);
+	if (_invokingResource != NULL)
+		_vm->changeToCard(_invokingResource->getDest());
+	else
+		warning("Opcode %d: Missing invokingResource", op);
 }
 void MystScriptParser::o_9_triggerMovie(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	debugC(kDebugScript, "Opcode %d: Trigger Type 6 Resource Movie..", op);

Modified: scummvm/trunk/engines/mohawk/myst_scripts.h
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts.h	2010-11-29 20:56:39 UTC (rev 54620)
+++ scummvm/trunk/engines/mohawk/myst_scripts.h	2010-11-29 20:56:56 UTC (rev 54621)
@@ -82,7 +82,7 @@
 	DECLARE_OPCODE(o_1_setVar);
 	DECLARE_OPCODE(o_2_changeCardSwitch);
 	DECLARE_OPCODE(takePage);
-	DECLARE_OPCODE(opcode_4);
+	DECLARE_OPCODE(o_4_redrawCard);
 	DECLARE_OPCODE(o_6_goToDest);
 	DECLARE_OPCODE(o_9_triggerMovie);
 	DECLARE_OPCODE(o_10_toggleVarNoRedraw);

Modified: scummvm/trunk/engines/mohawk/myst_scripts_myst.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts_myst.cpp	2010-11-29 20:56:39 UTC (rev 54620)
+++ scummvm/trunk/engines/mohawk/myst_scripts_myst.cpp	2010-11-29 20:56:56 UTC (rev 54621)
@@ -57,7 +57,7 @@
 		OPCODE(1, o_1_setVar),
 		OPCODE(2, o_2_changeCardSwitch),
 		OPCODE(3, takePage),
-		OPCODE(4, opcode_4),
+		OPCODE(4, o_4_redrawCard),
 		// TODO: Opcode 5 Not Present
 		OPCODE(6, o_6_goToDest),
 		OPCODE(7, o_6_goToDest),

Modified: scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp	2010-11-29 20:56:39 UTC (rev 54620)
+++ scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp	2010-11-29 20:56:56 UTC (rev 54621)
@@ -57,7 +57,7 @@
 		OPCODE(1, o_1_setVar),
 		OPCODE(2, o_2_changeCardSwitch),
 		OPCODE(3, takePage),
-		OPCODE(4, opcode_4),
+		OPCODE(4, o_4_redrawCard),
 		// TODO: Opcode 5 Not Present
 		OPCODE(6, o_6_goToDest),
 		OPCODE(7, o_6_goToDest),


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