From dc9c6276815731e976972747bcd9fd761dfee3d1 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Wed, 28 Jul 2010 12:41:24 +0000 Subject: SCI: adding header comments about sci1.1 pictures also fixing some of the offsets (those are DWORD instead of just WORDs) svn-id: r51415 --- engines/sci/graphics/picture.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'engines/sci/graphics/picture.cpp') 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) { -- cgit v1.2.3