diff options
| -rw-r--r-- | engines/sci/graphics/picture.cpp | 12 | 
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);  | 
