[Scummvm-cvs-logs] CVS: scummvm gfx.cpp,1.37,1.38 object.cpp,1.32,1.33 saveload.cpp,1.28,1.29 script.cpp,1.24,1.25 script_v1.cpp,1.37,1.38 scummvm.cpp,1.56,1.57

Vincent Hamm yazoo at users.sourceforge.net
Tue Mar 5 15:42:03 CET 2002


Update of /cvsroot/scummvm/scummvm
In directory usw-pr-cvs1:/tmp/cvs-serv11953

Modified Files:
	gfx.cpp object.cpp saveload.cpp script.cpp script_v1.cpp 
	scummvm.cpp 
Log Message:
Next episode in V7 reimplementation. Nearly working

Index: gfx.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gfx.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -C2 -d -r1.37 -r1.38
*** gfx.cpp	5 Mar 2002 23:05:55 -0000	1.37
--- gfx.cpp	5 Mar 2002 23:41:41 -0000	1.38
***************
*** 553,560 ****
  	int diff;	// Full throttle hack
  
! #if !defined(FULL_THROTTLE)
! 	if (cd->_cur.x!=cd->_last.x && charset._hasMask)
! 		stopTalk();
! #endif
  
  	val = 0;
--- 553,559 ----
  	int diff;	// Full throttle hack
  
! 	if (!(_features & GF_AFTER_V7))
! 		if (cd->_cur.x!=cd->_last.x && charset._hasMask)
! 			stopTalk();
  
  	val = 0;
***************
*** 568,597 ****
  	}
  
! #if defined(FULL_THROTTLE)
! 	diff = (cd->_cur.x>>3) - (cd->_last.x>>3);
! 	if (_fullRedraw==0 && diff==1) {
! 		val = 2;
! 		redrawBGStrip(39, 1);
! 	} else if (_fullRedraw==0 && diff==-1) {
! 		val = 1;
! 		redrawBGStrip(0, 1);
! 	} else if (_fullRedraw!=0 || diff!=0) {
! 		_BgNeedsRedraw = false;
! 		_fullRedraw = false;
! 		redrawBGStrip(0, 40);
! 	}
! 
! #else
! 	if (_fullRedraw==0 && cd->_cur.x - cd->_last.x == 8) {
! 		val = 2;
! 		redrawBGStrip(39, 1);
! 	} else if (_fullRedraw==0 && cd->_cur.x - cd->_last.x == -8) {
! 		val = 1;
! 		redrawBGStrip(0, 1);
! 	} else if (_fullRedraw!=0 || cd->_cur.x != cd->_last.x) {
! 		_BgNeedsRedraw = false;
! 		redrawBGStrip(0, 40);
  	}
- #endif
  
  	drawRoomObjects(val);
--- 567,595 ----
  	}
  
! 	if(_features & GF_AFTER_V7) {
! 		diff = (cd->_cur.x>>3) - (cd->_last.x>>3);
! 		if (_fullRedraw==0 && diff==1) {
! 			val = 2;
! 			redrawBGStrip(39, 1);
! 		} else if (_fullRedraw==0 && diff==-1) {
! 			val = 1;
! 			redrawBGStrip(0, 1);
! 		} else if (_fullRedraw!=0 || diff!=0) {
! 			_BgNeedsRedraw = false;
! 			_fullRedraw = false;
! 			redrawBGStrip(0, 40);
! 		}
! 	} else {
! 		if (_fullRedraw==0 && cd->_cur.x - cd->_last.x == 8) {
! 			val = 2;
! 			redrawBGStrip(39, 1);
! 		} else if (_fullRedraw==0 && cd->_cur.x - cd->_last.x == -8) {
! 			val = 1;
! 			redrawBGStrip(0, 1);
! 		} else if (_fullRedraw!=0 || cd->_cur.x != cd->_last.x) {
! 			_BgNeedsRedraw = false;
! 			redrawBGStrip(0, 40);
! 		}
  	}
  
  	drawRoomObjects(val);
***************
*** 1816,1897 ****
  }
  
- #if defined(FULL_THROTTLE)
  void Scumm::cameraMoved() {
! 	CameraData *cd = &camera;
! 
! 	assert(cd->_cur.x>=160 && cd->_cur.y>=100);
  
! 	_screenStartStrip = (cd->_cur.x-160) >> 3;
! 	_screenEndStrip = _screenStartStrip + 39;
! 	virtscr[0].xstart = _screenStartStrip << 3;
  	
! 	_screenLeft = cd->_cur.x - 160;
! 	_screenTop = cd->_cur.y - 100;
! }
  
  
! #else
! void Scumm::cameraMoved() {
! 	CameraData *cd = &camera;
  
! 	if (cd->_cur.x < 160) {
! 		cd->_cur.x = 160;
! 	} else if (cd->_cur.x + 160 >= _scrWidth) {
! 		cd->_cur.x = _scrWidth-160;
  	}
- 
- 	_screenStartStrip = (cd->_cur.x >> 3) - 20;
- 	_screenEndStrip = _screenStartStrip + 39;
- 	virtscr[0].xstart = _screenStartStrip << 3;
  }
- #endif
  
- #if defined(FULL_THROTTLE)
  void Scumm::panCameraTo(int x, int y) {
! 	CameraData *cd = &camera;
! 	cd->_follows = 0;
! 	cd->_dest.x = x;
! 	cd->_dest.y = y;
! }
  
! #else
! void Scumm::panCameraTo(int x, int y) {
! 	CameraData *cd = &camera;
! 	cd->_dest.x = x;
! 	cd->_mode = CM_PANNING;
! 	cd->_movingToActor = 0;
  }
- #endif
  
  void Scumm::actorFollowCamera(int act) {
! #if !defined(FULL_THROTTLE)
! 	int old;
! 	CameraData *cd = &camera;
  
! 	/* mi1 compatibilty */
! 	if (act==0) {
! 		cd->_mode = CM_NORMAL;
! 		cd->_follows = 0;
! 		cd->_movingToActor = 0;
! 		return;
! 	}
  	
! 	old = cd->_follows;
! 	setCameraFollows(derefActorSafe(act, "actorFollowCamera"));
! 	if (cd->_follows != old) 
! 		runHook(0);
  
! 	cd->_movingToActor = 0;
! #endif
  }
  
  void Scumm::setCameraAtEx(int at) {
! #if !defined(FULL_THROTTLE)
! 	CameraData *cd = &camera;
! 	cd->_mode = CM_NORMAL;
! 	cd->_cur.x = at;
! 	setCameraAt(at, 0);
! 	cd->_movingToActor = 0;
! #endif
  }
  
--- 1814,1890 ----
  }
  
  void Scumm::cameraMoved() {
! 	if(_features & GF_AFTER_V7) {
! 		CameraData *cd = &camera;
  
! 		assert(cd->_cur.x>=160 && cd->_cur.y>=100);
  	
! 		_screenStartStrip = (cd->_cur.x-160) >> 3;
! 		_screenEndStrip = _screenStartStrip + 39;
! 		virtscr[0].xstart = _screenStartStrip << 3;
! 	
! 		_screenLeft = cd->_cur.x - 160;
! 		_screenTop = cd->_cur.y - 100;
! 	} else {
  
+ 		CameraData *cd = &camera;
  
! 		if (cd->_cur.x < 160) {
! 			cd->_cur.x = 160;
! 		} else if (cd->_cur.x + 160 >= _scrWidth) {
! 			cd->_cur.x = _scrWidth-160;
! 		}
  
! 		_screenStartStrip = (cd->_cur.x >> 3) - 20;
! 		_screenEndStrip = _screenStartStrip + 39;
! 		virtscr[0].xstart = _screenStartStrip << 3;
  	}
  }
  
  void Scumm::panCameraTo(int x, int y) {
! 	if(_features & GF_AFTER_V7) {
! 		CameraData *cd = &camera;
! 		cd->_follows = 0;
! 		cd->_dest.x = x;
! 		cd->_dest.y = y;
! 	} else {
  
! 		CameraData *cd = &camera;
! 		cd->_dest.x = x;
! 		cd->_mode = CM_PANNING;
! 		cd->_movingToActor = 0;
! 	}
  }
  
  void Scumm::actorFollowCamera(int act) {
! 	if(!(_features & GF_AFTER_V7)) {
! 		int old;
! 		CameraData *cd = &camera;
  
! 		/* mi1 compatibilty */
! 		if (act==0) {
! 			cd->_mode = CM_NORMAL;
! 			cd->_follows = 0;
! 			cd->_movingToActor = 0;
! 			return;
! 		}
  	
! 		old = cd->_follows;
! 		setCameraFollows(derefActorSafe(act, "actorFollowCamera"));
! 		if (cd->_follows != old) 
! 			runHook(0);
  
! 		cd->_movingToActor = 0;
! 	}
  }
  
  void Scumm::setCameraAtEx(int at) {
! 	if(!(_features & GF_AFTER_V7)) {
! 		CameraData *cd = &camera;
! 		cd->_mode = CM_NORMAL;
! 		cd->_cur.x = at;
! 		setCameraAt(at, 0);
! 		cd->_movingToActor = 0;
! 	}
  }
  

Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/object.cpp,v
retrieving revision 1.32
retrieving revision 1.33
diff -C2 -d -r1.32 -r1.33
*** object.cpp	5 Mar 2002 23:05:55 -0000	1.32
--- object.cpp	5 Mar 2002 23:41:41 -0000	1.33
***************
*** 1046,1056 ****
  	
  
! #if !defined(FULL_THROTTLE)
! 	w = READ_LE_UINT16(&foir.cdhd->v6.w)>>3;
! 	h = READ_LE_UINT16(&foir.cdhd->v6.h)>>3;
! #else
! 	w = READ_LE_UINT16(&foir.imhd->v7.width)>>3;
! 	h = READ_LE_UINT16(&foir.imhd->v7.height)>>3;
! #endif
  
  	dataptr = findResource(IMxx_tags[imgindex],foir.obim);
--- 1046,1056 ----
  	
  
! 	if(!(_features & GF_AFTER_V7)) {
! 		w = READ_LE_UINT16(&foir.cdhd->v6.w)>>3;
! 		h = READ_LE_UINT16(&foir.cdhd->v6.h)>>3;
! 	} else {
! 		w = READ_LE_UINT16(&foir.imhd->v7.width)>>3;
! 		h = READ_LE_UINT16(&foir.imhd->v7.height)>>3;
! 	}
  
  	dataptr = findResource(IMxx_tags[imgindex],foir.obim);

Index: saveload.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saveload.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** saveload.cpp	3 Mar 2002 22:14:47 -0000	1.28
--- saveload.cpp	5 Mar 2002 23:41:41 -0000	1.29
***************
*** 129,135 ****
  	_verbMouseOver = 0;
  
! #if defined(FULL_THROTTLE)
! 	cameraMoved();
! #endif
  
  	initBGBuffers();
--- 129,134 ----
  	_verbMouseOver = 0;
  
! 	if(_features & GF_AFTER_V7)
! 		cameraMoved();
  
  	initBGBuffers();
***************
*** 325,329 ****
  		MKLINE(Scumm,_curExecScript,sleUint16),
  
- #if defined(FULL_THROTTLE)
  		MKLINE(Scumm,camera._dest.x,sleInt16),
  		MKLINE(Scumm,camera._dest.y,sleInt16),
--- 324,327 ----
***************
*** 334,343 ****
  		MKLINE(Scumm,camera._accel.x,sleInt16),
  		MKLINE(Scumm,camera._accel.y,sleInt16),
- 		MKLINE(Scumm,camera._follows,sleByte),
- 		MKLINE(Scumm,camera._movingToActor,sleUint16),
- #else
- 		MKLINE(Scumm,camera._dest.x,sleInt16),
- 		MKLINE(Scumm,camera._cur.x,sleInt16),
- 		MKLINE(Scumm,camera._last.x,sleInt16),
  		MKLINE(Scumm,_screenStartStrip,sleInt16),
  		MKLINE(Scumm,_screenEndStrip,sleInt16),
--- 332,335 ----
***************
*** 347,351 ****
  		MKLINE(Scumm,camera._rightTrigger,sleInt16),
  		MKLINE(Scumm,camera._movingToActor,sleUint16),
! #endif
  		MKLINE(Scumm,_actorToPrintStrFor,sleByte),
  		MKLINE(Scumm,_charsetColor,sleByte),
--- 339,343 ----
  		MKLINE(Scumm,camera._rightTrigger,sleInt16),
  		MKLINE(Scumm,camera._movingToActor,sleUint16),
! 		
  		MKLINE(Scumm,_actorToPrintStrFor,sleByte),
  		MKLINE(Scumm,_charsetColor,sleByte),

Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/script.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -d -r1.24 -r1.25
*** script.cpp	5 Mar 2002 15:29:54 -0000	1.24
--- script.cpp	5 Mar 2002 23:41:41 -0000	1.25
***************
*** 607,615 ****
  	_sentenceNum--;
  
! #if !defined(FULL_THROTTLE)
! 	if (sentence[_sentenceNum].unk2 && 
! 		sentence[_sentenceNum].unk3==sentence[_sentenceNum].unk4)
! 		return;
! #endif
  
  	_localParamList[0] = sentence[_sentenceNum].unk5;
--- 607,614 ----
  	_sentenceNum--;
  
! 	if(!(_features & GF_AFTER_V7))
! 		if (sentence[_sentenceNum].unk2 && 
! 			sentence[_sentenceNum].unk3==sentence[_sentenceNum].unk4)
! 			return;
  
  	_localParamList[0] = sentence[_sentenceNum].unk5;
***************
*** 798,859 ****
  
  void Scumm::animateActor(int act, int anim) {
! #if defined(FULL_THROTTLE)
! 	int cmd,dir;
! 	Actor *a;
! 
! 	a = derefActorSafe(act, "animateActor");
! 
! 	if (anim==0xFF)
! 		anim = 2000;
  
! 	cmd  = anim / 1000;
! 	dir = anim % 1000;
  
! 	/* temporary code */
! //	dir = newDirToOldDir(dir);
  
! 	switch(cmd) {
! 	case 2:
! 		stopActorMoving(a);
! 		startAnimActor(a, a->standFrame);
! 		break;
! 	case 3:
! 		a->moving &= ~4;
! 		fixActorDirection(a, dir);
! 		break;
! 	case 4:
! 		turnToDirection(a, dir);
! 		break;
! 	default:
! 		startAnimActor(a, anim);
! 	}
  
  
! #else
! 	int dir;
! 	Actor *a;
  
! 	a = derefActorSafe(act, "animateActor");
! 	if (!a) return;
  
! 	dir = anim&3;
  
! 	switch(anim>>2) {
! 	case 0x3F:
! 		stopActorMoving(a);
! 		startAnimActor(a, a->standFrame);
! 		break;
! 	case 0x3E:
! 		a->moving &= ~4;
! 		fixActorDirection(a, oldDirToNewDir(dir));
! 		break;
! 	case 0x3D:
! 		turnToDirection(a, oldDirToNewDir(dir));
! 		break;
! 	default:
! 		startAnimActor(a, anim);
  	}
- 
- #endif
  }
  
--- 797,857 ----
  
  void Scumm::animateActor(int act, int anim) {
! 	if(_features & GF_AFTER_V7) {
! 		int cmd,dir;
! 		Actor *a;
  
! 		a = derefActorSafe(act, "animateActor");
  
! 		if (anim==0xFF)
! 			anim = 2000;
  
! 		cmd  = anim / 1000;
! 		dir = anim % 1000;
  
+ 		/* temporary code */
+ //		dir = newDirToOldDir(dir);
  
! 		switch(cmd) {
! 		case 2:
! 			stopActorMoving(a);
! 			startAnimActor(a, a->standFrame);
! 			break;
! 		case 3:
! 			a->moving &= ~4;
! 			fixActorDirection(a, dir);
! 			break;
! 		case 4:
! 			turnToDirection(a, dir);
! 			break;
! 		default:
! 			startAnimActor(a, anim);
! 		}
  
! 	} else {
! 		int dir;
! 		Actor *a;
  
! 		a = derefActorSafe(act, "animateActor");
! 		if (!a) return;
! 	
! 		dir = anim&3;
  
! 		switch(anim>>2) {
! 		case 0x3F:
! 			stopActorMoving(a);
! 			startAnimActor(a, a->standFrame);
! 			break;
! 		case 0x3E:
! 			a->moving &= ~4;
! 			fixActorDirection(a, oldDirToNewDir(dir));
! 			break;
! 		case 0x3D:
! 			turnToDirection(a, oldDirToNewDir(dir));
! 			break;
! 		default:
! 			startAnimActor(a, anim);
! 		}
! 	
  	}
  }
  
***************
*** 863,867 ****
  	for (i=0; i<NUM_SCRIPT_SLOT; i++,ss++)
  		if (ss->number==script && (ss->where==WIO_GLOBAL || 
! 			  ss->where==WIO_LOCAL) && ss->status)
  			return true;
  	return false;
--- 861,865 ----
  	for (i=0; i<NUM_SCRIPT_SLOT; i++,ss++)
  		if (ss->number==script && (ss->where==WIO_GLOBAL || 
! 		ss->where==WIO_LOCAL) && ss->status)
  			return true;
  	return false;
***************
*** 1019,1063 ****
  	}
  }
- #if defined(FULL_THROTTLE)
  void Scumm::doSentence(int c, int b, int a) {
! 	SentenceTab *st;
  	
! 	if (b==a)
! 		return;
  
! 	st = &sentence[_sentenceNum-1];
  
! 	if (_sentenceNum &&
! 		st->unk5 == c && st->unk4==b && st->unk3==a)
! 			return;
  
! 	_sentenceNum++;
! 	st++;
  
! 	st->unk5 = c;
! 	st->unk4 = b;
! 	st->unk3 = a;
! 	st->unk = 0;
  	
! 	warning("dosentence(%d,%d,%d)", c, b, a);
  
! }
  
! #else
! void Scumm::doSentence(int c, int b, int a) {
! 	SentenceTab *st;
  
! 	st = &sentence[_sentenceNum++];
  
! 	st->unk5 = c;
! 	st->unk4 = b;
! 	st->unk3 = a;
  
! 	if (!(st->unk3&0xFF00))
! 		st->unk2 = 0;
! 	else
! 		st->unk2 = 1;
  
! 	st->unk = 0;
  }
- #endif
--- 1017,1059 ----
  	}
  }
  void Scumm::doSentence(int c, int b, int a) {
! 	if(_features & GF_AFTER_V7) {
! 		SentenceTab *st;
  	
! 		if (b==a)
! 			return;
  
! 		st = &sentence[_sentenceNum-1];
  
! 		if (_sentenceNum &&
! 			st->unk5 == c && st->unk4==b && st->unk3==a)
! 				return;
  
! 		_sentenceNum++;
! 		st++;
  
! 		st->unk5 = c;
! 		st->unk4 = b;
! 		st->unk3 = a;
! 		st->unk = 0;
  	
! 		warning("dosentence(%d,%d,%d)", c, b, a);
  
! 	} else {
  
! 		SentenceTab *st;
  
! 		st = &sentence[_sentenceNum++];
  
! 		st->unk5 = c;
! 		st->unk4 = b;
! 		st->unk3 = a;
  
! 		if (!(st->unk3&0xFF00))
! 			st->unk2 = 0;
! 		else
! 			st->unk2 = 1;
  
! 		st->unk = 0;
! 	}
  }

Index: script_v1.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/script_v1.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -C2 -d -r1.37 -r1.38
*** script_v1.cpp	24 Feb 2002 17:25:02 -0000	1.37
--- script_v1.cpp	5 Mar 2002 23:41:41 -0000	1.38
***************
*** 1469,1476 ****
  	_vars[VAR_WALKTO_OBJ] = 0;
  
- #if !defined(FULL_THROTTLE)
  	camera._dest.x = camera._cur.x = a->x;
  	setCameraFollows(a);
- #endif
  
  	_fullRedraw=1;
--- 1469,1474 ----

Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scummvm.cpp,v
retrieving revision 1.56
retrieving revision 1.57
diff -C2 -d -r1.56 -r1.57
*** scummvm.cpp	5 Mar 2002 21:27:24 -0000	1.56
--- scummvm.cpp	5 Mar 2002 23:41:41 -0000	1.57
***************
*** 89,105 ****
  	}
  
! #if !defined(FULL_THROTTLE)
! 	camera._leftTrigger = 10;
! 	camera._rightTrigger = 30;
! 	camera._mode = 0;
! #endif
  	camera._follows = 0;
  
  	virtscr[0].xstart = 0;
  
! #if !defined(FULL_THROTTLE)
! 	_vars[VAR_V5_DRAWFLAGS] = 11;
! 	_vars[VAR_59] = 3;
! #endif
  
  	mouse.x = 104;
--- 89,105 ----
  	}
  
! 	if(!(_features & GF_AFTER_V7)) {
! 		camera._leftTrigger = 10;
! 		camera._rightTrigger = 30;
! 		camera._mode = 0;
! 	}	
  	camera._follows = 0;
  
  	virtscr[0].xstart = 0;
  
! 	if(!(_features & GF_AFTER_V7)) {
! 		_vars[VAR_V5_DRAWFLAGS] = 11;
! 		_vars[VAR_59] = 3;
! 	}
  
  	mouse.x = 104;
***************
*** 163,179 ****
  
  void Scumm::initScummVars() {
! #if !defined(FULL_THROTTLE)
! 	_vars[VAR_CURRENTDRIVE] = _currentDrive;
! 	_vars[VAR_FIXEDDISK] = checkFixedDisk();
! 	_vars[VAR_SOUNDCARD] = _soundCardType;
! 	_vars[VAR_VIDEOMODE] = 0x13;
! 	_vars[VAR_HEAPSPACE] = 630;
! 	_vars[VAR_MOUSEPRESENT] = _mousePresent;
! 	_vars[VAR_SOUNDPARAM] = _soundParam;
! 	_vars[VAR_SOUNDPARAM2] = _soundParam2;
! 	_vars[VAR_SOUNDPARAM3] = _soundParam3;
! 	if (_features&GF_AFTER_V6)
! 		_vars[VAR_V6_EMSSPACE] = 10000;
! #endif
  }
  
--- 163,179 ----
  
  void Scumm::initScummVars() {
! 	if(!(_features & GF_AFTER_V7)) {
! 		_vars[VAR_CURRENTDRIVE] = _currentDrive;
! 		_vars[VAR_FIXEDDISK] = checkFixedDisk();
! 		_vars[VAR_SOUNDCARD] = _soundCardType;
! 		_vars[VAR_VIDEOMODE] = 0x13;
! 		_vars[VAR_HEAPSPACE] = 630;
! 		_vars[VAR_MOUSEPRESENT] = _mousePresent;
! 		_vars[VAR_SOUNDPARAM] = _soundParam;
! 		_vars[VAR_SOUNDPARAM2] = _soundParam2;
! 		_vars[VAR_SOUNDPARAM3] = _soundParam3;
! 		if (_features&GF_AFTER_V6)
! 			_vars[VAR_V6_EMSSPACE] = 10000;
! 	}
  }
  





More information about the Scummvm-git-logs mailing list