[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