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

athrxx at users.sourceforge.net athrxx at users.sourceforge.net
Fri Feb 22 01:33:56 CET 2008


Revision: 30914
          http://scummvm.svn.sourceforge.net/scummvm/?rev=30914&view=rev
Author:   athrxx
Date:     2008-02-21 16:33:56 -0800 (Thu, 21 Feb 2008)

Log Message:
-----------
two more opcodes (Zanthia's random chats and mushroom drug effects) and some cleanup

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

Modified: scummvm/trunk/engines/kyra/kyra_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.cpp	2008-02-22 00:22:31 UTC (rev 30913)
+++ scummvm/trunk/engines/kyra/kyra_v2.cpp	2008-02-22 00:33:56 UTC (rev 30914)
@@ -1912,7 +1912,7 @@
 		// 0x74
 		Opcode(o2_useItemOnMainChar),
 		Opcode(o2_startDialogue),
-		OpcodeUnImpl(),
+		Opcode(o2_zanthRandomChat),
 		Opcode(o2_setupDialogue),
 		// 0x78
 		Opcode(o2_getDlgIndex),
@@ -1951,7 +1951,7 @@
 		Opcode(o2_setHiddenItemsEntry),
 		// 0x94
 		Opcode(o2_getHiddenItemsEntry),
-		OpcodeUnImpl(),
+		Opcode(o2_mushroomEffect),
 		Opcode(o2_wsaClose),
 		OpcodeUnImpl(),
 		// 0x98

Modified: scummvm/trunk/engines/kyra/kyra_v2.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.h	2008-02-22 00:22:31 UTC (rev 30913)
+++ scummvm/trunk/engines/kyra/kyra_v2.h	2008-02-22 00:33:56 UTC (rev 30914)
@@ -495,8 +495,6 @@
 	void runSceneScript6();
 	void runSceneScript7();
 
-	void sceneStartupChat();
-
 	void initSceneAnims(int unk1);
 	void initSceneScreen(int unk1);
 
@@ -556,7 +554,7 @@
 	void setHandItem(uint16 item);
 	void removeHandItem();
 
-	// inventroy
+	// inventory
 	static const int _inventoryX[];
 	static const int _inventoryY[];
 
@@ -656,6 +654,9 @@
 	void objectChatWaitToFinish();
 
 	void startDialogue(int dlgIndex);
+
+	void zanthSceneStartupChat();
+	void zanthRandomChat();
 	void updateDlgBuffer();
 	void loadDlgHeader(int &csEntry, int &vocH, int &scIndex1, int &scIndex2);
 	void processDialogue(int dlgOffset, int vocH = 0, int csEntry = 0);
@@ -668,6 +669,28 @@
 	int8 **_conversationState;
 	uint8 *_dlgBuffer;
 
+	// Talk object handling
+	void initTalkObject(int index);
+	void deinitTalkObject(int index);
+
+	struct TalkObject {
+		char filename[13];
+		int8 scriptId;
+		int16 x, y;
+		int8 color;
+	};
+	TalkObject *_talkObjectList;
+
+	struct TalkSections {
+		uint8 *STATim;
+		uint8 *TLKTim;
+		uint8 *ENDTim;
+	};
+	TalkSections _currentTalkSections;
+
+	char _TLKFilename[13];
+	bool _objectChatFinished;
+
 	// tim sequence
 	void tim_setupOpcodes();
 	uint8 *tim_loadFile(const char *filename, uint8 *buffer, int32 bufferSize);
@@ -726,28 +749,6 @@
 	const char *_timChatText;
 	int _timChatObject;
 
-	// Talk object handling
-	void initTalkObject(int index);
-	void deinitTalkObject(int index);
-
-	struct TalkObject {
-		char filename[13];
-		int8 scriptId;
-		int16 x, y;
-		int8 color;
-	};
-	TalkObject *_talkObjectList;
-
-	struct TalkSections {
-		uint8 *STATim;
-		uint8 *TLKTim;
-		uint8 *ENDTim;
-	};
-	TalkSections _currentTalkSections;
-
-	char _TLKFilename[13];
-	bool _objectChatFinished;
-
 	// sound
 	int _oldTalkFile;
 	int _currentTalkFile;
@@ -859,6 +860,7 @@
 	int o2_updateSceneAnim(ScriptState *script);
 	int o2_useItemOnMainChar(ScriptState *script);
 	int o2_startDialogue(ScriptState *script);
+	int o2_zanthRandomChat(ScriptState *script);
 	int o2_setupDialogue(ScriptState *script);
 	int o2_getDlgIndex(ScriptState *script);
 	int o2_defineRoom(ScriptState *script);
@@ -881,6 +883,7 @@
 	int o2_querySpecialSceneScriptState(ScriptState *script);
 	int o2_setHiddenItemsEntry(ScriptState *script);
 	int o2_getHiddenItemsEntry(ScriptState *script);
+	int o2_mushroomEffect(ScriptState *script);
 	int o2_customChat(ScriptState *script);
 	int o2_customChatFinish(ScriptState *script);
 	int o2_getBoolFromStack(ScriptState *script);

Modified: scummvm/trunk/engines/kyra/scene_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/scene_v2.cpp	2008-02-22 00:22:31 UTC (rev 30913)
+++ scummvm/trunk/engines/kyra/scene_v2.cpp	2008-02-22 00:33:56 UTC (rev 30914)
@@ -251,7 +251,7 @@
 
 	if (!unk1) {
 		runSceneScript4(0);
-		sceneStartupChat();
+		zanthSceneStartupChat();
 	}
 
 	_unk4 = 0;
@@ -507,22 +507,6 @@
 	_screen->_curPage = oldPage;
 }
 
-void KyraEngine_v2::sceneStartupChat() {
-	int tableIndex = _mainCharacter.sceneId - READ_LE_UINT16(&_ingameTalkObjIndex[5 + _newChapterFile]);
-	if (queryGameFlag(0x159) || _newSceneDlgState[tableIndex])
-		return;
-
-	int csEntry, vocH, scIndex1, scIndex2;
-	updateDlgBuffer();
-	loadDlgHeader(csEntry, vocH, scIndex1, scIndex2);
-
-	uint8 bufferIndex = 8 + scIndex1 * 6 + scIndex2 * 4 + tableIndex * 2;
-	int offs = READ_LE_UINT16(_dlgBuffer + bufferIndex);
-	processDialogue(offs, vocH, csEntry);
-
-	_newSceneDlgState[tableIndex] = 1;
-}
-
 void KyraEngine_v2::initSceneAnims(int unk1) {
 	for (int i = 0; i < ARRAYSIZE(_animObjects); ++i)
 		_animObjects[i].enabled = 0;

Modified: scummvm/trunk/engines/kyra/script_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v2.cpp	2008-02-22 00:22:31 UTC (rev 30913)
+++ scummvm/trunk/engines/kyra/script_v2.cpp	2008-02-22 00:33:56 UTC (rev 30914)
@@ -647,6 +647,12 @@
 	return 0;
 }
 
+int KyraEngine_v2::o2_zanthRandomChat(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "o2_zanthRandomChat(%p)", (const void *)script);
+	zanthRandomChat();
+	return 0;
+}
+
 int KyraEngine_v2::o2_setupDialogue(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "o2_setupDialogue(%p) (%d)", (const void *)script, stackPos(0));
 	setNewDlgIndex(stackPos(0));
@@ -822,6 +828,29 @@
 	return _hiddenItems[stackPos(0)];
 }
 
+int KyraEngine_v2::o2_mushroomEffect(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "o2_mushroomEffect(%p)", (const void *)script);
+	memcpy(_screen->getPalette(1), _screen->_currentPalette, 768);
+
+	for (int i = 1; i < 768; i += 3)
+		_screen->_currentPalette[i] = 0;	
+	snd_playSoundEffect(106);
+	_screen->fadePalette(_screen->_currentPalette, 90, &_updateFunctor);
+	memcpy(_screen->_currentPalette, _screen->getPalette(1), 768);
+	
+	for (int i = 0; i < 768; i += 3) {
+		_screen->_currentPalette[i] = _screen->_currentPalette[i + 1] = 0;
+		_screen->_currentPalette[i + 2] += (((int8)_screen->_currentPalette[i + 2]) >> 1);
+		if (_screen->_currentPalette[i + 2] > 63)
+			_screen->_currentPalette[i + 2] = 63;
+	}
+	snd_playSoundEffect(106);
+	_screen->fadePalette(_screen->_currentPalette, 90, &_updateFunctor);
+	_screen->fadePalette(_screen->getPalette(1), 30, &_updateFunctor);	
+
+	return 0;
+}
+
 int KyraEngine_v2::o2_customChat(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "o2_customChat(%p) ('%s', %d, %d)", (const void *)script, stackPosString(0), stackPos(1), stackPos(2));
 	strcpy((char*)_unkBuf500Bytes, stackPosString(0));

Modified: scummvm/trunk/engines/kyra/text_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/text_v2.cpp	2008-02-22 00:22:31 UTC (rev 30913)
+++ scummvm/trunk/engines/kyra/text_v2.cpp	2008-02-22 00:33:56 UTC (rev 30914)
@@ -364,6 +364,43 @@
 	processDialogue(offs, vocH, csEntry);
 }
 
+void KyraEngine_v2::zanthSceneStartupChat() {
+	int tableIndex = _mainCharacter.sceneId - READ_LE_UINT16(&_ingameTalkObjIndex[5 + _newChapterFile]);
+	if (queryGameFlag(0x159) || _newSceneDlgState[tableIndex])
+		return;
+
+	int csEntry, vocH, scIndex1, scIndex2;
+	updateDlgBuffer();
+	loadDlgHeader(csEntry, vocH, scIndex1, scIndex2);
+
+	uint8 bufferIndex = 8 + scIndex1 * 6 + scIndex2 * 4 + tableIndex * 2;
+	int offs = READ_LE_UINT16(_dlgBuffer + bufferIndex);
+	processDialogue(offs, vocH, csEntry);
+
+	_newSceneDlgState[tableIndex] = 1;
+}
+
+void KyraEngine_v2::zanthRandomChat() {
+	int tableIndex = _mainCharacter.sceneId - READ_LE_UINT16(&_ingameTalkObjIndex[5 + _newChapterFile]);
+	if (queryGameFlag(0x164))
+		return;
+
+	int csEntry, vocH, scIndex1, unused;
+	updateDlgBuffer();
+	loadDlgHeader(csEntry, vocH, scIndex1, unused);
+
+	if (_unkFlag1) {
+		_unkFlag1 = 0;
+		tableIndex += 2;
+	} else {
+		_unkFlag1 = 1;
+	}
+
+	uint8 bufferIndex = 8 + scIndex1 * 6 + tableIndex * 2;
+	int offs = READ_LE_UINT16(_dlgBuffer + bufferIndex);
+	processDialogue(offs, vocH, csEntry);
+}
+
 void KyraEngine_v2::updateDlgBuffer() {
 	static const char DlgFileTemplate[] = "CH**-S**.DLG";
 	char filename[13];


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