[Scummvm-cvs-logs] CVS: scummvm/scumm resource.cpp,1.291,1.292 scumm.h,1.531,1.532 sound.cpp,1.420,1.421

kirben kirben at users.sourceforge.net
Sun Feb 13 19:14:49 CET 2005


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9322/scumm

Modified Files:
	resource.cpp scumm.h sound.cpp 
Log Message:

Add basic support for DISK index block in later HE games.


Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.291
retrieving revision 1.292
diff -u -d -r1.291 -r1.292
--- resource.cpp	11 Feb 2005 03:45:06 -0000	1.291
+++ resource.cpp	14 Feb 2005 03:12:39 -0000	1.292
@@ -75,16 +75,27 @@
 		if (room_offs == -1)
 			break;
 
-		if (room_offs != 0 && room != 0) {
+		if (room_offs != 0 && room != 0 && _heversion < 98) {
 			_fileOffset = res.roomoffs[rtRoom][room];
-			return;
 		}
 		if (!(_features & GF_SMALL_HEADER)) {
 
 			if (_heversion >= 70) { // Windows titles
 				if (_heversion >= 98) {
-					sprintf(buf, "%s.%s", _gameName.c_str(), room == 0 ? "he0" : "(a)");
-					sprintf(buf2, "%s.(b)", _gameName.c_str());
+					int disk = 0;
+					if (_heV7DiskOffsets)
+						disk = _heV7DiskOffsets[room];
+
+					switch(disk) {
+					case 2:
+						sprintf(buf, "%s.%s", _gameName.c_str(), "(b)");
+						break;
+					case 1:
+						sprintf(buf, "%s.%s", _gameName.c_str(), "(a)");
+						break;
+					default:
+						sprintf(buf, "%s.%s", _gameName.c_str(), "he0");
+					}
 				} else
 					sprintf(buf, "%s.he%.1d", _gameName.c_str(), room == 0 ? 0 : 1);
 			} else if (_version >= 7) {
@@ -424,8 +435,9 @@
 			break;
 
 		case MKID('DISK'):
-			_fileHandle.seek(itemsize - 8, SEEK_CUR);
-			debug(2, "DISK index block not yet handled, skipping");
+			i = _fileHandle.readUint16LE();
+			_heV7DiskOffsets = (byte *)calloc(i, 1);
+			_fileHandle.read(_heV7DiskOffsets, i);
 			break;
 
 		case MKID('INIB'):

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.531
retrieving revision 1.532
diff -u -d -r1.531 -r1.532
--- scumm.h	11 Feb 2005 03:45:10 -0000	1.531
+++ scumm.h	14 Feb 2005 03:12:40 -0000	1.532
@@ -634,6 +634,7 @@
 	byte _resourceMapper[128];
 	uint32 _allocatedSize;
 	byte _expire_counter;
+	byte *_heV7DiskOffsets;
 	byte *_heV7RoomOffsets;
 	uint32 *_heV7RoomIntOffsets;
 	const byte *_resourceLastSearchBuf; // FIXME: need to put it to savefile?

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.420
retrieving revision 1.421
diff -u -d -r1.420 -r1.421
--- sound.cpp	11 Feb 2005 03:45:10 -0000	1.420
+++ sound.cpp	14 Feb 2005 03:12:41 -0000	1.421
@@ -261,6 +261,10 @@
 		memcpy(sound, ptr, size);
 		_vm->_mixer->playRaw(NULL, sound, size, rate, flags, soundID);
 	}
+	// Support for later Backyard sports games sounds
+	else if (READ_UINT32(ptr) == MKID('RIFF')) {
+		// TODO: Play WAV, with set sound ID
+	}
 	// Support for Putt-Putt sounds - very hackish, too 8-)
 	else if (READ_UINT32(ptr) == MKID('DIGI') || READ_UINT32(ptr) == MKID('TALK') || READ_UINT32(ptr) == MKID('HSHD')) {
 		if (READ_UINT32(ptr) == MKID('HSHD')) {
@@ -1303,6 +1307,11 @@
 		total_size = _fileHandle.readUint32BE();
 		_fileHandle.read(createResource(type, idx, total_size), total_size - 8);
 		return 1;
+	} else if (basetag == MKID('WSOU')) {
+		_fileHandle.seek(-12, SEEK_CUR);
+		total_size = _fileHandle.readUint32BE();
+		_fileHandle.read(createResource(type, idx, total_size), total_size - 8);
+		return 1;
 	} else if (basetag == MKID('HSHD')) {
 		_fileHandle.seek(-12, SEEK_CUR);
 		total_size = _fileHandle.readUint32BE();





More information about the Scummvm-git-logs mailing list