diff options
Diffstat (limited to 'scumm/bomp.cpp')
-rw-r--r-- | scumm/bomp.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/scumm/bomp.cpp b/scumm/bomp.cpp index 016ce4abbe..36e9cfc2a7 100644 --- a/scumm/bomp.cpp +++ b/scumm/bomp.cpp @@ -29,7 +29,7 @@ namespace Scumm { static void bompScaleFuncX(byte *line_buffer, byte *scaling_x_ptr, byte skip, int32 size); -static void bompApplyShadow0(const byte *line_buffer, byte *dst, int32 size, byte transparency); +static void bompApplyShadow0(const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency, byte humongous); static void bompApplyShadow1(const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency); static void bompApplyShadow3(const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency); static void bompApplyActorPalette(byte *actorPalette, byte *line_buffer, int32 size); @@ -111,11 +111,11 @@ void bompApplyMask(byte *line_buffer, byte *mask, byte maskbit, int32 size, byte } } -void bompApplyShadow(int shadowMode, const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency) { +void bompApplyShadow(int shadowMode, const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency, byte humongous) { assert(size > 0); switch(shadowMode) { case 0: - bompApplyShadow0(line_buffer, dst, size, transparency); + bompApplyShadow0(shadowPalette, line_buffer, dst, size, transparency, humongous); break; case 1: bompApplyShadow1(shadowPalette, line_buffer, dst, size, transparency); @@ -127,11 +127,14 @@ void bompApplyShadow(int shadowMode, const byte *shadowPalette, const byte *line error("Unknown shadow mode %d", shadowMode); } } -void bompApplyShadow0(const byte *line_buffer, byte *dst, int32 size, byte transparency) { +void bompApplyShadow0(const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency, byte humongous = false) { while (size-- > 0) { byte tmp = *line_buffer++; if (tmp != transparency) { - *dst = tmp; + if (humongous) + *dst = shadowPalette[tmp]; + else + *dst = tmp; } dst++; } |