[Scummvm-cvs-logs] SF.net SVN: scummvm:[46065] scummvm/trunk/engines/scumm/palette.cpp

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Sun Nov 22 09:49:19 CET 2009


Revision: 46065
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46065&view=rev
Author:   Kirben
Date:     2009-11-22 08:49:19 +0000 (Sun, 22 Nov 2009)

Log Message:
-----------
Add patch for Tobias, for more accurate palette in PCE version of Loom.

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/palette.cpp

Modified: scummvm/trunk/engines/scumm/palette.cpp
===================================================================
--- scummvm/trunk/engines/scumm/palette.cpp	2009-11-22 08:36:14 UTC (rev 46064)
+++ scummvm/trunk/engines/scumm/palette.cpp	2009-11-22 08:49:19 UTC (rev 46065)
@@ -204,9 +204,9 @@
 
 void colorPCEToRGB(uint16 color, byte *r, byte *g, byte *b) {
 	// 3 bits for each color component: 0xgggrrrbbb
-	*b = ((color)      & 0x7) << 5;
-	*r = ((color >> 3) & 0x7) << 5;
-	*g = ((color >> 6) & 0x7) << 5;
+	*b = ((color)      & 0x7) * 0xFF / 0x7;
+	*r = ((color >> 3) & 0x7) * 0xFF / 0x7;
+	*g = ((color >> 6) & 0x7) * 0xFF / 0x7;
 }
 
 void ScummEngine::setPCETextPalette(uint8 color) {
@@ -242,6 +242,7 @@
 void ScummEngine::setPCEPaletteFromPtr(const byte *ptr) {
 	byte *dest;
 	byte bgSpriteR, bgSpriteG, bgSpriteB;
+	byte charsetR, charsetG, charsetB;
 
 	int paletteOffset = *ptr++;
 	int numPalettes = *ptr++;	
@@ -254,6 +255,9 @@
 	colorPCEToRGB(READ_LE_UINT16(ptr), &bgSpriteR, &bgSpriteG, &bgSpriteB);
 	ptr += 2;
 
+	// CHARSET_COLORS[_curTextColor] (unused?)
+	colorPCEToRGB(0x01B6, &charsetR, &charsetG, &charsetB);
+
 	dest = _currentPalette + firstIndex * 3;
 
 	for (int i = 0; i < numPalettes; ++i) {
@@ -265,10 +269,10 @@
 		// entry 1 - 14
 		readPCEPalette(&ptr, &dest, 14);
 
-		// entry 15: DEFAULT_PALETTE[var3AE3];
-		*dest++ = 6 << 5;
-		*dest++ = 6 << 5;
-		*dest++ = 6 << 5;
+		// entry 15
+		*dest++ = charsetR;
+		*dest++ = charsetG;
+		*dest++ = charsetB;
 	}
 
 	if (_game.features & GF_16BIT_COLOR) {


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