From 060caebf47838b7466cbd44a5aeb13e24641af94 Mon Sep 17 00:00:00 2001 From: Bastien Bouclet Date: Sat, 18 Mar 2017 06:40:02 +0100 Subject: MOHAWK: In Myst v1.0 English the take page opcode takes no arguments Fixes #9645, crash when trying to take a book page. --- engines/mohawk/myst_scripts.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'engines/mohawk/myst_scripts.cpp') diff --git a/engines/mohawk/myst_scripts.cpp b/engines/mohawk/myst_scripts.cpp index 596180ddb2..267d644b65 100644 --- a/engines/mohawk/myst_scripts.cpp +++ b/engines/mohawk/myst_scripts.cpp @@ -355,7 +355,26 @@ void MystScriptParser::o_changeCardSwitchRtL(uint16 op, uint16 var, uint16 argc, } void MystScriptParser::o_takePage(uint16 op, uint16 var, uint16 argc, uint16 *argv) { - uint16 cursorId = argv[0]; + // In most game releases, the first opcode argument is the new mouse cursor. + // However, in the original v1.0 English release this opcode takes no argument. + uint16 cursorId; // = argv[0]; + switch (var) { + case 41: // Vault white page + cursorId = kWhitePageCursor; + break; + case 25: // Fireplace red page + case 102: // Red page + cursorId = kRedPageCursor; + break; + case 24: // Fireplace blue page + case 103: // Blue page + cursorId = kBluePageCursor; + break; + default: + warning("Unexpected take page variable '%d'", var); + cursorId = kDefaultMystCursor; + } + uint16 oldPage = _globals.heldPage; debugC(kDebugScript, "Opcode %d: takePage Var %d CursorId %d", op, var, cursorId); -- cgit v1.2.3