[Scummvm-cvs-logs] CVS: scummvm/scumm/imuse_digi dimuse.cpp,1.51,1.52 dimuse.h,1.33,1.34 dimuse_music.cpp,1.18,1.19

Pawel Kolodziejski aquadran at users.sourceforge.net
Sat Mar 27 09:15:05 CET 2004


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

Modified Files:
	dimuse.cpp dimuse.h dimuse_music.cpp 
Log Message:
some changes to imuse digital

Index: dimuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.cpp,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -d -r1.51 -r1.52
--- dimuse.cpp	23 Mar 2004 22:51:44 -0000	1.51
+++ dimuse.cpp	27 Mar 2004 17:03:42 -0000	1.52
@@ -46,20 +46,16 @@
 	_mutex = g_system->createMutex();
 	_pause = false;
 	_sound = new ImuseDigiSndMgr(_vm);
+	resetState();
 	_vm->_timer->installTimerProc(timer_handler, 1000000 / 25, this);
-
-	_curMusicState = 0;
-	_curMusicSeq = 0;
-	_curMusicCue = 0;
-	memset(_attributesSeq, 0, sizeof(_attributesSeq));
-	memset(_attributesState, 0, sizeof(_attributesState));
-	memset(_attributesTable, 0, sizeof(_attributesTable));
-	_curSeqAtribPos = 0;
 }
 
 IMuseDigital::~IMuseDigital() {
 	stopAllSounds(true);
-	_vm->_timer->removeTimerProc(timer_handler);
+	{
+		Common::StackLock lock(_mutex, g_system, "IMuseDigital::~IMuseDigital()");
+		_vm->_timer->removeTimerProc(timer_handler);
+	}
 	delete _sound;
 	g_system->deleteMutex(_mutex);
 }
@@ -545,8 +541,7 @@
 		debug(5, "ImuseSetAttribute (%d, %d)", b, c);
 		assert((_vm->_gameId == GID_DIG) || (_vm->_gameId == GID_FT));
 		if (_vm->_gameId == GID_DIG) {
-			assert(b >= 0 && b < 11);
-			_attributesTable[b] = c;
+			_attributes[b] = c;
 		}
 		break;
 	case 0x2000: // ImuseSetMasterSFXVolume

Index: dimuse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse.h,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- dimuse.h	23 Mar 2004 21:42:47 -0000	1.33
+++ dimuse.h	27 Mar 2004 17:03:42 -0000	1.34
@@ -77,9 +77,7 @@
 	ImuseDigiSndMgr *_sound;
 	bool _pause;
 
-	int _attributesTable[12];
-	int _attributesState[97];
-	int _attributesSeq[91];
+	int _attributes[188];
 	int _curSeqAtribPos;
 
 	int _curMusicState;
@@ -130,9 +128,7 @@
 		_curMusicState = 0;
 		_curMusicSeq = 0;
 		_curMusicCue = 0;
-		memset(_attributesSeq, 0, sizeof(_attributesSeq));
-		memset(_attributesState, 0, sizeof(_attributesState));
-		memset(_attributesTable, 0, sizeof(_attributesTable));
+		memset(_attributes, 0, sizeof(_attributes));
 		_curSeqAtribPos = 0;
 	}
 

Index: dimuse_music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi/dimuse_music.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- dimuse_music.cpp	23 Mar 2004 21:42:47 -0000	1.18
+++ dimuse_music.cpp	27 Mar 2004 17:03:42 -0000	1.19
@@ -25,6 +25,11 @@
 
 namespace Scumm {
 
+#define DIG_STATE_OFFSET 11
+#define DIG_SEQ_OFFSET (DIG_STATE_OFFSET + 65)
+#define COMI_STATE_OFFSET 3
+#define COMI_SEQ_OFFSET (COMI_STATE_OFFSET + 94)
+
 void IMuseDigital::setDigMusicState(int stateId) {
 	int l, num = -1;
 
@@ -44,18 +49,15 @@
 		}
 		num = l;
 
-		assert(_digStateMusicMap[num].unk1 < 11);
-		int val2 = _attributesTable[_digStateMusicMap[num].unk1];
+		int val2 = _attributes[_digStateMusicMap[num].unk1];
 		if (val2 == 0) {
-			assert(_digStateMusicMap[num].unk3 < 11);
-			if (_attributesTable[_digStateMusicMap[num].unk3] != 0) {
+			if (_attributes[_digStateMusicMap[num].unk3] != 0) {
 				num = _digStateMusicMap[num].unk4;
 			} else {
 				num = _digStateMusicMap[num].musicTableIndex;
 			}
 		} else {
-			assert(_digStateMusicMap[num].unk2 < 11);
-			int val = _attributesTable[_digStateMusicMap[num].unk2];
+			int val = _digStateMusicMap[num].unk2;
 			if (val == 0) {
 				num = _digStateMusicMap[num].musicTableIndex + val2;
 			} else {
@@ -103,7 +105,7 @@
 		if (_curMusicSeq == 0) {
 			playDigMusic(_digSeqMusicTable[num].name, &_digSeqMusicTable[num], 0, true);
 			_curSeqAtribPos = 0;
-			_attributesSeq[num] = 1;
+			_attributes[DIG_SEQ_OFFSET + num] = 1;
 		} else {
 			if ((_digSeqMusicTable[_curMusicSeq].opcode == 4) && (_digSeqMusicTable[_curMusicSeq].opcode == 6)) {
 				_curSeqAtribPos = num;
@@ -111,13 +113,13 @@
 			} else if (_digSeqMusicTable[_curMusicSeq].opcode == 6) {
 				playDigMusic(_digSeqMusicTable[num].name, &_digSeqMusicTable[num], 0, true);
 				_curSeqAtribPos = 0;
-				_attributesSeq[num] = 1;
+				_attributes[DIG_SEQ_OFFSET + num] = 1;
 			}
 		}
 	} else {
 		if (_curSeqAtribPos != 0) {
 			playDigMusic(_digSeqMusicTable[_curSeqAtribPos].name, &_digSeqMusicTable[_curSeqAtribPos], 0, true);
-			_attributesSeq[_curSeqAtribPos] = 1;
+			_attributes[DIG_SEQ_OFFSET + _curSeqAtribPos] = 1;
 			num = _curSeqAtribPos;
 			_curSeqAtribPos = 0;
 		} else {
@@ -136,17 +138,17 @@
 	int hookId = 0;
 
 	if (songName != NULL) {
-		if ((_attributesSeq[38] != 0) && (_attributesSeq[41] == _attributesSeq[38])) {
+		if ((_attributes[DIG_SEQ_OFFSET + 38] != 0) && (_attributes[DIG_SEQ_OFFSET + 41] == _attributes[DIG_SEQ_OFFSET + 38])) {
 			if ((atribPos == 43) || (atribPos == 44))
 				hookId = 3;
 		}
 
-		if ((_attributesSeq[46] != 0) && (_attributesSeq[48] == 0)) {
+		if ((_attributes[DIG_SEQ_OFFSET + 46] != 0) && (_attributes[DIG_SEQ_OFFSET + 48] == 0)) {
 			if ((atribPos == 38) || (atribPos == 39))
 				hookId = 3;
 		}
 
-		if ((_attributesSeq[53] != 0)) {
+		if ((_attributes[DIG_SEQ_OFFSET + 53] != 0)) {
 			if ((atribPos == 50) || (atribPos == 51))
 				hookId = 3;
 		}
@@ -154,14 +156,14 @@
 		if ((atribPos != 0) && (hookId == 0)) {
 			if (table->param != 0)
 				atribPos = table->param;
-			hookId = _attributesState[atribPos];
+			hookId = _attributes[DIG_STATE_OFFSET + atribPos];
 			if (table->hookId != 0) {
 				if ((hookId != 0) && (table->hookId <= 1)) {
-					_attributesState[atribPos] = hookId + 1;
+					_attributes[DIG_STATE_OFFSET + atribPos] = hookId + 1;
 					if (table->hookId < hookId + 1)
-						_attributesState[atribPos] = 1;
+						_attributes[DIG_STATE_OFFSET + atribPos] = 1;
 				} else {
-					_attributesState[atribPos] = 2;
+					_attributes[DIG_STATE_OFFSET + atribPos] = 2;
 				}
 			}
 		}
@@ -244,7 +246,7 @@
 		if (_curMusicSeq == 0) {
 			playComiMusic(_comiSeqMusicTable[num].name, &_comiSeqMusicTable[num], 0, true);
 			_curSeqAtribPos = 0;
-			_attributesSeq[num] = 1;
+			_attributes[COMI_SEQ_OFFSET + num] = 1;
 		} else {
 			if ((_comiSeqMusicTable[_curMusicSeq].opcode == 4) && (_comiSeqMusicTable[_curMusicSeq].opcode == 6)) {
 				_curSeqAtribPos = num;
@@ -252,13 +254,13 @@
 			} else if (_comiSeqMusicTable[_curMusicSeq].opcode == 6) {
 				playComiMusic(_comiSeqMusicTable[num].name, &_comiSeqMusicTable[num], 0, true);
 				_curSeqAtribPos = 0;
-				_attributesSeq[num] = 1;
+				_attributes[COMI_SEQ_OFFSET + num] = 1;
 			}
 		}
 	} else {
 		if (_curSeqAtribPos != 0) {
 			playComiMusic(_comiSeqMusicTable[_curSeqAtribPos].name, &_comiSeqMusicTable[_curSeqAtribPos], 0, true);
-			_attributesSeq[_curSeqAtribPos] = 1;
+			_attributes[COMI_SEQ_OFFSET + _curSeqAtribPos] = 1;
 			num = _curSeqAtribPos;
 			_curSeqAtribPos = 0;
 		} else {
@@ -277,14 +279,14 @@
 	int hookId = 0;
 
 	if ((songName != NULL) && (atribPos != 0)) {
-		hookId = _attributesState[atribPos];
+		hookId = _attributes[COMI_STATE_OFFSET + atribPos];
 		if (table->hookId != 0) {
 			if ((hookId != 0) && (table->hookId <= 1)) {
-				_attributesState[atribPos] = hookId + 1;
+				_attributes[COMI_STATE_OFFSET + atribPos] = hookId + 1;
 				if (table->hookId < hookId + 1)
-					_attributesState[atribPos] = 1;
+					_attributes[COMI_STATE_OFFSET + atribPos] = 1;
 			} else {
-				_attributesState[atribPos] = 2;
+				_attributes[COMI_STATE_OFFSET + atribPos] = 2;
 			}
 		}
 	}





More information about the Scummvm-git-logs mailing list