[Scummvm-cvs-logs] CVS: scummvm/scumm imuse.cpp,1.51,1.52 resource.cpp,1.17,1.18 scumm.h,1.37,1.38 scummvm.cpp,1.53,1.54

Pawe? Ko?odziejski aquadran at users.sourceforge.net
Fri Oct 11 01:36:03 CEST 2002


Update of /cvsroot/scummvm/scummvm/scumm
In directory usw-pr-cvs1:/tmp/cvs-serv8894

Modified Files:
	imuse.cpp resource.cpp scumm.h scummvm.cpp 
Log Message:
added FT imuse music

Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.cpp,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -d -r1.51 -r1.52
--- imuse.cpp	10 Oct 2002 21:38:20 -0000	1.51
+++ imuse.cpp	11 Oct 2002 08:35:12 -0000	1.52
@@ -5555,7 +5555,7 @@
 int32 IMuseDigital::doCommand(int a, int b, int c, int d, int e, int f, int g, int h) {
 	byte cmd = a & 0xFF;
 	byte param = a >> 8;
-	int32 sample = b;
+	int32 sample = b, r;
 	byte sub_cmd = c >> 8;
 	int8 channel = -1, l;
 	int8 tmp;
@@ -5652,13 +5652,12 @@
 		switch (cmd) {
 		case 0: // play music (state)
 			debug(1, "IMuseDigital::doCommand 0x1000 (%d)", b);
-			return 0;
 			if (_scumm->_gameId == GID_DIG) {
 				for(l = 0;; l++) {
 					if (_digStateMusicMap[l].room == -1) {
 						return 1;
 					}
-					if ((_digStateMusicMap[l].room == b)) {
+					if (_digStateMusicMap[l].room == b) {
 						int16 music = _digStateMusicMap[l].table_index;
 						debug(1, "Play imuse music: %s, %s, %s", _digStateMusicTable[music].name, _digStateMusicTable[music].title, _digStateMusicTable[music].filename);
 						if (_digStateMusicTable[music].filename[0] != 0) {
@@ -5668,6 +5667,22 @@
 					}
 				}
 			} else if (_scumm->_gameId == GID_FT) {
+				for(l = 0;; l++) {
+					if (_ftStateMusicTable[l].index == -1) {
+						return 1;
+					}
+					if (_ftStateMusicTable[l].index == b) {
+						debug(1, "Play imuse music: %s, %s", _ftStateMusicTable[l].name, _ftStateMusicTable[l].audioname);
+						if (_ftStateMusicTable[l].audioname[0] != 0) {
+							for(r = 0; r < _scumm->_numAudioNames; r++) {
+								if (strcmp(_ftStateMusicTable[l].audioname, &_scumm->_audioNames[r * 9]) == 0) {
+									startSound(r);
+									doCommand(12, r, 1536, _ftStateMusicTable[l].volume, 0, 0, 0, 0);
+								}
+							}
+						}
+					}
+				}
 			}
 			return 0;
 		case 1: // play music (seq)
@@ -5686,6 +5701,22 @@
 					}
 				}
 			} else if (_scumm->_gameId == GID_FT) {
+				for(l = 0;; l++) {
+					if (_ftSeqMusicTable[l].index == -1) {
+						return 1;
+					}
+					if (_ftSeqMusicTable[l].index == b) {
+						debug(1, "Play imuse music: %s, %s", _ftSeqMusicTable[l].name, _ftSeqMusicTable[l].audioname);
+						if (_ftSeqMusicTable[l].audioname[0] != 0) {
+							for(r = 0; r < _scumm->_numAudioNames; r++) {
+								if (strcmp(_ftSeqMusicTable[l].audioname, &_scumm->_audioNames[r * 9]) == 0) {
+									startSound(r);
+									doCommand(12, r, 1536, _ftSeqMusicTable[l].volume, 0, 0, 0, 0);
+								}
+							}
+						}
+					}
+				}
 			}
 			return 0;
 		case 2: // dummy in DIG and CMI

Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- resource.cpp	2 Oct 2002 13:25:06 -0000	1.17
+++ resource.cpp	11 Oct 2002 08:35:12 -0000	1.18
@@ -298,8 +298,13 @@
 			break;
 
 		case MKID('RNAM'):
-		case MKID('ANAM'):
 			_fileHandle.seek(itemsize - 8, SEEK_CUR);
+			break;
+
+		case MKID('ANAM'):
+			_numAudioNames = _fileHandle.readWordLE();
+			_audioNames = (char*)malloc(_numAudioNames * 9);
+			_fileHandle.read(_audioNames, _numAudioNames * 9);
 			break;
 
 		case MKID('DROO'):

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- scumm.h	8 Oct 2002 00:29:32 -0000	1.37
+++ scumm.h	11 Oct 2002 08:35:12 -0000	1.38
@@ -447,6 +447,9 @@
 	int _numCharsets, _numCostumes, _numNewNames, _numGlobalScripts;
 	int NUM_ACTORS;
 
+	char *_audioNames;
+	int32 _numAudioNames;
+
 	/* Current objects - can go in their respective classes */
 	byte _curActor;
 	int _curVerb;

Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- scummvm.cpp	9 Oct 2002 20:29:26 -0000	1.53
+++ scummvm.cpp	11 Oct 2002 08:35:12 -0000	1.54
@@ -163,6 +163,7 @@
 		_saveLoadCompatible = false;
 	}
 	loadLanguageBundle();
+	_audioNames = NULL;
 }
 
 Scumm::~Scumm ()
@@ -186,6 +187,8 @@
 		delete _imuseDigital;
 	if (_existLanguageFile)
 		delete _languageBuffer;
+	if (_audioNames)
+		delete _audioNames;
 }
 
 void Scumm::scummInit()





More information about the Scummvm-git-logs mailing list