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

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Mon Apr 28 21:16:46 CEST 2008


Revision: 31761
          http://scummvm.svn.sourceforge.net/scummvm/?rev=31761&view=rev
Author:   lordhoto
Date:     2008-04-28 12:16:45 -0700 (Mon, 28 Apr 2008)

Log Message:
-----------
Implemented opcodes:
 - 82: o3_getShapeFlag1
 - 122: o3_setConversationState
 - 125: o3_getConversationState

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

Modified: scummvm/trunk/engines/kyra/kyra_v3.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v3.h	2008-04-28 19:03:11 UTC (rev 31760)
+++ scummvm/trunk/engines/kyra/kyra_v3.h	2008-04-28 19:16:45 UTC (rev 31761)
@@ -753,6 +753,7 @@
 	int o3_enableInventory(ScriptState *script);
 	int o3_enterNewScene(ScriptState *script);
 	int o3_switchScene(ScriptState *script);
+	int o3_getShapeFlag1(ScriptState *script);
 	int o3_setMalcolmPos(ScriptState *script);
 	int o3_stopMusic(ScriptState *script);
 	int o3_playMusicTrack(ScriptState *script);
@@ -774,6 +775,8 @@
 	int o3_setDlgIndex(ScriptState *script);
 	int o3_getDlgIndex(ScriptState *script);
 	int o3_defineScene(ScriptState *script);
+	int o3_setConversationState(ScriptState *script);
+	int o3_getConversationState(ScriptState *script);
 	int o3_changeChapter(ScriptState *script);
 	int o3_countItemInstances(ScriptState *script);
 	int o3_dialogStartScript(ScriptState *script);

Modified: scummvm/trunk/engines/kyra/script_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v3.cpp	2008-04-28 19:03:11 UTC (rev 31760)
+++ scummvm/trunk/engines/kyra/script_v3.cpp	2008-04-28 19:16:45 UTC (rev 31761)
@@ -861,6 +861,11 @@
 	return 0;
 }
 
+int KyraEngine_v3::o3_getShapeFlag1(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_getShapeFlag1(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+	return _screen->getShapeFlag1(stackPos(0), stackPos(1));
+}
+
 int KyraEngine_v3::o3_setMalcolmPos(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_setMalcolmPos(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
 	_mainCharX = stackPos(0);
@@ -1148,6 +1153,65 @@
 	return 0;
 }
 
+int KyraEngine_v3::o3_setConversationState(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_setConversationState(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
+	int id = stackPos(0);
+	const int dlgIndex = stackPos(1);
+	const int value = stackPos(2);
+
+	switch (_currentChapter-2) {
+	case 0:
+		id -= 34;
+		break;
+
+	case 1:
+		id -= 54;
+		break;
+
+	case 2:
+		id -= 55;
+		break;
+
+	case 3:
+		id -= 70;
+		break;
+
+	default:
+		break;
+	}
+
+	return (_conversationState[id][dlgIndex] = value);
+}
+
+int KyraEngine_v3::o3_getConversationState(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_getConversationState(%p) (%d)", (const void *)script, stackPos(0));
+	int id = stackPos(0);
+	const int dlgIndex = _mainCharacter.dlgIndex;
+
+	switch (_currentChapter-2) {
+	case 0:
+		id -= 34;
+		break;
+
+	case 1:
+		id -= 54;
+		break;
+
+	case 2:
+		id -= 55;
+		break;
+
+	case 3:
+		id -= 70;
+		break;
+
+	default:
+		break;
+	}
+
+	return _conversationState[id][dlgIndex];
+}
+
 int KyraEngine_v3::o3_changeChapter(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_changeChapter(%p) (%d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3));
 	changeChapter(stackPos(0), stackPos(1), stackPos(2), stackPos(3));
@@ -1460,7 +1524,7 @@
 	// 0x50
 	Opcode(o3_enterNewScene);
 	Opcode(o3_switchScene);
-	OpcodeUnImpl();
+	Opcode(o3_getShapeFlag1);
 	Opcode(o3_dummy);
 	// 0x54
 	Opcode(o3_dummy);
@@ -1510,11 +1574,11 @@
 	// 0x78
 	Opcode(o3_getDlgIndex);
 	Opcode(o3_defineScene);
+	Opcode(o3_setConversationState);
 	OpcodeUnImpl();
-	OpcodeUnImpl();
 	// 0x7c
 	OpcodeUnImpl();
-	OpcodeUnImpl();
+	Opcode(o3_getConversationState);
 	Opcode(o3_dummy);
 	Opcode(o3_dummy);
 	// 0x80


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