[Scummvm-cvs-logs] SF.net SVN: scummvm:[41427] scummvm/branches/gsoc2009-mods

nolange at users.sourceforge.net nolange at users.sourceforge.net
Wed Jun 10 15:45:24 CEST 2009


Revision: 41427
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41427&view=rev
Author:   nolange
Date:     2009-06-10 13:45:23 +0000 (Wed, 10 Jun 2009)

Log Message:
-----------
Fix looping of Tracks

Modified Paths:
--------------
    scummvm/branches/gsoc2009-mods/sound/mods/tfmx.cpp
    scummvm/branches/gsoc2009-mods/tfmx/tfmxplayer.cpp

Modified: scummvm/branches/gsoc2009-mods/sound/mods/tfmx.cpp
===================================================================
--- scummvm/branches/gsoc2009-mods/sound/mods/tfmx.cpp	2009-06-10 12:47:29 UTC (rev 41426)
+++ scummvm/branches/gsoc2009-mods/sound/mods/tfmx.cpp	2009-06-10 13:45:23 UTC (rev 41427)
@@ -220,6 +220,11 @@
 		} else {
 			//TODO ?
 		}
+		channel.volume = 0;
+		Paula::setChannelVolume(channel.paulaChannel, channel.volume);
+
+		if (macroPtr[2] != 0 || macroPtr[3] != 0)
+			debug("DMA Off: Parameters not implemented %02X%02X%02X", macroPtr[1], macroPtr[2], macroPtr[3]);
 		return true;
 
 	case 0x01:	// DMA On
@@ -337,7 +342,7 @@
 		Paula::setChannelSampleLen(channel.paulaChannel, channel.sampleLen);
 		return true;
 
-	case 0x14:	// Wait key up. Parameters: wait cycles(W)
+	case 0x14:	// Wait key up. Parameters: wait cycles
 		if (!channel.keyUp || channel.macroLoopCount == 0) {
 			channel.macroLoopCount = 0xFF;
 			return true;
@@ -398,12 +403,12 @@
 		warnMacroUnimplemented(macroPtr, 0);
 		return true;
 
-	case 0x1C:	// Splitkey. Parameters: key/macrostep(W)
+	case 0x1C:	// Branch on Note. Parameters: note/macrostep(W)
 		if (channel.note > macroPtr[1])
 			channel.macroStep = READ_BE_UINT16(&macroPtr[2]);
 		return true;
 
-	case 0x1D:	// Splitvolume. Parameters: volume/macrostep
+	case 0x1D:	// Branch on Volume. Parameters: volume/macrostep(W)
 		if (channel.volume > macroPtr[1])
 			channel.macroStep = READ_BE_UINT16(&macroPtr[2]);
 		return true;
@@ -480,7 +485,7 @@
 		if (_playerCtx.pendingTrackstep) {
 			// we load the next Trackstep Command and then process all Channels again
 			// TODO Optionally disable looping
-			if (_trackCtx.startInd == _trackCtx.stopInd)
+			if (_trackCtx.posInd == _trackCtx.stopInd)
 				_trackCtx.posInd = _trackCtx.startInd;
 			else
 				++_trackCtx.posInd;
@@ -672,7 +677,7 @@
 		channel.macroIndex = param1 % kMaxMacroOffsets;
 		channel.macroOffset = _macroOffset[param1 % kMaxMacroOffsets];
 		channel.relVol = (param2 >> 4) & 0xF;
-		channel.fineTune = (int16)param3;
+		channel.fineTune = (int8)param3;
 
 		initMacroProgramm(channel);
 		channel.keyUp = true;

Modified: scummvm/branches/gsoc2009-mods/tfmx/tfmxplayer.cpp
===================================================================
--- scummvm/branches/gsoc2009-mods/tfmx/tfmxplayer.cpp	2009-06-10 12:47:29 UTC (rev 41426)
+++ scummvm/branches/gsoc2009-mods/tfmx/tfmxplayer.cpp	2009-06-10 13:45:23 UTC (rev 41427)
@@ -109,9 +109,9 @@
 			if (i < argc) {
 				param = atoi(argv[i]);
 				debug( "play Macro %02X", param);
-				dumpMacro(*player, 0x11);
+				dumpMacro(*player, param);
 				playflag = 1;
-				player->doMacro(param,0x1B);
+				player->doMacro(param,param);
 				++i;
 			}
 			break;
@@ -143,7 +143,7 @@
 	while( true)
 		player->readBuffer(buf, ARRAYSIZE(buf));
 #endif
-	int maxsecs = 60;
+	int maxsecs = 2 * 60;
 	if (playflag == 1) {
 		// get Mixer, assume this never fails 
 		Audio::Mixer *mixer = g_system->getMixer();


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