diff --git a/src/blitter/32bpp_optimized.cpp b/src/blitter/32bpp_optimized.cpp --- a/src/blitter/32bpp_optimized.cpp +++ b/src/blitter/32bpp_optimized.cpp @@ -252,7 +252,7 @@ void Blitter_32bppOptimized::Draw(Blitte } } -Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) +template Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) { /* streams of pixels (a, r, g, b channels) * @@ -322,7 +322,7 @@ Sprite *Blitter_32bppOptimized::Encode(c if (a != 0) { dst_px->a = a; *dst_n = src->m; - if (src->m != 0) { + if (Tpal_to_rgb && src->m != 0) { /* Get brightest value */ uint8 rgb_max = std::max({src->r, src->g, src->b}); @@ -397,3 +397,11 @@ Sprite *Blitter_32bppOptimized::Encode(c return dest_sprite; } + +template Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator); +template Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator); + +Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) +{ + return this->EncodeInternal(sprite, allocator); +}