aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMartin Kiewitz2015-06-12 23:34:32 +0200
committerMartin Kiewitz2015-06-12 23:34:32 +0200
commit8d385f300e0b81d89cf787fff89e0c89c4e124b3 (patch)
treefe832f0545138621df59cf24703ec3256c60972d /engines
parentfd14f53a3b80b6d26425e3c7b724f76c7d7ac6d8 (diff)
downloadscummvm-rg350-8d385f300e0b81d89cf787fff89e0c89c4e124b3.tar.gz
scummvm-rg350-8d385f300e0b81d89cf787fff89e0c89c4e124b3.tar.bz2
scummvm-rg350-8d385f300e0b81d89cf787fff89e0c89c4e124b3.zip
SHERLOCK: 3DO: implement offX/Y for cel room data
fixes graphical glitches when watson sits down
Diffstat (limited to 'engines')
-rw-r--r--engines/sherlock/image_file.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/engines/sherlock/image_file.cpp b/engines/sherlock/image_file.cpp
index 660c38e2f7..9ee3e33608 100644
--- a/engines/sherlock/image_file.cpp
+++ b/engines/sherlock/image_file.cpp
@@ -555,6 +555,8 @@ void ImageFile3DO::load3DOCelFile(Common::SeekableReadStream &stream) {
void ImageFile3DO::load3DOCelRoomData(Common::SeekableReadStream &stream) {
int streamSize = stream.size();
uint16 roomDataHeader_size = 0;
+ byte roomDataHeader_offsetX = 0;
+ byte roomDataHeader_offsetY = 0;
// CCB chunk (cel control block)
uint32 ccbFlags = 0;
@@ -574,7 +576,8 @@ void ImageFile3DO::load3DOCelRoomData(Common::SeekableReadStream &stream) {
// 3DO sherlock holmes room data header
stream.skip(4); // Possibly UINT16 width, UINT16 height?!?!
roomDataHeader_size = stream.readUint16BE();
- stream.skip(2); // seems to be filler
+ roomDataHeader_offsetX = stream.readByte();
+ roomDataHeader_offsetY = stream.readByte();
// 3DO raw cel control block
ccbFlags = stream.readUint32BE();
@@ -617,8 +620,8 @@ void ImageFile3DO::load3DOCelRoomData(Common::SeekableReadStream &stream) {
imageFrame._width = ccbWidth;
imageFrame._height = ccbHeight;
imageFrame._paletteBase = 0;
- imageFrame._offset.x = 0;
- imageFrame._offset.y = 0;
+ imageFrame._offset.x = roomDataHeader_offsetX;
+ imageFrame._offset.y = roomDataHeader_offsetY;
imageFrame._rleEncoded = ccbFlags_compressed;
imageFrame._size = 0;