[Scummvm-cvs-logs] CVS: scummvm/scumm imuse_internal.h,2.6,2.7 imuse_player.cpp,2.8,2.9

Jamieson Christian jamieson630 at users.sourceforge.net
Sun May 25 09:22:02 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv3327/scumm

Modified Files:
	imuse_internal.h imuse_player.cpp 
Log Message:
Fixed music starting at incorrect location when loading game

Index: imuse_internal.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_internal.h,v
retrieving revision 2.6
retrieving revision 2.7
diff -u -d -r2.6 -r2.7
--- imuse_internal.h	24 May 2003 19:51:29 -0000	2.6
+++ imuse_internal.h	25 May 2003 16:21:55 -0000	2.7
@@ -164,7 +164,6 @@
 	int8 _detune;
 	byte _vol_eff;
 
-	uint _song_index;
 	uint _track_index;
 	uint _loop_to_beat;
 	uint _loop_from_beat;
@@ -219,7 +218,7 @@
 
 	// Sequencer part
 	void setTempo(uint32 data);
-	int start_seq_sound(int sound);
+	int start_seq_sound (int sound, bool reset_vars = true);
 	int query_param(int param);
 
 public:

Index: imuse_player.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_player.cpp,v
retrieving revision 2.8
retrieving revision 2.9
diff -u -d -r2.8 -r2.9
--- imuse_player.cpp	25 May 2003 15:46:47 -0000	2.8
+++ imuse_player.cpp	25 May 2003 16:21:55 -0000	2.9
@@ -60,7 +60,6 @@
 _transpose (0),
 _detune (0),
 _vol_eff (0),
-_song_index (0),
 _track_index (0),
 _loop_to_beat (0),
 _loop_from_beat (0),
@@ -156,19 +155,20 @@
 	memset(&_hook, 0, sizeof(_hook));
 }
 
-int Player::start_seq_sound(int sound) {
+int Player::start_seq_sound (int sound, bool reset_vars) {
 	byte *ptr;
 
-	_song_index = sound;
-	_loop_to_beat = 1;
-	_loop_from_beat = 1;
-	_track_index = 0;
-	_loop_counter = 0;
-	_loop_to_tick = 0;
-	_loop_from_tick = 0;
+	if (reset_vars) {
+		_loop_to_beat = 1;
+		_loop_from_beat = 1;
+		_track_index = 0;
+		_loop_counter = 0;
+		_loop_to_tick = 0;
+		_loop_from_tick = 0;
 
-	setTempo(500000);
-	setSpeed(128);
+		setTempo(500000);
+		setSpeed(128);
+	}
 
 	ptr = _se->findStartOfSound (sound);
 	if (ptr == NULL)
@@ -219,7 +219,7 @@
 void Player::setSpeed(byte speed) {
 	_speed = speed;
 	if (_parser)
-		_parser->setTimerRate ((_midi->getBaseTempo() * speed) >> 7);
+		_parser->setTimerRate ((_midi->getBaseTempo() * speed) / 128);
 }
 
 void Player::send (uint32 b) {
@@ -719,6 +719,7 @@
 bool Player::jump(uint track, uint beat, uint tick) {
 	if (!_parser)
 		return false;
+	_track_index = track;
 	_parser->setTrack (track);
 	if (!_parser->jumpToTick ((beat - 1) * TICKS_PER_BEAT + tick))
 		return false;
@@ -1122,12 +1123,11 @@
 	if (!_midi) {
 		clear();
 	} else {
-		start_seq_sound (_id);
+		start_seq_sound (_id, false);
 		setTempo (_tempo);
-		if (_parser) {
-			_parser->setTrack (_track_index);
-			_parser->jumpToTick (_music_tick);
-		}
+		setSpeed (_speed);
+		if (_parser)
+			_parser->jumpToTick (_music_tick); // start_seq_sound already switched tracks
 		_isMT32 = _se->isMT32 (_id);
 		_isGM = _se->isGM (_id);
 	}
@@ -1174,7 +1174,7 @@
 		MKLINE(Player, _vol_chan, sleUint16, VER_V8),
 		MKLINE(Player, _vol_eff, sleByte, VER_V8),
 		MKLINE(Player, _speed, sleByte, VER_V8),
-		MKLINE(Player, _song_index, sleUint16, VER_V8),
+		MK_OBSOLETE(Player, _song_index, sleUint16, VER_V8, VER_V19),
 		MKLINE(Player, _track_index, sleUint16, VER_V8),
 		MK_OBSOLETE(Player, _timer_counter, sleUint16, VER_V8, VER_V17),
 		MKLINE(Player, _loop_to_beat, sleUint16, VER_V8),





More information about the Scummvm-git-logs mailing list