[Scummvm-cvs-logs] SF.net SVN: scummvm:[33784] scummvm/trunk/engines/cine

buddha_ at users.sourceforge.net buddha_ at users.sourceforge.net
Mon Aug 11 23:26:51 CEST 2008


Revision: 33784
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33784&view=rev
Author:   buddha_
Date:     2008-08-11 21:26:41 +0000 (Mon, 11 Aug 2008)

Log Message:
-----------
Removed textDataPtr pointer as it's not used beyond the loadTextData function. Reworked loadTextData a bit so there are no two loops for the same thing (Also renamed some of the local variables).

Modified Paths:
--------------
    scummvm/trunk/engines/cine/cine.cpp
    scummvm/trunk/engines/cine/texte.cpp
    scummvm/trunk/engines/cine/texte.h

Modified: scummvm/trunk/engines/cine/cine.cpp
===================================================================
--- scummvm/trunk/engines/cine/cine.cpp	2008-08-11 20:41:13 UTC (rev 33783)
+++ scummvm/trunk/engines/cine/cine.cpp	2008-08-11 21:26:41 UTC (rev 33784)
@@ -75,7 +75,6 @@
 	Common::clearAllSpecialDebugLevels();
 
 	free(palPtr);
-	free(textDataPtr);
 }
 
 int CineEngine::init() {
@@ -151,7 +150,6 @@
 	}
 
 	collisionPage = new byte[320 * 200];
-	textDataPtr = (byte *)malloc(8000);
 
 	// Clear part buffer as there's nothing loaded into it yet.
 	// Its size will change when loading data into it with the loadPart function.
@@ -161,7 +159,7 @@
 		readVolCnf();
 	}
 
-	loadTextData("texte.dat", textDataPtr);
+	loadTextData("texte.dat");
 
 	if (g_cine->getGameType() == Cine::GType_OS && !(g_cine->getFeatures() & GF_DEMO)) {
 		loadPoldatDat("poldat.dat");

Modified: scummvm/trunk/engines/cine/texte.cpp
===================================================================
--- scummvm/trunk/engines/cine/texte.cpp	2008-08-11 20:41:13 UTC (rev 33783)
+++ scummvm/trunk/engines/cine/texte.cpp	2008-08-11 21:26:41 UTC (rev 33784)
@@ -29,8 +29,6 @@
 
 namespace Cine {
 
-byte *textDataPtr;
-
 const char **failureMessages;
 const CommandeType *defaultActionCommand;
 const CommandeType *systemMenu;
@@ -40,54 +38,40 @@
 
 void generateMask(const byte *sprite, byte *mask, uint16 size, byte transparency);
 
-void loadTextData(const char *pFileName, byte *pDestinationBuffer) {
-	Common::File pFileHandle;
-	uint16 entrySize;
-	uint16 numEntry;
-	uint16 i;
-	byte *tempBuffer;
-	uint16 dataSize;
+void loadTextData(const char *filename) {
+	Common::File fileHandle;
+	assert(filename);
 
-	assert(pFileName);
-	assert(pDestinationBuffer);
+	if (!fileHandle.open(filename))
+		error("loadTextData(): Cannot open file %s", filename);
 
-	if (!pFileHandle.open(pFileName))
-		error("loadTextData(): Cannot open file %s", pFileName);
+	uint entrySize = fileHandle.readUint16BE();
+	uint numEntry = fileHandle.readUint16BE();
 
-	entrySize = pFileHandle.readUint16BE();
-	numEntry = pFileHandle.readUint16BE();
+	uint sourceSize = numEntry * entrySize;
+	Common::Array<byte> source;
+	source.resize(sourceSize);
+	fileHandle.read(source.begin(), sourceSize);
 
-	dataSize = numEntry * entrySize;
-	pFileHandle.read(pDestinationBuffer, numEntry * entrySize);
-
-	tempBuffer = pDestinationBuffer;
-
+	const int fontHeight = 8;
+	const int fontWidth = (g_cine->getGameType() == Cine::GType_FW) ? 16 : 8;
+	uint numCharacters;
+	uint bytesPerCharacter;
 	if (g_cine->getGameType() == Cine::GType_FW) {
-		int numCharacters;
-		if (g_cine->getFeatures() & GF_ALT_FONT) {
-			numCharacters = 85;
-		} else {
-			numCharacters = 78;
-		}
-
-		dataSize = dataSize / numCharacters;
-
-		loadRelatedPalette(pFileName);
-
-		for (i = 0; i < numCharacters; i++) {
-			gfxConvertSpriteToRaw(g_cine->_textHandler.textTable[i][0], tempBuffer, 16, 8);
-			generateMask(g_cine->_textHandler.textTable[i][0], g_cine->_textHandler.textTable[i][1], 16 * 8, 0);
-			tempBuffer += dataSize;
-		}
+		numCharacters = (g_cine->getFeatures() & GF_ALT_FONT) ? 85 : 78;		
+		bytesPerCharacter = sourceSize / numCharacters; // TODO: Check if this could be replaced with fontWidth * fontHeight
+		loadRelatedPalette(filename);
 	} else {
-		for (i = 0; i < 90; i++) {
-			gfxConvertSpriteToRaw(g_cine->_textHandler.textTable[i][0], tempBuffer, 8, 8);
-			generateMask(g_cine->_textHandler.textTable[i][0], g_cine->_textHandler.textTable[i][1], 8 * 8, 0);
-			tempBuffer += 0x40;
-		}
+		numCharacters = 90;
+		bytesPerCharacter = fontWidth * fontHeight;
 	}
 
-	pFileHandle.close();
+	for (uint i = 0; i < numCharacters; i++) {
+		gfxConvertSpriteToRaw(g_cine->_textHandler.textTable[i][0], &source[i * bytesPerCharacter], fontWidth, fontHeight);
+		generateMask(g_cine->_textHandler.textTable[i][0], g_cine->_textHandler.textTable[i][1], fontWidth * fontHeight, 0);
+	}
+
+	fileHandle.close();
 }
 
 const CharacterEntry *fontParamTable;

Modified: scummvm/trunk/engines/cine/texte.h
===================================================================
--- scummvm/trunk/engines/cine/texte.h	2008-08-11 20:41:13 UTC (rev 33783)
+++ scummvm/trunk/engines/cine/texte.h	2008-08-11 21:26:41 UTC (rev 33784)
@@ -33,8 +33,6 @@
 
 typedef char CommandeType[20];
 
-extern byte *textDataPtr;
-
 struct TextHandler {
 	byte textTable[256][2][16 * 8];
 };
@@ -53,7 +51,7 @@
 
 extern const CharacterEntry *fontParamTable;
 
-void loadTextData(const char *pFileName, byte *pDestinationBuffer);
+void loadTextData(const char *filename);
 void loadErrmessDat(const char *fname);
 void freeErrmessDat(void);
 void loadPoldatDat(const char *fname);


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