diff options
author | Eugene Sandulenko | 2016-05-12 18:25:10 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2016-05-12 18:25:10 +0200 |
commit | 8d08912d223ffb3112107b58b7ff51e0aba56448 (patch) | |
tree | 44a34a353a1791876f8a840597d291299d971400 | |
parent | a3985f38ac536b5a81c13aaeb31de165074e9c6d (diff) | |
download | scummvm-rg350-8d08912d223ffb3112107b58b7ff51e0aba56448.tar.gz scummvm-rg350-8d08912d223ffb3112107b58b7ff51e0aba56448.tar.bz2 scummvm-rg350-8d08912d223ffb3112107b58b7ff51e0aba56448.zip |
SCUMM HE: Implement 50/50 T14 blend mode
-rw-r--r-- | engines/scumm/he/moonbase/moonbase.cpp | 6 |
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; } |