aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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