[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