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

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Apr 15 16:38:03 CEST 2007


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

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

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra.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:32:58 UTC (rev 26501)
+++ scummvm/trunk/engines/kyra/kyra.cpp	2007-04-15 14:38:02 UTC (rev 26502)
@@ -505,21 +505,20 @@
 	_animator->initAnimStateList();
 	setCharactersInDefaultScene();
 
-	if (!_scriptInterpreter->loadScript("_STARTUP.EMC", _npcScriptData)) {
+	if (!_scriptInterpreter->loadScript("_STARTUP.EMC", _npcScriptData))
 		error("Could not load \"_STARTUP.EMC\" script");
-	}
 	_scriptInterpreter->initScript(_scriptMain, _npcScriptData);
-	if (!_scriptInterpreter->startScript(_scriptMain, 0)) {
+
+	if (!_scriptInterpreter->startScript(_scriptMain, 0))
 		error("Could not start script function 0 of script \"_STARTUP.EMC\"");
-	}
-	while (_scriptInterpreter->validScript(_scriptMain)) {
+
+	while (_scriptInterpreter->validScript(_scriptMain))
 		_scriptInterpreter->runScript(_scriptMain);
-	}
 	
 	_scriptInterpreter->unloadScript(_npcScriptData);
-	if (!_scriptInterpreter->loadScript("_NPC.EMC", _npcScriptData)) {
+
+	if (!_scriptInterpreter->loadScript("_NPC.EMC", _npcScriptData))
 		error("Could not load \"_NPC.EMC\" script");
-	}
 	
 	snd_playTheme(1);
 	enterNewScene(_currentCharacter->sceneId, _currentCharacter->facing, 0, 0, 1);

Modified: scummvm/trunk/engines/kyra/script.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script.cpp	2007-04-15 14:32:58 UTC (rev 26501)
+++ scummvm/trunk/engines/kyra/script.cpp	2007-04-15 14:38:02 UTC (rev 26502)
@@ -71,7 +71,7 @@
 bool ScriptHelper::loadScript(const char *filename, ScriptData *scriptData) {
 	uint32 size = 0;
 	uint8 *data = _vm->resource()->fileData(filename, &size);	
-	byte *curData = data;
+	const byte *curData = data;
 	
 	uint32 formBlockSize = getFORMBlockSize(curData);
 	if (formBlockSize == (uint32)-1) {
@@ -99,20 +99,19 @@
 		error("No ORDR chunk found in file: '%s'", filename);
 		return false;
 	}
+	chunkSize >>= 1;
 
-	scriptData->ordr = new byte[chunkSize];
+	scriptData->ordr = new uint16[chunkSize];
 
-	if (!loadIFFBlock(data, curData, size, ORDR_CHUNK, scriptData->ordr, chunkSize)) {
+	if (!loadIFFBlock(data, curData, size, ORDR_CHUNK, scriptData->ordr, chunkSize << 1)) {
 		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]);
-	}
+	while (chunkSize--)
+		scriptData->ordr[chunkSize] = READ_BE_UINT16(&scriptData->ordr[chunkSize]);
 	
 	chunkSize = getIFFBlockSize(data, curData, size, DATA_CHUNK);
 	if (chunkSize == (uint32)-1) {
@@ -121,16 +120,20 @@
 		error("No DATA chunk found in file: '%s'", filename);
 		return false;
 	}
+	chunkSize >>= 1;
 
-	scriptData->data = new byte[chunkSize];
+	scriptData->data = new uint16[chunkSize];
 
-	if (!loadIFFBlock(data, curData, size, DATA_CHUNK, scriptData->data, chunkSize)) {
+	if (!loadIFFBlock(data, curData, size, DATA_CHUNK, scriptData->data, chunkSize << 1)) {
 		delete [] data;
 		unloadScript(scriptData);
 		error("Couldn't load DATA chunk from file: '%s'", filename);
 		return false;
 	}
-	scriptData->dataSize = chunkSize / 2;
+	scriptData->dataSize = chunkSize;
+
+	while (chunkSize--)
+		scriptData->data[chunkSize] = READ_BE_UINT16(&scriptData->data[chunkSize]);
 	
 	delete [] data;
 	return true;
@@ -144,7 +147,8 @@
 	delete [] data->ordr;
 	delete [] data->data;
 	
-	data->text = data->ordr = data->data = 0;
+	data->text = 0; 
+	data->ordr = data->data = 0;
 }
 
 void ScriptHelper::initScript(ScriptState *scriptStat, const ScriptData *data) {
@@ -159,14 +163,14 @@
 	if (!script->dataPtr)
 		return false;
 
-	uint16 functionOffset = ((uint16*)script->dataPtr->ordr)[function];
+	uint16 functionOffset = script->dataPtr->ordr[function];
 	if (functionOffset == 0xFFFF)
 		return false;
 
 	if (_vm->gameFlags().platform == Common::kPlatformFMTowns)
-		script->ip = &script->dataPtr->data[functionOffset*2+2];
+		script->ip = &script->dataPtr->data[functionOffset+1];
 	else
-		script->ip = &script->dataPtr->data[functionOffset*2];
+		script->ip = &script->dataPtr->data[functionOffset];
 
 	return true;
 }
@@ -184,7 +188,7 @@
 	if (!script->ip)
 		return false;
 
-	int16 code = READ_BE_UINT16(script->ip); script->ip += 2;
+	int16 code = *script->ip++;
 	int16 opcode = (code >> 8) & 0x1F;
 
 	if (code & 0x8000) {
@@ -193,7 +197,7 @@
 	} else if (code & 0x4000) {
 		_parameter = (int8)(code);
 	} else if (code & 0x2000) {
-		_parameter = READ_BE_UINT16(script->ip); script->ip += 2;
+		_parameter = *script->ip++; 
 	} else {
 		_parameter = 0;
 	}
@@ -208,7 +212,7 @@
 	return _continue;
 }
 
-uint32 ScriptHelper::getFORMBlockSize(byte *&data) const {
+uint32 ScriptHelper::getFORMBlockSize(const byte *&data) const {
 	static const uint32 chunkName = FORM_CHUNK;
 
 	if (READ_LE_UINT32(data) != chunkName)
@@ -219,7 +223,7 @@
 	return retValue;
 }
 
-uint32 ScriptHelper::getIFFBlockSize(byte *start, byte *&data, uint32 maxSize, const uint32 chunkName) const {
+uint32 ScriptHelper::getIFFBlockSize(const byte *start, const byte *&data, uint32 maxSize, const uint32 chunkName) const {
 	uint32 size = (uint32)-1;
 	bool special = false;
 	
@@ -247,7 +251,7 @@
 	return size;
 }
 
-bool ScriptHelper::loadIFFBlock(byte *start, byte *&data, uint32 maxSize, const uint32 chunkName, byte *loadTo, uint32 ptrSize) const {
+bool ScriptHelper::loadIFFBlock(const byte *start, const byte *&data, uint32 maxSize, const uint32 chunkName, void *loadTo, uint32 ptrSize) const {
 	bool special = false;
 	
 	if (data == (start + maxSize))
@@ -271,9 +275,8 @@
 				loadSize = ptrSize;
 			memcpy(loadTo, data, loadSize);
 			chunkSize = (chunkSize + 1) & 0xFFFFFFFE;
-			if (chunkSize > loadSize) {
+			if (chunkSize > loadSize)
 				data += (chunkSize - loadSize);
-			}
 			return true;
 		}
 	}
@@ -286,7 +289,7 @@
 #pragma mark -
 
 void ScriptHelper::c1_jmpTo(ScriptState* script) {
-	script->ip = script->dataPtr->data + (_parameter << 1);
+	script->ip = script->dataPtr->data + _parameter;
 }
 
 void ScriptHelper::c1_setRetValue(ScriptState* script) {
@@ -300,7 +303,7 @@
 		break;
 
 	case 1:
-		script->stack[--script->sp] = (script->ip - script->dataPtr->data) / 2 + 1;
+		script->stack[--script->sp] = script->ip - script->dataPtr->data + 1;
 		script->stack[--script->sp] = script->bp;
 		script->bp = script->sp + 2;
 		break;
@@ -340,7 +343,7 @@
 			script->ip = 0;
 		} else {
 			script->bp = script->stack[script->sp++];
-			script->ip = script->dataPtr->data + (script->stack[script->sp++] << 1);
+			script->ip = script->dataPtr->data + script->stack[script->sp++];
 		}
 		break;
 
@@ -378,7 +381,7 @@
 void ScriptHelper::c1_ifNotJmp(ScriptState* script) {
 	if (!script->stack[script->sp++]) {
 		_parameter &= 0x7FFF;
-		script->ip = script->dataPtr->data + (_parameter << 1);
+		script->ip = script->dataPtr->data + _parameter;
 	}
 }
 
@@ -532,7 +535,7 @@
 		script->retValue = script->stack[script->sp++];
 		uint16 temp = script->stack[script->sp++];
 		script->stack[60] = 0;
-		script->ip = &script->dataPtr->data[temp*2];
+		script->ip = &script->dataPtr->data[temp];
 	}
 }
 } // end of namespace Kyra

Modified: scummvm/trunk/engines/kyra/script.h
===================================================================
--- scummvm/trunk/engines/kyra/script.h	2007-04-15 14:32:58 UTC (rev 26501)
+++ scummvm/trunk/engines/kyra/script.h	2007-04-15 14:38:02 UTC (rev 26502)
@@ -28,15 +28,15 @@
 namespace Kyra {
 struct ScriptData {
 	byte *text;
-	byte *data;
-	byte *ordr;
+	uint16 *data;
+	uint16 *ordr;
 	uint16 dataSize;
 	
 	int opcodeTable;	// indicates which opcode table to use (for Kyra3 and Kyra2)
 };
 
 struct ScriptState {
-	byte *ip;
+	uint16 *ip;
 	const ScriptData *dataPtr;
 	int16 retValue;
 	uint16 bp;
@@ -59,9 +59,9 @@
 	
 	bool runScript(ScriptState *script);
 protected:
-	uint32 getFORMBlockSize(byte *&data) const;
-	uint32 getIFFBlockSize(byte *start, byte *&data, uint32 maxSize, const uint32 chunk) const;
-	bool loadIFFBlock(byte *start, byte *&data, uint32 maxSize, const uint32 chunk, byte *loadTo, uint32 ptrSize) const;
+	uint32 getFORMBlockSize(const byte *&data) const;
+	uint32 getIFFBlockSize(const byte *start, const byte *&data, uint32 maxSize, const uint32 chunk) const;
+	bool loadIFFBlock(const byte *start, const byte *&data, uint32 maxSize, const uint32 chunk, void *loadTo, uint32 ptrSize) const;
 	
 	KyraEngine *_vm;
 	int16 _parameter;

Modified: scummvm/trunk/engines/kyra/script_v1.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v1.cpp	2007-04-15 14:32:58 UTC (rev 26501)
+++ scummvm/trunk/engines/kyra/script_v1.cpp	2007-04-15 14:38:02 UTC (rev 26502)
@@ -33,7 +33,7 @@
 
 namespace Kyra {
 #define stackPos(x) script->stack[script->sp+x]
-#define stackPosString(x) (char*)&script->dataPtr->text[READ_BE_UINT16(&((uint16 *)script->dataPtr->text)[stackPos(x)])]
+#define stackPosString(x) (const char*)&script->dataPtr->text[READ_BE_UINT16(&((uint16 *)script->dataPtr->text)[stackPos(x)])]
 
 int KyraEngine::o1_magicInMouseItem(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "o1_magicInMouseItem(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
@@ -437,7 +437,7 @@
 int KyraEngine::o1_openWSAFile(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "o1_openWSAFile(%p) ('%s', %d, %d, %d)", (const void *)script, stackPosString(0), stackPos(1), stackPos(2), stackPos(3));
 	
-	char *filename = stackPosString(0);
+	const char *filename = stackPosString(0);
 	int wsaIndex = stackPos(1);
 	
 	_movieObjects[wsaIndex]->open(filename, (stackPos(3) != 0) ? 1 : 0, 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