diff options
| author | Travis Howell | 2009-06-03 06:52:39 +0000 | 
|---|---|---|
| committer | Travis Howell | 2009-06-03 06:52:39 +0000 | 
| commit | 59cb31d0134ee936b76bd54722be2671a813f46e (patch) | |
| tree | 94c816ec5b77d88116a14ff164672df9c75a2486 | |
| parent | ad09b501683346b602af708a420c2c1c5c72871b (diff) | |
| download | scummvm-rg350-59cb31d0134ee936b76bd54722be2671a813f46e.tar.gz scummvm-rg350-59cb31d0134ee936b76bd54722be2671a813f46e.tar.bz2 scummvm-rg350-59cb31d0134ee936b76bd54722be2671a813f46e.zip | |
Cleanup.
svn-id: r41135
| -rw-r--r-- | engines/scumm/he/script_v100he.cpp | 10 | ||||
| -rw-r--r-- | engines/scumm/he/script_v90he.cpp | 10 | ||||
| -rw-r--r-- | engines/scumm/he/wiz_he.cpp | 97 | ||||
| -rw-r--r-- | engines/scumm/he/wiz_he.h | 14 | 
4 files changed, 62 insertions, 69 deletions
| diff --git a/engines/scumm/he/script_v100he.cpp b/engines/scumm/he/script_v100he.cpp index 866d85953d..5912e3d528 100644 --- a/engines/scumm/he/script_v100he.cpp +++ b/engines/scumm/he/script_v100he.cpp @@ -1159,8 +1159,8 @@ void ScummEngine_v100he::o100_wizImageOps() {  		_wizParams.processFlags = 0;  		_wizParams.remapNum = 0;  		_wizParams.img.flags = 0; -		_wizParams.lineUnk2 = 0; -		_wizParams.lineUnk1 = 0; +		_wizParams.params1 = 0; +		_wizParams.params2 = 0;  		_wizParams.spriteId = 0;  		_wizParams.spriteGroup = 0;  		break; @@ -1236,9 +1236,9 @@ void ScummEngine_v100he::o100_wizImageOps() {  		_wizParams.processMode = 8;  		break;  	case 54: -		_wizParams.processFlags |= kWPFThickLine; -		_wizParams.lineUnk1 = pop(); -		_wizParams.lineUnk2 = pop(); +		_wizParams.processFlags |= kWPFParams; +		_wizParams.params1 = pop(); +		_wizParams.params2 = pop();  		break;  	case 55:  		_wizParams.img.flags = pop(); diff --git a/engines/scumm/he/script_v90he.cpp b/engines/scumm/he/script_v90he.cpp index 5a788479bf..cdfef1a5e5 100644 --- a/engines/scumm/he/script_v90he.cpp +++ b/engines/scumm/he/script_v90he.cpp @@ -182,8 +182,8 @@ void ScummEngine_v90he::o90_wizImageOps() {  		_wizParams.processFlags = 0;  		_wizParams.remapNum = 0;  		_wizParams.img.flags = 0; -		_wizParams.lineUnk2 = 0; -		_wizParams.lineUnk1 = 0; +		_wizParams.params1 = 0; +		_wizParams.params2 = 0;  		_wizParams.spriteId = 0;  		_wizParams.spriteGroup = 0;  		break; @@ -275,9 +275,9 @@ void ScummEngine_v90he::o90_wizImageOps() {  		_wizParams.dstResNum = pop();  		break;  	case 139: // HE99+ -		_wizParams.processFlags |= kWPFThickLine; -		_wizParams.lineUnk1 = pop(); -		_wizParams.lineUnk2 = pop(); +		_wizParams.processFlags |= kWPFParams; +		_wizParams.params1 = pop(); +		_wizParams.params2 = pop();  		break;  	case 141: // HE99+  		_wizParams.processMode = 13; diff --git a/engines/scumm/he/wiz_he.cpp b/engines/scumm/he/wiz_he.cpp index 3f4967efea..6038433847 100644 --- a/engines/scumm/he/wiz_he.cpp +++ b/engines/scumm/he/wiz_he.cpp @@ -358,7 +358,7 @@ void Wiz::copy16BitWizImage(uint8 *dst, const uint8 *src, int dstw, int dsth, in  	Common::Rect r1, r2;  	if (calcClipRects(dstw, dsth, srcx, srcy, srcw, srch, rect, r1, r2)) { -		dst += r2.left + r2.top * dstw; +		dst += r2.top * dstw + r2.left;  		if (flags & kWIFFlipY) {  			const int dy = (srcy < 0) ? srcy : (srch - r1.height());  			r1.translate(0, dy); @@ -369,8 +369,6 @@ void Wiz::copy16BitWizImage(uint8 *dst, const uint8 *src, int dstw, int dsth, in  		}  		if (xmapPtr) {  			decompress16BitWizImage<kWizXMap>(dst, dstw, src, r1, flags, palPtr, xmapPtr); -		} else if (palPtr) { -			decompress16BitWizImage<kWizRMap>(dst, dstw, src, r1, flags, palPtr);  		} else {  			decompress16BitWizImage<kWizCopy>(dst, dstw, src, r1, flags);  		} @@ -554,20 +552,22 @@ void Wiz::copyRaw16BitWizImage(uint8 *dst, const uint8 *src, int dstw, int dsth,  	Common::Rect r1, r2;  	if (calcClipRects(dstw, dsth, srcx, srcy, srcw, srch, rect, r1, r2)) { -		if (flags & (kWIFFlipY | kWIFFlipX)) { -			warning("Unhandled Wiz flags (kWIFFlipY | kWIFFlipX)"); +		if (flags & kWIFFlipX) { +			int l = r1.left; +			int r = r1.right; +			r1.left = srcw - r; +			r1.right = srcw - l;  		} -		byte imagePal[256]; -		if (!palPtr) { -			for (int i = 0; i < 256; i++) { -				imagePal[i] = i; -			} -			palPtr = imagePal; +		if (flags & kWIFFlipY) { +			int t = r1.top; +			int b = r1.bottom; +			r1.top = srch - b; +			r1.bottom = srch - t;  		}  		int h = r1.height();  		int w = r1.width(); -		src += r1.left + r1.top * srcw * 2; -		dst += r2.left + r2.top * dstw; +		src += (r1.top * srcw + r1.left) * 2; +		dst += r2.top * dstw + r2.left;  		while (h--) {  			for (int i = 0; i < w; ++i) {  				uint16 col = READ_LE_UINT16(src + 2 * i); @@ -577,7 +577,7 @@ void Wiz::copyRaw16BitWizImage(uint8 *dst, const uint8 *src, int dstw, int dsth,  				uint8 color = _vm->convert16BitColor(col, r, g, b);  				if (transColor == -1 || transColor != col) { -					dst[i] = palPtr[color]; +					dst[i] = color;  				}  			}  			src += srcw * 2; @@ -646,12 +646,12 @@ void Wiz::decompress16BitWizImage(uint8 *dst, int dstPitch, const uint8 *src, co  					code = (code >> 2) + 1;  					if (xoff > 0) {  						xoff -= code; -						++dataPtr; +						dataPtr += 2;  						if (xoff >= 0)  							continue;  						code = -xoff; -						--dataPtr; +						dataPtr -= 2;  					}  					w -= code;  					if (w < 0) { @@ -667,9 +667,6 @@ void Wiz::decompress16BitWizImage(uint8 *dst, int dstPitch, const uint8 *src, co  						if (type == kWizXMap) {  							*dstPtr = xmapPtr[col * 256 + *dstPtr];  						} -						if (type == kWizRMap) { -							*dstPtr = palPtr[col]; -						}  						if (type == kWizCopy) {  							*dstPtr = col;  						} @@ -680,12 +677,12 @@ void Wiz::decompress16BitWizImage(uint8 *dst, int dstPitch, const uint8 *src, co  					code = (code >> 2) + 1;  					if (xoff > 0) {  						xoff -= code; -						dataPtr += code; +						dataPtr += code * 2;  						if (xoff >= 0)  							continue;  						code = -xoff; -						dataPtr += xoff; +						dataPtr += xoff * 2;  					}  					w -= code;  					if (w < 0) { @@ -701,14 +698,10 @@ void Wiz::decompress16BitWizImage(uint8 *dst, int dstPitch, const uint8 *src, co  						if (type == kWizXMap) {  							*dstPtr = xmapPtr[col * 256 + *dstPtr];  						} -						if (type == kWizRMap) { -							*dstPtr = palPtr[col]; -						}  						if (type == kWizCopy) {  							*dstPtr = col;  						}  						dataPtr += 2; -  						dstPtr += dstInc;  					}  				} @@ -864,7 +857,7 @@ void Wiz::decompressRawWizImage(uint8 *dst, int dstPitch, const uint8 *src, int  	}  } -int Wiz::isWizPixelNonTransparent(const uint8 *data, int x, int y, int w, int h, uint bitDepth) { +int Wiz::isWizPixelNonTransparent(const uint8 *data, int x, int y, int w, int h, uint8 bitDepth) {  	if (x < 0 || x >= w || y < 0 || y >= h) {  		return 0;  	} @@ -890,24 +883,24 @@ int Wiz::isWizPixelNonTransparent(const uint8 *data, int x, int y, int w, int h,  				return 1;  			}  			x -= code; -			data += (bitDepth == 16) ? 2 : 1; +			data += bitDepth;  		} else {  			code = (code >> 2) + 1;  			if (code > x) {  				return 1;  			}  			x -= code; -			data += (bitDepth == 16) ? code * 2 : code; +			data += code * bitDepth;  		}  	} -	if (bitDepth == 16) +	if (bitDepth == 2)  		return (~READ_LE_UINT16(data)) & 1;  	else  		return (~data[0]) & 1;  } -uint8 Wiz::getWizPixelColor(const uint8 *data, int x, int y, int w, int h, uint bitDepth, uint8 color) { +uint16 Wiz::getWizPixelColor(const uint8 *data, int x, int y, int w, int h, uint8 bitDepth, uint16 color) {  	if (x < 0 || x >= w || y < 0 || y >= h) {  		return color;  	} @@ -930,32 +923,32 @@ uint8 Wiz::getWizPixelColor(const uint8 *data, int x, int y, int w, int h, uint  		} else if (code & 2) {  			code = (code >> 2) + 1;  			if (code > x) { -				return (bitDepth == 16) ? READ_LE_UINT16(data) : data[0]; +				return (bitDepth == 2) ? READ_LE_UINT16(data) : data[0];  			}  			x -= code; -			data += (bitDepth == 16) ? 2 : 1; +			data += bitDepth;  		} else {  			code = (code >> 2) + 1;  			if (code > x) { -				return (bitDepth == 16) ? READ_LE_UINT16(data + x) : data[x]; +				return (bitDepth == 2) ? READ_LE_UINT16(data + x) : data[x];  			}  			x -= code; -			data += (bitDepth == 16) ? code * 2 : code; +			data += code * bitDepth;  		}  	} -	if (bitDepth == 16) +	if (bitDepth == 2)  		return (READ_LE_UINT16(data) & 1) ? color : READ_LE_UINT16(data + 1);  	else  		return (data[0] & 1) ? color : data[1];  } -uint8 Wiz::getRawWizPixelColor(const uint8 *data, int x, int y, int w, int h, uint bitDepth, uint8 color) { +uint16 Wiz::getRawWizPixelColor(const uint8 *data, int x, int y, int w, int h, uint8 bitDepth, uint16 color) {  	if (x < 0 || x >= w || y < 0 || y >= h) {  		return color;  	} -	if (bitDepth == 16) +	if (bitDepth == 2)  		return READ_LE_UINT16(data + y * w + x * 2);  	else  		return data[y * w + x]; @@ -1929,7 +1922,7 @@ void Wiz::fillWizRect(const WizParameters *params) {  		} else {  			areaRect = imageRect;  		} -		uint8 color = _vm->VAR(93); +		uint16 color = _vm->VAR(93);  		if (params->processFlags & kWPFFillColor) {  			color = params->fillColor;  		} @@ -1984,7 +1977,7 @@ void Wiz::fillWizLine(const WizParameters *params) {  				}  				imageRect.clip(params->box);  			} -			uint8 color = _vm->VAR(93); +			uint16 color = _vm->VAR(93);  			if (params->processFlags & kWPFFillColor) {  				color = params->fillColor;  			} @@ -2001,9 +1994,9 @@ void Wiz::fillWizLine(const WizParameters *params) {  			lineP.wizd = wizd;  			lineP.width = w; -			if (params->processFlags & kWPFThickLine) { -				assert (params->lineUnk2 == 1); // Catch untested usage -				Graphics::drawThickLine(x1, y1, x2, y2, params->lineUnk1, color, drawProc, &lineP); +			if (params->processFlags & kWPFParams) { +				assert (params->params2 == 1); // Catch untested usage +				Graphics::drawThickLine(x1, y1, x2, y2, params->params1, color, drawProc, &lineP);  			} else {  				Graphics::drawLine(x1, y1, x2, y2, color, drawProc, &lineP); @@ -2036,7 +2029,7 @@ void Wiz::fillWizPixel(const WizParameters *params) {  				}  				imageRect.clip(params->box);  			} -			uint8 color = _vm->VAR(93); +			uint16 color = _vm->VAR(93);  			if (params->processFlags & kWPFFillColor) {  				color = params->fillColor;  			} @@ -2302,16 +2295,16 @@ int Wiz::isWizPixelNonTransparent(int resNum, int state, int x, int y, int flags  		switch (c) {  		case 0:  			if (_vm->_game.heversion >= 99) { -				ret = getRawWizPixelColor(wizd, x, y, w, h, 8, _vm->VAR(_vm->VAR_WIZ_TCOLOR)) != _vm->VAR(_vm->VAR_WIZ_TCOLOR) ? 1 : 0; +				ret = getRawWizPixelColor(wizd, x, y, w, h, 1, _vm->VAR(_vm->VAR_WIZ_TCOLOR)) != _vm->VAR(_vm->VAR_WIZ_TCOLOR) ? 1 : 0;  			} else {  				ret = 0;  			}  			break;  		case 1: -			ret = isWizPixelNonTransparent(wizd, x, y, w, h, 8); +			ret = isWizPixelNonTransparent(wizd, x, y, w, h, 1);  			break;  		case 2: -				ret = getRawWizPixelColor(wizd, x, y, w, h, 16, _vm->VAR(_vm->VAR_WIZ_TCOLOR)) != _vm->VAR(_vm->VAR_WIZ_TCOLOR) ? 1 : 0; +				ret = getRawWizPixelColor(wizd, x, y, w, h, 2, _vm->VAR(_vm->VAR_WIZ_TCOLOR)) != _vm->VAR(_vm->VAR_WIZ_TCOLOR) ? 1 : 0;  			break;  		case 4:  			// TODO: Unknown image type @@ -2319,7 +2312,7 @@ int Wiz::isWizPixelNonTransparent(int resNum, int state, int x, int y, int flags  			debug(0, "isWizPixelNonTransparent: Unhandled wiz compression type %d", c);  			break;  		case 5: -			ret = isWizPixelNonTransparent(wizd, x, y, w, h, 16); +			ret = isWizPixelNonTransparent(wizd, x, y, w, h, 2);  			break;  		default:  			error("isWizPixelNonTransparent: Unhandled wiz compression type %d", c); @@ -2330,7 +2323,7 @@ int Wiz::isWizPixelNonTransparent(int resNum, int state, int x, int y, int flags  }  uint8 Wiz::getWizPixelColor(int resNum, int state, int x, int y, int flags) { -	uint8 color = 0; +	uint16 color = 0;  	uint8 *data = _vm->getResourceAddress(rtImage, resNum);  	assert(data);  	uint8 *wizh = _vm->findWrappedBlock(MKID_BE('WIZH'), data, state, 0); @@ -2343,23 +2336,23 @@ uint8 Wiz::getWizPixelColor(int resNum, int state, int x, int y, int flags) {  	switch (c) {  	case 0:  		if (_vm->_game.heversion >= 99) { -			color = getRawWizPixelColor(wizd, x, y, w, h, 8, _vm->VAR(_vm->VAR_WIZ_TCOLOR)); +			color = getRawWizPixelColor(wizd, x, y, w, h, 1, _vm->VAR(_vm->VAR_WIZ_TCOLOR));  		} else {  			color = _vm->VAR(_vm->VAR_WIZ_TCOLOR);  		}  		break;  	case 1: -		color = getWizPixelColor(wizd, x, y, w, h, 8, _vm->VAR(_vm->VAR_WIZ_TCOLOR)); +		color = getWizPixelColor(wizd, x, y, w, h, 1, _vm->VAR(_vm->VAR_WIZ_TCOLOR));  		break;  	case 2: -		color = getRawWizPixelColor(wizd, x, y, w, h, 16, _vm->VAR(_vm->VAR_WIZ_TCOLOR)); +		color = getRawWizPixelColor(wizd, x, y, w, h, 2, _vm->VAR(_vm->VAR_WIZ_TCOLOR));  		break;  	case 4:  		// TODO: Unknown image type  		debug(0, "getWizPixelColor: Unhandled wiz compression type %d", c);  		break;  	case 5: -		color = getWizPixelColor(wizd, x, y, w, h, 16, _vm->VAR(_vm->VAR_WIZ_TCOLOR)); +		color = getWizPixelColor(wizd, x, y, w, h, 2, _vm->VAR(_vm->VAR_WIZ_TCOLOR));  		break;  	default:  		error("getWizPixelColor: Unhandled wiz compression type %d", c); diff --git a/engines/scumm/he/wiz_he.h b/engines/scumm/he/wiz_he.h index 86df15c3e6..e6ea0fe57e 100644 --- a/engines/scumm/he/wiz_he.h +++ b/engines/scumm/he/wiz_he.h @@ -73,13 +73,13 @@ struct WizParameters {  	int resDefImgW;  	int resDefImgH;  	int sourceImage; -	int lineUnk1; -	int lineUnk2; +	int params1; +	int params2;  	uint8 remapColor[256];  	uint8 remapIndex[256];  	int remapNum;  	int dstResNum; -	byte fillColor; +	uint16 fillColor;  	byte string1[4096];  	byte string2[4096];  	int field_2399; @@ -133,7 +133,7 @@ enum WizProcessFlags {  	kWPFFillColor = 0x20000,  	kWPFClipBox2 = 0x40000,  	kWPFMaskImg = 0x80000, -	kWPFThickLine = 0x100000 +	kWPFParams = 0x100000  };  enum { @@ -209,9 +209,9 @@ public:  	template<int type> static void decompressWizImage(uint8 *dst, int dstPitch, const uint8 *src, const Common::Rect &srcRect, int flags, const uint8 *palPtr = NULL, const uint8 *xmapPtr = NULL);  	template<int type> void decompress16BitWizImage(uint8 *dst, int dstPitch, const uint8 *src, const Common::Rect &srcRect, int flags, const uint8 *palPtr = NULL, const uint8 *xmapPtr = NULL);  	template<int type> static void decompressRawWizImage(uint8 *dst, int dstPitch, const uint8 *src, int srcPitch, int w, int h, int transColor, const uint8 *palPtr = NULL); -	int isWizPixelNonTransparent(const uint8 *data, int x, int y, int w, int h, uint bitdepth); -	uint8 getWizPixelColor(const uint8 *data, int x, int y, int w, int h, uint bitDepth, uint8 color); -	uint8 getRawWizPixelColor(const uint8 *data, int x, int y, int w, int h, uint bitDepth, uint8 color); +	int isWizPixelNonTransparent(const uint8 *data, int x, int y, int w, int h, uint8 bitdepth); +	uint16 getWizPixelColor(const uint8 *data, int x, int y, int w, int h, uint8 bitDepth, uint16 color); +	uint16 getRawWizPixelColor(const uint8 *data, int x, int y, int w, int h, uint8 bitDepth, uint16 color);  	void computeWizHistogram(uint32 *histogram, const uint8 *data, const Common::Rect& rCapt);  	void computeRawWizHistogram(uint32 *histogram, const uint8 *data, int srcPitch, const Common::Rect& rCapt); | 
