aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/seqplayer.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2006-09-18 17:30:51 +0000
committerJohannes Schickel2006-09-18 17:30:51 +0000
commitf9d1a82cc0011c4db8745d51af30ca8b73c2b1d1 (patch)
tree88b56e9991a75fccd0335bb6ded1a30076fd6389 /engines/kyra/seqplayer.cpp
parent99016886ba0d31f9ccb310c3974b409f884c294d (diff)
downloadscummvm-rg350-f9d1a82cc0011c4db8745d51af30ca8b73c2b1d1.tar.gz
scummvm-rg350-f9d1a82cc0011c4db8745d51af30ca8b73c2b1d1.tar.bz2
scummvm-rg350-f9d1a82cc0011c4db8745d51af30ca8b73c2b1d1.zip
Fixes the Macintosh related problems Krest mentioned on the IRC channel.
(the user has to set the game platform to Macintosh though, since it's atm detected as DOS version) svn-id: r23929
Diffstat (limited to 'engines/kyra/seqplayer.cpp')
-rw-r--r--engines/kyra/seqplayer.cpp28
1 files changed, 21 insertions, 7 deletions
diff --git a/engines/kyra/seqplayer.cpp b/engines/kyra/seqplayer.cpp
index a3dbf63665..8fe98ca72e 100644
--- a/engines/kyra/seqplayer.cpp
+++ b/engines/kyra/seqplayer.cpp
@@ -83,9 +83,8 @@ uint8 *SeqPlayer::setPanPages(int pageNum, int shape) {
data += offs;
uint16 sz = READ_LE_UINT16(data + 6);
panPage = new uint8[sz];
- if (panPage) {
- memcpy(panPage, data, sz);
- }
+ assert(panPage);
+ memcpy(panPage, data, sz);
}
}
return panPage;
@@ -94,10 +93,25 @@ uint8 *SeqPlayer::setPanPages(int pageNum, int shape) {
void SeqPlayer::makeHandShapes() {
debugC(9, kDebugLevelSequence, "SeqPlayer::makeHandShapes()");
_screen->loadBitmap("WRITING.CPS", 3, 3, 0);
- for (int i = 0; i < ARRAYSIZE(_handShapes); ++i) {
- if (_handShapes[i])
- delete [] _handShapes[i];
- _handShapes[i] = setPanPages(3, i);
+ if (_vm->gameFlags().platform == Common::kPlatformMacintosh) {
+ freeHandShapes();
+
+ int pageBackUp = _screen->_curPage;
+ _screen->_curPage = 2;
+ _handShapes[0] = _screen->encodeShape(0, 0, 88, 122, 0);
+ assert(_handShapes[0]);
+ _handShapes[1] = _screen->encodeShape(88, 0, 80, 117, 0);
+ assert(_handShapes[1]);
+ _handShapes[2] = _screen->encodeShape(168, 0, 117, 124, 0);
+ assert(_handShapes[2]);
+ _screen->_curPage = pageBackUp;
+ } else {
+ for (int i = 0; i < ARRAYSIZE(_handShapes); ++i) {
+ if (_handShapes[i])
+ delete [] _handShapes[i];
+ _handShapes[i] = setPanPages(3, i);
+ assert(_handShapes[i]);
+ }
}
}