aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2016-04-30 15:54:06 +0200
committerEugene Sandulenko2016-04-30 15:54:06 +0200
commit832961808a415ebcac5b74c54efb4cfbca0134e7 (patch)
treed00c05d47c8529799d8109041aa9f0c8c48b2693
parent00480bc7e0facea6eeeac639c0b40837a8f2606b (diff)
downloadscummvm-rg350-832961808a415ebcac5b74c54efb4cfbca0134e7.tar.gz
scummvm-rg350-832961808a415ebcac5b74c54efb4cfbca0134e7.tar.bz2
scummvm-rg350-832961808a415ebcac5b74c54efb4cfbca0134e7.zip
SCUMM HE: Stub for Wiz T14 compression
-rw-r--r--engines/scumm/he/wiz_he.cpp43
-rw-r--r--engines/scumm/he/wiz_he.h4
2 files changed, 46 insertions, 1 deletions
diff --git a/engines/scumm/he/wiz_he.cpp b/engines/scumm/he/wiz_he.cpp
index 5d2d973d68..5b844e2a25 100644
--- a/engines/scumm/he/wiz_he.cpp
+++ b/engines/scumm/he/wiz_he.cpp
@@ -1634,6 +1634,9 @@ void Wiz::drawWizImageEx(uint8 *dst, uint8 *dataPtr, uint8 *maskPtr, int dstPitc
case 5:
copy16BitWizImage(dst, wizd, dstPitch, dstType, dstw, dsth, srcx, srcy, srcw, srch, rect, flags, xmapPtr);
break;
+ case 9:
+ copyT14WizImage(dst, wizd, dstPitch, dstType, dstw, dsth, srcx, srcy, rect, conditionBits);
+ break;
#endif
default:
error("drawWizImageEx: Unhandled wiz compression type %d", comp);
@@ -1759,6 +1762,46 @@ void Wiz::copyCompositeWizImage(uint8 *dst, uint8 *wizPtr, uint8 *compositeInfoB
}
}
+void Wiz::copyT14WizImage(uint8 *dst, uint8 *wizd, int dstPitch, int dstType,
+ int dstw, int dsth, int srcx, int srcy, const Common::Rect *clipBox, uint16 conditionBits) {
+
+ int rawROP = conditionBits & kWMSBRopMask;
+ int nROPParam = (conditionBits & kWMSBReservedBits) >> kWMSBRopParamRShift;
+
+ switch (rawROP) {
+ default:
+ case 1:
+ warning("T14: MMX_PREMUL_ALPHA_COPY");
+ break;
+
+ case 2:
+ warning("T14: MMX_ADDITIVE");
+ break;
+
+ case 3:
+ warning("T14: MMX_SUBTRACTIVE");
+ break;
+
+ case 4:
+ warning("T14: MMX_CONSTANT_ALPHA");
+ break;
+
+ case 5:
+ warning("T14: MMX_CHEAP_50_50");
+ break;
+
+ case 6:
+ warning("T14: COPY");
+ break;
+
+ case 7:
+ warning("T14: CHEAP_50_50");
+ break;
+ }
+
+ warning("T14: params %d", nROPParam);
+}
+
struct PolygonDrawData {
struct PolygonArea {
int32 xmin;
diff --git a/engines/scumm/he/wiz_he.h b/engines/scumm/he/wiz_he.h
index dd1da8b46d..fee67a76d8 100644
--- a/engines/scumm/he/wiz_he.h
+++ b/engines/scumm/he/wiz_he.h
@@ -246,11 +246,13 @@ public:
#ifdef USE_RGB_COLOR
static void copyMaskWizImage(uint8 *dst, const uint8 *src, const uint8 *mask, int dstPitch, int dstType, int dstw, int dsth, int srcx, int srcy, int srcw, int srch, const Common::Rect *rect, int flags, const uint8 *palPtr);
-#endif
void copyCompositeWizImage(uint8 *dst, uint8 *wizPtr, uint8 *wizd, uint8 *maskPtr, int dstPitch, int dstType,
int dstw, int dsth, int srcx, int srcy, int srcw, int srch, int state, const Common::Rect *clipBox,
int flags, const uint8 *palPtr, int transColor, uint8 bitDepth, const uint8 *xmapPtr, uint16 conditionBits);
+ void copyT14WizImage(uint8 *dst, uint8 *wizd, int dstPitch, int dstType,
+ int dstw, int dsth, int srcx, int srcy, const Common::Rect *clipBox, uint16 conditionBits);
+#endif
static void copyAuxImage(uint8 *dst1, uint8 *dst2, const uint8 *src, int dstw, int dsth, int srcx, int srcy, int srcw, int srch, uint8 bitdepth);
static void copyWizImageWithMask(uint8 *dst, const uint8 *src, int dstPitch, int dstw, int dsth, int srcx, int srcy, int srcw, int srch, const Common::Rect *rect, int maskT, int maskP);