[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