[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