[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.405,2.406 script_v100he.cpp,2.102,2.103 script_v72he.cpp,2.225,2.226 script_v7he.cpp,2.136,2.137 script_v80he.cpp,2.81,2.82 script_v90he.cpp,2.198,2.199 wiz_he.cpp,2.25,2.26 wiz_he.h,2.11,2.12

kirben kirben at users.sourceforge.net
Wed Mar 30 03:50:34 CEST 2005


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27535/scumm

Modified Files:
	intern.h script_v100he.cpp script_v72he.cpp script_v7he.cpp 
	script_v80he.cpp script_v90he.cpp wiz_he.cpp wiz_he.h 
Log Message:

Cleanup


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.405
retrieving revision 2.406
diff -u -d -r2.405 -r2.406
--- intern.h	29 Mar 2005 14:11:08 -0000	2.405
+++ intern.h	30 Mar 2005 11:49:51 -0000	2.406
@@ -717,6 +717,7 @@
 #endif
 
 	const OpcodeEntryV72he *_opcodesV72he;
+	WizParameters _wizParams;
 
 public:
 	ScummEngine_v72he(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]) : ScummEngine_v70he(detector, syst, gs, md5sum) {}
@@ -740,8 +741,9 @@
 	int readFileToArray(int slot, int32 size);
 	void writeFileFromArray(int slot, int resID);
 
+	void displayWizComplexImage(const WizParameters *params);
+	void drawWizComplexPolygon(int resnum, int state, int po_x, int po_y, int arg14, int angle, int zoom, const Common::Rect *r);
 	void captureWizImage(int restype, int resnum, const Common::Rect& r, bool frontBuffer, int compType);
-	void displayWizImage(const WizImage *pwi);
 	void getWizImageDim(int resnum, int state,  int32 &w, int32 &h);
 	uint8 *drawWizImage(int restype, const WizImage *pwi);
 	void drawWizPolygon(int resnum, int state, int id, int flags);
@@ -867,7 +869,6 @@
 	
 	const OpcodeEntryV90he *_opcodesV90he;
 	FloodStateParameters _floodStateParams;
-	WizParameters _wizParams;
 
 	int _curMaxSpriteId;
 	int _curSpriteId;
@@ -891,8 +892,6 @@
 	virtual void executeOpcode(byte i);
 	virtual const char *getOpcodeDesc(byte i);
 	
-	void drawWizComplexPolygon(int resnum, int state, int po_x, int po_y, int arg14, int angle, int zoom, const Common::Rect *r);
-	void displayWizComplexImage(const WizParameters *params);
 	void createWizEmptyImage(const WizParameters *params);
 	void fillWizRect(const WizParameters *params);
 	void processWizImage(const WizParameters *params);

Index: script_v100he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v100he.cpp,v
retrieving revision 2.102
retrieving revision 2.103
diff -u -d -r2.102 -r2.103
--- script_v100he.cpp	29 Mar 2005 14:11:08 -0000	2.102
+++ script_v100he.cpp	30 Mar 2005 11:49:52 -0000	2.103
@@ -854,17 +854,15 @@
 		type = 1;
 		break;
 	case 40:
-		{
-		WizImage wi;
-		wi.flags = 0;
-		wi.y1 = y1;
-		wi.x1 = x1;
-		wi.resNum = num;
-		wi.state = 0;
-		displayWizImage(&wi);
+		_wizParams.processFlags |= kWPFSetPos;
+		_wizParams.img.flags = 0;
+		_wizParams.img.state = 0;
+		_wizParams.img.y1 = y1;
+		_wizParams.img.x1 = x1;
+		_wizParams.img.resNum = num;
+		displayWizComplexImage(&_wizParams);
 
 		type = 3;
-		}
 		break;
 	default:
 		error("o100_unknownE0: default case %d", subOp);
@@ -1255,12 +1253,13 @@
 		pop();
 		break;
 	case 55:
+		_wizParams.processFlags |= kWPFSetPos | kWPFNewState | kWPFNewFlags;
 		_wizParams.img.flags = pop();
 		_wizParams.img.state = pop();
 		_wizParams.img.y1 = pop();
 		_wizParams.img.x1 = pop();
 		_wizParams.img.resNum = pop();
-		displayWizImage(&_wizParams.img);
+		displayWizComplexImage(&_wizParams);
 		break;
 	case 57:
 		_wizParams.processFlags |= 0x8000;

Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.225
retrieving revision 2.226
diff -u -d -r2.225 -r2.226
--- script_v72he.cpp	28 Mar 2005 11:38:04 -0000	2.225
+++ script_v72he.cpp	30 Mar 2005 11:49:52 -0000	2.226
@@ -1610,13 +1610,13 @@
 }
 
 void ScummEngine_v72he::o72_drawWizImage() {
-	WizImage wi;
-	wi.flags = pop();
-	wi.y1 = pop();
-	wi.x1 = pop();
-	wi.resNum = pop();
-	wi.state = 0;
-	displayWizImage(&wi);
+	_wizParams.processFlags |= kWPFSetPos | kWPFNewFlags;
+	_wizParams.img.flags = pop();
+	_wizParams.img.state = 0;
+	_wizParams.img.y1 = pop();
+	_wizParams.img.x1 = pop();
+	_wizParams.img.resNum = pop();
+	displayWizComplexImage(&_wizParams);
 }
 
 void ScummEngine_v72he::o72_unknownCF() {

Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.136
retrieving revision 2.137
diff -u -d -r2.136 -r2.137
--- script_v7he.cpp	28 Mar 2005 10:02:21 -0000	2.136
+++ script_v7he.cpp	30 Mar 2005 11:49:53 -0000	2.137
@@ -759,12 +759,14 @@
 		a->_clipOverride.bottom = args[2];
 		break;
 	case 42:
-		// drawWizImage related
-		warning("o70_kernelSetFunctions: unhandled case 42");
+		_wiz._rectOverrideEnabled = true;
+		_wiz._rectOverride.left = args[1];
+		_wiz._rectOverride.top = args[2];
+		_wiz._rectOverride.right = args[3];
+		_wiz._rectOverride.bottom = args[4];
 		break;
 	case 43:
-		// drawWizImage related
-		warning("o70_kernelSetFunctions: unhandled case 43");
+		_wiz._rectOverrideEnabled = false;
 		break;
 	default:
 		error("o70_kernelSetFunctions: default case %d (param count %d)", args[0], num);

Index: script_v80he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v80he.cpp,v
retrieving revision 2.81
retrieving revision 2.82
diff -u -d -r2.81 -r2.82
--- script_v80he.cpp	28 Mar 2005 10:02:21 -0000	2.81
+++ script_v80he.cpp	30 Mar 2005 11:49:53 -0000	2.82
@@ -587,12 +587,12 @@
 }
 
 void ScummEngine_v80he::o80_drawWizPolygon() {
-	WizImage wi;
-	wi.x1 = wi.y1 = pop();
-	wi.resNum = pop();
-	wi.state = 0;
-	wi.flags = kWIFIsPolygon;
-	displayWizImage(&wi);	
+	_wizParams.processFlags |= kWPFSetPos | kWPFNewFlags;
+	_wizParams.img.flags = kWIFIsPolygon;
+	_wizParams.img.state = 0;
+	_wizParams.img.y1 = _wizParams.img.x1 = pop();
+	_wizParams.img.resNum = pop();
+	displayWizComplexImage(&_wizParams);
 }
 
 void ScummEngine_v80he::o80_unknownE0() {
@@ -631,17 +631,15 @@
 		}
 		break;
 	case 63:
-		{
-		WizImage wi;
-		wi.flags = 0;
-		wi.y1 = y1;
-		wi.x1 = x1;
-		wi.resNum = num;
-		wi.state = 0;
-		displayWizImage(&wi);
+		_wizParams.processFlags |= kWPFSetPos;
+		_wizParams.img.flags = 0;
+		_wizParams.img.state = 0;
+		_wizParams.img.y1 = y1;
+		_wizParams.img.x1 = x1;
+		_wizParams.img.resNum = num;
+		displayWizComplexImage(&_wizParams);
 
 		type = 3;
-		}
 		break;
 	case 66:
 		type = 1;

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.198
retrieving revision 2.199
diff -u -d -r2.198 -r2.199
--- script_v90he.cpp	29 Mar 2005 14:11:08 -0000	2.198
+++ script_v90he.cpp	30 Mar 2005 11:49:53 -0000	2.199
@@ -570,12 +570,13 @@
 		_wizParams.img.flags = pop();
 		break;
 	case 10:
+		_wizParams.processFlags |= kWPFSetPos | kWPFNewState | kWPFNewFlags;
 		_wizParams.img.flags = pop();
 		_wizParams.img.state = pop();
 		_wizParams.img.y1 = pop();
 		_wizParams.img.x1 = pop();
 		_wizParams.img.resNum = pop();
-		displayWizImage(&_wizParams.img);
+		displayWizComplexImage(&_wizParams);
 		break;
 	case 11:
 		_wizParams.img.resNum = pop();
@@ -2231,12 +2232,14 @@
 		_fullRedraw = 1;
 		break;
 	case 42:
-		// drawWizImage related
-		warning("o90_kernelSetFunctions: unhandled case 42");
+		_wiz._rectOverrideEnabled = true;
+		_wiz._rectOverride.left = args[1];
+		_wiz._rectOverride.top = args[2];
+		_wiz._rectOverride.right = args[3];
+		_wiz._rectOverride.bottom = args[4];
 		break;
 	case 43:
-		// drawWizImage related
-		warning("o90_kernelSetFunctions: unhandled case 43");
+		_wiz._rectOverrideEnabled = false;
 		break;
 	case 714:
 		break;

Index: wiz_he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/wiz_he.cpp,v
retrieving revision 2.25
retrieving revision 2.26
diff -u -d -r2.25 -r2.26
--- wiz_he.cpp	28 Mar 2005 13:17:46 -0000	2.25
+++ wiz_he.cpp	30 Mar 2005 11:49:53 -0000	2.26
@@ -33,6 +33,7 @@
 	_imagesNum = 0;
 	memset(&_images, 0, sizeof(_images));
 	memset(&_polygons, 0, sizeof(_polygons));
+	_rectOverrideEnabled = false;
 }
 
 void Wiz::imageNumClear() {
@@ -828,18 +829,6 @@
 	}
 }
 
-void ScummEngine_v72he::displayWizImage(const WizImage *pwi) {
-	if (_fullRedraw) {
-		assert(_wiz._imagesNum < ARRAYSIZE(_wiz._images));
-		memcpy(&_wiz._images[_wiz._imagesNum], pwi, sizeof(WizImage));
-		++_wiz._imagesNum;
-	} else if (pwi->flags & kWIFIsPolygon) {
-		drawWizPolygon(pwi->resNum, pwi->state, pwi->x1, pwi->flags);
-	} else {
-		drawWizImage(rtImage, pwi);
-	}
-}
-
 void ScummEngine_v72he::getWizImageDim(int resnum, int state, int32 &w, int32 &h) {
 	uint8 *dataPtr = getResourceAddress(rtImage, resnum);
 	assert(dataPtr);
@@ -884,6 +873,16 @@
 			warning("WizImage printing is unimplemented");
 			return NULL;
 		}
+
+		Common::Rect rImage(pwi->x1, pwi->y1, pwi->x1 + width, pwi->y1 + height);
+		if (_wiz._rectOverrideEnabled == true) {
+			if (rImage.intersects(_wiz._rectOverride)) {
+				rImage.clip(_wiz._rectOverride);
+			} else {
+				return 0;
+			}
+		}
+
 		uint32 cw, ch;
 		if (pwi->flags & kWIFBlitToMemBuffer) {
 			dst = (uint8 *)malloc(width * height);
@@ -902,6 +901,8 @@
 			ch = pvs->h;
 		}
 		Common::Rect rScreen(cw, ch);
+
+
 		// XXX handle 'XMAP' / 'RMAP' data
 		if (comp == 1) {
 			if (pwi->flags & 0x80) {
@@ -924,7 +925,6 @@
 		}
 
 		if (!(pwi->flags & kWIFBlitToMemBuffer)) {
-			Common::Rect rImage(pwi->x1, pwi->y1, pwi->x1 + width, pwi->y1 + height);
 			if (rImage.intersects(rScreen)) {
 				rImage.clip(rScreen);
 				if (!(pwi->flags & kWIFBlitToFrontVideoBuffer) && (pwi->flags & (kWIFBlitToFrontVideoBuffer | kWIFMarkBufferDirty))) {
@@ -1156,7 +1156,7 @@
 	free(cursor);
 }
 
-void ScummEngine_v90he::drawWizComplexPolygon(int resnum, int state, int po_x, int po_y, int arg14, int angle, int zoom, const Common::Rect *r) {
+void ScummEngine_v72he::drawWizComplexPolygon(int resnum, int state, int po_x, int po_y, int arg14, int angle, int zoom, const Common::Rect *r) {
 	Common::Point pts[4];
 	int32 w, h;
 	getWizImageDim(resnum, state, w, h);
@@ -1184,8 +1184,7 @@
 	warning("drawWizComplexPolygon() partially implemented");
 }
 
-void ScummEngine_v90he::displayWizComplexImage(const WizParameters *params) {
-	// XXX merge with displayWizImage
+void ScummEngine_v72he::displayWizComplexImage(const WizParameters *params) {
 	if (params->processFlags & 0x80000) {
 		warning("displayWizComplexImage() unhandled flags = 0x80000");
 	}

Index: wiz_he.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/wiz_he.h,v
retrieving revision 2.11
retrieving revision 2.12
diff -u -d -r2.11 -r2.12
--- wiz_he.h	26 Mar 2005 06:00:58 -0000	2.11
+++ wiz_he.h	30 Mar 2005 11:49:53 -0000	2.12
@@ -116,6 +116,8 @@
 	
 	Wiz();
 	void imageNumClear();
+	Common::Rect _rectOverride;
+	bool _rectOverrideEnabled;
 
 	void polygonClear();
 	void polygonLoad(const uint8 *polData);





More information about the Scummvm-git-logs mailing list