[Scummvm-cvs-logs] SF.net SVN: scummvm:[41949] scummvm/trunk/engines/kyra/kyra_mr.cpp

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Mon Jun 29 18:08:39 CEST 2009


Revision: 41949
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41949&view=rev
Author:   lordhoto
Date:     2009-06-29 16:08:39 +0000 (Mon, 29 Jun 2009)

Log Message:
-----------
Cleanup KyraEngine_MR::updateCharPal.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra_mr.cpp

Modified: scummvm/trunk/engines/kyra/kyra_mr.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_mr.cpp	2009-06-29 16:08:28 UTC (rev 41948)
+++ scummvm/trunk/engines/kyra/kyra_mr.cpp	2009-06-29 16:08:39 UTC (rev 41949)
@@ -898,40 +898,30 @@
 void KyraEngine_MR::updateCharPal(int unk1) {
 	int layer = _screen->getLayer(_mainCharacter.x1, _mainCharacter.y1) - 1;
 	const uint8 *src = _costPalBuffer + _characterShapeFile * 72;
-	uint8 *dst = _screen->getPalette(0).getData() + 432;
+	Palette &dst = _screen->getPalette(0);
 	const int8 *sceneDatPal = &_sceneDatPalette[layer * 3];
 
 	if (layer != _lastCharPalLayer && unk1) {
-		for (int i = 0, j = 0; i < 72; ++i) {
-			uint8 col = *dst;
-			int8 addCol = *src + *sceneDatPal;
-			addCol = MAX<int8>(0, MIN<int8>(addCol, 63));
-			addCol = (col - addCol) >> 1;
-			*dst -= addCol;
-			++dst;
-			++src;
-			++sceneDatPal;
-			++j;
-			if (j > 3) {
-				sceneDatPal = &_sceneDatPalette[layer * 3];
-				j = 0;
+		for (int i = 144; i < 168; ++i) {
+			for (int j = 0; j <  3; ++j) {
+				uint8 col = dst[i * 3 + j];
+				uint8 subCol = src[(i - 144) * 3 + j] + sceneDatPal[j];
+				subCol = CLIP<uint8>(subCol, 0, 63);
+				subCol = (col - subCol) >> 1;
+				dst[i * 3 + j] -= subCol;
 			}
 		}
+
 		_charPalUpdate = true;
 		_screen->setScreenPalette(_screen->getPalette(0));
 		_lastCharPalLayer = layer;
 	} else if (_charPalUpdate || !unk1) {
-		memcpy(dst, src, 72);
+		dst.copy(_costPalBuffer, _characterShapeFile * 24, 24, 144);
 
-		for (int i = 0, j = 0; i < 72; ++i) {
-			uint8 col = *dst + *sceneDatPal;
-			*dst = MAX<int8>(0, MIN<int8>(col, 63));
-			++dst;
-			++sceneDatPal;
-			++j;
-			if (j >= 3) {
-				sceneDatPal = &_sceneDatPalette[layer * 3];
-				j = 0;
+		for (int i = 144; i < 168; ++i) {
+			for (int j = 0; j < 3; ++j) {
+				uint8 col = dst[i * 3 + j] + sceneDatPal[j];
+				dst[i * 3 + j] = CLIP<uint8>(col, 0, 63);
 			}
 		}
 


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