[Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.229.2.4,1.229.2.5 actor.h,1.51,1.51.2.1 base-costume.cpp,2.11,2.11.2.1 base-costume.h,1.18.2.1,1.18.2.2 script_v6he.cpp,2.15.2.3,2.15.2.4

Travis Howell kirben at users.sourceforge.net
Tue Jun 29 04:12:00 CEST 2004


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

Modified Files:
      Tag: branch-0-6-0
	actor.cpp actor.h base-costume.cpp base-costume.h 
	script_v6he.cpp 
Log Message:

Back port actorOps case 218/219 fixes for HE games


Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.cpp,v
retrieving revision 1.229.2.4
retrieving revision 1.229.2.5
diff -u -d -r1.229.2.4 -r1.229.2.5
--- actor.cpp	11 Apr 2004 20:56:41 -0000	1.229.2.4
+++ actor.cpp	29 Jun 2004 11:11:30 -0000	1.229.2.5
@@ -56,6 +56,7 @@
 	walkbox = 0;
 	animProgress = 0;
 	skipLimb = false;
+	actorDrawVirScr = false;
 	memset(animVariable, 0, sizeof(animVariable));
 	memset(palette, 0, sizeof(palette));
 	memset(sound, 0, sizeof(sound));
@@ -1014,6 +1015,7 @@
 
 	bcr->_draw_bottom = bottom = 0;
 	bcr->_skipLimb = (skipLimb != 0);
+	bcr->_actorDrawVirScr = (actorDrawVirScr != 0);
 
 	// If the actor is partially hidden, redraw it next frame.
 	// Only done for pre-AKOS, though.

Index: actor.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.h,v
retrieving revision 1.51
retrieving revision 1.51.2.1
diff -u -d -r1.51 -r1.51.2.1
--- actor.h	9 Feb 2004 08:05:23 -0000	1.51
+++ actor.h	29 Jun 2004 11:11:30 -0000	1.51.2.1
@@ -107,6 +107,7 @@
 	uint16 talkScript, walkScript;
 	bool ignoreTurns;
 	bool skipLimb;
+	bool actorDrawVirScr;
 	int8 layer;
 	uint16 sound[8];
 	CostumeData cost;

Index: base-costume.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/base-costume.cpp,v
retrieving revision 2.11
retrieving revision 2.11.2.1
diff -u -d -r2.11 -r2.11.2.1
--- base-costume.cpp	6 Jan 2004 12:45:29 -0000	2.11
+++ base-costume.cpp	29 Jun 2004 11:11:30 -0000	2.11.2.1
@@ -29,7 +29,10 @@
 	int i;
 	byte result = 0;
 
-	_outptr = vs.screenPtr + vs.xstart;
+	if (_actorDrawVirScr)
+		_outptr = _vm->getResourceAddress(rtBuffer, 5) + vs.xstart;
+	else
+		_outptr = vs.screenPtr + vs.xstart;
 	_outwidth = vs.width;
 	_outheight = vs.height;
 	_numStrips = vs.width / 8;

Index: base-costume.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/base-costume.h,v
retrieving revision 1.18.2.1
retrieving revision 1.18.2.2
diff -u -d -r1.18.2.1 -r1.18.2.2
--- base-costume.h	10 Apr 2004 18:14:56 -0000	1.18.2.1
+++ base-costume.h	29 Jun 2004 11:11:30 -0000	1.18.2.2
@@ -62,6 +62,7 @@
 
 	int _draw_top, _draw_bottom;
 	bool _skipLimb;
+	bool _actorDrawVirScr;
 
 
 protected:
@@ -116,6 +117,7 @@
 		_mirror = false;
 		_width = _height = 0;
 		_skipLimb = 0;
+		_actorDrawVirScr = 0;
 
 		
 		_outptr = 0;

Index: script_v6he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6he.cpp,v
retrieving revision 2.15.2.3
retrieving revision 2.15.2.4
diff -u -d -r2.15.2.3 -r2.15.2.4
--- script_v6he.cpp	20 Jun 2004 14:43:22 -0000	2.15.2.3
+++ script_v6he.cpp	29 Jun 2004 11:11:30 -0000	2.15.2.4
@@ -664,14 +664,12 @@
 		break;
 	case 218:		
 		{
-			// TODO: this opcode is used in the putt-putt fun pack, in 'checkers" mini game
-
 			int top_actor = a->top;
 			int bottom_actor = a->bottom;
-			a->forceClip = 1;
+			a->actorDrawVirScr = 1;
 			a->needRedraw = true;
 			a->drawActorCostume();
-			a->forceClip = 0;
+			a->actorDrawVirScr = 0;
 			a->needRedraw = true;
 			a->drawActorCostume();
 			a->needRedraw = false;
@@ -681,10 +679,13 @@
 			if (a->bottom < bottom_actor)
 				a->bottom = bottom_actor;
 
-			//FIXME Trigger redraw
-			a->bottom = top_actor;
 		}
 		break;
+	case 219:
+		a->actorDrawVirScr = false;
+		a->needRedraw = true;
+		a->needBgReset = true;
+		break;
 	default:
 		error("o6_actorOps: default case %d", b);
 	}
@@ -981,10 +982,7 @@
 	int vs = 0; // XXX = gdi_virtScreen;
 
 	for (int j = y1; j <= y2; ++j) {
-		// FIXME - to match the disassembly, we should save buffer (vs + 5),
-		// but if we do that, then the cake decoration in Fatty Bear's Birthday 
-		// Surprise is not saved at all
-		uint8 *p = getResourceAddress(rtBuffer, vs + 1);
+		uint8 *p = getResourceAddress(rtBuffer, vs + 5);
 		p += virtscr[kMainVirtScreen].xstart;
 		p += (j - virtscr[kMainVirtScreen].topline) * 320 + x1;
 		





More information about the Scummvm-git-logs mailing list