[Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.272,1.273 intern.h,2.205,2.206 script_v6he.cpp,2.100,2.101 script_v72he.cpp,2.30,2.31 script_v7he.cpp,2.51,2.52 scumm.cpp,1.158,1.159 scumm.h,1.458,1.459
Travis Howell
kirben at users.sourceforge.net
Sat Aug 28 07:06:03 CEST 2004
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10436/scumm
Modified Files:
actor.cpp intern.h script_v6he.cpp script_v72he.cpp
script_v7he.cpp scumm.cpp scumm.h
Log Message:
Revert last change, was wrong opcode.
Add a few more HE 7 opcodes
Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.cpp,v
retrieving revision 1.272
retrieving revision 1.273
diff -u -d -r1.272 -r1.273
--- actor.cpp 28 Aug 2004 03:18:49 -0000 1.272
+++ actor.cpp 28 Aug 2004 14:05:31 -0000 1.273
@@ -928,6 +928,9 @@
}
void ScummEngine::processActors() {
+ if (_skipProcessActors)
+ return;
+
int numactors = 0;
// TODO : put this actors as a member array. It never has to grow or shrink
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.205
retrieving revision 2.206
diff -u -d -r2.205 -r2.206
--- intern.h 28 Aug 2004 11:01:01 -0000 2.205
+++ intern.h 28 Aug 2004 14:05:32 -0000 2.206
@@ -623,6 +623,7 @@
void o7_getActorRoom();
void o7_resourceRoutines();
void o7_quitPauseRestart();
+ void o7_kernelSetFunctions();
void o7_unknownED();
void o7_stringLen();
void o7_unknownEF();
@@ -690,7 +691,6 @@
void o72_wordArrayIndexedWrite();
void o72_compareStackList();
void o72_unknown1C();
- void o72_unknown26();
void o72_unknown50();
void o72_wordArrayInc();
void o72_objectX();
@@ -704,6 +704,7 @@
void o72_unknown62();
void o72_getArrayDimSize();
void o72_getNumFreeArrays();
+ void o72_pickupObject();
void o72_arrayOps();
void o72_dimArray();
void o72_dim2dimArray();
Index: script_v6he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6he.cpp,v
retrieving revision 2.100
retrieving revision 2.101
diff -u -d -r2.100 -r2.101
--- script_v6he.cpp 28 Aug 2004 07:20:04 -0000 2.100
+++ script_v6he.cpp 28 Aug 2004 14:05:32 -0000 2.101
@@ -778,16 +778,6 @@
case 5:
//Used before mini games in 3DO versions, seems safe to ignore.
break;
- case 21:
- _skipDrawObject = 1;
- break;
- case 22:
- _skipDrawObject = 0;
- break;
- case 23:
- _charset->clearCharsetMask();
- _fullRedraw = 1;
- break;
default:
warning("o6_kernelSetFunctions: default case %d (param count %d)", args[0], num);
break;
Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.30
retrieving revision 2.31
diff -u -d -r2.30 -r2.31
--- script_v72he.cpp 28 Aug 2004 11:01:01 -0000 2.30
+++ script_v72he.cpp 28 Aug 2004 14:05:32 -0000 2.31
@@ -93,7 +93,7 @@
/* 24 */
OPCODE(o6_invalid),
OPCODE(o6_invalid),
- OPCODE(o72_unknown26),
+ OPCODE(o6_invalid),
OPCODE(o6_invalid),
/* 28 */
OPCODE(o6_invalid),
@@ -211,7 +211,7 @@
OPCODE(o6_animateActor),
OPCODE(o6_doSentence),
/* 84 */
- OPCODE(o7_pickupObject),
+ OPCODE(o72_pickupObject),
OPCODE(o6_loadRoomWithEgo),
OPCODE(o6_invalid),
OPCODE(o6_getRandomNumber),
@@ -297,7 +297,7 @@
OPCODE(o6_distPtPt),
/* C8 */
OPCODE(o6_kernelGetFunctions),
- OPCODE(o6_kernelSetFunctions),
+ OPCODE(o7_kernelSetFunctions),
OPCODE(o6_delayFrames),
OPCODE(o6_pickOneOf),
/* CC */
@@ -563,8 +563,11 @@
}
void ScummEngine_v72he::o72_unknown1C() {
- // For Pajame Sam 2
- // Maybe HE 7.3?
+ // HE 90+ specific
+ if (_heversion < 90)
+ error("Invalid opcode '%x' at %x", _opcode, _scriptPointer - _scriptOrgPointer);
+
+ // For Pajame Sam 2 demo
// Incomplete
int value = fetchScriptByte();
value -= 46;
@@ -580,55 +583,6 @@
warning("o72_unknown1C stub (%d)", value);
}
-void ScummEngine_v72he::o72_unknown26() {
- // Maybe HE 7.3?
- // Incomplete
- int args[16];
- int subOp = fetchScriptByte();
- switch (subOp) {
- case 30:
- case 31:
- case 32:
- case 33:
- case 34:
- case 35:
- case 36:
- case 37:
- case 38:
- case 39:
- case 43:
- case 52:
- case 63:
- case 68:
- case 82:
- case 92:
- case 97:
- case 98:
- case 124:
- pop();
- break;
- case 42:
- case 198:
- pop();
- pop();
- break;
- case 45:
- pop();
- pop();
- pop();
- break;
- case 125:
- getStackList(args, ARRAYSIZE(args));
- pop();
- break;
- default:
- error("o72_unknown26: Unknown case %d", subOp);
- }
- push(0);
-
- warning("o72_unknown26 stub (%d)", subOp);
-}
-
void ScummEngine_v72he::o72_wordArrayWrite() {
int a = pop();
writeArray(fetchScriptWord(), 0, pop(), a);
@@ -815,6 +769,19 @@
push (num);
}
+void ScummEngine_v72he::o72_pickupObject() {
+ int obj, room;
+
+ room = pop();
+ obj = pop();
+ if (room == 0)
+ room = getObjectRoom(obj);
+
+ addObjectToInventory(obj, room);
+ putOwner(obj, VAR(VAR_EGO));
+ runInventoryScript(obj);
+}
+
void ScummEngine_v72he::o72_arrayOps() {
byte subOp = fetchScriptByte();
int array = 0;
Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.51
retrieving revision 2.52
diff -u -d -r2.51 -r2.52
--- script_v7he.cpp 28 Aug 2004 09:19:52 -0000 2.51
+++ script_v7he.cpp 28 Aug 2004 14:05:32 -0000 2.52
@@ -297,7 +297,7 @@
OPCODE(o6_distPtPt),
/* C8 */
OPCODE(o6_kernelGetFunctions),
- OPCODE(o6_kernelSetFunctions),
+ OPCODE(o7_kernelSetFunctions),
OPCODE(o6_delayFrames),
OPCODE(o6_pickOneOf),
/* CC */
@@ -538,7 +538,6 @@
runInventoryScript(obj); /* Difference */
}
-
void ScummEngine_v7he::o7_getActorRoom() {
int act = pop();
@@ -720,6 +719,45 @@
warning("stub o7_unknownED (%d, %d, %d)", c, b, a);
}
+void ScummEngine_v7he::o7_kernelSetFunctions() {
+ int args[29];
+ int num;
+
+ num = getStackList(args, ARRAYSIZE(args));
+
+ switch (args[0]) {
+ case 1:
+ // Used to restore images when decorating cake in
+ // Fatty Bear's Birthday Surprise
+ virtScreenLoad(args[1], args[2], args[3], args[4], args[5]);
+ break;
+ case 20:
+ // Clear/stop unknown animation queue
+ break;
+ case 21:
+ _skipDrawObject = 1;
+ break;
+ case 22:
+ _skipDrawObject = 0;
+ break;
+ case 23:
+ _charset->clearCharsetMask();
+ _fullRedraw = 1;
+ break;
+ case 24:
+ _skipProcessActors = 1;
+ _fullRedraw = 1;
+ break;
+ case 25:
+ _skipProcessActors = 0;
+ _fullRedraw = 1;
+ break;
+ default:
+ error("o6_kernelSetFunctions: default case %d (param count %d)", args[0], num);
+ break;
+ }
+}
+
void ScummEngine_v7he::o7_stringLen() {
int id, len;
byte *addr;
Index: scumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.cpp,v
retrieving revision 1.158
retrieving revision 1.159
diff -u -d -r1.158 -r1.159
--- scumm.cpp 28 Aug 2004 10:20:02 -0000 1.158
+++ scumm.cpp 28 Aug 2004 14:05:32 -0000 1.159
@@ -654,6 +654,7 @@
_V1_talkingActor = 0;
_skipDrawObject = 0;
+ _skipProcessActors = 0;
_heSndSoundId = 0;
_heSndOffset = 0;
_heSndTimer = 0;
Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.458
retrieving revision 1.459
diff -u -d -r1.458 -r1.459
--- scumm.h 28 Aug 2004 04:14:33 -0000 1.458
+++ scumm.h 28 Aug 2004 14:05:33 -0000 1.459
@@ -1044,7 +1044,7 @@
byte _roomPalette[256];
byte *_shadowPalette;
int _heSndSoundFreq, _heSndOffset, _heSndTimer, _heSndSoundId, _heSndLoop;
- bool _skipDrawObject;
+ bool _skipDrawObject, _skipProcessActors;
int _timers[4];
protected:
More information about the Scummvm-git-logs
mailing list