diff options
author | lukaslw | 2014-11-09 22:19:20 +0100 |
---|---|---|
committer | lukaslw | 2014-11-09 22:20:36 +0100 |
commit | 54a4b2fa863b5fd9469e360ecd7c4b0717b373fe (patch) | |
tree | c30e0e529475c3ef43e22c5cfa1f9ab8f718f6d2 /engines/prince | |
parent | 5594feff2a7a209d62b5ecfba02262680fd27d97 (diff) | |
download | scummvm-rg350-54a4b2fa863b5fd9469e360ecd7c4b0717b373fe.tar.gz scummvm-rg350-54a4b2fa863b5fd9469e360ecd7c4b0717b373fe.tar.bz2 scummvm-rg350-54a4b2fa863b5fd9469e360ecd7c4b0717b373fe.zip |
PRINCE: Double animation of bird after 'throw a rock' mini-game fix
Diffstat (limited to 'engines/prince')
-rw-r--r-- | engines/prince/script.cpp | 11 | ||||
-rw-r--r-- | engines/prince/script.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/engines/prince/script.cpp b/engines/prince/script.cpp index 1e50fe5ec4..4ed3cee6f3 100644 --- a/engines/prince/script.cpp +++ b/engines/prince/script.cpp @@ -722,6 +722,17 @@ void Interpreter::O_PUTBACKANIM() { _vm->_script->installSingleBackAnim(_vm->_backAnimList, slot, room->_backAnim); } delete room; + + // WALKAROUND: fix for turning on 'walking bird' background animation too soon, + // after completing 'throw a rock' mini-game in Silmaniona location. + // Second bird shouldn't appear when normal animation is still in use + // in script lines 13814 and 13848 + if (_currentInstruction == kSecondBirdAnimationScriptFix) { + if (_vm->_normAnimList[1]._state == 0) { + _vm->_backAnimList[0].backAnims[0]._state = 1; + } + } + debugInterpreter("O_PUTBACKANIM roomId %d, slot %d, animId %d", roomId, slot, animId); } diff --git a/engines/prince/script.h b/engines/prince/script.h index 23c0468d15..fe79cf5f96 100644 --- a/engines/prince/script.h +++ b/engines/prince/script.h @@ -242,6 +242,7 @@ private: static OpcodeFunc _opcodes[]; static const uint kGiveLetterScriptFix = 79002; + static const uint kSecondBirdAnimationScriptFix = 45658; // Keep opcode handlers names as they are in original code // making it easier to switch back and forth |