[Scummvm-cvs-logs] CVS: scummvm/scumm resource.cpp,1.24,1.25

Max Horn fingolfin at users.sourceforge.net
Thu Nov 28 15:48:03 CET 2002


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv4197

Modified Files:
	resource.cpp 
Log Message:
no need to retry 5 times in loadResource - we don't have users with floppy disks anymore, after all :-). Fixed an endian issue for v2 games (makes them crash a little bit later during loading)

Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- resource.cpp	23 Nov 2002 13:53:46 -0000	1.24
+++ resource.cpp	28 Nov 2002 23:47:58 -0000	1.25
@@ -403,17 +403,16 @@
 	} else if (_features & GF_SMALL_HEADER) {
 		for (i = 0; i < num; i++) {
 			res.roomno[id][i] = _fileHandle.readByte();
-			res.roomoffs[id][i] = fileReadDword();
+			res.roomoffs[id][i] = _fileHandle.readUint32LE();
 		}
 	} else {
 		_fileHandle.read(res.roomno[id], num * sizeof(uint8));
 		_fileHandle.read(res.roomoffs[id], num * sizeof(uint32));
-	}
-
 #if defined(SCUMM_BIG_ENDIAN)
-	for (i = 0; i < num; i++)
-		res.roomoffs[id][i] = FROM_LE_32(res.roomoffs[id][i]);
+		for (i = 0; i < num; i++)
+			res.roomoffs[id][i] = FROM_LE_32(res.roomoffs[id][i]);
 #endif
+	}
 }
 
 
@@ -493,11 +492,11 @@
 
 int Scumm::loadResource(int type, int idx)
 {
-	int roomNr, i;
+	int roomNr;
 	uint32 fileOffs;
 	uint32 size, tag;
 
-	// debug(1, "loadResource(%s,%d)", resTypeFromId(type),idx);
+	debug(1, "loadResource(%s,%d)", resTypeFromId(type),idx);
 
 	if (type == rtCharset && (_features & GF_SMALL_HEADER)) {
 		loadCharset(idx);
@@ -520,53 +519,51 @@
 			return 0;
 	}
 
-	for (i = 0; i < 5; i++) {
-		openRoom(roomNr);
-
-		_fileHandle.seek(fileOffs + _fileOffset, SEEK_SET);
+	openRoom(roomNr);
 
-		if (_features & GF_OLD_BUNDLE) {
-			size = _fileHandle.readUint16LE();
-		} else if (_features & GF_SMALL_HEADER) {
-			if (!(_features & GF_SMALL_NAMES))
-				_fileHandle.seek(8, SEEK_CUR);
-			size = _fileHandle.readUint32LE();
-			tag = _fileHandle.readUint16LE();
-			_fileHandle.seek(-6, SEEK_CUR);
-			/* FIXME */
-			if ((type == rtSound) && (_gameId != GID_ZAK256))
-				return readSoundResourceSmallHeader(type, idx);
-		} else {
-			if (type == rtSound) {
-				_fileHandle.readUint32LE();
-				_fileHandle.readUint32LE();
-				return readSoundResource(type, idx);
-			}
+	_fileHandle.seek(fileOffs + _fileOffset, SEEK_SET);
 
-			tag = fileReadDword();
+	if (_features & GF_OLD_BUNDLE) {
+		size = _fileHandle.readUint16LE();
+	} else if (_features & GF_SMALL_HEADER) {
+		if (!(_features & GF_SMALL_NAMES))
+			_fileHandle.seek(8, SEEK_CUR);
+		size = _fileHandle.readUint32LE();
+		tag = _fileHandle.readUint16LE();
+		_fileHandle.seek(-6, SEEK_CUR);
+		/* FIXME */
+		if ((type == rtSound) && (_gameId != GID_ZAK256))
+			return readSoundResourceSmallHeader(type, idx);
+	} else {
+		if (type == rtSound) {
+			_fileHandle.readUint32LE();
+			_fileHandle.readUint32LE();
+			return readSoundResource(type, idx);
+		}
 
-			if (tag != res.tags[type]) {
-				error("%s %d not in room %d at %d+%d", res.name[type], type, roomNr, _fileOffset, fileOffs);
-			}
+		tag = fileReadDword();
 
-			size = _fileHandle.readUint32BE();
-			_fileHandle.seek(-8, SEEK_CUR);
+		if (tag != res.tags[type]) {
+			error("%s %d not in room %d at %d+%d", res.name[type], type, roomNr, _fileOffset, fileOffs);
 		}
-		_fileHandle.read(createResource(type, idx, size), size);
 
-		/* dump the resource */
+		size = _fileHandle.readUint32BE();
+		_fileHandle.seek(-8, SEEK_CUR);
+	}
+	_fileHandle.read(createResource(type, idx, size), size);
+
+	/* dump the resource */
 #ifdef DUMP_SCRIPTS
-		if (type == rtScript) {
-			dumpResource("script-", idx, getResourceAddress(rtScript, idx));
-		}
+	if (type == rtScript) {
+		dumpResource("script-", idx, getResourceAddress(rtScript, idx));
+	}
 #endif
 
-		if (!_fileHandle.ioFailed()) {
-			return 1;
-		}
-
-		nukeResource(type, idx);
+	if (!_fileHandle.ioFailed()) {
+		return 1;
 	}
+
+	nukeResource(type, idx);
 
 	error("Cannot read resource");
 }





More information about the Scummvm-git-logs mailing list