From 832961808a415ebcac5b74c54efb4cfbca0134e7 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 30 Apr 2016 15:54:06 +0200 Subject: SCUMM HE: Stub for Wiz T14 compression --- engines/scumm/he/wiz_he.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ engines/scumm/he/wiz_he.h | 4 +++- 2 files changed, 46 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3