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

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Wed Apr 23 19:08:34 CEST 2008


Revision: 31665
          http://scummvm.svn.sourceforge.net/scummvm/?rev=31665&view=rev
Author:   lordhoto
Date:     2008-04-23 10:08:34 -0700 (Wed, 23 Apr 2008)

Log Message:
-----------
- Implemented opcode: 14: o3_moveCharacter
- Fixed opcode 44 and renamed it to o3_handItemSet, this fixes loads of input and enter scene facing problems.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra_v3.h
    scummvm/trunk/engines/kyra/scene_v3.cpp
    scummvm/trunk/engines/kyra/script_v3.cpp

Modified: scummvm/trunk/engines/kyra/kyra_v3.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v3.h	2008-04-23 16:06:33 UTC (rev 31664)
+++ scummvm/trunk/engines/kyra/kyra_v3.h	2008-04-23 17:08:34 UTC (rev 31665)
@@ -587,6 +587,7 @@
 	int o3_getCharacterScene(ScriptState *script);
 	int o3_getMalcolmsSpirit(ScriptState *script);
 	int o3_trySceneChange(ScriptState *script);
+	int o3_moveCharacter(ScriptState *script);
 	int o3_showSceneFileMessage(ScriptState *script);
 	int o3_showBadConscience(ScriptState *script);
 	int o3_hideBadConscience(ScriptState *script);
@@ -599,7 +600,7 @@
 	int o3_setGameFlag(ScriptState *script);
 	int o3_setHandItem(ScriptState *script);
 	int o3_removeHandItem(ScriptState *script);
-	int o3_getHandItem(ScriptState *script);
+	int o3_handItemSet(ScriptState *script);
 	int o3_hideMouse(ScriptState *script);
 	int o3_addSpecialExit(ScriptState *script);
 	int o3_setMousePos(ScriptState *script);
@@ -619,6 +620,7 @@
 	int o3_stopMusic(ScriptState *script);
 	int o3_playMusicTrack(ScriptState *script);
 	int o3_playSoundEffect(ScriptState *script);
+	int o3_blockOutRegion(ScriptState *script);
 	int o3_getRand(ScriptState *script);
 	int o3_defineRoomEntrance(ScriptState *script);
 	int o3_setSpecialSceneScriptRunTime(ScriptState *script);

Modified: scummvm/trunk/engines/kyra/scene_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/scene_v3.cpp	2008-04-23 16:06:33 UTC (rev 31664)
+++ scummvm/trunk/engines/kyra/scene_v3.cpp	2008-04-23 17:08:34 UTC (rev 31665)
@@ -136,11 +136,9 @@
 	_sceneExit3 = _sceneList[sceneId].exit3;
 	_sceneExit4 = _sceneList[sceneId].exit4;
 
-
 	while (_system->getMillis() < waitUntilTimer)
 		_system->delayMillis(10);
 
-
 	musicUpdate(0);
 	initSceneScript(unk3);
 	musicUpdate(0);

Modified: scummvm/trunk/engines/kyra/script_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v3.cpp	2008-04-23 16:06:33 UTC (rev 31664)
+++ scummvm/trunk/engines/kyra/script_v3.cpp	2008-04-23 17:08:34 UTC (rev 31665)
@@ -132,6 +132,12 @@
 	}
 }
 
+int KyraEngine_v3::o3_moveCharacter(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_moveCharacter(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
+	moveCharacter(stackPos(0), stackPos(1), stackPos(2));
+	return 0;
+}
+
 int KyraEngine_v3::o3_showSceneFileMessage(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_showSceneFileMessage(%p) (%d)", (const void *)script, stackPos(0));
 	showMessage((const char*)getTableEntry(_scenesFile, stackPos(0)), 0xFF, 0xF0);
@@ -216,9 +222,9 @@
 	return 0;
 }
 
-int KyraEngine_v3::o3_getHandItem(ScriptState *script) {
-	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_getHandItem(%p) ()", (const void *)script);
-	return _itemInHand;
+int KyraEngine_v3::o3_handItemSet(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_handItemSet(%p) ()", (const void *)script);
+	return _handItemSet;
 }
 
 int KyraEngine_v3::o3_hideMouse(ScriptState *script) {
@@ -618,6 +624,22 @@
 	return 0;
 }
 
+int KyraEngine_v3::o3_blockOutRegion(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_blockOutRegion(%p) (%d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3));
+	const int x1 = stackPos(0);
+	int y1 = stackPos(1);
+	const int x2 = stackPos(2);
+	int y2 = stackPos(3);
+
+	if (y1 < _maskPageMinY)
+		y1 = _maskPageMinY;
+	if (y2 > _maskPageMaxY)
+		y2 = _maskPageMaxY;
+
+	_screen->blockOutRegion(x1, y1, x2-x1+1, y2-y1+1);
+	return 0;
+}
+
 int KyraEngine_v3::o3_getRand(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_getRand(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
 	assert(stackPos(0) < stackPos(1));
@@ -978,8 +1000,8 @@
 	// 0x0c
 	OpcodeUnImpl();
 	Opcode(o3_trySceneChange);
+	Opcode(o3_moveCharacter);
 	OpcodeUnImpl();
-	OpcodeUnImpl();
 	// 0x10
 	OpcodeUnImpl();
 	Opcode(o3_showSceneFileMessage);
@@ -1016,7 +1038,7 @@
 	Opcode(o3_setHandItem);
 	Opcode(o3_removeHandItem);
 	// 0x2c
-	Opcode(o3_getHandItem);
+	Opcode(o3_handItemSet);
 	Opcode(o3_hideMouse);
 	Opcode(o3_addSpecialExit);
 	Opcode(o3_setMousePos);
@@ -1076,7 +1098,7 @@
 	OpcodeUnImpl();
 	OpcodeUnImpl();
 	// 0x5c
-	OpcodeUnImpl();
+	Opcode(o3_blockOutRegion);
 	Opcode(o3_dummy);
 	OpcodeUnImpl();
 	OpcodeUnImpl();


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