[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