[Scummvm-cvs-logs] CVS: scummvm/backends/midi emumidi.h,1.4,1.5

Eugene Sandulenko sev at users.sourceforge.net
Sat Oct 23 13:34:01 CEST 2004


Update of /cvsroot/scummvm/scummvm/backends/midi
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8884

Modified Files:
	emumidi.h 
Log Message:
o Turn BASE_FREQ constant into variable. MT-32 has to be run in lesser time slices.
o Attempt to fix mi2, but that cure for symptom, not the cause. Under dosbox header is always valid, but here we get 0x41001612 instead of 0x41101612.


Index: emumidi.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/midi/emumidi.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- emumidi.h	19 Oct 2004 23:03:04 -0000	1.4
+++ emumidi.h	23 Oct 2004 20:33:39 -0000	1.5
@@ -23,7 +23,6 @@
 #include "sound/mididrv.h"
 #include "sound/mixer.h"
 
-#define BASE_FREQ 250
 #define FIXP_SHIFT 16
 
 class MidiDriver_Emulated : public AudioStream, public MidiDriver {
@@ -42,6 +41,8 @@
 	virtual void generate_samples(int16 *buf, int len) = 0;
 	virtual void on_timer() {}
 
+	int _baseFreq;
+
 public:
 	MidiDriver_Emulated(SoundMixer *mixer) : _mixer(mixer) {
 		_isOpen = false;
@@ -51,18 +52,20 @@
 	
 		_next_tick = 0;
 		_samples_per_tick = 0;
+
+		_baseFreq = 250;
 	}
 
 	int open() {
 		_isOpen = true;
 
-		int d = getRate() / BASE_FREQ;
-		int r = getRate() % BASE_FREQ;
+		int d = getRate() / _baseFreq;
+		int r = getRate() % _baseFreq;
 
 		// This is equivalent to (getRate() << FIXP_SHIFT) / BASE_FREQ
 		// but less prone to arithmetic overflow.
 
-		_samples_per_tick = (d << FIXP_SHIFT) + (r << FIXP_SHIFT) / BASE_FREQ;
+		_samples_per_tick = (d << FIXP_SHIFT) + (r << FIXP_SHIFT) / _baseFreq;
 		return 0;
 	}
 
@@ -71,7 +74,7 @@
 		_timer_param = timer_param;
 	}
 
-	uint32 getBaseTempo() { return 1000000 / BASE_FREQ; }
+	uint32 getBaseTempo() { return 1000000 / _baseFreq; }
 
 
 	// AudioStream API





More information about the Scummvm-git-logs mailing list