aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/picture.cpp
diff options
context:
space:
mode:
authorMartin Kiewitz2010-07-21 13:13:55 +0000
committerMartin Kiewitz2010-07-21 13:13:55 +0000
commite1bc084547ff6235fe35e8f9830f34859c255db7 (patch)
tree9d7e22edff54c68e57e31216c4f99adc00e37f67 /engines/sci/graphics/picture.cpp
parent54c516b3bf34ce2f6f4e7f499839dfad2d5fa68a (diff)
downloadscummvm-rg350-e1bc084547ff6235fe35e8f9830f34859c255db7.tar.gz
scummvm-rg350-e1bc084547ff6235fe35e8f9830f34859c255db7.tar.bz2
scummvm-rg350-e1bc084547ff6235fe35e8f9830f34859c255db7.zip
SCI: fixing hires background pictures sci2.1
svn-id: r51086
Diffstat (limited to 'engines/sci/graphics/picture.cpp')
-rw-r--r--engines/sci/graphics/picture.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/engines/sci/graphics/picture.cpp b/engines/sci/graphics/picture.cpp
index 1416412b33..65a253459e 100644
--- a/engines/sci/graphics/picture.cpp
+++ b/engines/sci/graphics/picture.cpp
@@ -79,7 +79,7 @@ void GfxPicture::draw(int16 animationNr, bool mirroredFlag, bool addToFlag, int1
#ifdef ENABLE_SCI32
case 0x0e: // SCI32 VGA picture
_resourceType = SCI_PICTURE_TYPE_SCI32;
- drawSci32Vga();
+ //drawSci32Vga();
break;
#endif
default:
@@ -131,7 +131,7 @@ int16 GfxPicture::getSci32celCount() {
return inbuffer[2];
}
-void GfxPicture::drawSci32Vga(int16 celNo) {
+void GfxPicture::drawSci32Vga(int16 celNo, uint16 planeResY, uint16 planeResX) {
byte *inbuffer = _resource->data;
int size = _resource->size;
int header_size = READ_LE_UINT16(inbuffer);
@@ -162,6 +162,11 @@ void GfxPicture::drawSci32Vga(int16 celNo) {
cel_LiteralPos = READ_LE_UINT32(inbuffer + cel_headerPos + 28);
cel_relXpos = READ_LE_UINT16(inbuffer + cel_headerPos + 38);
cel_relYpos = READ_LE_UINT16(inbuffer + cel_headerPos + 40);
+
+ // This is really weird, adjusting picture data to plane resolution - why...
+ cel_relYpos = ((cel_relYpos * g_sci->_gfxScreen->getHeight()) / planeResY);
+ cel_relXpos = ((cel_relXpos * g_sci->_gfxScreen->getWidth()) / planeResX);
+
drawCelData(inbuffer, size, cel_headerPos, cel_RlePos, cel_LiteralPos, cel_relXpos, cel_relYpos);
cel_headerPos += 42;
celCount--;