aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kiewitz2010-07-28 12:28:35 +0000
committerMartin Kiewitz2010-07-28 12:28:35 +0000
commit0e47192346904858f0cbbc197d957cb68b777ad8 (patch)
treeb5670b5dcffe84513f8fbe212e609e972c905dbf
parente0f6bb2e7aa27f9d1ac214bb7f68e0b6bb8a5f78 (diff)
downloadscummvm-rg350-0e47192346904858f0cbbc197d957cb68b777ad8.tar.gz
scummvm-rg350-0e47192346904858f0cbbc197d957cb68b777ad8.tar.bz2
scummvm-rg350-0e47192346904858f0cbbc197d957cb68b777ad8.zip
SCI: priority handling for sci1.1 add-pictures
fixes battle cruiser mini game in sq5 (at least we get something displayed now) svn-id: r51414
-rw-r--r--engines/sci/graphics/picture.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/engines/sci/graphics/picture.cpp b/engines/sci/graphics/picture.cpp
index 107c5d0967..4730420a97 100644
--- a/engines/sci/graphics/picture.cpp
+++ b/engines/sci/graphics/picture.cpp
@@ -73,8 +73,6 @@ void GfxPicture::draw(int16 animationNr, bool mirroredFlag, bool addToFlag, int1
switch (headerSize) {
case 0x26: // SCI 1.1 VGA picture
_resourceType = SCI_PICTURE_TYPE_SCI11;
- if (_addToFlag)
- _priority = 15;
drawSci11Vga();
break;
#ifdef ENABLE_SCI32
@@ -102,7 +100,8 @@ void GfxPicture::reset() {
void GfxPicture::drawSci11Vga() {
byte *inbuffer = _resource->data;
int size = _resource->size;
- int has_cel = READ_LE_UINT16(inbuffer + 4);
+ int priorityBandsCount = inbuffer[3];
+ int has_cel = inbuffer[4];
int vector_dataPos = READ_LE_UINT16(inbuffer + 16);
int vector_size = size - vector_dataPos;
int palette_data_ptr = READ_LE_UINT16(inbuffer + 28);
@@ -115,6 +114,13 @@ void GfxPicture::drawSci11Vga() {
_palette->createFromData(inbuffer + palette_data_ptr, size - palette_data_ptr, &palette);
_palette->set(&palette, true);
+ // priority bands are supposed to be 14
+ assert(priorityBandsCount == 14);
+
+ if (_addToFlag) {
+ _priority = inbuffer[40 + priorityBandsCount * 2] & 0xF;
+ }
+
// display Cel-data
if (has_cel)
drawCelData(inbuffer, size, cel_headerPos, cel_RlePos, cel_LiteralPos, 0, 0, 0);