[Scummvm-cvs-logs] CVS: scummvm/scumm resource_v7he.cpp,1.50,1.51 sound.cpp,1.495,1.496

kirben kirben at users.sourceforge.net
Thu Jan 5 21:41:01 CET 2006


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

Modified Files:
	resource_v7he.cpp sound.cpp 
Log Message:

Adjustments to createSound().


Index: resource_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource_v7he.cpp,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- resource_v7he.cpp	5 Jan 2006 11:42:33 -0000	1.50
+++ resource_v7he.cpp	6 Jan 2006 05:40:40 -0000	1.51
@@ -1817,7 +1817,9 @@
 	res.lock(rtSound, snd2id);
 
 	snd1Ptr = getResourceAddress(rtSound, snd1id);
+	assert(snd1Ptr);
 	snd2Ptr = getResourceAddress(rtSound, snd2id);
+	assert(snd2Ptr);
 
 	int i;
 	int chan = -1;
@@ -1837,8 +1839,11 @@
 			dst = sbng1Ptr + 8;
 			size = READ_BE_UINT32(sbng1Ptr + 4);
 			len = sbng1Ptr - snd1Ptr + size - curOffs;
-			memcpy(dst, src, len);
 
+			byte *data = (byte *)malloc(len);
+			memcpy(data, src, len);
+			memcpy(dst, data, len);
+			free(data);
 
 			dst = sbng1Ptr + 8;
 			while ((offs = READ_LE_UINT16(dst)) != 0)
@@ -1878,6 +1883,8 @@
 	size1 = READ_BE_UINT32(sdat1Ptr + 4) - 8 - _sndOffs1;
 	size2 = READ_BE_UINT32(sdat2Ptr + 4) - 8;
 
+	debug(0, "SDAT size1 %d size2 %d", size1, size2);
+
 	if (size2 < size1) {
 		src = sdat2Ptr + 8;
 		dst = sdat1Ptr + 8 + _sndOffs1;
@@ -1894,17 +1901,17 @@
 		
 		memcpy(dst, src, len);
 
-		int tmp3 = size2 - size1;
-		if (tmp3 != 0) {
-			// TODO: Additional copy
+		if (size2 != size1) {
+			src = sdat2Ptr + 8 + size1;
+			dst = sdat1Ptr + 8;
+			len = size2 - size1;
+		
+			memcpy(dst, src, len);
 		}
 
-		_sndOffs1 += tmp3;
+		_sndOffs1 += size2 - size1;
 		_sndOffs2 += size2;
 	}
-	
-	res.unlock(rtSound, snd1id);
-	res.unlock(rtSound, snd2id);
 }
 
 } // End of namespace Scumm

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.495
retrieving revision 1.496
diff -u -d -r1.495 -r1.496
--- sound.cpp	5 Jan 2006 11:38:45 -0000	1.495
+++ sound.cpp	6 Jan 2006 05:40:40 -0000	1.496
@@ -1283,7 +1283,7 @@
 		_fileHandle->seek(-16, SEEK_CUR);
 		total_size = max_total_size + 8;
 		ptr = res.createResource(type, idx, total_size);
-		_fileHandle->read(ptr, total_size - 8);
+		_fileHandle->read(ptr, total_size);
 		//dumpResource("sound-", idx, ptr);
 		return 1;
 





More information about the Scummvm-git-logs mailing list