aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2013-02-21 18:37:15 +0100
committerWillem Jan Palenstijn2013-02-21 18:37:15 +0100
commit5d36b5fb6ea01dbff27e7c7ae67a4e8ddf02bf6e (patch)
tree62ea21bbf4e34bc4604aad614b6337b50be8de96
parent691f21da96e17a0019e8473881e7d9a8dee2bfd1 (diff)
downloadscummvm-rg350-5d36b5fb6ea01dbff27e7c7ae67a4e8ddf02bf6e.tar.gz
scummvm-rg350-5d36b5fb6ea01dbff27e7c7ae67a4e8ddf02bf6e.tar.bz2
scummvm-rg350-5d36b5fb6ea01dbff27e7c7ae67a4e8ddf02bf6e.zip
HOPKINS: Pre-convert palette
-rw-r--r--engines/hopkins/saveload.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp
index ab9ff33b1d..f934c4c018 100644
--- a/engines/hopkins/saveload.cpp
+++ b/engines/hopkins/saveload.cpp
@@ -288,9 +288,13 @@ void SaveLoadManager::convertThumb16To8(Graphics::Surface *thumb16, Graphics::Su
thumb8->create(thumb16->w, thumb16->h, Graphics::PixelFormat::createFormatCLUT8());
Graphics::PixelFormat pixelFormat16(2, 5, 6, 5, 0, 11, 5, 0, 0);
- uint16 palette[PALETTE_SIZE];
- for (int palIndex = 0; palIndex < PALETTE_SIZE; ++palIndex)
- palette[palIndex] = READ_LE_UINT16(&_vm->_graphicsManager.PAL_PIXELS[palIndex * 2]);
+ byte paletteR[PALETTE_SIZE];
+ byte paletteG[PALETTE_SIZE];
+ byte paletteB[PALETTE_SIZE];
+ for (int palIndex = 0; palIndex < PALETTE_SIZE; ++palIndex) {
+ uint16 p = READ_LE_UINT16(&_vm->_graphicsManager.PAL_PIXELS[palIndex * 2]);
+ pixelFormat16.colorToRGB(p, paletteR[palIndex], paletteG[palIndex], paletteB[palIndex]);
+ }
const uint16 *srcP = (const uint16 *)thumb16->pixels;
byte *destP = (byte *)thumb8->pixels;
@@ -306,8 +310,9 @@ void SaveLoadManager::convertThumb16To8(Graphics::Surface *thumb16, Graphics::Su
// Scan the palette for the closest match
int difference = 99999, foundIndex = 0;
for (int palIndex = 0; palIndex < PALETTE_SIZE; ++palIndex) {
- byte rCurrent, gCurrent, bCurrent;
- pixelFormat16.colorToRGB(palette[palIndex], rCurrent, gCurrent, bCurrent);
+ byte rCurrent = paletteR[palIndex];
+ byte gCurrent = paletteG[palIndex];
+ byte bCurrent = paletteB[palIndex];
int diff = ABS((int)r - (int)rCurrent) + ABS((int)g - (int)gCurrent) + ABS((int)b - (int)bCurrent);
if (diff < difference) {