[Scummvm-cvs-logs] CVS: scummvm/scumm module.mk,1.21,1.22 scumm.h,1.293,1.294 scummvm.cpp,2.374,2.375 sound.cpp,1.234,1.235

Travis Howell kirben at users.sourceforge.net
Sun Sep 7 00:24:08 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv12715/scumm

Modified Files:
	module.mk scumm.h scummvm.cpp sound.cpp 
Log Message:

Add music player for Amiga versions of indy3ega/loom from unused.
Revert last change to common.rules for now, it broke compile.


Index: module.mk
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/module.mk,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- module.mk	14 Aug 2003 08:24:13 -0000	1.21
+++ module.mk	7 Sep 2003 07:23:19 -0000	1.22
@@ -23,6 +23,7 @@
 	scumm/object.o \
 	scumm/player_v1.o\
 	scumm/player_v2.o\
+	scumm/player_v3a.o\
 	scumm/resource.o \
 	scumm/resource_v2.o \
 	scumm/resource_v3.o \

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.293
retrieving revision 1.294
diff -u -d -r1.293 -r1.294
--- scumm.h	5 Sep 2003 22:53:46 -0000	1.293
+++ scumm.h	7 Sep 2003 07:23:19 -0000	1.294
@@ -41,6 +41,7 @@
 class IMuseDigital;
 class NewGui;
 class Player_V2;
+class Player_V3A;
 class Scumm;
 class ScummDebugger;
 class Serializer;
@@ -305,6 +306,7 @@
 	IMuse *_imuse;
 	IMuseDigital *_imuseDigital;
 	Player_V2 *_playerV2;
+	Player_V3A *_playerV3A;
 	Sound *_sound;
 
 	VerbSlot *_verbs;

Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 2.374
retrieving revision 2.375
diff -u -d -r2.374 -r2.375
--- scummvm.cpp	6 Sep 2003 23:29:35 -0000	2.374
+++ scummvm.cpp	7 Sep 2003 07:23:19 -0000	2.375
@@ -31,6 +31,7 @@
 #include "imuse_digi.h"
 #include "intern.h"
 #include "object.h"
+#include "player_v3a.h"
 #include "player_v2.h"
 #include "player_v1.h"
 #include "resource.h"
@@ -690,8 +691,11 @@
 	_imuse = NULL;
 	_imuseDigital = NULL;
 	_playerV2 = NULL;
+	_playerV3A = NULL;
 	if (_features & GF_DIGI_IMUSE) {
 		_imuseDigital = new IMuseDigital(this);
+	} else if ((_features & GF_AMIGA) && (_version == 3)) {
+		_playerV3A = new Player_V3A(this);
 	} else if ((_features & GF_AMIGA) && (_version < 5)) {
 		_playerV2 = NULL;
 	} else if (((_midiDriver == MD_PCJR) || (_midiDriver == MD_PCSPK)) && ((_version > 2) && (_version < 5))) {
@@ -783,6 +787,7 @@
 	delete _imuse;
 	delete _imuseDigital;
 	delete _playerV2;
+	delete _playerV3A;
 	free(_languageBuffer);
 	free(_audioNames);
 
@@ -1272,6 +1277,10 @@
 		// Covered automatically by the Sound class
 	} else if (_playerV2) {
 		VAR(VAR_MUSIC_TIMER) = _playerV2->getMusicTimer();
+	} else if (_playerV3A) {
+		for (int i = 0; i < delta; i++)
+			_playerV3A->playMusic();
+		VAR(VAR_MUSIC_TIMER) = _playerV3A->getMusicTimer();
 	} else if (_imuse) {
 		VAR(VAR_MUSIC_TIMER) = _imuse->getMusicTimer();
 	} else if (_features & GF_SMALL_HEADER) {

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.234
retrieving revision 1.235
diff -u -d -r1.234 -r1.235
--- sound.cpp	7 Sep 2003 00:03:55 -0000	1.234
+++ sound.cpp	7 Sep 2003 07:23:20 -0000	1.235
@@ -26,6 +26,7 @@
 #include "imuse.h"
 #include "imuse_digi.h"
 #include "player_v2.h"
+#include "player_v3a.h"
 #include "scumm.h"
 #include "sound.h"
 #include "sound/mididrv.h"
@@ -430,26 +431,14 @@
 	}
 	
 
-	// Used in Amiga verisons of indy3ega and loom
-	// Used in Mac. version of indy3ega
-	if (((_scumm->_features & GF_MACINTOSH) && (_scumm->_gameId == GID_INDY3))
-		|| ((_scumm->_features & GF_AMIGA) && (_scumm->_version == 3))) {
+	if ((_scumm->_features & GF_MACINTOSH) && (_scumm->_gameId == GID_INDY3)) {
 		if (ptr[26] == 00) {
 			size = READ_BE_UINT16(ptr + 12);
 			rate = 3579545 / READ_BE_UINT16(ptr + 20);
 			sound = (char *)malloc(size);
 			int vol = ptr[24] * 4;
 			memcpy(sound,ptr + READ_BE_UINT16(ptr + 8), size);
-			if ((_scumm->_features & GF_AMIGA) && (READ_BE_UINT16(ptr + 16) || READ_BE_UINT16(ptr + 6))) {
-				// the first check is for pitch-bending looped sounds (i.e. "pouring liquid", "biplane dive", etc.)
-				// the second check is for simple looped sounds
-				int loopStart = READ_BE_UINT16(ptr + 10) - READ_BE_UINT16(ptr + 8);
-				int loopEnd = READ_BE_UINT16(ptr + 14);
-				_scumm->_mixer->playRaw(NULL, sound, size, rate,
-							SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_LOOP, soundID, vol, 0, loopStart, loopEnd);
-			} else {
-				_scumm->_mixer->playRaw(NULL, sound, size, rate, SoundMixer::FLAG_AUTOFREE, soundID, vol, 0);
-			}
+			_scumm->_mixer->playRaw(NULL, sound, size, rate, SoundMixer::FLAG_AUTOFREE, soundID, vol, 0);
 			return;
 		}
 	}
@@ -496,7 +485,10 @@
 	if (_scumm->_playerV2) {
 		_scumm->_playerV2->startSound(soundID, ptr);
 	}
-	
+
+	if (_scumm->_playerV3A)
+		_scumm->_playerV3A->startSound(soundID, ptr);
+
 	if (_scumm->_imuse) {
 		_scumm->_imuse->startSound(soundID);
 	}
@@ -699,6 +691,9 @@
 	if (_scumm->_playerV2)
 		return _scumm->_playerV2->getSoundStatus(sound);
 
+	if (_scumm->_playerV3A)
+		return _scumm->_playerV3A->getSoundStatus(sound);
+
 	return 0;
 }
 
@@ -769,9 +764,8 @@
 		_scumm->_imuse->stopSound(a);
 	} else if (_scumm->_playerV2) {
 		_scumm->_playerV2->stopSound (a);
-	} else 	if ((_scumm->_features & GF_AMIGA) && (_scumm->_version <= 3)) {
-		// this handles stopping looped sounds for now
-		_scumm->_mixer->stopID(a);
+	} else 	if (_scumm->_playerV3A) {
+		_scumm->_playerV3A->stopSound(a);
 	}
 
 	for (i = 0; i < 10; i++)
@@ -790,6 +784,8 @@
 		_scumm->_imuse->clear_queue();
 	} else if (_scumm->_playerV2) {
 		_scumm->_playerV2->stopAllSounds();
+	} else 	if (_scumm->_playerV3A) {
+		_scumm->_playerV3A->stopAllSounds();
 	}
 
 	clearSoundQue();





More information about the Scummvm-git-logs mailing list