aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/wintermute/Base/BSurfaceSDL.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/engines/wintermute/Base/BSurfaceSDL.cpp b/engines/wintermute/Base/BSurfaceSDL.cpp
index f41839a244..c0157696d6 100644
--- a/engines/wintermute/Base/BSurfaceSDL.cpp
+++ b/engines/wintermute/Base/BSurfaceSDL.cpp
@@ -90,6 +90,7 @@ HRESULT CBSurfaceSDL::Create(const char *Filename, bool default_ck, byte ck_red,
imgDecoder->loadStream(*file);
const Graphics::Surface *surface = imgDecoder->getSurface();
+ const byte* palette = imgDecoder->getPalette();
Game->_fileManager->CloseFile(file);
if (default_ck) {
@@ -136,7 +137,10 @@ HRESULT CBSurfaceSDL::Create(const char *Filename, bool default_ck, byte ck_red,
// no alpha, set color key
/* if (surface->format.bytesPerPixel != 4)
SDL_SetColorKey(surf, SDL_TRUE, SDL_MapRGB(surf->format, ck_red, ck_green, ck_blue));*/
- if (surface->format.bytesPerPixel == 4 && surface->format != g_system->getScreenFormat()) {
+ if (surface->format.bytesPerPixel == 1 && palette) {
+ _surface = surface->convertTo(g_system->getScreenFormat(), palette);
+ }
+ else if (surface->format.bytesPerPixel == 4 && surface->format != g_system->getScreenFormat()) {
_surface = surface->convertTo(g_system->getScreenFormat());
} else {
_surface = new Graphics::Surface();