[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.189,2.190 script.cpp,1.176,1.177 script_v6.cpp,1.386,1.387 script_v6he.cpp,2.90,2.91 script_v72he.cpp,2.7,2.8 script_v7he.cpp,2.44,2.45
Travis Howell
kirben at users.sourceforge.net
Tue Aug 24 04:18:05 CEST 2004
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24800/scumm
Modified Files:
intern.h script.cpp script_v6.cpp script_v6he.cpp
script_v72he.cpp script_v7he.cpp
Log Message:
Remove some old/duplicate code.
Add a few more functions/stubs for HE 7.2
Moved HE 7.2 o_resourceRoutine() specifics.
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.189
retrieving revision 2.190
diff -u -d -r2.189 -r2.190
--- intern.h 23 Aug 2004 14:11:53 -0000 2.189
+++ intern.h 24 Aug 2004 11:17:27 -0000 2.190
@@ -580,8 +580,6 @@
void o6_roomOps();
void o6_actorOps();
void o6_wait();
- void o6_soundKludge();
- void o6_dummy();
void o6_kernelSetFunctions();
void o6_kernelGetFunctions();
void o6_openFile();
@@ -624,6 +622,7 @@
void o7_startSound();
void o7_pickupObject();
void o7_getActorRoom();
+ void o7_resourceRoutines();
void o7_quitPauseRestart();
void o7_stringLen();
void o7_readINI();
@@ -656,8 +655,7 @@
/* Version 7 script opcodes */
void o72_getString();
- void o72_objectX();
- void o72_objectY();
+ void o72_compareStackList();
void o72_startScript();
void o72_startObject();
void o72_drawObject();
@@ -667,6 +665,7 @@
void o72_dimArray();
void o72_dim2dimArray();
void o72_jumpToScript();
+ void o72_getPixel();
void o72_stringLen();
void o72_readINI();
void o72_unknownF4();
Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script.cpp,v
retrieving revision 1.176
retrieving revision 1.177
diff -u -d -r1.176 -r1.177
--- script.cpp 21 Aug 2004 09:02:45 -0000 1.176
+++ script.cpp 24 Aug 2004 11:17:28 -0000 1.177
@@ -349,6 +349,9 @@
/* Nuke arrays based on script */
void ScummEngine::nukeArrays(int script) {
+ //FIXME
+ return;
+
int i;
if (!(_features & GF_HUMONGOUS) || !script)
Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.386
retrieving revision 1.387
diff -u -d -r1.386 -r1.387
--- script_v6.cpp 24 Aug 2004 05:04:14 -0000 1.386
+++ script_v6.cpp 24 Aug 2004 11:17:28 -0000 1.387
@@ -1617,82 +1617,6 @@
loadFlObject(obj, room);
break;
}
- case 120: /* queue ? for load */
- {
- if (_heversion < 70)
- error("o6_resourceRoutines: default case %d", op);
-
- debug(1,"stub queueload resource 2, %d", pop());
- // QL_QueGlobForLoad(2, pop(), 1);
- break;
- }
- case 121:
- {
- if (_heversion < 70)
- error("o6_resourceRoutines: default case %d", op);
-
- debug(1,"stub queueload resource 4, %d", pop());
- // QL_QueGlobForLoad(4, pop(), 1);
- break;
- }
- case 122:
- {
- if (_heversion < 70)
- error("o6_resourceRoutines: default case %d", op);
-
- debug(1,"stub queueload resource 3, %d", pop());
- // QL_QueGlobForLoad(3, pop(), 1);
- break;
- }
- case 123:
- {
- if (_heversion < 70)
- error("o6_resourceRoutines: default case %d", op);
-
- resid = pop();
- debug(1,"stub queueload resource 18, %d", resid);
- // QL_QueGlobForLoad(18, resid, 1);
- // QL_QueGlobForLoad(1, resid, 1);
- break;
- }
- case 201:
- {
- if (_heversion < 70)
- error("o6_resourceRoutines: default case %d", op);
-
- resid = pop();
- ensureResourceLoaded(rtImage, resid);
- break;
- }
- case 202:
- {
- if (_heversion < 70)
- error("o6_resourceRoutines: default case %d", op);
-
- resid = pop();
- lock(rtImage, resid);
- break;
- }
- case 203:
- {
- if (_heversion < 70)
- error("o6_resourceRoutines: default case %d", op);
-
- resid = pop();
- debug(1,"stub stub queueload resource 19, %d", resid);
- // QL_QueGlobForLoad(19, resid, 1);
- break;
- }
- case 233:
- resid = pop();
- debug(1,"stub o6_resourceRoutines resource %d, 1", resid);
- // foo(resid, 1);
- break;
- case 235:
- resid = pop();
- debug(1,"stub o6_resourceRoutines resource %d, 0", resid);
- // foo(resid, 0);
- break;
default:
error("o6_resourceRoutines: default case %d", op);
}
Index: script_v6he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6he.cpp,v
retrieving revision 2.90
retrieving revision 2.91
diff -u -d -r2.90 -r2.91
--- script_v6he.cpp 23 Aug 2004 09:18:55 -0000 2.90
+++ script_v6he.cpp 24 Aug 2004 11:17:28 -0000 2.91
@@ -529,7 +529,12 @@
_saveLoadSlot = 1;
_saveTemporaryState = true;
break;
- case 234:
+ case 234: // HE 7.2
+ b = pop();
+ a = pop();
+ warning("o6_roomOps: case %d (%d, %d)", op, b, a);
+ break;
+ case 236: // HE 7.2
b = pop();
a = pop();
warning("o6_roomOps: case %d (%d, %d)", op, b, a);
@@ -740,15 +745,6 @@
o6_breakHere();
}
-void ScummEngine_v6he::o6_soundKludge() {
- int list[16];
- getStackList(list, ARRAYSIZE(list));
-}
-
-void ScummEngine_v6he::o6_dummy() {
- stopObjectCode();
-}
-
void ScummEngine_v6he::o6_kernelSetFunctions() {
int args[29];
int num;
@@ -1230,7 +1226,7 @@
void ScummEngine_v6he::decodeParseString(int m, int n) {
byte b;
int i, color;
- int args[16];
+ int args[31];
b = fetchScriptByte();
@@ -1265,7 +1261,26 @@
_string[m].no_talk_anim = true;
break;
case 75: // SO_TEXTSTRING
+ switch (m) {
+ case 0:
+ actorTalk(_scriptPointer);
+ break;
+ case 1:
+ drawString(1, _scriptPointer);
+ break;
+ case 2:
+ unkMessage1(_scriptPointer);
+ break;
+ case 3:
+ unkMessage2(_scriptPointer);
+ break;
+ }
+ _scriptPointer += resStrLen(_scriptPointer) + 1;
+
+ break;
case 194: // HE 7.2
+ getStackList(args, ARRAYSIZE(args));
+ pop();
switch (m) {
case 0:
actorTalk(_scriptPointer);
Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.7
retrieving revision 2.8
diff -u -d -r2.7 -r2.8
--- script_v72he.cpp 24 Aug 2004 05:04:14 -0000 2.7
+++ script_v72he.cpp 24 Aug 2004 11:17:28 -0000 2.8
@@ -79,7 +79,7 @@
OPCODE(o6_land),
OPCODE(o6_lor),
OPCODE(o6_pop),
- OPCODE(o6_invalid),
+ OPCODE(o72_compareStackList),
/* 1C */
OPCODE(o6_invalid),
OPCODE(o6_invalid),
@@ -151,8 +151,8 @@
OPCODE(o6_invalid),
OPCODE(o6_wordArrayInc),
/* 54 */
- OPCODE(o72_objectX),
- OPCODE(o72_objectY),
+ OPCODE(o6_getObjectX),
+ OPCODE(o6_getObjectY),
OPCODE(o6_byteVarDec),
OPCODE(o6_wordVarDec),
/* 58 */
@@ -327,7 +327,7 @@
OPCODE(o6_rename),
/* E0 */
OPCODE(o6_soundOps),
- OPCODE(o6_getPixel),
+ OPCODE(o72_getPixel),
OPCODE(o6_localizeArray),
OPCODE(o6_pickVarRandom),
/* E4 */
@@ -390,29 +390,21 @@
fetchScriptWord();
}
-void ScummEngine_v72he::o72_objectX() {
- int object = pop();
- int objnum = getObjectIndex(object);
-
- if (objnum == -1) {
- push(0);
- return;
- }
-
- push(_objs[objnum].x_pos);
-}
-
-
-void ScummEngine_v72he::o72_objectY() {
- int object = pop();
- int objnum = getObjectIndex(object);
+void ScummEngine_v72he::o72_compareStackList() {
+ int args[128], i;
+ int num = getStackList(args, ARRAYSIZE(args));
+ int value = pop();
- if (objnum == -1) {
+ if (num) {
+ for (i = 1; i < 128; i++) {
+ if (args[i] = value) {
+ push(1);
+ break;
+ }
+ }
+ } else {
push(0);
- return;
}
-
- push(_objs[objnum].y_pos);
}
void ScummEngine_v72he::o72_startScript() {
@@ -483,9 +475,11 @@
}
void ScummEngine_v72he::o72_unknown63() {
- int a = fetchScriptByte();
- warning("o72_unknown63 stub (%d)", a);
- push(1);
+ int subOp = fetchScriptByte();
+ //int arrayId = readVar(fetchScriptWord());
+
+ warning("o72_unknown63 stub (%d)", subOp);
+ push(0);
}
void ScummEngine_v72he::o72_arrayOps() {
@@ -610,6 +604,28 @@
runScript(script, (flags == 199 || flags == 200), (flags == 195 || flags == 200), args);
}
+void ScummEngine_v72he::o72_getPixel() {
+ byte area;
+ int x = pop();
+ int y = pop();
+ int subOp = fetchScriptByte();
+
+ if (subOp != 218 && subOp != 219)
+ return;
+
+ VirtScreen *vs = findVirtScreen(y);
+ if (vs == NULL || x > _screenWidth - 1 || x < 0) {
+ push(-1);
+ return;
+ }
+
+ if (subOp == 218)
+ area = *vs->getBackPixels(x, y - vs->topline);
+ else
+ area = *vs->getPixels(x, y - vs->topline);
+ push(area);
+}
+
void ScummEngine_v72he::o72_stringLen() {
int a, len;
byte *addr;
Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.44
retrieving revision 2.45
diff -u -d -r2.44 -r2.45
--- script_v7he.cpp 23 Aug 2004 14:03:54 -0000 2.44
+++ script_v7he.cpp 24 Aug 2004 11:17:28 -0000 2.45
@@ -245,7 +245,7 @@
OPCODE(o6_isSoundRunning),
OPCODE(o6_setBoxFlags),
OPCODE(o6_invalid),
- OPCODE(o6_resourceRoutines),
+ OPCODE(o7_resourceRoutines),
/* 9C */
OPCODE(o6_roomOps),
OPCODE(o6_actorOps),
@@ -543,6 +543,137 @@
push(getObjectRoom(act));
}
+void ScummEngine_v7he::o7_resourceRoutines() {
+ int resid, op;
+ op = fetchScriptByte();
+
+ switch (op) {
+ case 100: // SO_LOAD_SCRIPT
+ resid = pop();
+ ensureResourceLoaded(rtScript, resid);
+ break;
+ case 101: // SO_LOAD_SOUND
+ resid = pop();
+ ensureResourceLoaded(rtSound, resid);
+ break;
+ case 102: // SO_LOAD_COSTUME
+ resid = pop();
+ ensureResourceLoaded(rtCostume, resid);
+ break;
+ case 103: // SO_LOAD_ROOM
+ resid = pop();
+ ensureResourceLoaded(rtRoom, resid);
+ break;
+ case 104: // SO_NUKE_SCRIPT
+ resid = pop();
+ setResourceCounter(rtScript, resid, 0x7F);
+ break;
+ case 105: // SO_NUKE_SOUND
+ resid = pop();
+ setResourceCounter(rtSound, resid, 0x7F);
+ break;
+ case 106: // SO_NUKE_COSTUME
+ resid = pop();
+ setResourceCounter(rtCostume, resid, 0x7F);
+ break;
+ case 107: // SO_NUKE_ROOM
+ resid = pop();
+ setResourceCounter(rtRoom, resid, 0x7F);
+ break;
+ case 108: // SO_LOCK_SCRIPT
+ resid = pop();
+ if (resid >= _numGlobalScripts)
+ break;
+ lock(rtScript, resid);
+ break;
+ case 109: // SO_LOCK_SOUND
+ resid = pop();
+ lock(rtSound, resid);
+ break;
+ case 110: // SO_LOCK_COSTUME
+ resid = pop();
+ lock(rtCostume, resid);
+ break;
+ case 111: // SO_LOCK_ROOM
+ resid = pop();
+ if (resid > 0x7F)
+ resid = _resourceMapper[resid & 0x7F];
+ lock(rtRoom, resid);
+ break;
+ case 112: // SO_UNLOCK_SCRIPT
+ resid = pop();
+ if (resid >= _numGlobalScripts)
+ break;
+ unlock(rtScript, resid);
+ break;
+ case 113: // SO_UNLOCK_SOUND
+ resid = pop();
+ unlock(rtSound, resid);
+ break;
+ case 114: // SO_UNLOCK_COSTUME
+ resid = pop();
+ unlock(rtCostume, resid);
+ break;
+ case 115: // SO_UNLOCK_ROOM
+ resid = pop();
+ if (resid > 0x7F)
+ resid = _resourceMapper[resid & 0x7F];
+ unlock(rtRoom, resid);
+ break;
+ case 116: // SO_CLEAR_HEAP
+ /* this is actually a scumm message */
+ error("clear heap not working yet");
+ break;
+ case 117: // SO_LOAD_CHARSET
+ resid = pop();
+ loadCharset(resid);
+ break;
+ case 118: // SO_NUKE_CHARSET
+ resid = pop();
+ nukeCharset(resid);
+ break;
+ case 119: // SO_LOAD_OBJECT
+ {
+ int room, obj = popRoomAndObj(&room);
+ loadFlObject(obj, room);
+ break;
+ }
+ case 120: /* queue for load */
+ case 121:
+ case 122:
+ case 123:
+ case 203:
+ debug(1,"stub queueload (%d) resource %d", op, pop());
+ break;
+ case 159:
+ resid = pop();
+ unlock(rtImage, resid);
+ break;
+ case 192:
+ resid = pop();
+ nukeResource(rtImage, resid);
+ break;
+ case 201:
+ resid = pop();
+ ensureResourceLoaded(rtImage, resid);
+ break;
+ case 202:
+ resid = pop();
+ lock(rtImage, resid);
+ break;
+ case 233:
+ resid = pop();
+ debug(1,"stub o7_resourceRoutines lock object %d", resid);
+ break;
+ case 235:
+ resid = pop();
+ debug(1,"stub o7_resourceRoutines unlock object %d", resid);
+ break;
+ default:
+ error("o7_resourceRoutines: default case %d", op);
+ }
+}
+
void ScummEngine_v7he::o7_quitPauseRestart() {
byte subOp = fetchScriptByte();
int par1;
More information about the Scummvm-git-logs
mailing list