[Scummvm-cvs-logs] SF.net SVN: scummvm:[33942] scummvm/trunk/engines/kyra/sound_towns.cpp

athrxx at users.sourceforge.net athrxx at users.sourceforge.net
Sat Aug 16 16:25:04 CEST 2008


Revision: 33942
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33942&view=rev
Author:   athrxx
Date:     2008-08-16 14:25:03 +0000 (Sat, 16 Aug 2008)

Log Message:
-----------
KYRA: Fm-Towns Audio: fixed music fading

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/sound_towns.cpp

Modified: scummvm/trunk/engines/kyra/sound_towns.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sound_towns.cpp	2008-08-16 14:06:26 UTC (rev 33941)
+++ scummvm/trunk/engines/kyra/sound_towns.cpp	2008-08-16 14:25:03 UTC (rev 33942)
@@ -1631,7 +1631,7 @@
 	bool _sfxPlaying;
 	bool _fading;
 	uint8 _looping;
-	uint32 _tickCounter;
+	uint32 _musicTickCounter;
 
 	bool _updateEnvelopeParameters;
 
@@ -2662,7 +2662,7 @@
 }
 
 void TownsPC98_OpnChannelPCM::fadeStep() {
-
+	// TODO (emulation not implemented anyway)
 }
 
 bool TownsPC98_OpnChannelPCM::control_f1_pcmStart(uint8 para) {
@@ -2878,7 +2878,7 @@
 	_ssgChannels(0), _sfxChannels(0), _pcmChannel(0),	_looping(0), _opnCarrier(_drvTables + 76),
 	_opnFreqTable(_drvTables + 84), _opnFreqTableSSG(_drvTables + 252),	_opnFxCmdLen(_drvTables + 36),
 	_opnLvlPresets(_drvTables + (type == OD_TOWNS ? 52 : 228)), _oprRates(0), _oprRateshift(0), _oprAttackDecay(0),
-	_oprFrq(0), _oprSinTbl(0), _oprLevelOut(0), _oprDetune(0), _cbCounter(4), _tickCounter(0),
+	_oprFrq(0), _oprSinTbl(0), _oprLevelOut(0), _oprDetune(0), _cbCounter(4), _musicTickCounter(0),
 	_updateChannelsFlag(type == OD_TYPE26 ? 0x07 : 0x3F), _updateSSGFlag(type == OD_TOWNS ? 0 : 7),
 	_updatePCMFlag(type == OD_TYPE86 ? 1 : 0), _finishedChannelsFlag(0), _finishedSSGFlag(0),
 	_finishedPCMFlag(0), _samplesTillCallback(0), _samplesTillCallbackRemainder(0),
@@ -3132,7 +3132,7 @@
 
 	_musicPlaying = _sfxPlaying = _fading = false;
 	_looping = 0;
-	_tickCounter = 0;
+	_musicTickCounter = 0;
 	_sfxData = 0;
 
 	unlock();
@@ -3147,20 +3147,22 @@
 
 		_fading = true;
 
-		uint32 dTime = _tickCounter + 2;
+		uint32 dTime = _musicTickCounter + 2;
 		for (int j = 0; j < _numChan; j++) {
 			if (_updateChannelsFlag & _channels[j]->_idFlag)
 				_channels[j]->fadeStep();
 		}
 		for (int j = 0; j < _numSSG; j++) {
-			if (_updateSSGFlag & _channels[j]->_idFlag)
+			if (_updateSSGFlag & _ssgChannels[j]->_idFlag)
 				_ssgChannels[j]->fadeStep();
 		}
+		if (_updatePCMFlag & _pcmChannel->_idFlag)
+			_pcmChannel->fadeStep();
 
 		unlock();
 
 		while (_musicPlaying) {
-			if (_tickCounter >= dTime)
+			if (_musicTickCounter >= dTime)
 				break;
 		}
 	}
@@ -3171,8 +3173,6 @@
 void TownsPC98_OpnDriver::callback() {
 	lock();
 
-	_tickCounter++;
-
 	if (_sfxChannels && _sfxPlaying) {
 		if (_sfxData)
 			startSoundEffect();
@@ -3192,6 +3192,7 @@
 
 	if (!--_cbCounter && _musicPlaying) {
 		_cbCounter = 4;
+		_musicTickCounter++;
 
 		for (int i = 0; i < _numChan; i++) {
 			if (_updateChannelsFlag & _channels[i]->_idFlag) {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list