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

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Apr 15 16:19:28 CEST 2007


Revision: 26499
          http://scummvm.svn.sourceforge.net/scummvm/?rev=26499&view=rev
Author:   lordhoto
Date:     2007-04-15 07:19:27 -0700 (Sun, 15 Apr 2007)

Log Message:
-----------
cleanup.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra.cpp
    scummvm/trunk/engines/kyra/scene.cpp
    scummvm/trunk/engines/kyra/script.cpp
    scummvm/trunk/engines/kyra/script.h
    scummvm/trunk/engines/kyra/script_v1.cpp

Modified: scummvm/trunk/engines/kyra/kyra.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra.cpp	2007-04-15 14:12:11 UTC (rev 26498)
+++ scummvm/trunk/engines/kyra/kyra.cpp	2007-04-15 14:19:27 UTC (rev 26499)
@@ -505,7 +505,7 @@
 	_animator->initAnimStateList();
 	setCharactersInDefaultScene();
 
-	if (!_scriptInterpreter->loadScript("_STARTUP.EMC", _npcScriptData, 0)) {
+	if (!_scriptInterpreter->loadScript("_STARTUP.EMC", _npcScriptData)) {
 		error("Could not load \"_STARTUP.EMC\" script");
 	}
 	_scriptInterpreter->initScript(_scriptMain, _npcScriptData);
@@ -517,7 +517,7 @@
 	}
 	
 	_scriptInterpreter->unloadScript(_npcScriptData);
-	if (!_scriptInterpreter->loadScript("_NPC.EMC", _npcScriptData, 0)) {
+	if (!_scriptInterpreter->loadScript("_NPC.EMC", _npcScriptData)) {
 		error("Could not load \"_NPC.EMC\" script");
 	}
 	

Modified: scummvm/trunk/engines/kyra/scene.cpp
===================================================================
--- scummvm/trunk/engines/kyra/scene.cpp	2007-04-15 14:12:11 UTC (rev 26498)
+++ scummvm/trunk/engines/kyra/scene.cpp	2007-04-15 14:19:27 UTC (rev 26499)
@@ -464,7 +464,7 @@
 	strcpy(fileNameBuffer, _roomFilenameTable[tableId]);
 	strcat(fileNameBuffer, ".EMC");
 	_scriptInterpreter->unloadScript(_scriptClickData);
-	_scriptInterpreter->loadScript(fileNameBuffer, _scriptClickData, 0);
+	_scriptInterpreter->loadScript(fileNameBuffer, _scriptClickData);
 	_scriptInterpreter->startScript(_scriptClick, 0);
 	_scriptClick->variables[0] = _currentCharacter->sceneId;
 	_scriptClick->variables[7] = brandonAlive;

Modified: scummvm/trunk/engines/kyra/script.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script.cpp	2007-04-15 14:12:11 UTC (rev 26498)
+++ scummvm/trunk/engines/kyra/script.cpp	2007-04-15 14:19:27 UTC (rev 26499)
@@ -68,10 +68,7 @@
 #undef COMMAND
 }
 
-ScriptHelper::~ScriptHelper() {
-}
-
-bool ScriptHelper::loadScript(const char *filename, ScriptData *scriptData, byte *specialPtr) {
+bool ScriptHelper::loadScript(const char *filename, ScriptData *scriptData) {
 	uint32 size = 0;
 	uint8 *data = _vm->resource()->fileData(filename, &size);	
 	byte *curData = data;
@@ -85,14 +82,8 @@
 	
 	uint32 chunkSize = getIFFBlockSize(data, curData, size, TEXT_CHUNK);
 	if (chunkSize != (uint32)-1) {
-		if (specialPtr) {
-			scriptData->mustBeFreed = 0;
-			scriptData->text = specialPtr;
-			specialPtr += chunkSize;
-		} else {
-			scriptData->mustBeFreed = 1;
-			scriptData->text = new byte[chunkSize];
-		}
+		scriptData->text = new byte[chunkSize];
+
 		if (!loadIFFBlock(data, curData, size, TEXT_CHUNK, scriptData->text, chunkSize)) {
 			delete [] data;
 			unloadScript(scriptData);
@@ -108,20 +99,16 @@
 		error("No ORDR chunk found in file: '%s'", filename);
 		return false;
 	}
-	if (specialPtr) {
-		scriptData->mustBeFreed = 0;
-		scriptData->ordr = specialPtr;
-		specialPtr += chunkSize;
-	} else {
-		scriptData->mustBeFreed = 1;
-		scriptData->ordr = new byte[chunkSize];
-	}
+
+	scriptData->ordr = new byte[chunkSize];
+
 	if (!loadIFFBlock(data, curData, size, ORDR_CHUNK, scriptData->ordr, chunkSize)) {
 		delete [] data;
 		unloadScript(scriptData);
 		error("Couldn't load ORDR chunk from file: '%s'", filename);
 		return false;
 	}
+
 	chunkSize = chunkSize / 2;
 	while (chunkSize--) {
 		((uint16*)scriptData->ordr)[chunkSize] = READ_BE_UINT16(&((uint16*)scriptData->ordr)[chunkSize]);
@@ -134,14 +121,9 @@
 		error("No DATA chunk found in file: '%s'", filename);
 		return false;
 	}
-	if (specialPtr) {
-		scriptData->mustBeFreed = 0;
-		scriptData->data = specialPtr;
-		specialPtr += chunkSize;
-	} else {
-		scriptData->mustBeFreed = 1;
-		scriptData->data = new byte[chunkSize];
-	}
+
+	scriptData->data = new byte[chunkSize];
+
 	if (!loadIFFBlock(data, curData, size, DATA_CHUNK, scriptData->data, chunkSize)) {
 		delete [] data;
 		unloadScript(scriptData);
@@ -158,17 +140,14 @@
 	if (!data)
 		return;
 
-	if (data->mustBeFreed) {
-		delete [] data->text;
-		delete [] data->ordr;
-		delete [] data->data;
-	}
+	delete [] data->text;
+	delete [] data->ordr;
+	delete [] data->data;
 	
-	data->mustBeFreed = 0;
 	data->text = data->ordr = data->data = 0;
 }
 
-void ScriptHelper::initScript(ScriptState *scriptStat, ScriptData *data) {
+void ScriptHelper::initScript(ScriptState *scriptStat, const ScriptData *data) {
 	scriptStat->dataPtr = data;
 	scriptStat->ip = 0;
 	scriptStat->stack[60] = 0;
@@ -177,17 +156,18 @@
 }
 
 bool ScriptHelper::startScript(ScriptState *script, int function) {
-	if (!script->dataPtr) {
+	if (!script->dataPtr)
 		return false;
-	}
+
 	uint16 functionOffset = ((uint16*)script->dataPtr->ordr)[function];
-	if (functionOffset == (uint16)-1) {
+	if (functionOffset == 0xFFFF)
 		return false;
-	}
+
 	if (_vm->gameFlags().platform == Common::kPlatformFMTowns)
 		script->ip = &script->dataPtr->data[functionOffset*2+2];
 	else
 		script->ip = &script->dataPtr->data[functionOffset*2];
+
 	return true;
 }
 
@@ -201,10 +181,9 @@
 	_parameter = 0;
 	_continue = true;
 	
-	if (!script->ip) {
+	if (!script->ip)
 		return false;
-	}
-	
+
 	int16 code = READ_BE_UINT16(script->ip); script->ip += 2;
 	int16 opcode = (code >> 8) & 0x1F;
 
@@ -231,9 +210,10 @@
 
 uint32 ScriptHelper::getFORMBlockSize(byte *&data) const {
 	static const uint32 chunkName = FORM_CHUNK;
-	if (READ_LE_UINT32(data) != chunkName) {
+
+	if (READ_LE_UINT32(data) != chunkName)
 		return (uint32)-1;
-	}
+
 	data += 4;
 	uint32 retValue = READ_BE_UINT32(data); data += 4;
 	return retValue;
@@ -243,9 +223,9 @@
 	uint32 size = (uint32)-1;
 	bool special = false;
 	
-	if (data == (start + maxSize)) {
+	if (data == (start + maxSize))
 		data = start + 0x0C;
-	}
+
 	while (data < (start + maxSize)) {
 		uint32 chunk = READ_LE_UINT32(data); data += 4;
 		uint32 size_temp = READ_BE_UINT32(data); data += 4;
@@ -263,15 +243,16 @@
 			break;
 		}
 	}
+
 	return size;
 }
 
 bool ScriptHelper::loadIFFBlock(byte *start, byte *&data, uint32 maxSize, const uint32 chunkName, byte *loadTo, uint32 ptrSize) const {
 	bool special = false;
 	
-	if (data == (start + maxSize)) {
+	if (data == (start + maxSize))
 		data = start + 0x0C;
-	}
+
 	while (data < (start + maxSize)) {
 		uint32 chunk = READ_LE_UINT32(data); data += 4;
 		uint32 chunkSize = READ_BE_UINT32(data); data += 4;
@@ -296,6 +277,7 @@
 			return true;
 		}
 	}
+
 	return false;
 }
 
@@ -404,11 +386,10 @@
 	int16 value = script->stack[script->sp];
 	switch (_parameter) {
 	case 0:
-		if (!value) {
+		if (!value)
 			script->stack[script->sp] = 1;
-		} else {
+		else
 			script->stack[script->sp] = 0;
-		}
 		break;
 
 	case 1:
@@ -434,67 +415,59 @@
 	
 	switch (_parameter) {
 	case 0:
-		if (!val2 || !val1) {
+		if (!val2 || !val1)
 			ret = 0;
-		} else {
+		else
 			ret = 1;
-		}
 		break;
 
 	case 1:
-		if (val2 || val1) {
+		if (val2 || val1)
 			ret = 1;
-		} else {
+		else
 			ret = 0;
-		}
 		break;
 
 	case 2:
-		if (val1 == val2) {
+		if (val1 == val2)
 			ret = 1;
-		} else {
+		else
 			ret = 0;
-		}
 		break;
 
 	case 3:
-		if (val1 != val2) {
+		if (val1 != val2)
 			ret = 1;
-		} else {
+		else
 			ret = 0;
-		}
 		break;
 
 	case 4:
-		if (val1 > val2) {
+		if (val1 > val2)
 			ret = 1;
-		} else {
+		else
 			ret = 0;
-		}
 		break;
 
 	case 5:
-		if (val1 >= val2) {
+		if (val1 >= val2)
 			ret = 1;
-		} else {
+		else
 			ret = 0;
-		}
 		break;
 
 	case 6:
-		if (val1 < val2) {
+		if (val1 < val2)
 			ret = 1;
-		} else {
+		else
 			ret = 0;
-		}
 		break;
 
 	case 7:
-		if (val1 <= val2) {
+		if (val1 <= val2)
 			ret = 1;
-		} else {
+		else
 			ret = 0;
-		}
 		break;
 
 	case 8:
@@ -563,3 +536,4 @@
 	}
 }
 } // end of namespace Kyra
+

Modified: scummvm/trunk/engines/kyra/script.h
===================================================================
--- scummvm/trunk/engines/kyra/script.h	2007-04-15 14:12:11 UTC (rev 26498)
+++ scummvm/trunk/engines/kyra/script.h	2007-04-15 14:19:27 UTC (rev 26499)
@@ -31,14 +31,13 @@
 	byte *data;
 	byte *ordr;
 	uint16 dataSize;
-	uint16 mustBeFreed;
 	
-	int opcodeTable;	// indicates which opcode table to use (for Kyra3)
+	int opcodeTable;	// indicates which opcode table to use (for Kyra3 and Kyra2)
 };
 
 struct ScriptState {
 	byte *ip;
-	ScriptData *dataPtr;
+	const ScriptData *dataPtr;
 	int16 retValue;
 	uint16 bp;
 	uint16 sp;
@@ -49,12 +48,11 @@
 class ScriptHelper {
 public:
 	ScriptHelper(KyraEngine *vm);
-	virtual ~ScriptHelper();
 	
-	bool loadScript(const char *filename, ScriptData *data, byte *specialPtr = 0);
+	bool loadScript(const char *filename, ScriptData *data);
 	void unloadScript(ScriptData *data);
 	
-	void initScript(ScriptState *scriptState, ScriptData *data);
+	void initScript(ScriptState *scriptState, const ScriptData *data);
 	bool startScript(ScriptState *script, int function);
 	
 	bool validScript(ScriptState *script);
@@ -100,3 +98,4 @@
 } // end of namespace Kyra
 
 #endif
+

Modified: scummvm/trunk/engines/kyra/script_v1.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v1.cpp	2007-04-15 14:12:11 UTC (rev 26498)
+++ scummvm/trunk/engines/kyra/script_v1.cpp	2007-04-15 14:19:27 UTC (rev 26499)
@@ -151,9 +151,8 @@
 		enableTimer(18);
 	}
 
-	if (reinitScript) {
+	if (reinitScript)
 		_scriptInterpreter->initScript(script, script->dataPtr);
-	}
 
 	if (_sceneChangeState) {
 		_sceneChangeState = 0;


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