[Scummvm-cvs-logs] SF.net SVN: scummvm: [21373] scummvm/trunk/engines/scumm/he/sound_he.cpp

kirben at users.sourceforge.net kirben at users.sourceforge.net
Sat Mar 18 20:42:07 CET 2006


Revision: 21373
Author:   kirben
Date:     2006-03-18 20:41:43 -0800 (Sat, 18 Mar 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=21373&view=rev

Log Message:
-----------
Skip HSHD block by set size, since there are sound resources (ie Caiman in jungle) which have incorrect size in HSHD header

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/he/sound_he.cpp
Modified: scummvm/trunk/engines/scumm/he/sound_he.cpp
===================================================================
--- scummvm/trunk/engines/scumm/he/sound_he.cpp	2006-03-19 04:36:54 UTC (rev 21372)
+++ scummvm/trunk/engines/scumm/he/sound_he.cpp	2006-03-19 04:41:43 UTC (rev 21373)
@@ -444,8 +444,10 @@
 
 		priority = (soundID > _vm->_numSounds) ? 255 : *(ptr + 18);
 		rate = READ_LE_UINT16(ptr + 22);
-		ptr += 8 + READ_BE_UINT32(ptr + 12);
 
+		// Skip DIGI/TALK (8) and HSHD (24) blocks
+		ptr += 32;
+
 		if (_vm->_mixer->isSoundHandleActive(_heSoundChannels[heChannel])) {
 			int curSnd = _heChannel[heChannel].sound;
 			if (curSnd == 1 && soundID != 1)
@@ -461,7 +463,7 @@
 		}
 
 		assert(READ_BE_UINT32(ptr) == MKID_BE('SDAT'));
-		size = READ_BE_UINT32(ptr+4) - 8;
+		size = READ_BE_UINT32(ptr + 4) - 8;
 		if (heOffset < 0 || heOffset > size) {
 			// Occurs when making fireworks in puttmoon
 			debug(0, "playSound: Invalid sound offset (offset %d, size %d) in sound %d", heOffset, size, soundID);
@@ -489,10 +491,12 @@
 	else if (READ_BE_UINT32(ptr) == MKID_BE('MRAW')) {
 		priority = *(ptr + 18);
 		rate = READ_LE_UINT16(ptr + 22);
-		ptr += 8 + READ_BE_UINT32(ptr+12);
 
+		// Skip DIGI (8) and HSHD (24) blocks
+		ptr += 32;
+
 		assert(READ_BE_UINT32(ptr) == MKID_BE('SDAT'));
-		size = READ_BE_UINT32(ptr+4) - 8;
+		size = READ_BE_UINT32(ptr + 4) - 8;
 
 		flags = Audio::Mixer::FLAG_AUTOFREE;
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.





More information about the Scummvm-git-logs mailing list