From fad30af04566ac40c1b210100ed2a87a69c760c9 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 1 May 2013 15:38:07 +0200 Subject: HOPKINS: Fix bug#3612110 - Script bug in FBI lab --- engines/hopkins/script.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'engines') diff --git a/engines/hopkins/script.cpp b/engines/hopkins/script.cpp index 941f23442d..5bc289095d 100644 --- a/engines/hopkins/script.cpp +++ b/engines/hopkins/script.cpp @@ -48,6 +48,7 @@ int ScriptManager::handleOpcode(const byte *dataP) { int vbobFrameIndex = 0; uint32 signature24 = READ_BE_UINT24(&dataP[2]); + warning("%c%c%c", dataP[2], dataP[3], dataP[4]); switch (signature24) { case MKTAG24('T', 'X', 'T'): { vbobFrameIndex = dataP[6]; @@ -198,6 +199,12 @@ int ScriptManager::handleOpcode(const byte *dataP) { break; case MKTAG24('S', 'T', 'P'): if (!_vm->_objectsMan->_disableFl) { + // HACK: This piece of code is a replacement to the missing STE opcode when entering the FBI lab. + if (_vm->_globals->_curRoomNum == 10) { + _vm->_globals->_prevScreenId = _vm->_globals->_screenId; + _vm->_globals->_saveData->_data[svLastPrevScreenId] = _vm->_globals->_screenId; + _vm->_globals->_screenId = _vm->_globals->_saveData->_data[svLastScreenId] = 10; + } _vm->_objectsMan->_twoCharactersFl = false; _vm->_objectsMan->_characterPos.x = READ_LE_INT16(dataP + 6); _vm->_objectsMan->_characterPos.y = READ_LE_INT16(dataP + 8); -- cgit v1.2.3