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

athrxx at users.sourceforge.net athrxx at users.sourceforge.net
Sat Mar 7 16:46:21 CET 2009


Revision: 39187
          http://scummvm.svn.sourceforge.net/scummvm/?rev=39187&view=rev
Author:   athrxx
Date:     2009-03-07 15:46:21 +0000 (Sat, 07 Mar 2009)

Log Message:
-----------
LOL: - implemented some opcodes(

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/lol.cpp
    scummvm/trunk/engines/kyra/lol.h
    scummvm/trunk/engines/kyra/script_lol.cpp

Modified: scummvm/trunk/engines/kyra/lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/lol.cpp	2009-03-07 15:29:52 UTC (rev 39186)
+++ scummvm/trunk/engines/kyra/lol.cpp	2009-03-07 15:46:21 UTC (rev 39187)
@@ -194,7 +194,9 @@
 	_pageBuffer1 = _pageBuffer2 = 0;
 
 	memset(_charStatsTemp, 0, 5 * sizeof(int));
-
+	
+	_unkBt1 = _unkBt2 = 0;
+	
 	_buttonData = 0;
 	_activeButtons = 0;
 	_preserveEvents = false;
@@ -741,7 +743,7 @@
 	_availableSpells[0] = 0;
 	setupScreenDims();
 
-	//memset(_unkWordArraySize8, 0x100, 8);
+	memset(_unkWordArraySize8, 0x100, 8);
 
 	static int selectIds[] = { -9, -1, -8, -5 };
 	addCharacter(selectIds[_charSelection]);

Modified: scummvm/trunk/engines/kyra/lol.h
===================================================================
--- scummvm/trunk/engines/kyra/lol.h	2009-03-07 15:29:52 UTC (rev 39186)
+++ scummvm/trunk/engines/kyra/lol.h	2009-03-07 15:46:21 UTC (rev 39187)
@@ -305,6 +305,8 @@
 	// timers
 	void setupTimers();
 	void enableTimer(int id);
+	void enableSysTimer(int sysTimer);
+	void disableSysTimer(int sysTimer);
 
 	void timerProcessDoors(int timerNum);
 	void timerProcessMonsters(int timerNum);
@@ -518,6 +520,7 @@
 	int olol_clearDialogueField(EMCState *script);
 	int olol_getUnkArrayVal(EMCState *script);
 	int olol_setUnkArrayVal(EMCState *script);
+	int olol_getGlobalVar(EMCState *script);
 	int olol_setGlobalVar(EMCState *script);
 	int olol_mapShapeToBlock(EMCState *script);
 	int olol_resetBlockShapeAssignment(EMCState *script);
@@ -530,12 +533,14 @@
 	int olol_releaseTimScript(EMCState *script);
 	int olol_initDialogueSequence(EMCState *script);
 	int olol_restoreSceneAfterDialogueSequence(EMCState *script);
+	int olol_getItemInHand(EMCState *script);
 	int olol_giveItemToMonster(EMCState *script);
 	int olol_loadLangFile(EMCState *script);
 	int olol_playSoundEffect(EMCState *script);
 	int olol_stopTimScript(EMCState *script);
 	int olol_playCharacterScriptChat(EMCState *script);
 	int olol_loadSoundFile(EMCState *script);
+	int olol_stopCharacterSpeech(EMCState *script);
 	int olol_setPaletteBrightness(EMCState *script);
 	int olol_printMessage(EMCState *script);
 	int olol_playDialogueTalkText(EMCState *script);
@@ -985,9 +990,11 @@
 
 	// misc
 	void delay(uint32 millis, bool cUpdate = false, bool isMainLoop = false);
-	void enableSysTimer(int sysTimer);
-	void disableSysTimer(int sysTimer);
 
+	uint8 _unkBt1;
+	uint8 _unkBt2;
+	uint16 _unkWordArraySize8[8];
+
 	uint8 *_pageBuffer1;
 	uint8 *_pageBuffer2;
 

Modified: scummvm/trunk/engines/kyra/script_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_lol.cpp	2009-03-07 15:29:52 UTC (rev 39186)
+++ scummvm/trunk/engines/kyra/script_lol.cpp	2009-03-07 15:46:21 UTC (rev 39187)
@@ -455,8 +455,46 @@
 	return 1;
 }
 
+int LoLEngine::olol_getGlobalVar(EMCState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_getGlobalVar(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+
+	switch (stackPos(0)) {
+	case 0:
+		return _currentBlock;
+	case 1:
+		return _currentDirection;
+	case 2:
+		return _currentLevel;
+	case 3:
+		return _itemInHand;
+	case 4:
+		return _brightness;
+	case 5:
+		return _credits;
+	case 6:
+		return _unkWordArraySize8[stackPos(1)];
+	case 8:
+		return _updateFlags;
+	case 9:
+		return _lampStatusUnk;
+	case 10:
+		return _sceneDefaultUpdate;
+	case 11:
+		return _unkBt1;
+	case 12:
+		return _unkBt2;
+	case 13:
+		return _speechFlag;
+	default:
+		break;
+	}
+
+	return 0;
+}
+
 int LoLEngine::olol_setGlobalVar(EMCState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_setGlobalVar(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
+	uint16 a = stackPos(1);
 	uint16 b = stackPos(2);
 
 	switch (stackPos(0)) {
@@ -487,7 +525,7 @@
 		break;
 
 	case 6:
-		//TODO
+		_unkWordArraySize8[a] = b;
 		break;
 
 	case 7:
@@ -514,11 +552,11 @@
 		break;
 
 	case 11:
-		//TODO
+		_unkBt1 = a & 0xff;
 		break;
 
 	case 12:
-		//TODO
+		_unkBt2 = a & 0xff;
 		break;
 
 	default:
@@ -714,6 +752,11 @@
 	return 1;
 }
 
+int LoLEngine::olol_getItemInHand(EMCState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_getItemInHand(%p))", (const void *)script);
+	return _itemInHand;
+}
+
 int LoLEngine::olol_giveItemToMonster(EMCState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_giveItemToMonster(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
 	if (stackPos(0) == -1)
@@ -757,6 +800,13 @@
 	return 1;
 }
 
+int LoLEngine::olol_stopCharacterSpeech(EMCState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_stopCharacterSpeech(%p)", (const void *)script);
+	snd_stopSpeech(1);
+	updatePortraits();
+	return 1;
+}
+
 int LoLEngine::olol_setPaletteBrightness(EMCState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_setPaletteBrightness(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
 	uint16 old = _brightness;
@@ -1099,7 +1149,7 @@
 	OpcodeUnImpl();
 	Opcode(olol_getUnkArrayVal);
 	Opcode(olol_setUnkArrayVal);
-	OpcodeUnImpl();
+	Opcode(olol_getGlobalVar);
 
 	// 0x30
 	Opcode(olol_setGlobalVar);
@@ -1153,7 +1203,7 @@
 	Opcode(olol_releaseTimScript);
 	Opcode(olol_initDialogueSequence);
 	Opcode(olol_restoreSceneAfterDialogueSequence);
-	OpcodeUnImpl();
+	Opcode(olol_getItemInHand);
 
 	// 0x54
 	OpcodeUnImpl();
@@ -1188,7 +1238,7 @@
 	// 0x68
 	OpcodeUnImpl();
 	OpcodeUnImpl();
-	OpcodeUnImpl();
+	Opcode(olol_stopCharacterSpeech);
 	Opcode(olol_setPaletteBrightness);
 
 	// 0x6C


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