aboutsummaryrefslogtreecommitdiff
path: root/scumm/bomp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/bomp.cpp')
-rw-r--r--scumm/bomp.cpp13
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++;
}