aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorEugene Sandulenko2016-05-12 18:25:10 +0200
committerEugene Sandulenko2016-05-12 18:25:10 +0200
commit8d08912d223ffb3112107b58b7ff51e0aba56448 (patch)
tree44a34a353a1791876f8a840597d291299d971400 /engines/scumm
parenta3985f38ac536b5a81c13aaeb31de165074e9c6d (diff)
downloadscummvm-rg350-8d08912d223ffb3112107b58b7ff51e0aba56448.tar.gz
scummvm-rg350-8d08912d223ffb3112107b58b7ff51e0aba56448.tar.bz2
scummvm-rg350-8d08912d223ffb3112107b58b7ff51e0aba56448.zip
SCUMM HE: Implement 50/50 T14 blend mode
Diffstat (limited to 'engines/scumm')
-rw-r--r--engines/scumm/he/moonbase/moonbase.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/engines/scumm/he/moonbase/moonbase.cpp b/engines/scumm/he/moonbase/moonbase.cpp
index 414a1772fa..c07bd986d8 100644
--- a/engines/scumm/he/moonbase/moonbase.cpp
+++ b/engines/scumm/he/moonbase/moonbase.cpp
@@ -107,12 +107,16 @@ void Moonbase::blitT14WizImage(uint8 *dst, int dstw, int dsth, int dstPitch, con
WRITE_LE_UINT16(dst1, READ_LE_UINT16(src));
} else if (rawROP == 2) { // MMX_ADDITIVE
uint16 color = READ_LE_UINT16(src);
- uint32 orig = READ_LE_UINT16(dst1);
+ uint16 orig = READ_LE_UINT16(dst1);
uint32 r = MIN<uint32>(0x7c00, (orig & 0x7c00) + (color & 0x7c00));
uint32 g = MIN<uint32>(0x03e0, (orig & 0x03e0) + (color & 0x03e0));
uint32 b = MIN<uint32>(0x001f, (orig & 0x001f) + (color & 0x001f));
WRITE_LE_UINT16(dst1, (r | g | b));
+ } else if (rawROP == 5) { // MMX_CHEAP_50_50
+ uint16 color = (READ_LE_UINT16(src) >> 1) & 0x3DEF;
+ uint16 orig = (READ_LE_UINT16(dst1) >> 1) & 0x3DEF;
+ WRITE_LE_UINT16(dst1, (color + orig));
}
dst1 += 2;
}