[Scummvm-cvs-logs] SF.net SVN: scummvm:[40571] scummvm/trunk/engines/sci/gfx/res_pal.cpp
wjpalenstijn at users.sourceforge.net
wjpalenstijn at users.sourceforge.net
Thu May 14 23:34:30 CEST 2009
Revision: 40571
http://scummvm.svn.sourceforge.net/scummvm/?rev=40571&view=rev
Author: wjpalenstijn
Date: 2009-05-14 21:34:30 +0000 (Thu, 14 May 2009)
Log Message:
-----------
Only load used palette entries with SCI1/11
Modified Paths:
--------------
scummvm/trunk/engines/sci/gfx/res_pal.cpp
Modified: scummvm/trunk/engines/sci/gfx/res_pal.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/res_pal.cpp 2009-05-14 21:17:04 UTC (rev 40570)
+++ scummvm/trunk/engines/sci/gfx/res_pal.cpp 2009-05-14 21:34:30 UTC (rev 40571)
@@ -41,8 +41,7 @@
Palette *gfxr_read_pal11(int id, byte *resource, int size) {
int start_color = resource[25];
int format = resource[32];
- int offset = (format == SCI_PAL_FORMAT_VARIABLE_FLAGS) ? 1 : 0;
- int entry_size = 3 + offset;
+ int entry_size = (format == SCI_PAL_FORMAT_VARIABLE_FLAGS) ? 4 : 3;
byte *pal_data = resource + 37;
int _colors_nr = READ_LE_UINT16(resource + 29);
Palette *retval = new Palette(_colors_nr + start_color);
@@ -56,7 +55,15 @@
retval->setColor(i, 0, 0, 0);
}
for (i = start_color; i < start_color + _colors_nr; i ++) {
- retval->setColor(i, pal_data[0 + offset], pal_data[1 + offset], pal_data[2 + offset]);
+ switch (format) {
+ case SCI_PAL_FORMAT_CONSTANT_FLAGS:
+ retval->setColor(i, pal_data[0], pal_data[1], pal_data[2]);
+ break;
+ case SCI_PAL_FORMAT_VARIABLE_FLAGS:
+ if (pal_data[0] & 1)
+ retval->setColor(i, pal_data[1], pal_data[2], pal_data[3]);
+ break;
+ }
pal_data += entry_size;
}
@@ -92,7 +99,8 @@
for (pos = 0; pos < counter; pos++) {
unsigned int color = colors[pos];
- retval->setColor(pos, (color >> 8) & 0xff, (color >> 16) & 0xff, (color >> 24) & 0xff);
+ if (color & 1)
+ retval->setColor(pos, (color >> 8) & 0xff, (color >> 16) & 0xff, (color >> 24) & 0xff);
}
return retval;
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