[Scummvm-cvs-logs] CVS: scummvm script.cpp,1.22,1.23 script_v2.cpp,1.22,1.23 scummvm.cpp,1.53,1.54

James Brown ender at users.sourceforge.net
Tue Mar 5 01:59:02 CET 2002


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

Modified Files:
	script.cpp script_v2.cpp scummvm.cpp 
Log Message:
Warning'ed some miscops, and added a hack to just ignore non-existant actors.
Sam and Max is now playable to a quite advanced stage.



Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/script.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -C2 -d -r1.22 -r1.23
*** script.cpp	24 Feb 2002 17:25:02 -0000	1.22
--- script.cpp	5 Mar 2002 09:58:12 -0000	1.23
***************
*** 255,259 ****
  		_scriptPointerStart = _scriptPointer;
  		vm.slot[_currentScript].didexec = 1;
! 		// debug(1, "[%X] %s()", _opcode, _opcodes_lookup[_opcode]);
  		op = getOpcode(_opcode);
  		(this->*op)();
--- 255,259 ----
  		_scriptPointerStart = _scriptPointer;
  		vm.slot[_currentScript].didexec = 1;
! 		//debug(1, "[%X] %s()", _opcode, _opcodes_lookup[_opcode]);
  		op = getOpcode(_opcode);
  		(this->*op)();

Index: script_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/script_v2.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -C2 -d -r1.22 -r1.23
*** script_v2.cpp	25 Feb 2002 18:28:30 -0000	1.22
--- script_v2.cpp	5 Mar 2002 09:58:12 -0000	1.23
***************
*** 348,352 ****
--- 348,676 ----
  	};
  
+ 	static const char* opcode_lookup[] = {
+ 	/* 00 */
+ 	"o6_pushByte",
+ 	"o6_pushWord",
+ 	"o6_pushByteVar",
+ 	"o6_pushWordVar",
+ 	/* 04 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_byteArrayRead",
+ 	"o6_wordArrayRead",
+ 	/* 08 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_byteArrayIndexedRead",
+ 	"o6_wordArrayIndexedRead",
+ 	/* 0C */
+ 	"o6_dup",
+ 	"o6_zero",
+ 	"o6_eq",
+ 	"o6_neq",
+ 	/* 10 */
+ 	"o6_gt",
+ 	"o6_lt",
+ 	"o6_le",
+ 	"o6_ge",
+ 	/* 14 */
+ 	"o6_add",
+ 	"o6_sub",
+ 	"o6_mul",
+ 	"o6_div",
+ 	/* 18 */
+ 	"o6_land",
+ 	"o6_lor",
+ 	"o6_kill",
+ 	"o6_invalid",
+ 	/* 1C */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* 20 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* 24 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* 28 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* 2C */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* 30 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* 34 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* 38 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* 3C */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* 40 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_writeByteVar",
+ 	"o6_writeWordVar",
+ 	/* 44 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_byteArrayWrite",
+ 	"o6_wordArrayWrite",
+ 	/* 48 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_byteArrayIndexedWrite",
+ 	"o6_wordArrayIndexedWrite",
+ 	/* 4C */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_byteVarInc",
+ 	"o6_wordVarInc",
+ 	/* 50 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_byteArrayInc",
+ 	"o6_wordArrayInc",
+ 	/* 54 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_byteVarDec",
+ 	"o6_wordVarDec",
+ 	/* 58 */
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_byteArrayDec",
+ 	"o6_wordArrayDec",
+ 	/* 5C */
+ 	"o6_jumpTrue",
+ 	"o6_jumpFalse",
+ 	"o6_startScriptEx",
+ 	"o6_startScript",
+ 	/* 60 */
+ 	"o6_startObject",
+ 	"o6_setObjectState",
+ 	"o6_setObjectXY",
+ 	"o6_drawBlastObject",
+ 	/* 64 */
+ 	"o6_invalid",
+ 	"o6_stopObjectCode",
+ 	"o6_stopObjectCode",
+ 	"o6_endCutscene",
+ 	/* 68 */
+ 	"o6_cutScene",
+ 	"o6_stopMusic",
+ 	"o6_freezeUnfreeze",
+ 	"o6_cursorCommand",
+ 	/* 6C */
+ 	"o6_breakHere",
+ 	"o6_ifClassOfIs",
+ 	"o6_setClass",
+ 	"o6_getState",
+ 	/* 70 */
+ 	"o6_setState",
+ 	"o6_setOwner",
+ 	"o6_getOwner",
+ 	"o6_jump",
+ 	/* 74 */
+ 	"o6_startSound",
+ 	"o6_stopSound",
+ 	"o6_startMusic",
+ 	"o6_stopObjectScript",
+ 	/* 78 */
+ 	"o6_panCameraTo",
+ 	"o6_actorFollowCamera",
+ 	"o6_setCameraAt",
+ 	"o6_loadRoom",
+ 	/* 7C */
+ 	"o6_stopScript",
+ 	"o6_walkActorToObj",
+ 	"o6_walkActorTo",
+ 	"o6_putActorInRoom",
+ 	/* 80 */
+ 	"o6_putActorAtObject",
+ 	"o6_faceActor",
+ 	"o6_animateActor",
+ 	"o6_doSentence",
+ 	/* 84 */
+ 	"o6_pickupObject",
+ 	"o6_loadRoomWithEgo",
+ 	"o6_invalid",
+ 	"o6_getRandomNumber",
+ 	/* 88 */
+ 	"o6_getRandomNumberRange",
+ 	"o6_invalid",
+ 	"o6_getActorMoving",
+ 	"o6_getScriptRunning",
+ 	/* 8C */
+ 	"o6_getActorRoom",
+ 	"o6_getObjectX",
+ 	"o6_getObjectY",
+ 	"o6_getObjectOldDir",
+ 	/* 90 */
+ 	"o6_getActorWalkBox",
+ 	"o6_getActorCostume",
+ 	"o6_findInventory",
+ 	"o6_getInventoryCount",
+ 	/* 94 */
+ 	"o6_getVerbFromXY",
+ 	"o6_beginOverride",
+ 	"o6_endOverride",
+ 	"o6_setObjectName",
+ 	/* 98 */
+ 	"o6_isSoundRunning",
+ 	"o6_setBoxFlags",
+ 	"o6_createBoxMatrix",
+ 	"o6_resourceRoutines",
+ 	/* 9C */
+ 	"o6_roomOps",
+ 	"o6_actorSet",
+ 	"o6_verbOps",
+ 	"o6_getActorFromXY",
+ 	/* A0 */
+ 	"o6_findObject",
+ 	"o6_pseudoRoom",
+ 	"o6_getActorElevation",
+ 	"o6_getVerbEntrypoint",
+ 	/* A4 */
+ 	"o6_arrayOps",
+ 	"o6_saveRestoreVerbs",
+ 	"o6_drawBox",
+ 	"o6_invalid",
+ 	/* A8 */
+ 	"o6_getActorWidth",
+ 	"o6_wait",
+ 	"o6_getActorScaleX",
+ 	"o6_getActorAnimCounter1",
+ 	/* AC */
+ 	"o6_soundKludge",
+ 	"o6_isAnyOf",
+ 	"o6_quitPauseRestart",
+ 	"o6_isActorInBox",
+ 	/* B0 */
+ 	"o6_delay",
+ 	"o6_delayLonger",
+ 	"o6_delayVeryLong",
+ 	"o6_stopSentence",
+ 	/* B4 */
+ 	"o6_print_0",
+ 	"o6_print_1",
+ 	"o6_print_2",
+ 	"o6_print_3",
+ 	/* B8 */
+ 	"o6_printActor",
+ 	"o6_printEgo",
+ 	"o6_talkActor",
+ 	"o6_talkEgo",
+ 	/* BC */
+ 	"o6_dim",
+ 	"o6_invalid",
+ 	"o6_runVerbCodeQuick",
+ 	"o6_runScriptQuick",
+ 	/* C0 */
+ 	"o6_dim2",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* C4 */
+ 	"o6_abs",
+ 	"o6_distObjectObject",
+ 	"o6_distObjectPt",
+ 	"o6_distPtPt",
+ 	/* C8 */
+ 	"o6_kernelFunction",
+ 	"o6_miscOps",
+ 	"o6_breakMaybe",
+ 	"o6_pickOneOf",
+ 	/* CC */
+ 	"o6_pickOneOfDefault",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* D0 */	
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_getAnimateVariable",
+ 	"o6_invalid",
+ 	/* D4 */	
+ 	"o6_invalid",
+ 	"o6_jumpToScript",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* D8 */	
+ 	"o6_isRoomScriptRunning",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* DC */	
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* E0 */	
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* E4 */	
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* E8 */	
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* EC */	
+ 	"o6_invalid",
+ 	"o6_getObjectNewDir",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* F0 */	
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* F4 */	
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* F8 */	
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	/* FC */	
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid",
+ 	"o6_invalid"
+ 	};
+ 
  	_opcodes = opcode_list;
+ 	_opcodes_lookup = opcode_lookup;
  }
  
***************
*** 910,913 ****
--- 1234,1238 ----
  	obj = pop();
  	a = derefActorSafe(pop(), "o6_walkActorToObj");
+ 	if (!a) return;
  
  	if (obj >= NUM_ACTORS) {
***************
*** 918,921 ****
--- 1243,1247 ----
  	} else {
  		a2 = derefActorSafe(obj, "o6_walkActorToObj(2)");
+ 		if (!a2) return;
  		if (a2->room != _currentRoom ||
  			  a->room != _currentRoom)
***************
*** 949,952 ****
--- 1275,1280 ----
  	x = pop();
  	a = derefActorSafe(pop(), "o6_putActorInRoom");
+ 	if (!a)
+ 		return;
  
  	if (room==0xFF) {
***************
*** 2258,2262 ****
  			break;
  
! 		case 108:
  		case 109:
  			warning("stub o6_miscOps_108(%d,%d,%d,%d,%d,%d,%d)",args[1], args[2], args[3], args[4], args[5],0,256);
--- 2586,2590 ----
  			break;
  
! 		case 108: /* shadow palette? */
  		case 109:
  			warning("stub o6_miscOps_108(%d,%d,%d,%d,%d,%d,%d)",args[1], args[2], args[3], args[4], args[5],0,256);
***************
*** 2272,2277 ****
  			break;
  
! 		case 112:
! 			error("stub o6_miscOps_112(%d,%d,%d,%d,%d,%d,%d)",
  				args[1], args[2], args[3], args[4], args[5],
  				args[6], args[7]);
--- 2600,2605 ----
  			break;
  
! 		case 112: /* palette shift? */
! 			warning("stub o6_miscOps_112(%d,%d,%d,%d,%d,%d,%d)",
  				args[1], args[2], args[3], args[4], args[5],
  				args[6], args[7]);

Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scummvm.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -C2 -d -r1.53 -r1.54
*** scummvm.cpp	3 Mar 2002 22:14:47 -0000	1.53
--- scummvm.cpp	5 Mar 2002 09:58:12 -0000	1.54
***************
*** 1022,1027 ****
  
  Actor *Scumm::derefActorSafe(int id, const char *errmsg) {
! 	if (id<1 || id>=NUM_ACTORS)
!                 error("Invalid actor %d in %s (script %d)", id, errmsg, vm.slot[_curExecScript].number);
  	return derefActor(id);
  }
--- 1022,1029 ----
  
  Actor *Scumm::derefActorSafe(int id, const char *errmsg) {
! 	if (id<1 || id>=NUM_ACTORS) {				
!                 warning("Invalid actor %d in %s (script %d) - This is potentially a BIG problem.", id, errmsg, vm.slot[_curExecScript].number);
! 				return NULL;
! 	}
  	return derefActor(id);
  }





More information about the Scummvm-git-logs mailing list