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

athrxx at users.sourceforge.net athrxx at users.sourceforge.net
Sun Oct 18 14:47:54 CEST 2009


Revision: 45221
          http://scummvm.svn.sourceforge.net/scummvm/?rev=45221&view=rev
Author:   athrxx
Date:     2009-10-18 12:47:54 +0000 (Sun, 18 Oct 2009)

Log Message:
-----------
LOL: this should fix a valgrind warning

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

Modified: scummvm/trunk/engines/kyra/items_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/items_lol.cpp	2009-10-18 12:44:51 UTC (rev 45220)
+++ scummvm/trunk/engines/kyra/items_lol.cpp	2009-10-18 12:47:54 UTC (rev 45221)
@@ -245,7 +245,7 @@
 		return &_itemsInPlay[index];
 }
 
-void LoLEngine::runItemScript(int charNum, int item, int sub, int next, int reg4) {
+void LoLEngine::runItemScript(int charNum, int item, int flags, int next, int reg4) {
 	EMCState scriptState;
 	memset(&scriptState, 0, sizeof(EMCState));
 
@@ -256,14 +256,14 @@
 	_emc->init(&scriptState, &_itemScript);
 	_emc->start(&scriptState, func);
 
-	scriptState.regs[0] = sub;
+	scriptState.regs[0] = flags;
 	scriptState.regs[1] = charNum;
 	scriptState.regs[2] = item;
 	scriptState.regs[3] = next;
 	scriptState.regs[4] = reg4;
 
 	if (_emc->isValid(&scriptState)) {
-		if (*(scriptState.ip - 1) & sub) {
+		if (*(scriptState.ip - 1) & flags) {
 			while (_emc->isValid(&scriptState))
 				_emc->run(&scriptState);
 		}

Modified: scummvm/trunk/engines/kyra/lol.h
===================================================================
--- scummvm/trunk/engines/kyra/lol.h	2009-10-18 12:44:51 UTC (rev 45220)
+++ scummvm/trunk/engines/kyra/lol.h	2009-10-18 12:47:54 UTC (rev 45221)
@@ -633,8 +633,8 @@
 	// emc scripts
 	void runInitScript(const char *filename, int optionalFunc);
 	void runInfScript(const char *filename);
-	void runLevelScript(int block, int sub);
-	void runLevelScriptCustom(int block, int sub, int charNum, int item, int reg3, int reg4);
+	void runLevelScript(int block, int flags);
+	void runLevelScriptCustom(int block, int flags, int charNum, int item, int reg3, int reg4);
 	bool checkSceneUpdateNeed(int func);
 
 	EMCData _scriptData;
@@ -1204,7 +1204,7 @@
 	bool testUnkItemFlags(int itemIndex);
 	void deleteItem(int itemIndex);
 	ItemInPlay *findObject(uint16 index);
-	void runItemScript(int charNum, int item, int sub, int next, int reg4);
+	void runItemScript(int charNum, int item, int flags, int next, int reg4);
 	void setHandItem(uint16 itemIndex);
 	bool itemEquipped(int charNum, uint16 itemType);
 

Modified: scummvm/trunk/engines/kyra/script_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_lol.cpp	2009-10-18 12:44:51 UTC (rev 45220)
+++ scummvm/trunk/engines/kyra/script_lol.cpp	2009-10-18 12:47:54 UTC (rev 45221)
@@ -64,11 +64,11 @@
 	runLevelScript(0x400, -1);
 }
 
-void LoLEngine::runLevelScript(int block, int sub) {
-	runLevelScriptCustom(block, sub, -1, 0, 0, 0);
+void LoLEngine::runLevelScript(int block, int flags) {
+	runLevelScriptCustom(block, flags, -1, 0, 0, 0);
 }
 
-void LoLEngine::runLevelScriptCustom(int block, int sub, int charNum, int item, int reg3, int reg4) {
+void LoLEngine::runLevelScriptCustom(int block, int flags, int charNum, int item, int reg3, int reg4) {
 	EMCState scriptState;
 	memset(&scriptState, 0, sizeof(EMCState));
 
@@ -76,7 +76,7 @@
 		_emc->init(&scriptState, &_scriptData);
 		_emc->start(&scriptState, block);
 
-		scriptState.regs[0] = sub;
+		scriptState.regs[0] = flags;
 		scriptState.regs[1] = charNum;
 		scriptState.regs[2] = item;
 		scriptState.regs[3] = reg3;
@@ -85,7 +85,7 @@
 		scriptState.regs[6] = _scriptDirection;
 
 		if (_emc->isValid(&scriptState)) {
-			if (*(scriptState.ip - 1) & sub) {
+			if (*(scriptState.ip - 1) & flags) {
 				while (_emc->isValid(&scriptState))
 					_emc->run(&scriptState);
 			}

Modified: scummvm/trunk/engines/kyra/sprites_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sprites_lol.cpp	2009-10-18 12:44:51 UTC (rev 45220)
+++ scummvm/trunk/engines/kyra/sprites_lol.cpp	2009-10-18 12:47:54 UTC (rev 45221)
@@ -71,16 +71,15 @@
 	}
 	_monsterAnimType[monsterIndex] = animType & 0xff;
 
-	uint8 *tsh = _screen->makeShapeCopy(p, 16);
+	uint8 *palShape = _screen->makeShapeCopy(p, 16);
 
 	_screen->clearPage(3);
-	_screen->drawShape(2, tsh, 0, 0, 0, 0);
+	_screen->drawShape(2, palShape, 0, 0, 0, 0);
 
 	uint8 *tmpPal1 = new uint8[64];
 	uint8 *tmpPal2 = new uint8[256];
 	uint16 *tmpPal3 = new uint16[256];
 	memset(tmpPal1, 0, 64);
-	memset(tmpPal2, 0, 256);
 
 	for (int i = 0; i < 64; i++) {
 		tmpPal1[i] = *p;
@@ -91,8 +90,10 @@
 
 	for (int i = 0; i < 16; i++) {
 		int pos = (monsterIndex << 4) + i;
-		memcpy(tmpPal2, _monsterShapes[pos] + 10, 256);
-		memset(tmpPal3, 0xff, 512);
+		uint16 sz = MIN(_screen->getShapeSize(_monsterShapes[pos]) - 10, 256);
+		memset(tmpPal2, 0, 256);
+		memcpy(tmpPal2, _monsterShapes[pos] + 10, sz);
+		memset(tmpPal3, 0xff, 256 * sizeof(uint16));
 		uint8 numCol = *tmpPal2;
 
 		for (int ii = 0; ii < numCol; ii++) {
@@ -103,7 +104,8 @@
 		}
 
 		for (int ii = 0; ii < 8; ii++) {
-			memcpy(tmpPal2, _monsterShapes[pos] + 10, 256);
+			memset(tmpPal2, 0, 256);
+			memcpy(tmpPal2, _monsterShapes[pos] + 10, sz);
 			for (int iii = 0; iii < numCol; iii++) {
 				if (tmpPal3[iii] == 0xffff)
 					continue;
@@ -117,7 +119,7 @@
 	delete[] tmpPal1;
 	delete[] tmpPal2;
 	delete[] tmpPal3;
-	delete[] tsh;
+	delete[] palShape;
 }
 
 void LoLEngine::releaseMonsterShapes(int monsterIndex) {


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