diff options
author | Filippos Karapetis | 2008-09-10 08:25:12 +0000 |
---|---|---|
committer | Filippos Karapetis | 2008-09-10 08:25:12 +0000 |
commit | 3202ef4dd15f12bdd8cd648d31a9f41b5e0c3053 (patch) | |
tree | cd16304a52bf61dccf3f9d89130b70887d2a6967 /engines/drascula/drascula.cpp | |
parent | cde2ee58b18684628b7c37d297178323ad58c73f (diff) | |
download | scummvm-rg350-3202ef4dd15f12bdd8cd648d31a9f41b5e0c3053.tar.gz scummvm-rg350-3202ef4dd15f12bdd8cd648d31a9f41b5e0c3053.tar.bz2 scummvm-rg350-3202ef4dd15f12bdd8cd648d31a9f41b5e0c3053.zip |
Reduced game memory usage by about 400KB by only loading the current language strings, not all strings
svn-id: r34472
Diffstat (limited to 'engines/drascula/drascula.cpp')
-rw-r--r-- | engines/drascula/drascula.cpp | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/engines/drascula/drascula.cpp b/engines/drascula/drascula.cpp index ef6c9158d2..b81c4bc729 100644 --- a/engines/drascula/drascula.cpp +++ b/engines/drascula/drascula.cpp @@ -259,7 +259,7 @@ int DrasculaEngine::go() { memset(iconName, 0, sizeof(iconName)); for (i = 0; i < 6; i++) - strcpy(iconName[i + 1], _textverbs[_lang][i]); + strcpy(iconName[i + 1], _textverbs[i]); assignDefaultPalette(); if (!runCurrentChapter()) { @@ -563,12 +563,12 @@ bool DrasculaEngine::runCurrentChapter() { withoutVerb(); } else if (key == Common::KEYCODE_v) { withVoices = 1; - print_abc(_textsys[_lang][2], 96, 86); + print_abc(_textsys[2], 96, 86); updateScreen(); delay(1410); } else if (key == Common::KEYCODE_t) { withVoices = 0; - print_abc(_textsys[_lang][3], 94, 86); + print_abc(_textsys[3], 94, 86); updateScreen(); delay(1460); } else if (key == Common::KEYCODE_ESCAPE) { @@ -1002,24 +1002,22 @@ bool DrasculaEngine::loadDrasculaDat() { return true; } -char ***DrasculaEngine::loadTexts(Common::File &in) { +char **DrasculaEngine::loadTexts(Common::File &in) { int numTexts = in.readUint16BE(); - char ***res; + char **res = (char **)malloc(sizeof(char *) * numTexts); int entryLen; - char *pos; + char *pos = 0; int len; - res = (char ***)malloc(sizeof(char *) * _numLangs); - for (int lang = 0; lang < _numLangs; lang++) { entryLen = in.readUint16BE(); - - res[lang] = (char **)malloc(sizeof(char *) * numTexts); - pos = (char *)malloc(entryLen); - res[lang][0] = pos; - - in.read(res[lang][0], entryLen); + if (lang == _lang) { + res[0] = pos; + in.read(res[0], entryLen); + } else { + in.read(pos, entryLen); + } pos += DATAALIGNMENT; @@ -1029,23 +1027,19 @@ char ***DrasculaEngine::loadTexts(Common::File &in) { len = READ_BE_UINT16(pos); pos += 2 + len; - res[lang][i] = pos; + if (lang == _lang) + res[i] = pos; } } return res; } -void DrasculaEngine::freeTexts(char ***ptr) { +void DrasculaEngine::freeTexts(char **ptr) { if (!ptr) return; - for (int lang = 0; lang < _numLangs; lang++) { - if (ptr[lang]) { - free(ptr[lang][0]); - free(ptr[lang]); - } - } + free(ptr[0]); free(ptr); } |