[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