aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorKari Salminen2008-08-11 21:26:41 +0000
committerKari Salminen2008-08-11 21:26:41 +0000
commitd6dde4b85f3f32fe0f602270b9223eaa299db91c (patch)
tree742046d0acc8c3aa622243ef464e111e8c6a93ba /engines
parent2d5a140725194f8a44d98091b510469f5889275a (diff)
downloadscummvm-rg350-d6dde4b85f3f32fe0f602270b9223eaa299db91c.tar.gz
scummvm-rg350-d6dde4b85f3f32fe0f602270b9223eaa299db91c.tar.bz2
scummvm-rg350-d6dde4b85f3f32fe0f602270b9223eaa299db91c.zip
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).
svn-id: r33784
Diffstat (limited to 'engines')
-rw-r--r--engines/cine/cine.cpp4
-rw-r--r--engines/cine/texte.cpp68
-rw-r--r--engines/cine/texte.h4
3 files changed, 28 insertions, 48 deletions
diff --git a/engines/cine/cine.cpp b/engines/cine/cine.cpp
index fad6cf3f6a..cf33b2c186 100644
--- a/engines/cine/cine.cpp
+++ b/engines/cine/cine.cpp
@@ -75,7 +75,6 @@ CineEngine::~CineEngine() {
Common::clearAllSpecialDebugLevels();
free(palPtr);
- free(textDataPtr);
}
int CineEngine::init() {
@@ -151,7 +150,6 @@ void CineEngine::initialize() {
}
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 @@ void CineEngine::initialize() {
readVolCnf();
}
- loadTextData("texte.dat", textDataPtr);
+ loadTextData("texte.dat");
if (g_cine->getGameType() == Cine::GType_OS && !(g_cine->getFeatures() & GF_DEMO)) {
loadPoldatDat("poldat.dat");
diff --git a/engines/cine/texte.cpp b/engines/cine/texte.cpp
index e4fd334926..618e37d1ce 100644
--- a/engines/cine/texte.cpp
+++ b/engines/cine/texte.cpp
@@ -29,8 +29,6 @@
namespace Cine {
-byte *textDataPtr;
-
const char **failureMessages;
const CommandeType *defaultActionCommand;
const CommandeType *systemMenu;
@@ -40,54 +38,40 @@ const char *commandPrepositionOn;
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;
-
- assert(pFileName);
- assert(pDestinationBuffer);
-
- if (!pFileHandle.open(pFileName))
- error("loadTextData(): Cannot open file %s", pFileName);
+void loadTextData(const char *filename) {
+ Common::File fileHandle;
+ assert(filename);
- entrySize = pFileHandle.readUint16BE();
- numEntry = pFileHandle.readUint16BE();
+ if (!fileHandle.open(filename))
+ error("loadTextData(): Cannot open file %s", filename);
- dataSize = numEntry * entrySize;
- pFileHandle.read(pDestinationBuffer, numEntry * entrySize);
+ uint entrySize = fileHandle.readUint16BE();
+ uint numEntry = fileHandle.readUint16BE();
- tempBuffer = pDestinationBuffer;
+ uint sourceSize = numEntry * entrySize;
+ Common::Array<byte> source;
+ source.resize(sourceSize);
+ fileHandle.read(source.begin(), sourceSize);
+ 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;
+ }
+
+ 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);
}
- pFileHandle.close();
+ fileHandle.close();
}
const CharacterEntry *fontParamTable;
diff --git a/engines/cine/texte.h b/engines/cine/texte.h
index f471c3c49e..7fec52cffc 100644
--- a/engines/cine/texte.h
+++ b/engines/cine/texte.h
@@ -33,8 +33,6 @@ namespace Cine {
typedef char CommandeType[20];
-extern byte *textDataPtr;
-
struct TextHandler {
byte textTable[256][2][16 * 8];
};
@@ -53,7 +51,7 @@ struct CharacterEntry {
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);