[Scummvm-cvs-logs] SF.net SVN: scummvm: [31139] scummvm/trunk/engines/kyra

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Mar 16 14:31:19 CET 2008


Revision: 31139
          http://scummvm.svn.sourceforge.net/scummvm/?rev=31139&view=rev
Author:   lordhoto
Date:     2008-03-16 06:31:18 -0700 (Sun, 16 Mar 2008)

Log Message:
-----------
- Impelemented opcode 155: o2_stopSceneAnimation
- fixed crash while switching chapters

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra_v2.cpp
    scummvm/trunk/engines/kyra/kyra_v2.h
    scummvm/trunk/engines/kyra/script.cpp
    scummvm/trunk/engines/kyra/script_v2.cpp

Modified: scummvm/trunk/engines/kyra/kyra_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.cpp	2008-03-16 12:51:59 UTC (rev 31138)
+++ scummvm/trunk/engines/kyra/kyra_v2.cpp	2008-03-16 13:31:18 UTC (rev 31139)
@@ -799,10 +799,8 @@
 				update();
 		}
 
-
 		if (amount > 0 )
 			_system->delayMillis(amount > 10 ? 10 : amount);
-
 	} while (!_skipFlag && _system->getMillis() < start + amount && !_quitFlag);
 }
 
@@ -2275,7 +2273,7 @@
 		Opcode(o2_customChat),
 		Opcode(o2_customChatFinish),
 		OpcodeUnImpl(),
-		OpcodeUnImpl(),
+		Opcode(o2_stopSceneAnimation),
 		// 0x9c
 		OpcodeUnImpl(),
 		OpcodeUnImpl(),

Modified: scummvm/trunk/engines/kyra/kyra_v2.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.h	2008-03-16 12:51:59 UTC (rev 31138)
+++ scummvm/trunk/engines/kyra/kyra_v2.h	2008-03-16 13:31:18 UTC (rev 31139)
@@ -1031,6 +1031,7 @@
 	int o2_mushroomEffect(ScriptState *script);
 	int o2_customChat(ScriptState *script);
 	int o2_customChatFinish(ScriptState *script);
+	int o2_stopSceneAnimation(ScriptState *script);
 	int o2_processPaletteIndex(ScriptState *script);
 	int o2_getBoolFromStack(ScriptState *script);
 	int o2_setVocHigh(ScriptState *script);

Modified: scummvm/trunk/engines/kyra/script.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script.cpp	2008-03-16 12:51:59 UTC (rev 31138)
+++ scummvm/trunk/engines/kyra/script.cpp	2008-03-16 13:31:18 UTC (rev 31139)
@@ -72,6 +72,8 @@
 		return false;
 	}
 
+	memset(scriptData, 0, sizeof(ScriptData));
+
 	uint32 formBlockSize = file.getFORMBlockSize();
 	if (formBlockSize == (uint32)-1) {
 		error("No FORM chunk found in file: '%s'", filename);

Modified: scummvm/trunk/engines/kyra/script_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v2.cpp	2008-03-16 12:51:59 UTC (rev 31138)
+++ scummvm/trunk/engines/kyra/script_v2.cpp	2008-03-16 13:31:18 UTC (rev 31139)
@@ -1100,6 +1100,26 @@
 	return 0;
 }
 
+int KyraEngine_v2::o2_stopSceneAnimation(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "o2_stopSceneAnimation(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+	const int index = 1+stackPos(0);
+	AnimObj &obj = _animObjects[index];
+	restorePage3();
+	obj.shapeIndex3 = 0xFFFF;
+	obj.animNum = 0xFFFF;
+	obj.needRefresh = 1;
+	obj.unk8 = 1;
+	if (stackPos(1))
+		refreshAnimObjectsIfNeed();
+	obj.enabled = false;
+	_animList = deleteAnimListEntry(_animList, &_animObjects[index]);
+	
+	if (_sceneAnimMovie[index]->opened())
+		_sceneAnimMovie[index]->close();
+	
+	return 0;
+}
+
 int KyraEngine_v2::o2_processPaletteIndex(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "o2_processPaletteIndex(%p) (%d, %d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5));
 	uint8 *palette = _screen->getPalette(0);


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