[Scummvm-cvs-logs] CVS: scummvm/scumm object.cpp,1.75,1.76 scummvm.cpp,2.96,2.97
Pawel Kolodziejski
aquadran at users.sourceforge.net
Mon Apr 21 04:21:03 CEST 2003
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv25681
Modified Files:
object.cpp scummvm.cpp
Log Message:
changes for v2 resources
Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -d -r1.75 -r1.76
--- object.cpp 13 Apr 2003 21:47:48 -0000 1.75
+++ object.cpp 21 Apr 2003 11:19:55 -0000 1.76
@@ -634,21 +634,26 @@
od->y_pos = ((*(ptr + 10)) & 0x7F) << 3;
od->width = *(ptr + 11) << 3;
- od->height = *(ptr + 17) & 0xf8;
-
- if (*(ptr + 10) & 0x80) {
- od->parentstate = 1; // it's 0x10 in the original code
- } else {
- od->parentstate = 0;
- }
od->parent = *(ptr + 12);
- od->walk_x = READ_LE_UINT16(ptr + 13);
- od->walk_y = READ_LE_UINT16(ptr + 15);
-
- od->actordir = (*(ptr + 17)) & 7;
-
+ if (_features & GF_AFTER_V3) {
+ od->walk_x = *(ptr + 13);
+ od->walk_y = *(ptr + 14);
+ od->actordir = (*(ptr + 15)) & 7;
+ od->height = *(ptr + 15) & 0xf8;
+ od->parentstate = (*(ptr + 10) & 0x80) >> 4;
+ } else {
+ od->walk_x = READ_LE_UINT16(ptr + 13);
+ od->walk_y = READ_LE_UINT16(ptr + 15);
+ od->actordir = (*(ptr + 17)) & 7;
+ od->height = *(ptr + 17) & 0xf8;
+ if (*(ptr + 10) & 0x80) {
+ od->parentstate = 1;
+ } else {
+ od->parentstate = 0;
+ }
+ }
return;
}
Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 2.96
retrieving revision 2.97
diff -u -d -r2.96 -r2.97
--- scummvm.cpp 20 Apr 2003 16:25:48 -0000 2.96
+++ scummvm.cpp 21 Apr 2003 11:19:56 -0000 2.97
@@ -905,7 +905,7 @@
//
// Find the room image data
//
- if (_features & GF_OLD_BUNDLE)
+ if (_features & GF_AFTER_V2)
_IM00_offs = READ_LE_UINT16(roomptr + 0x0A);
else if (_features & GF_SMALL_HEADER)
_IM00_offs = findResourceData(MKID('IM00'), roomptr) - roomptr;
@@ -926,7 +926,9 @@
//
// Look for an exit script
//
- if (_features & GF_OLD_BUNDLE)
+ if (_features & GF_AFTER_V2)
+ _EXCD_offs = READ_LE_UINT16(roomptr + 0x18);
+ else if (_features & GF_OLD_BUNDLE)
_EXCD_offs = READ_LE_UINT16(roomptr + 0x19);
else {
ptr = findResourceData(MKID('EXCD'), roomResPtr);
@@ -939,7 +941,9 @@
//
// Look for an entry script
//
- if (_features & GF_OLD_BUNDLE)
+ if (_features & GF_AFTER_V2)
+ _ENCD_offs = READ_LE_UINT16(roomptr + 0x1C);
+ else if (_features & GF_OLD_BUNDLE)
_ENCD_offs = READ_LE_UINT16(roomptr + 0x1B);
else {
ptr = findResourceData(MKID('ENCD'), roomResPtr);
@@ -953,7 +957,9 @@
// Load box data
//
if (_features & GF_SMALL_HEADER) {
- if (_features & GF_OLD_BUNDLE)
+ if (_features & GF_AFTER_V2)
+ ptr = roomptr + *(roomptr + 0x15);
+ else if (_features & GF_OLD_BUNDLE)
ptr = roomptr + READ_LE_UINT16(roomptr + 0x15);
else
ptr = findResourceData(MKID('BOXD'), roomptr);
@@ -968,7 +974,9 @@
createResource(rtMatrix, 2, size);
memcpy(getResourceAddress(rtMatrix, 2), ptr, size);
ptr += size;
- if (_features & GF_OLD_BUNDLE)
+ if (_features & GF_AFTER_V2)
+ size = (READ_LE_UINT16(roomptr + 0x0A) - *(roomptr + 0x15)) - size;
+ else if (_features & GF_OLD_BUNDLE)
// FIXME. This is an evil HACK!!!
size = (READ_LE_UINT16(roomptr + 0x0A) - READ_LE_UINT16(roomptr + 0x15)) - size;
else
@@ -1043,11 +1051,23 @@
if (_features & GF_OLD_BUNDLE) {
int num_objects = *(roomResPtr + 20);
- int num_sounds = *(roomResPtr + 23);
- int num_scripts = *(roomResPtr + 24);
- ptr = roomptr + 29 + num_objects * 4 + num_sounds + num_scripts;
+ int num_sounds;
+ int num_scripts;
- if ((_gameId != GID_MANIAC) && (_gameId != GID_ZAK)) {
+ if (_features & GF_AFTER_V2) {
+ num_sounds = *(roomResPtr + 22);
+ num_scripts = *(roomResPtr + 23);
+ ptr = roomptr + 28 + num_objects * 4;
+ while (num_sounds--)
+ loadResource(rtSound, *ptr++);
+ while (num_scripts--)
+ loadResource(rtScript, *ptr++);
+ }
+
+ if (!(_features & GF_AFTER_V2)) {
+ num_sounds = *(roomResPtr + 23);
+ num_scripts = *(roomResPtr + 24);
+ ptr = roomptr + 29 + num_objects * 4 + num_sounds + num_scripts;
while (*ptr) {
int id = *ptr;
More information about the Scummvm-git-logs
mailing list