diff options
author | Strangerke | 2013-02-22 19:23:21 +0100 |
---|---|---|
committer | Strangerke | 2013-02-22 19:23:21 +0100 |
commit | 5297f6370749dfaff9b6b80ea9f10b855cd1b58f (patch) | |
tree | 68414532c8884dd18ee83f89041b0a9f9a72e874 /engines/hopkins/script.cpp | |
parent | 29c664a6966cd333862f2d1d3cd09a182be7f985 (diff) | |
download | scummvm-rg350-5297f6370749dfaff9b6b80ea9f10b855cd1b58f.tar.gz scummvm-rg350-5297f6370749dfaff9b6b80ea9f10b855cd1b58f.tar.bz2 scummvm-rg350-5297f6370749dfaff9b6b80ea9f10b855cd1b58f.zip |
HOPKINS: Fix the crash related to the missing speech file in the Win95 English demo
Diffstat (limited to 'engines/hopkins/script.cpp')
-rw-r--r-- | engines/hopkins/script.cpp | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/engines/hopkins/script.cpp b/engines/hopkins/script.cpp index 691a9ec65f..c133b3e9d8 100644 --- a/engines/hopkins/script.cpp +++ b/engines/hopkins/script.cpp @@ -132,22 +132,27 @@ int ScriptManager::handleOpcode(byte *dataP) { _vm->_eventsManager.VBL(); } while (_vm->_soundManager._soundFl); } + bool displayedTxtFl = false; if (!_vm->_soundManager._textOffFl) { int textPosX = READ_LE_INT16(dataP + 9); int textPosY = READ_LE_INT16(dataP + 11); _vm->_fontManager.initTextBuffers(9, mesgId, _vm->_globals._textFilename, 2 * textPosX, 2 * textPosY + 40, 6, dataP[7], 253); - if (!_vm->_soundManager._textOffFl) - _vm->_fontManager.showText(9); + _vm->_fontManager.showText(9); + displayedTxtFl = true; } if (!_vm->_soundManager._voiceOffFl) - _vm->_soundManager.mixVoice(mesgId, 4); + _vm->_soundManager.mixVoice(mesgId, 4, displayedTxtFl); } else { // if (TRAVAILOBJET) if (_vm->_globals._saveData->_data[svField356]) { _vm->_fontManager.initTextBuffers(9, 635, _vm->_globals._textFilename, 55, 20, dataP[8], 35, 253); - if (!_vm->_soundManager._textOffFl) + bool displayedTxtFl = false; + if (!_vm->_soundManager._textOffFl) { _vm->_fontManager.showText(9); + displayedTxtFl = true; + } + if (!_vm->_soundManager._voiceOffFl) - _vm->_soundManager.mixVoice(635, 4); + _vm->_soundManager.mixVoice(635, 4, displayedTxtFl); } else { int textPosX = READ_LE_INT16(dataP + 9); if (_vm->_globals._language == LANG_FR && !_vm->_soundManager._textOffFl) @@ -158,11 +163,14 @@ int ScriptManager::handleOpcode(byte *dataP) { _vm->_fontManager.initTextBuffers(9, mesgId, "OBJETES.TXT", 2 * textPosX, 60, 6, dataP[7], 253); } - if (!_vm->_soundManager._textOffFl) + bool displayedTxtFl = false; + if (!_vm->_soundManager._textOffFl) { _vm->_fontManager.showText(9); + displayedTxtFl = true; + } if (!_vm->_soundManager._voiceOffFl) - _vm->_soundManager.mixVoice(mesgId, 5); + _vm->_soundManager.mixVoice(mesgId, 5, displayedTxtFl); } } break; @@ -2163,12 +2171,14 @@ int ScriptManager::handleOpcode(byte *dataP) { _vm->_objectsManager.stopBobAnimation(1); _vm->_objectsManager.setBobAnimation(2); _vm->_fontManager.hideText(9); + bool displayedTxtFl = false; if (!_vm->_soundManager._textOffFl) { _vm->_fontManager.initTextBuffers(9, 617, _vm->_globals._textFilename, 91, 41, 3, 30, 253); _vm->_fontManager.showText(9); + displayedTxtFl = true; } if (!_vm->_soundManager._voiceOffFl) - _vm->_soundManager.mixVoice(617, 4); + _vm->_soundManager.mixVoice(617, 4, displayedTxtFl); for (int i = 0; i <= 29; i++) { if (_vm->shouldQuit()) return -1; // Exiting game |