diff options
author | Martin Kiewitz | 2015-06-12 23:34:32 +0200 |
---|---|---|
committer | Martin Kiewitz | 2015-06-12 23:34:32 +0200 |
commit | 8d385f300e0b81d89cf787fff89e0c89c4e124b3 (patch) | |
tree | fe832f0545138621df59cf24703ec3256c60972d /engines | |
parent | fd14f53a3b80b6d26425e3c7b724f76c7d7ac6d8 (diff) | |
download | scummvm-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.cpp | 9 |
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; |