[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.89,2.90 object.cpp,1.98,1.99 script_v2.cpp,2.83,2.84 script_v5.cpp,1.86,1.87
Max Horn
fingolfin at users.sourceforge.net
Tue May 20 09:14:16 CEST 2003
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv761
Modified Files:
intern.h object.cpp script_v2.cpp script_v5.cpp
Log Message:
renamed o2_matrixOps -> o2_setBoxFlags; V2 'objY' fixes; cleanup
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.89
retrieving revision 2.90
diff -u -d -r2.89 -r2.90
--- intern.h 19 May 2003 04:29:41 -0000 2.89
+++ intern.h 20 May 2003 16:13:33 -0000 2.90
@@ -238,7 +238,7 @@
void o2_getActorX();
void o2_getActorY();
void o2_getBitVar();
- void o2_getObjY();
+ void o2_getObjUnknown();
void o2_ifClassOfIs();
void o2_ifNotState01();
void o2_ifNotState02();
@@ -249,7 +249,7 @@
void o2_ifState04();
void o2_ifState08();
void o2_loadRoomWithEgo();
- void o2_matrixOps();
+ void o2_setBoxFlags();
void o2_panCameraTo();
void o2_pickupObject();
void o2_putActor();
@@ -262,7 +262,7 @@
void o2_setBitVar();
void o2_setCameraAt();
void o2_setObjectName();
- void o2_setObjY();
+ void o2_setObjUnknown();
void o2_setOwnerOf();
void o2_setState01();
void o2_setState02();
Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.98
retrieving revision 1.99
diff -u -d -r1.98 -r1.99
--- object.cpp 19 May 2003 01:27:30 -0000 1.98
+++ object.cpp 20 May 2003 16:13:34 -0000 1.99
@@ -203,6 +203,9 @@
x = od->x_pos + (int16)READ_LE_UINT16(&imhd->old.hotspot[state].x);
y = od->y_pos + (int16)READ_LE_UINT16(&imhd->old.hotspot[state].y);
}
+ } else if (_features & GF_AFTER_V2){
+ x = od->walk_x * 8;
+ y = (od->walk_y & 0x1f) * 8;
} else {
x = od->walk_x;
y = od->walk_y;
@@ -656,8 +659,11 @@
od->parent = *(ptr + 12);
if (_features & GF_AFTER_V2) {
- od->walk_x = *(ptr + 13) * 8;
- od->walk_y = *(ptr + 14) * 8;
+ od->walk_x = *(ptr + 13);
+ // V2 stores an as of now unknown value in the upper 3 bits of the Y coordinate.
+ // Maybe we shoudl add an entry for it to ObjectData. That would be cleaner,
+ // but requires us to inc the savegame format version.
+ od->walk_y = *(ptr + 14);
od->actordir = (*(ptr + 15)) & 7;
od->height = *(ptr + 15) & 0xf8;
} else {
Index: script_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v2.cpp,v
retrieving revision 2.83
retrieving revision 2.84
diff -u -d -r2.83 -r2.84
--- script_v2.cpp 19 May 2003 00:25:26 -0000 2.83
+++ script_v2.cpp 20 May 2003 16:13:34 -0000 2.84
@@ -46,7 +46,7 @@
OPCODE(o5_isNotEqual),
OPCODE(o5_faceActor),
OPCODE(o2_assignVarWordIndirect),
- OPCODE(o2_setObjY),
+ OPCODE(o2_setObjUnknown),
/* 0C */
OPCODE(o2_resourceRoutines),
OPCODE(o5_walkActorToActor),
@@ -93,7 +93,7 @@
OPCODE(o2_delay),
OPCODE(o2_ifNotState04),
/* 30 */
- OPCODE(o2_matrixOps),
+ OPCODE(o2_setBoxFlags),
OPCODE(o2_getBitVar),
OPCODE(o2_setCameraAt),
OPCODE(o2_roomOps),
@@ -126,7 +126,7 @@
OPCODE(o5_isEqual),
OPCODE(o5_faceActor),
OPCODE(o2_chainScript),
- OPCODE(o2_setObjY),
+ OPCODE(o2_setObjUnknown),
/* 4C */
OPCODE(o2_waitForSentence),
OPCODE(o5_walkActorToActor),
@@ -168,7 +168,7 @@
OPCODE(o2_subIndirect),
OPCODE(o2_dummy),
/* 6C */
- OPCODE(o2_getObjY),
+ OPCODE(o2_getObjUnknown),
OPCODE(o5_putActorInRoom),
OPCODE(o2_dummy),
OPCODE(o2_ifState04),
@@ -206,7 +206,7 @@
OPCODE(o5_isNotEqual),
OPCODE(o5_faceActor),
OPCODE(o2_assignVarWordIndirect),
- OPCODE(o2_setObjY),
+ OPCODE(o2_setObjUnknown),
/* 8C */
OPCODE(o2_resourceRoutines),
OPCODE(o5_walkActorToActor),
@@ -253,7 +253,7 @@
OPCODE(o2_waitForMessage),
OPCODE(o2_ifNotState04),
/* B0 */
- OPCODE(o2_matrixOps),
+ OPCODE(o2_setBoxFlags),
OPCODE(o2_getBitVar),
OPCODE(o2_setCameraAt),
OPCODE(o2_roomOps),
@@ -286,7 +286,7 @@
OPCODE(o5_isEqual),
OPCODE(o5_faceActor),
OPCODE(o2_chainScript),
- OPCODE(o2_setObjY),
+ OPCODE(o2_setObjUnknown),
/* CC */
OPCODE(o5_pseudoRoom),
OPCODE(o5_walkActorToActor),
@@ -328,7 +328,7 @@
OPCODE(o2_subIndirect),
OPCODE(o2_dummy),
/* EC */
- OPCODE(o2_getObjY),
+ OPCODE(o2_getObjUnknown),
OPCODE(o5_putActorInRoom),
OPCODE(o2_dummy),
OPCODE(o2_ifState04),
@@ -506,17 +506,17 @@
setResult(fetchScriptByte());
}
-void Scumm_v2::o2_setObjY() {
+void Scumm_v2::o2_setObjUnknown() {
int obj = getVarOrDirectWord(0x80);
- int y = fetchScriptByte();
+ int unk = fetchScriptByte();
if (whereIsObject(obj) != WIO_NOT_FOUND) {
ObjectData *od = &_objs[getObjectIndex(obj)];
- od->walk_y = (y << 5) | (od->walk_y & 0x1F);
+ od->walk_y = (unk << 5) | (od->walk_y & 0x1F);
}
}
-void Scumm_v2::o2_getObjY() {
+void Scumm_v2::o2_getObjUnknown() {
int obj = getVarOrDirectWord(0x80);
getResultPos();
@@ -841,6 +841,7 @@
st->verb = a;
st->objectA = getVarOrDirectWord(0x40);
st->objectB = getVarOrDirectWord(0x20);
+ st->unk2 = (st->objectB != 0);
st->freezeCount = 0;
// TODO
@@ -1092,7 +1093,7 @@
o5_breakHere();
}
-void Scumm_v2::o2_matrixOps() {
+void Scumm_v2::o2_setBoxFlags() {
int a, b;
a = getVarOrDirectByte(0x80);
Index: script_v5.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v5.cpp,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -d -r1.86 -r1.87
--- script_v5.cpp 19 May 2003 15:40:34 -0000 1.86
+++ script_v5.cpp 20 May 2003 16:13:34 -0000 1.87
@@ -732,7 +732,7 @@
}
void Scumm_v5::o5_doSentence() {
- int a, b;
+ int a;
SentenceTab *st;
a = getVarOrDirectByte(0x80);
@@ -747,12 +747,8 @@
st->verb = a;
st->objectA = getVarOrDirectWord(0x40);
- b = st->objectB = getVarOrDirectWord(0x20);
- if (b == 0) {
- st->unk2 = 0;
- } else {
- st->unk2 = 1;
- }
+ st->objectB = getVarOrDirectWord(0x20);
+ st->unk2 = (st->objectB != 0);
st->freezeCount = 0;
}
More information about the Scummvm-git-logs
mailing list