[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