[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.cpp,1.47,1.48 dimuse_sndmgr.cpp,1.26,1.27

Pawel Kolodziejski aquadran at users.sourceforge.net
Sat Feb 14 07:22:01 CET 2004


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

Modified Files:
	dimuse.cpp dimuse_sndmgr.cpp 
Log Message:
fixed bug #892426 - improved FT sound loops

Index: dimuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.cpp,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- dimuse.cpp	14 Feb 2004 14:44:47 -0000	1.47
+++ dimuse.cpp	14 Feb 2004 15:14:30 -0000	1.48
@@ -208,19 +208,6 @@
 
 void IMuseDigital::switchToNextRegion(int track) {
 	int num_regions = _sound->getNumRegions(_track[track].soundHandle);
-	int num_jumps = _sound->getNumJumps(_track[track].soundHandle);
-	if (_vm->_gameId == GID_FT) {
-		if (_track[track].curRegion == -1) {
-			_track[track].curRegion = 0;
-			_track[track].regionOffset = 0;
-			return;
-		}
-		if (num_jumps != 0)
-			_track[track].regionOffset = 0;
-		else
-			_track[track].toBeRemoved = true;
-		return;
-	}
 
 	if (++_track[track].curRegion == num_regions) {
 		_track[track].toBeRemoved = true;

Index: dimuse_sndmgr.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_sndmgr.cpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- dimuse_sndmgr.cpp	18 Jan 2004 16:59:54 -0000	1.26
+++ dimuse_sndmgr.cpp	14 Feb 2004 15:14:30 -0000	1.27
@@ -49,16 +49,30 @@
 
 void ImuseDigiSndMgr::prepareSound(byte *ptr, int slot) {
 	if (READ_UINT32(ptr) == MKID('Crea')) {
-		int size = 0, rate = 0, loops = 0;
-		_sounds[slot].resPtr = readVOCFromMemory(ptr, size, rate, loops);
+		int size = 0, rate = 0, loops = 0, begin_loop = 0, end_loop = 0;
+		_sounds[slot].resPtr = readVOCFromMemory(ptr, size, rate, loops, begin_loop, end_loop);
 		_sounds[slot].freeResPtr = true;
 		_sounds[slot].bits = 8;
 		_sounds[slot].freq = rate;
 		_sounds[slot].channels = 1;
+		_sounds[slot].region[0].offset = 0;
 		_sounds[slot].region[0].length = size;
 		_sounds[slot].numRegions++;
-		if (loops != 0)
+		if (loops != 0) {
+			if (begin_loop == 0) {
+				_sounds[slot].region[1].offset = end_loop;
+				_sounds[slot].numRegions++;
+			} else {
+				_sounds[slot].region[0].length = begin_loop;
+				_sounds[slot].region[1].offset = begin_loop;
+				_sounds[slot].region[1].length = end_loop - begin_loop;
+				_sounds[slot].region[2].offset = end_loop;
+				_sounds[slot].numRegions += 2;
+			}
+			_sounds[slot].jump[0].dest = begin_loop;
+			_sounds[slot].jump[0].offset = end_loop;
 			_sounds[slot].numJumps++;
+		}
 	} else if (READ_UINT32(ptr) == MKID('iMUS')) {
 		uint32 tag;
 		int32 size = 0;





More information about the Scummvm-git-logs mailing list