diff options
author | Robert Göffringmann | 2003-07-31 21:26:27 +0000 |
---|---|---|
committer | Robert Göffringmann | 2003-07-31 21:26:27 +0000 |
commit | 9702826aa016728f8b928aa05f01274da75d1d6d (patch) | |
tree | d1ad6f82d2ba2e4bf7a33bb310b9489f5ee0e167 | |
parent | 86af2b1e29a8c9415a1fa08e7ef67784003c2617 (diff) | |
download | scummvm-rg350-9702826aa016728f8b928aa05f01274da75d1d6d.tar.gz scummvm-rg350-9702826aa016728f8b928aa05f01274da75d1d6d.tar.bz2 scummvm-rg350-9702826aa016728f8b928aa05f01274da75d1d6d.zip |
added patched messages for BASS's mistranslations.
(also fixed bug about italian menu glitch)
svn-id: r9349
-rw-r--r-- | sky/text.cpp | 48 | ||||
-rw-r--r-- | sky/text.h | 12 |
2 files changed, 60 insertions, 0 deletions
diff --git a/sky/text.cpp b/sky/text.cpp index e789be2d63..26c9600bb9 100644 --- a/sky/text.cpp +++ b/sky/text.cpp @@ -222,6 +222,10 @@ void SkyText::fnTextModule(uint32 textInfoId, uint32 textNo) { } void SkyText::getText(uint32 textNr) { //load text #"textNr" into textBuffer + + if (patchMessage(textNr)) + return ; + uint32 sectionNo = (textNr & 0x0F000) >> 12; if (SkyState::_itemList[FIRST_TEXT_SEC + sectionNo] == (void **)NULL) { //check if already loaded @@ -586,3 +590,47 @@ char SkyText::getTextChar() { } } +bool SkyText::patchMessage(uint32 textNum) { + + uint16 patchIdx = _patchLangIdx[SkyState::_systemVars.language]; + uint16 patchNum = _patchLangNum[SkyState::_systemVars.language]; + for (uint16 cnt = 0; cnt < patchNum; cnt++) { + if (_patchedMessages[cnt + patchIdx].textNr == textNum) { + strcpy(_textBuffer, _patchedMessages[cnt + patchIdx].text); + return true; + } + } + return false; +} + +const PatchMessage SkyText::_patchedMessages[NUM_PATCH_MSG] = { + { 28724, "Testo e Parlato" }, // - italian + { 28707, "Solo Testo" }, + { 28693, "Solo Parlato" }, + { 28724, "Text och tal" }, // - swedish + { 28707, "Endast text" }, + { 28693, "Endast tal" }, + { 28686, "Musikvolym" } +}; + +const uint16 SkyText::_patchLangIdx[8] = { + 0xFFFF, // SKY_ENGLISH + 0xFFFF, // SKY_GERMAN + 0xFFFF, // SKY_FRENCH + 0xFFFF, // SKY_USA + 3, // SKY_SWEDISH + 0, // SKY_ITALIAN + 0xFFFF, // SKY_PORTUGUESE + 0xFFFF // SKY_SPANISH +}; + +const uint16 SkyText::_patchLangNum[8] = { + 0, // SKY_ENGLISH + 0, // SKY_GERMAN + 0, // SKY_FRENCH + 0, // SKY_USA + 4, // SKY_SWEDISH + 3, // SKY_ITALIAN + 0, // SKY_PORTUGUESE + 0 // SKY_SPANISH +}; diff --git a/sky/text.h b/sky/text.h index 1e3c529699..bd9e4f4fef 100644 --- a/sky/text.h +++ b/sky/text.h @@ -31,6 +31,13 @@ struct HuffTree { unsigned char value; }; +#define NUM_PATCH_MSG 7 + +struct PatchMessage { + uint32 textNr; + char text[100]; +}; + class SkyText { public: SkyText(SkyDisk *skyDisk); @@ -53,6 +60,7 @@ protected: char getTextChar(); void patchChar(byte *charSetPtr, int width, int height, int c, const uint16 *data); void patchLINCCharset(); + bool patchMessage(uint32 textNum); SkyDisk *_skyDisk; uint8 _inputValue; @@ -98,6 +106,10 @@ protected: static const HuffTree _huffTree_00368[]; static const HuffTree _huffTree_00372[]; + static const PatchMessage _patchedMessages[NUM_PATCH_MSG]; + static const uint16 _patchLangIdx[8]; + static const uint16 _patchLangNum[8]; + public: uint32 _dtLetters; //no of chars in message }; |