aboutsummaryrefslogtreecommitdiff
path: root/engines/prince
diff options
context:
space:
mode:
authorlukaslw2014-11-09 22:19:20 +0100
committerlukaslw2014-11-09 22:20:36 +0100
commit54a4b2fa863b5fd9469e360ecd7c4b0717b373fe (patch)
treec30e0e529475c3ef43e22c5cfa1f9ab8f718f6d2 /engines/prince
parent5594feff2a7a209d62b5ecfba02262680fd27d97 (diff)
downloadscummvm-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.cpp11
-rw-r--r--engines/prince/script.h1
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