diff options
| author | Ludvig Strigeus | 2001-10-26 17:34:50 +0000 | 
|---|---|---|
| committer | Ludvig Strigeus | 2001-10-26 17:34:50 +0000 | 
| commit | 056dd5b15d8e8fef995afb20ebcade91dee70bf9 (patch) | |
| tree | 13939a6bc6c37756402fec2ffd1e4468bccb4a09 /verbs.cpp | |
| parent | f9daf35824dff14fbea17af81180e589ec145a32 (diff) | |
| download | scummvm-rg350-056dd5b15d8e8fef995afb20ebcade91dee70bf9.tar.gz scummvm-rg350-056dd5b15d8e8fef995afb20ebcade91dee70bf9.tar.bz2 scummvm-rg350-056dd5b15d8e8fef995afb20ebcade91dee70bf9.zip | |
bug fixes, code cleanup
svn-id: r3446
Diffstat (limited to 'verbs.cpp')
| -rw-r--r-- | verbs.cpp | 46 | 
1 files changed, 23 insertions, 23 deletions
| @@ -17,6 +17,9 @@   *   * Change Log:   * $Log$ + * Revision 1.4  2001/10/26 17:34:50  strigeus + * bug fixes, code cleanup + *   * Revision 1.3  2001/10/16 10:01:48  strigeus   * preliminary DOTT support   * @@ -164,7 +167,7 @@ void Scumm::restoreVerbBG(int verb) {  	vs = &_verbs[verb];  	if (vs->oldleft != -1) { -		dseg_4E3C = vs->bkcolor; +		_bkColor = vs->bkcolor;  		restoreBG(vs->oldleft, vs->oldtop, vs->oldright, vs->oldbottom);  		vs->oldleft = -1;  	} @@ -177,17 +180,16 @@ void Scumm::drawVerbBitmap(int vrb, int x, int y) {  	byte twobufs, *imptr;  	int ydiff, xstrip;  	int imgw, imgh; -	int i; +	int i,tmp;  	byte *IMHD_ptr; +	byte *obim; -	if (findVirtScreen(y) == -1) +	if ((vs=findVirtScreen(y)) == NULL)  		return;  	_lastXstart = virtscr[0].xstart; -	nozbufs = _numZBuffer; -	_numZBuffer = 0; - -	vs = &virtscr[gdi.virtScreen]; +	 +	gdi.disableZBuffer();  	twobufs = vs->alloctwobuffers;  	vs->alloctwobuffers = 0; @@ -195,22 +197,21 @@ void Scumm::drawVerbBitmap(int vrb, int x, int y) {  	xstrip = x>>3;  	ydiff = y - vs->topline; -	IMHD_ptr = findResource2(MKID('IMHD'), getResourceAddress(8, vrb)); + +	obim = getResourceAddress(8, vrb); +	IMHD_ptr = findResource(MKID('IMHD'), obim, 0);  	imgw = READ_LE_UINT16(IMHD_ptr+0x14) >> 3;  	imgh = READ_LE_UINT16(IMHD_ptr+0x16) >> 3; -	imptr = findResource2(MKID('IM01'), NULL); +	imptr = findResource(MKID('IM01'), obim, 0);  	if (!imptr)  		error("No image for verb %d", vrb);  	for (i=0; i<imgw; i++) { -		_drawBmpX = xstrip + i; -		if (_drawBmpX < 40) { -			_drawBmpY = ydiff; -			gdi.numLinesToProcess = imgh<<3; -			drawBmp(imptr, i, 1, 1, "Verb", READ_LE_UINT16(IMHD_ptr+8)); -		} +		tmp = xstrip + i; +		if ((uint)tmp < 40) +			gdi.drawBitmap(imptr, vs, tmp, ydiff, imgh<<3, i, 1, true);  	}  	vst = &_verbs[vrb]; @@ -220,7 +221,8 @@ void Scumm::drawVerbBitmap(int vrb, int x, int y) {  	vst->oldright = vst->right;  	vst->oldtop = vst->y;  	vst->oldbottom = vst->bottom; -	_numZBuffer = nozbufs; +	 +	gdi.enableZBuffer();  	vs->alloctwobuffers = twobufs;  } @@ -258,7 +260,7 @@ void Scumm::setVerbObject(int room, int object, int verb) {  	int numobj, i;  	byte  *obimptr;  	uint32 imoffs,size; -	byte *roomptr,*tmp_roomptr; +	byte *roomptr;  	ImageHeader *imhd;  	RoomHeader *roomhdr; @@ -267,7 +269,7 @@ void Scumm::setVerbObject(int room, int object, int verb) {  	ensureResourceLoaded(1,room);  	roomptr = getResourceAddress(1, room); -	roomhdr = (RoomHeader*)findResource(MKID('RMHD'), roomptr); +	roomhdr = (RoomHeader*)findResource(MKID('RMHD'), roomptr, 0);  	numobj = READ_LE_UINT16(&roomhdr->numObjects);  	if (numobj==0) @@ -275,12 +277,11 @@ void Scumm::setVerbObject(int room, int object, int verb) {  	if (numobj > 200)  		error("More (%d) than %d objects in room %d", numobj, 200, room); -	tmp_roomptr = roomptr; -	for (i=1; i<=numobj; i++) { -		obimptr = findResource(MKID('OBIM'), tmp_roomptr); +	for (i=0; i<numobj; i++) { +		obimptr = findResource(MKID('OBIM'), roomptr, i);  		if (obimptr==NULL)  			error("Not enough image blocks in room %d", room); -		imhd = (ImageHeader*)findResource2(MKID('IMHD'), obimptr); +		imhd = (ImageHeader*)findResource(MKID('IMHD'), obimptr, 0);  		if ( READ_LE_UINT16(&imhd->obj_id) == object) {  			imoffs = obimptr - roomptr;  			size = READ_BE_UINT32_UNALIGNED(obimptr+4); @@ -289,7 +290,6 @@ void Scumm::setVerbObject(int room, int object, int verb) {  			memcpy(getResourceAddress(8, verb), obimptr, size);  			return;  		} -		tmp_roomptr = NULL;  	}  	error("Image %d not found in room %d", object, room);  } | 
