aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/objects.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2015-06-14 10:57:05 -0400
committerPaul Gilbert2015-06-14 10:57:05 -0400
commitb26bc296194c3a745fa9d222862ce1ad12a13e3e (patch)
tree6d90bfc1a0084d42d1f97eacd6e8344d173d16c0 /engines/sherlock/objects.cpp
parentbe5df8e30455b45e20dff36c899ce18184544ed1 (diff)
downloadscummvm-rg350-b26bc296194c3a745fa9d222862ce1ad12a13e3e.tar.gz
scummvm-rg350-b26bc296194c3a745fa9d222862ce1ad12a13e3e.tar.bz2
scummvm-rg350-b26bc296194c3a745fa9d222862ce1ad12a13e3e.zip
SHERLOCK: RT: Fix player animation when enterng scene
Diffstat (limited to 'engines/sherlock/objects.cpp')
-rw-r--r--engines/sherlock/objects.cpp51
1 files changed, 32 insertions, 19 deletions
diff --git a/engines/sherlock/objects.cpp b/engines/sherlock/objects.cpp
index 270ddc8ec4..0d330370e7 100644
--- a/engines/sherlock/objects.cpp
+++ b/engines/sherlock/objects.cpp
@@ -290,26 +290,39 @@ void BaseObject::checkObject() {
} else {
v -= 128;
- // 68-99 is a squence code
+ // 68-99 is a sequence code
if (v > SEQ_TO_CODE) {
- byte *p = &_sequences[_frameNumber];
- v -= SEQ_TO_CODE; // # from 1-32
- _seqTo = v;
- *p = *(p - 1);
-
- if (*p > 128)
- // If the high bit is set, convert to a real frame
- *p -= (byte)(SEQ_TO_CODE - 128);
-
- if (*p > _seqTo)
- *p -= 1;
- else
- *p += 1;
-
- // Will be incremented below to return back to original value
- --_frameNumber;
- v = 0;
-
+ if (IS_ROSE_TATTOO) {
+ ++_frameNumber;
+ byte *p = &_sequences[_frameNumber];
+ _seqTo = *p;
+ *p = *(p - 2);
+
+ if (*p > _seqTo)
+ *p -= 1;
+ else
+ *p += 1;
+
+ --_frameNumber;
+ } else {
+ byte *p = &_sequences[_frameNumber];
+ v -= SEQ_TO_CODE; // # from 1-32
+ _seqTo = v;
+ *p = *(p - 1);
+
+ if (*p > 128)
+ // If the high bit is set, convert to a real frame
+ *p -= (byte)(SEQ_TO_CODE - 128);
+
+ if (*p > _seqTo)
+ *p -= 1;
+ else
+ *p += 1;
+
+ // Will be incremented below to return back to original value
+ --_frameNumber;
+ v = 0;
+ }
} else if (IS_ROSE_TATTOO && v == 10) {
// Set delta for objects
_delta = Common::Point(READ_LE_UINT16(&_sequences[_frameNumber + 1]),