[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