aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/picture.cpp
diff options
context:
space:
mode:
authorMartin Kiewitz2010-07-28 12:41:24 +0000
committerMartin Kiewitz2010-07-28 12:41:24 +0000
commitdc9c6276815731e976972747bcd9fd761dfee3d1 (patch)
treefd5a66f80f557ffa187a2a975f5029e30ebeabf7 /engines/sci/graphics/picture.cpp
parent0e47192346904858f0cbbc197d957cb68b777ad8 (diff)
downloadscummvm-rg350-dc9c6276815731e976972747bcd9fd761dfee3d1.tar.gz
scummvm-rg350-dc9c6276815731e976972747bcd9fd761dfee3d1.tar.bz2
scummvm-rg350-dc9c6276815731e976972747bcd9fd761dfee3d1.zip
SCI: adding header comments about sci1.1 pictures
also fixing some of the offsets (those are DWORD instead of just WORDs) svn-id: r51415
Diffstat (limited to 'engines/sci/graphics/picture.cpp')
-rw-r--r--engines/sci/graphics/picture.cpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/engines/sci/graphics/picture.cpp b/engines/sci/graphics/picture.cpp
index 4730420a97..e568316919 100644
--- a/engines/sci/graphics/picture.cpp
+++ b/engines/sci/graphics/picture.cpp
@@ -102,19 +102,29 @@ void GfxPicture::drawSci11Vga() {
int size = _resource->size;
int priorityBandsCount = inbuffer[3];
int has_cel = inbuffer[4];
- int vector_dataPos = READ_LE_UINT16(inbuffer + 16);
+ int vector_dataPos = READ_LE_UINT32(inbuffer + 16);
int vector_size = size - vector_dataPos;
- int palette_data_ptr = READ_LE_UINT16(inbuffer + 28);
- int cel_headerPos = READ_LE_UINT16(inbuffer + 32);
- int cel_RlePos = READ_LE_UINT16(inbuffer + cel_headerPos + 24);
- int cel_LiteralPos = READ_LE_UINT16(inbuffer + cel_headerPos + 28);
+ int palette_data_ptr = READ_LE_UINT32(inbuffer + 28);
+ int cel_headerPos = READ_LE_UINT32(inbuffer + 32);
+ int cel_RlePos = READ_LE_UINT32(inbuffer + cel_headerPos + 24);
+ int cel_LiteralPos = READ_LE_UINT32(inbuffer + cel_headerPos + 28);
Palette palette;
+ // Header
+ // [headerSize:WORD] [unknown:BYTE] [priorityBandCount:BYTE] [hasCel:BYTE] [unknown:BYTE]
+ // [unknown:WORD] [unknown:WORD] [unknown:WORD] [unknown:WORD] [unknown:WORD]
+ // Offset 16
+ // [vectorDataOffset:DWORD] [unknown:DWORD] [unknown:DWORD] [paletteDataOffset:DWORD]
+ // Offset 32
+ // [celHeaderOffset:DWORD] [unknown:DWORD]
+ // [priorityBandData:WORD] * priorityBandCount
+ // [priority:BYTE] [unknown:BYTE]
+
// Create palette and set it
_palette->createFromData(inbuffer + palette_data_ptr, size - palette_data_ptr, &palette);
_palette->set(&palette, true);
- // priority bands are supposed to be 14
+ // priority bands are supposed to be 14 for sci1.1 pictures
assert(priorityBandsCount == 14);
if (_addToFlag) {