diff options
author | David Corrales | 2007-06-23 18:51:33 +0000 |
---|---|---|
committer | David Corrales | 2007-06-23 18:51:33 +0000 |
commit | cacd7a28fd51d960947de88abbf30c487e66529d (patch) | |
tree | f3baa59853bfb307e452b86b9d93c4737b1fa6ab /engines/kyra | |
parent | 0ac96302fe9c04df79cb01a77d19535b45fe2db0 (diff) | |
parent | 90c2210dae8c91fa8babc6b05564e15c9d445d18 (diff) | |
download | scummvm-rg350-cacd7a28fd51d960947de88abbf30c487e66529d.tar.gz scummvm-rg350-cacd7a28fd51d960947de88abbf30c487e66529d.tar.bz2 scummvm-rg350-cacd7a28fd51d960947de88abbf30c487e66529d.zip |
Merged the FSNode branch with trunk r27031:27680
svn-id: r27681
Diffstat (limited to 'engines/kyra')
-rw-r--r-- | engines/kyra/detection.cpp | 6 | ||||
-rw-r--r-- | engines/kyra/gui.cpp | 18 | ||||
-rw-r--r-- | engines/kyra/kyra.cpp | 4 | ||||
-rw-r--r-- | engines/kyra/kyra.h | 3 | ||||
-rw-r--r-- | engines/kyra/kyra_v1.h | 4 | ||||
-rw-r--r-- | engines/kyra/kyra_v2.cpp | 2 | ||||
-rw-r--r-- | engines/kyra/kyra_v2.h | 6 | ||||
-rw-r--r-- | engines/kyra/screen.cpp | 27 | ||||
-rw-r--r-- | engines/kyra/screen.h | 2 | ||||
-rw-r--r-- | engines/kyra/sequences_v2.cpp | 157 | ||||
-rw-r--r-- | engines/kyra/text.cpp | 6 |
11 files changed, 191 insertions, 44 deletions
diff --git a/engines/kyra/detection.cpp b/engines/kyra/detection.cpp index 026f40eda8..e1b5a2b7c3 100644 --- a/engines/kyra/detection.cpp +++ b/engines/kyra/detection.cpp @@ -122,7 +122,7 @@ GameList Engine_KYRA_gameIDList() { } GameDescriptor Engine_KYRA_findGameID(const char *gameid) { - return Common::AdvancedDetector::findGameID(gameid, detectionParams); + return Common::AdvancedDetector::findGameID(gameid, gameList); } GameList Engine_KYRA_detectGames(const FSList &fslist) { @@ -133,7 +133,9 @@ PluginError Engine_KYRA_create(OSystem *syst, Engine **engine) { assert(engine); const char *gameid = ConfMan.get("gameid").c_str(); - const KYRAGameDescription *gd = (const KYRAGameDescription *)Common::AdvancedDetector::detectBestMatchingGame(detectionParams); + Common::EncapsulatedADGameDesc encapsulatedDesc = Common::AdvancedDetector::detectBestMatchingGame(detectionParams); + const KYRAGameDescription *gd = (const KYRAGameDescription *)(encapsulatedDesc.realDesc); + if (gd == 0) { // maybe add non md5 based detection again? return kNoGameDataFoundError; diff --git a/engines/kyra/gui.cpp b/engines/kyra/gui.cpp index 18fdd4436d..8cafb54fb8 100644 --- a/engines/kyra/gui.cpp +++ b/engines/kyra/gui.cpp @@ -596,7 +596,7 @@ int KyraEngine::buttonMenuCallback(Button *caller) { calcCoords(_menu[i]); _menuRestoreScreen = true; - _keyPressed = 0; + _keyPressed.reset(); _mousePressFlag = false; _toplevelMenu = 0; @@ -826,7 +826,7 @@ void KyraEngine::gui_getInput() { _mouseWheel = 1; break; case Common::EVENT_KEYDOWN: - _keyPressed = event.kbd.ascii; + _keyPressed = event.kbd; break; default: break; @@ -1002,26 +1002,28 @@ void KyraEngine::gui_redrawTextfield() { void KyraEngine::gui_updateSavegameString() { int length; - if (_keyPressed) { + if (_keyPressed.keycode) { length = strlen(_savegameName); - if (_keyPressed > 31 && _keyPressed < 127) { + if (_keyPressed.ascii > 31 && _keyPressed.ascii < 127) { if (length < 31) { - _savegameName[length] = _keyPressed; + _savegameName[length] = _keyPressed.ascii; _savegameName[length+1] = 0; gui_redrawTextfield(); } - } else if (_keyPressed == 8 ||_keyPressed == 127) { + } else if (_keyPressed.keycode == Common::KEYCODE_BACKSPACE || + _keyPressed.keycode == Common::KEYCODE_DELETE) { if (length > 0) { _savegameName[length-1] = 0; gui_redrawTextfield(); } - } else if (_keyPressed == 13) { + } else if (_keyPressed.keycode == Common::KEYCODE_RETURN || + _keyPressed.keycode == Common::KEYCODE_KP_ENTER) { _displaySubMenu = false; } } - _keyPressed = 0; + _keyPressed.reset(); } int KyraEngine::gui_saveGame(Button *button) { diff --git a/engines/kyra/kyra.cpp b/engines/kyra/kyra.cpp index 7b3251f878..249a5f6c21 100644 --- a/engines/kyra/kyra.cpp +++ b/engines/kyra/kyra.cpp @@ -110,6 +110,8 @@ KyraEngine::KyraEngine(OSystem *system, const GameFlags &flags) _curSfxFile = _curMusicTheme = 0; + memset(&_itemBkgBackUp, 0, sizeof(_itemBkgBackUp)); + // sets up all engine specific debug levels Common::addSpecialDebugLevel(kDebugLevelScriptFuncs, "ScriptFuncs", "Script function debug level"); Common::addSpecialDebugLevel(kDebugLevelScript, "Script", "Script interpreter debug level"); @@ -615,7 +617,7 @@ void KyraEngine::delay(uint32 amount, bool update, bool isMainLoop) { _quitFlag = true; } else if (event.kbd.keycode == '.') _skipFlag = true; - else if (event.kbd.keycode == 13 || event.kbd.keycode == 32 || event.kbd.keycode == 27) { + else if (event.kbd.keycode == Common::KEYCODE_RETURN || event.kbd.keycode == Common::KEYCODE_SPACE || event.kbd.keycode == Common::KEYCODE_ESCAPE) { _abortIntroFlag = true; _skipFlag = true; } diff --git a/engines/kyra/kyra.h b/engines/kyra/kyra.h index 9d891ee511..bb41a68e6b 100644 --- a/engines/kyra/kyra.h +++ b/engines/kyra/kyra.h @@ -29,6 +29,7 @@ #include "engines/engine.h" #include "common/rect.h" #include "common/array.h" +#include "common/events.h" namespace Kyra { @@ -744,7 +745,7 @@ protected: int _gameToLoad; char _savegameName[31]; const char *_specialSavegameString; - uint8 _keyPressed; + Common::KeyState _keyPressed; struct KyragemState { uint16 nextOperation; diff --git a/engines/kyra/kyra_v1.h b/engines/kyra/kyra_v1.h index 03d8f58cac..e103086dc4 100644 --- a/engines/kyra/kyra_v1.h +++ b/engines/kyra/kyra_v1.h @@ -26,8 +26,8 @@ #ifndef KYRA_KYRA_V1_H #define KYRA_KYRA_V1_H -#include "kyra.h" -#include "script.h" +#include "kyra/kyra.h" +#include "kyra/script.h" namespace Kyra { diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp index 8482dc5aa2..6857b3ac09 100644 --- a/engines/kyra/kyra_v2.cpp +++ b/engines/kyra/kyra_v2.cpp @@ -112,7 +112,7 @@ void KyraEngine_v2::mainMenu() { case 0: break; case 1: - seq_playSequences(kSequenceOverview, kSequenceLibrary); + seq_playSequences(kSequenceOverview, kSequenceZanFaun); break; case 2: break; diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h index 49a4e5c09a..a002baec19 100644 --- a/engines/kyra/kyra_v2.h +++ b/engines/kyra/kyra_v2.h @@ -34,7 +34,9 @@ enum kSequences { kSequenceTitle = 2, kSequenceOverview = 3, kSequenceLibrary = 4, - kSequenceHand = 5 + kSequenceHand = 5, + kSequencePoint = 6, + kSequenceZanFaun = 7 }; class WSAMovieV2; @@ -92,6 +94,8 @@ private: int seq_introOverview(int seqNum); int seq_introLibrary(int seqNum); int seq_introHand(int seqNum); + int seq_introPoint(int seqNum); + int seq_introZanFaun(int seqNum); void seq_introOverviewOver1(int currentFrame); void seq_introOverviewForest(int currentFrame); diff --git a/engines/kyra/screen.cpp b/engines/kyra/screen.cpp index 17c6b2219b..02eb1c9ea7 100644 --- a/engines/kyra/screen.cpp +++ b/engines/kyra/screen.cpp @@ -355,6 +355,33 @@ void Screen::fadeToBlack(int delay) { fadePalette(blackPal, delay); } +void Screen::k2IntroFadeToGrey(int delay) { + debugC(9, kDebugLevelScreen, "Screen::k2IntroFadeToGrey()"); + + for (int i = 0; i <= 50; ++i) { + if (i <= 8 || i >= 30) { + _currentPalette[3 * i + 0] = (_currentPalette[3 * i + 0] + + _currentPalette[3 * i + 1] + + _currentPalette[3 * i + 2]) / 3; + _currentPalette[3 * i + 1] = _currentPalette[3 * i + 0]; + _currentPalette[3 * i + 2] = _currentPalette[3 * i + 0]; + } + } + + // color 71 is the same in both the overview and closeup scenes + // Converting it to greyscale makes the trees in the closeup look dull + for (int i = 71; i < 200; ++i) { + _currentPalette[3 * i + 0] = (_currentPalette[3 * i + 0] + + _currentPalette[3 * i + 1] + + _currentPalette[3 * i + 2]) / 3; + _currentPalette[3 * i + 1] = _currentPalette[3 * i + 0]; + _currentPalette[3 * i + 2] = _currentPalette[3 * i + 0]; + } + fadePalette(_currentPalette, delay); + // Make the font color white again + setPaletteIndex(254, 254, 254, 254); +} + void Screen::fadeSpecialPalette(int palIndex, int startIndex, int size, int fadeTime) { debugC(9, kDebugLevelScreen, "fadeSpecialPalette(%d, %d, %d, %d)", palIndex, startIndex, size, fadeTime); assert(_vm->palTable1()[palIndex]); diff --git a/engines/kyra/screen.h b/engines/kyra/screen.h index 5e3869d278..a60cdbd637 100644 --- a/engines/kyra/screen.h +++ b/engines/kyra/screen.h @@ -134,6 +134,8 @@ public: void fadeFromBlack(int delay=0x54); void fadeToBlack(int delay=0x54); + void k2IntroFadeToGrey(int delay=0x54); + void fadeSpecialPalette(int palIndex, int startIndex, int size, int fadeTime); void fadePalette(const uint8 *palData, int delay); diff --git a/engines/kyra/sequences_v2.cpp b/engines/kyra/sequences_v2.cpp index 27b6064fb9..afda1091e6 100644 --- a/engines/kyra/sequences_v2.cpp +++ b/engines/kyra/sequences_v2.cpp @@ -49,7 +49,9 @@ void KyraEngine_v2::seq_playSequences(int startSeq, int endSeq) { {1, "title.wsa", &KyraEngine_v2::seq_introTitle, 6, 10, 26, false, false}, {2, "over.cps", &KyraEngine_v2::seq_introOverview, 16, 30, 1, false, true}, {2, "library.cps", &KyraEngine_v2::seq_introLibrary, 16, 30, 1, false, true}, - {2, "hand.cps", &KyraEngine_v2::seq_introHand, 16, 90, 1, false, true} + {2, "hand.cps", &KyraEngine_v2::seq_introHand, 16, 90, 1, false, true}, + {1, "point.wsa", &KyraEngine_v2::seq_introPoint, 16, 30, 1, false, true}, + {1, "zanfaun.wsa", &KyraEngine_v2::seq_introZanFaun, 16, 90, 1, false, true} }; assert(startSeq >= 0 && endSeq < ARRAYSIZE(sequences) && startSeq <= endSeq); @@ -97,7 +99,9 @@ void KyraEngine_v2::seq_playSequences(int startSeq, int endSeq) { seqDelay += _system->getMillis(); bool mayEndLoop = sequences[i].timeOut; - while (!_quitFlag && !_skipFlag) { + // Skip the movie if esc is pressed or the mouse is clicked + // However, don't skip the menu movie, to match the behavior of the original interpreter + while ((!_quitFlag && !_skipFlag) || i == kSequenceTitle) { uint32 startTime = _system->getMillis(); if (sequences[i].callback) { @@ -140,63 +144,161 @@ void KyraEngine_v2::seq_playSequences(int startSeq, int endSeq) { delete[] _activeChat; } +// FIXME: This part needs game dialogs, as it's not part of the intro, but +// rather a game video. It has speech only in the CD version +int KyraEngine_v2::seq_introZanFaun(int seqNum) { + debugC(9, kDebugLevelMain, "KyraEngine_v2::seq_introZanFaun(%i)", seqNum); + + static const SequenceControl zanFaunWSAControl[] = { + {0, 6}, {1, 6}, {2, 6}, {3, 6}, + {4, 6}, {5, 6}, {6, 6}, {7, 6}, + {8, 6}, {9, 6}, {10, 6}, {11, 6}, + {12, 6}, {13, 6}, {14, 6}, {15, 6}, + {16, 6}, {17, 6}, {18, 6}, {19, 6}, + {20, 6}, {21, 6}, {22, 6}, {23, 6}, + {23, 6}, {22, 6}, {21, 6}, {20, 6}, + {19, 6}, {18, 6}, {17, 6}, {16, 6}, + {15, 6}, {14, 6}, {13, 6}, {12, 6}, + {11, 6}, {10, 6}, {9, 6}, {8, 6}, + {7, 6}, {6, 6}, {5, 6}, {4, 6}, + {3, 6}, {2, 6}, {1, 6}, {0, 6}, + {8, 6}, {9, 6}, {10, 6}, {-1, -1} }; + + switch (seqNum) { + case 0: + _sound->playTrack(8); + //XXX: palette stuff + //XXX: load dialogs + break; + case 1: + seq_loadWSA(1, "zanfaun.wsa", 9, 0, zanFaunWSAControl); + break; + case 0x294: + seq_waitForChatsToFinish(); + seq_unloadWSA(1); + return 0; + default: + break; + } + + return -1; +} + +int KyraEngine_v2::seq_introPoint(int seqNum) { + debugC(9, kDebugLevelMain, "KyraEngine_v2::seq_introPoint(%i)", seqNum); + + switch (seqNum) { + case 0: + _sound->playTrack(7); + break; + case 1: + seq_loadWSA(1, "point.wsa", 9); + seq_playIntroChat(11); // "Zanthia, youngest of the royal mystics has been selected" + break; + case 0x96: + seq_waitForChatsToFinish(); + seq_unloadWSA(1); + return 0; + default: + break; + } + + return -1; +} + int KyraEngine_v2::seq_introHand(int seqNum) { debugC(9, kDebugLevelMain, "KyraEngine_v2::seq_introHand(%i)", seqNum); - static const SequenceControl hand1bWSAControl[] = { + // XXX: commented out to prevent compiler warnings + /*static const SequenceControl hand1bWSAControl[] = { {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}, {7, 6}, {8, 6}, {9, 6}, {10, 6}, {11, 6}, {11, 12}, {12, 12}, {13, 12}, {12, 12}, {11, 12}, {-1, -1} }; static const SequenceControl hand1cWSAControl[] = { {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {3, 6}, - {4, 6}, {5, 64}, {5, 6}, {-1, -1} }; + {4, 6}, {5, 64}, {5, 6}, {-1, -1} };*/ static const SequenceControl hand2WSAControl[] = { {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, - {0, 6}, {1, 6}, {0, 6}, {1, 6}, {-1, -1} }; + {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, + {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, + {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, + {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, + {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, + {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, + {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, + {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, + {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, + {0, 6}, {1, 6}, {0, 6}, {1, 6}, {0, 6}, {1, 6}, {-1, -1} }; static const SequenceControl hand3WSAControl[] = { {0, 6}, {1, 6}, {2, 6}, {1, 6}, + {0, 6}, {1, 6}, {2, 6}, {1, 6}, + {0, 6}, {1, 6}, {2, 6}, {1, 6}, + {0, 6}, {1, 6}, {2, 6}, {1, 6}, + {0, 6}, {1, 6}, {2, 6}, {1, 6}, + {0, 6}, {1, 6}, {2, 6}, {1, 6}, + {0, 6}, {1, 6}, {2, 6}, {1, 6}, + {0, 6}, {1, 6}, {2, 6}, {1, 6}, + {0, 6}, {1, 6}, {2, 6}, {1, 6}, + {0, 6}, {1, 6}, {2, 6}, {1, 6}, + {0, 6}, {1, 6}, {2, 6}, {1, 6}, + {0, 6}, {1, 6}, {2, 6}, {1, 6}, {0, 6}, {-1, -1} }; static const SequenceControl hand4WSAControl[] = { {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, - {3, 6}, {2, 6}, {1, 6}, {-1, -1} }; + {3, 6}, {2, 6}, {1, 6}, {0, 6}, + {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, + {3, 6}, {2, 6}, {1, 6}, {0, 6}, + {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, + {3, 6}, {2, 6}, {1, 6}, {0, 6}, + {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, + {3, 6}, {2, 6}, {1, 6}, {0, 6}, + {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, + {3, 6}, {2, 6}, {1, 6}, {0, 6}, + {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, + {3, 6}, {2, 6}, {1, 6}, {0, 6}, + {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, + {3, 6}, {2, 6}, {1, 6}, {0, 6}, + {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, + {3, 6}, {2, 6}, {1, 6}, {0, 6}, + {-1, -1} }; switch (seqNum) { case 0: _sound->playTrack(6); - seq_playIntroChat(7); //palette stuff break; case 1: // XXX: these show as garbage. New frame encode? - seq_loadWSA(1, "hand1a.wsa", 9); + /*seq_loadWSA(1, "hand1a.wsa", 9); seq_loadWSA(2, "hand1b.wsa", 9, 0, hand1bWSAControl); - seq_loadWSA(3, "hand1c.wsa", 9, 0, hand1cWSAControl); + seq_loadWSA(3, "hand1c.wsa", 9, 0, hand1cWSAControl);*/ + seq_playIntroChat(7); // "Luckily, the Hand was experienced in these matters" break; case 0xc9: // palette stuff seq_loadWSA(4, "hand2.wsa", 9, 0, hand2WSAControl); - seq_playIntroChat(8); + seq_waitForChatsToFinish(); + seq_playIntroChat(8); // "and finally, a plan was approved" break; case 0x18b: - seq_waitForChatsToFinish(); seq_loadWSA(5, "hand3.wsa", 9, 0, hand3WSAControl); + seq_waitForChatsToFinish(); + seq_playIntroChat(9); // "which required a magic anchorstone" break; case 0x1f4: - seq_waitForChatsToFinish(); seq_loadWSA(6, "hand4.wsa", 9, 0, hand4WSAControl); + seq_waitForChatsToFinish(); + seq_playIntroChat(10); // "to be retrieved from the center of the world" break; - case 0x21c: - seq_playIntroChat(10); - break; - case 0x276: + case 0x320: seq_waitForChatsToFinish(); - seq_unloadWSA(1); + /*seq_unloadWSA(1); seq_unloadWSA(2); - seq_unloadWSA(3); + seq_unloadWSA(3);*/ seq_unloadWSA(4); seq_unloadWSA(5); seq_unloadWSA(6); @@ -217,7 +319,7 @@ int KyraEngine_v2::seq_introLibrary(int seqNum) { switch (seqNum) { case 0: _sound->playTrack(5); - seq_playIntroChat(4); + seq_playIntroChat(4); // "The royal mystics are baffled" //XXX: palette stuff break; case 1: @@ -230,16 +332,18 @@ int KyraEngine_v2::seq_introLibrary(int seqNum) { seq_loadWSA(2, "darm.wsa", 9); break; case 0x68: - seq_playIntroChat(5); + seq_waitForChatsToFinish(); + seq_playIntroChat(5); // "Every reference has been consulted" break; case 0xF0: seq_waitForChatsToFinish(); seq_loadWSA(3, "library.wsa", 9); break; case 0x154: + seq_waitForChatsToFinish(); // palette stuff seq_loadWSA(4, "marco.wsa", 9); - seq_playIntroChat(6); + seq_playIntroChat(6); // "Even Marko and his new valet have been allowed" break; case 0x294: seq_waitForChatsToFinish(); @@ -269,20 +373,23 @@ int KyraEngine_v2::seq_introOverview(int seqNum) { seq_loadWSA(2, "over2.wsa", 9); break; case 120: - seq_playIntroChat(0); + seq_playIntroChat(0); // "Kyrandia is disappearing!" break; case 200: seq_waitForChatsToFinish(); // XXX: fade to grey + _screen->k2IntroFadeToGrey(40); break; case 201: // XXX break; case 282: + seq_waitForChatsToFinish(); seq_loadWSA(3, "forest.wsa", 6, &KyraEngine_v2::seq_introOverviewForest); - seq_playIntroChat(1); + seq_playIntroChat(1); // "Rock by rock..." break; case 434: + seq_waitForChatsToFinish(); seq_loadWSA(4, "dragon.wsa", 6, &KyraEngine_v2::seq_introOverviewDragon); break; case 540: @@ -314,7 +421,7 @@ void KyraEngine_v2::seq_introOverviewForest(int currentFrame) { seq_waitForChatsToFinish(); } else if(currentFrame == 12) { delay(25); - seq_playIntroChat(2); + seq_playIntroChat(2); // "...and tree by tree..." } } @@ -322,7 +429,7 @@ void KyraEngine_v2::seq_introOverviewDragon(int currentFrame) { debugC(9, kDebugLevelMain, "KyraEngine_v2::seq_introOverviewDragon(%i)", currentFrame); if (currentFrame == 3) - seq_playIntroChat(3); + seq_playIntroChat(3); // "Kyrandia ceases to exist!" else if(currentFrame == 11) seq_waitForChatsToFinish(); } diff --git a/engines/kyra/text.cpp b/engines/kyra/text.cpp index c187959476..58ce3c9d1e 100644 --- a/engines/kyra/text.cpp +++ b/engines/kyra/text.cpp @@ -307,7 +307,7 @@ void KyraEngine::characterSays(int vocFile, const char *chatStr, int8 charNum, i if (textEnabled()) { _animator->restoreAllObjectBackgrounds(); - _screen->copyRegion(12, _text->_talkMessageY, 12, 136, 296, _text->_talkMessageH, 2, 2); + _screen->copyRegion(12, _text->_talkMessageY, 12, 136, 308, _text->_talkMessageH, 2, 2); _screen->hideMouse(); _text->printCharacterText(processedString, charNum, _characterList[charNum].x1); @@ -326,12 +326,12 @@ void KyraEngine::characterSays(int vocFile, const char *chatStr, int8 charNum, i if (textEnabled()) { _animator->restoreAllObjectBackgrounds(); - _screen->copyRegion(12, 136, 12, _text->_talkMessageY, 296, _text->_talkMessageH, 2, 2); + _screen->copyRegion(12, 136, 12, _text->_talkMessageY, 308, _text->_talkMessageH, 2, 2); _animator->preserveAllBackgrounds(); _animator->prepDrawAllObjects(); _screen->hideMouse(); - _screen->copyRegion(12, _text->_talkMessageY, 12, _text->_talkMessageY, 296, _text->_talkMessageH, 2, 0); + _screen->copyRegion(12, _text->_talkMessageY, 12, _text->_talkMessageY, 308, _text->_talkMessageH, 2, 0); _screen->showMouse(); _animator->flagAllObjectsForRefresh(); _animator->copyChangedObjectsForward(0); |