[Scummvm-cvs-logs] SF.net SVN: scummvm:[45249] scummvm/trunk/engines/sci/gui

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Mon Oct 19 20:06:33 CEST 2009


Revision: 45249
          http://scummvm.svn.sourceforge.net/scummvm/?rev=45249&view=rev
Author:   m_kiewitz
Date:     2009-10-19 18:06:33 +0000 (Mon, 19 Oct 2009)

Log Message:
-----------
SCI/newgui: SciGuiPicture - fix drawing of mirrored embedded cel-data in vectordata (fixes lsl5 scene)

Modified Paths:
--------------
    scummvm/trunk/engines/sci/gui/gui_picture.cpp
    scummvm/trunk/engines/sci/gui/gui_picture.h

Modified: scummvm/trunk/engines/sci/gui/gui_picture.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_picture.cpp	2009-10-19 17:47:25 UTC (rev 45248)
+++ scummvm/trunk/engines/sci/gui/gui_picture.cpp	2009-10-19 18:06:33 UTC (rev 45249)
@@ -464,7 +464,7 @@
 				case PIC_OPX_EGA_MONO4:
 					break;
 				case PIC_OPX_EGA_EMBEDDED_VIEW:
-					vectorGetAbsCoords(data, curPos, x, y);
+					vectorGetAbsCoordsNoMirror(data, curPos, x, y);
 					size = READ_LE_UINT16(data + curPos); curPos += 2;
 					_priority = pic_priority; // set global priority so the cel gets drawn using current priority as well
 					drawCelData(data, _resource->size, curPos, curPos + 8, 0, x, y);
@@ -493,7 +493,7 @@
 					_palette->set(&palette, 2);
 					break;
 				case PIC_OPX_VGA_EMBEDDED_VIEW: // draw cel
-					vectorGetAbsCoords(data, curPos, x, y);
+					vectorGetAbsCoordsNoMirror(data, curPos, x, y);
 					size = READ_LE_UINT16(data + curPos); curPos += 2;
 					_priority = pic_priority; // set global priority so the cel gets drawn using current priority as well
 					drawCelData(data, _resource->size, curPos, curPos + 8, 0, x, y);
@@ -539,6 +539,12 @@
 	if (_mirroredFlag) x = 319 - x;
 }
 
+void SciGuiPicture::vectorGetAbsCoordsNoMirror(byte *data, int &curPos, int16 &x, int16 &y) {
+	byte byte = data[curPos++];
+	x = data[curPos++] + ((byte & 0xF0) << 4);
+	y = data[curPos++] + ((byte & 0x0F) << 8);
+}
+
 void SciGuiPicture::vectorGetRelCoords(byte *data, int &curPos, int16 &x, int16 &y) {
 	byte byte = data[curPos++];
 	if (byte & 0x80) {

Modified: scummvm/trunk/engines/sci/gui/gui_picture.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_picture.h	2009-10-19 17:47:25 UTC (rev 45248)
+++ scummvm/trunk/engines/sci/gui/gui_picture.h	2009-10-19 18:06:33 UTC (rev 45249)
@@ -48,6 +48,7 @@
 	void drawVectorData(byte *data, int size);
 	bool vectorIsNonOpcode(byte byte);
 	void vectorGetAbsCoords(byte *data, int &curPos, int16 &x, int16 &y);
+	void vectorGetAbsCoordsNoMirror(byte *data, int &curPos, int16 &x, int16 &y);
 	void vectorGetRelCoords(byte *data, int &curPos, int16 &x, int16 &y);
 	void vectorGetRelCoordsMed(byte *data, int &curPos, int16 &x, int16 &y);
 	void vectorGetPatternTexture(byte *data, int &curPos, int16 pattern_Code, int16 &pattern_Texture);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list