[Scummvm-cvs-logs] CVS: scummvm/scumm scummvm.cpp,2.105,2.106 scumm.h,1.170,1.171
Max Horn
fingolfin at users.sourceforge.net
Mon Apr 28 06:17:06 CEST 2003
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv31939
Modified Files:
scummvm.cpp scumm.h
Log Message:
make it possible to override dump length in Scumm::dumpResource; fix V2 entry script offset (I believe); fix exit script dumping for GF_OLD_BUNDLE games
Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 2.105
retrieving revision 2.106
diff -u -d -r2.105 -r2.106
--- scummvm.cpp 28 Apr 2003 12:36:21 -0000 2.105
+++ scummvm.cpp 28 Apr 2003 13:16:15 -0000 2.106
@@ -931,23 +931,26 @@
//
// Look for an exit script
//
- if (_features & GF_AFTER_V2)
+ int EXCD_len = -1;
+ if (_features & GF_AFTER_V2) {
_EXCD_offs = READ_LE_UINT16(roomptr + 0x18);
- else if (_features & GF_OLD_BUNDLE)
+ EXCD_len = READ_LE_UINT16(roomptr + 0x1A) - _EXCD_offs + _resourceHeaderSize; // HACK
+ } else if (_features & GF_OLD_BUNDLE) {
_EXCD_offs = READ_LE_UINT16(roomptr + 0x19);
- else {
+ EXCD_len = READ_LE_UINT16(roomptr + 0x1B) - _EXCD_offs + _resourceHeaderSize; // HACK
+ } else {
ptr = findResourceData(MKID('EXCD'), roomResPtr);
if (ptr)
_EXCD_offs = ptr - roomResPtr;
}
if (_dumpScripts && _EXCD_offs)
- dumpResource("exit-", _roomResource, roomResPtr + _EXCD_offs - _resourceHeaderSize);
+ dumpResource("exit-", _roomResource, roomResPtr + _EXCD_offs - _resourceHeaderSize, EXCD_len);
//
// Look for an entry script
//
if (_features & GF_AFTER_V2)
- _ENCD_offs = READ_LE_UINT16(roomptr + 0x1C);
+ _ENCD_offs = READ_LE_UINT16(roomptr + 0x1A);
else if (_features & GF_OLD_BUNDLE)
_ENCD_offs = READ_LE_UINT16(roomptr + 0x1B);
else {
@@ -1210,12 +1213,14 @@
_scaleSlots[slot-1].scale1 = scale1;
}
-void Scumm::dumpResource(char *tag, int idx, byte *ptr) {
+void Scumm::dumpResource(char *tag, int idx, byte *ptr, int length) {
char buf[256];
File out;
uint32 size;
- if (_features & GF_OLD_BUNDLE)
+ if (length >= 0)
+ size = length;
+ else if (_features & GF_OLD_BUNDLE)
size = READ_LE_UINT16(ptr);
else if (_features & GF_SMALL_HEADER)
size = READ_LE_UINT32(ptr);
Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.170
retrieving revision 1.171
diff -u -d -r1.170 -r1.171
--- scumm.h 28 Apr 2003 03:13:47 -0000 1.170
+++ scumm.h 28 Apr 2003 13:16:16 -0000 1.171
@@ -627,7 +627,7 @@
void expireResources(uint32 size);
void freeResources();
void destroy();
- void dumpResource(char *tag, int index, byte *ptr);
+ void dumpResource(char *tag, int index, byte *ptr, int length = -1);
public:
/* Should be in Object class */
More information about the Scummvm-git-logs
mailing list