Skip to content

Commit

Permalink
PRINCE: getBlendTableColor() - fix for wrong colors
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaslw committed Jun 22, 2014
1 parent dcd9c48 commit bc3ce22
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 16 deletions.
20 changes: 7 additions & 13 deletions engines/prince/graphics.cpp
Expand Up @@ -185,19 +185,14 @@ byte GraphicsMan::getBlendTableColor(byte pixelColor, byte backgroundPixelColor)
if (_blendTable[pixelColor] != 255) {
currColor = _blendTable[pixelColor];
} else {
const byte *originalPalette = _vm->_roomBmp->getPalette(); //?
const byte *suitcasePalette = _vm->_suitcaseBmp->getPalette(); //?
const byte *originalPalette = _vm->_roomBmp->getPalette();

//debug("backgroundPixelColor: %d", backgroundPixelColor);
//debug("orgpalette: %d", pixelColor);
//debug("mst_shadow: %d", _vm->_mst_shadow);

redFirstOrg = originalPalette[pixelColor * 4] * _vm->_mst_shadow / 256;
redFirstOrg = originalPalette[pixelColor * 3] * _vm->_mst_shadow / 256;
if (redFirstOrg >= 256) {
redFirstOrg = 255;
}
if (_vm->_mst_shadow <= 256) {
redFirstBack = suitcasePalette[backgroundPixelColor * 4] * (256 - _vm->_mst_shadow) / 256;
redFirstBack = originalPalette[backgroundPixelColor * 3] * (256 - _vm->_mst_shadow) / 256;
if (redFirstBack >= 256) {
redFirstBack = 255;
}
Expand All @@ -207,12 +202,12 @@ byte GraphicsMan::getBlendTableColor(byte pixelColor, byte backgroundPixelColor)
}
}

greenFirstOrg = originalPalette[pixelColor * 4 + 1] * _vm->_mst_shadow / 256;
greenFirstOrg = originalPalette[pixelColor * 3 + 1] * _vm->_mst_shadow / 256;
if (greenFirstOrg >= 256) {
greenFirstOrg = 255;
}
if (_vm->_mst_shadow <= 256) {
greenFirstBack = suitcasePalette[backgroundPixelColor * 4 + 1] * (256 - _vm->_mst_shadow) / 256;
greenFirstBack = originalPalette[backgroundPixelColor * 3 + 1] * (256 - _vm->_mst_shadow) / 256;
if (greenFirstBack >= 256) {
greenFirstBack = 255;
}
Expand All @@ -222,12 +217,12 @@ byte GraphicsMan::getBlendTableColor(byte pixelColor, byte backgroundPixelColor)
}
}

blueFirstOrg = originalPalette[pixelColor * 4 + 2] * _vm->_mst_shadow / 256;
blueFirstOrg = originalPalette[pixelColor * 3 + 2] * _vm->_mst_shadow / 256;
if (blueFirstOrg >= 256) {
blueFirstOrg = 255;
}
if (_vm->_mst_shadow <= 256) {
blueFirstBack = suitcasePalette[backgroundPixelColor * 4 + 2] * (256 - _vm->_mst_shadow) / 256;
blueFirstBack = originalPalette[backgroundPixelColor * 3 + 2] * (256 - _vm->_mst_shadow) / 256;
if (blueFirstBack >= 256) {
blueFirstBack = 255;
}
Expand Down Expand Up @@ -265,7 +260,6 @@ byte GraphicsMan::getBlendTableColor(byte pixelColor, byte backgroundPixelColor)
}
_blendTable[pixelColor] = currColor;
}
//debug("currColor: %d", currColor);
return currColor;
}

Expand Down
4 changes: 1 addition & 3 deletions engines/prince/prince.cpp
Expand Up @@ -1378,15 +1378,13 @@ void PrinceEngine::drawInvItems() {
_mst_shadow = 0;
if (_mst_shadow2 != 0) {
if (!_flags->getFlagValue(Flags::CURSEBLINK)) {
//normal:
if (item + 1 == _mainHero->_inventory.size()) { // last item in inventory
_mst_shadow = 1;
}
} else if (itemNr == 1 || itemNr == 3 || itemNr == 4 || itemNr == 7) {
_mst_shadow = 1;
}
}
//shad0:
if (itemNr != 68) {
Graphics::Surface *itemSurface = _allInvList[itemNr].getSurface();
int drawX = currInvX;
Expand All @@ -1401,7 +1399,7 @@ void PrinceEngine::drawInvItems() {
_graph->drawTransparentSurface(drawX, drawY, itemSurface, 0);
} else {
_mst_shadow = _mst_shadow2;
_graph->drawTransparentWithBlend(drawX, drawY, itemSurface, 0); //TODO - ShowSprite01
_graph->drawTransparentWithBlend(drawX, drawY, itemSurface, 0);
}
} else {
// candle item:
Expand Down

0 comments on commit bc3ce22

Please sign in to comment.