diff options
author | Jamieson Christian | 2003-05-25 16:40:17 +0000 |
---|---|---|
committer | Jamieson Christian | 2003-05-25 16:40:17 +0000 |
commit | 991b2997d4600bf6fa4c564733bbabd9cea50716 (patch) | |
tree | 7e1b27df6af8f94dcef824a4293cb6df8c01f4da /scumm | |
parent | 9d53046039c38d8c562a8f211929a01eb771d054 (diff) | |
download | scummvm-rg350-991b2997d4600bf6fa4c564733bbabd9cea50716.tar.gz scummvm-rg350-991b2997d4600bf6fa4c564733bbabd9cea50716.tar.bz2 scummvm-rg350-991b2997d4600bf6fa4c564733bbabd9cea50716.zip |
More cleanup, plus more crash-aversion fixes.
Restored the -t command line option that had gotten lost in the revamp.
svn-id: r7962
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/imuse_internal.h | 4 | ||||
-rw-r--r-- | scumm/imuse_player.cpp | 34 |
2 files changed, 4 insertions, 34 deletions
diff --git a/scumm/imuse_internal.h b/scumm/imuse_internal.h index 08257d4100..b439052800 100644 --- a/scumm/imuse_internal.h +++ b/scumm/imuse_internal.h @@ -170,8 +170,6 @@ protected: uint _loop_counter; uint _loop_to_tick; uint _loop_from_tick; - uint32 _tempo; - uint32 _tempo_eff; // No Save byte _speed; bool _abort; @@ -217,7 +215,6 @@ protected: void clear_active_notes(); // Sequencer part - void setTempo(uint32 data); int start_seq_sound (int sound, bool reset_vars = true); int query_param(int param); @@ -243,7 +240,6 @@ public: int8 getPan() { return _pan; } Part * getPart (uint8 part); byte getPriority() { return _priority; } - uint32 getTempo() { return _tempo; } uint getTicksPerBeat() { return TICKS_PER_BEAT; } int8 getTranspose() { return _transpose; } byte getVolume() { return _volume; } diff --git a/scumm/imuse_player.cpp b/scumm/imuse_player.cpp index 9feadcd441..89baba6b6c 100644 --- a/scumm/imuse_player.cpp +++ b/scumm/imuse_player.cpp @@ -66,8 +66,6 @@ _loop_from_beat (0), _loop_counter (0), _loop_to_tick (0), _loop_from_tick (0), -_tempo (0), -_tempo_eff (0), _speed (128), _isMT32 (false), _isGM (false), @@ -165,9 +163,6 @@ int Player::start_seq_sound (int sound, bool reset_vars) { _loop_counter = 0; _loop_to_tick = 0; _loop_from_tick = 0; - - setTempo(500000); - setSpeed(128); } ptr = _se->findStartOfSound (sound); @@ -180,31 +175,15 @@ int Player::start_seq_sound (int sound, bool reset_vars) { _parser = MidiParser::createParser_XMIDI(); else _parser = MidiParser::createParser_SMF(); - _parser->setTimerRate ((_midi->getBaseTempo() * _speed) >> 7); _parser->setMidiDriver (this); _parser->property (MidiParser::mpSmartJump, 1); _parser->loadMusic (ptr, 0); _parser->setTrack (_track_index); + setSpeed (reset_vars ? 128 : _speed); return 0; } -void Player::setTempo(uint32 b) { - uint32 i, j; - - i = _midi->getBaseTempo(); - - j = _tempo = b; - j = j * 100 / _se->_tempoFactor; - - while (i & 0xFFFF0000 || j & 0xFFFF0000) { - i >>= 1; - j >>= 1; - } - - _tempo_eff = (i << 16) / j; -} - void Player::uninit_parts() { if (_parts && _parts->_player != this) error("asd"); @@ -219,7 +198,7 @@ void Player::uninit_parts() { void Player::setSpeed(byte speed) { _speed = speed; if (_parser) - _parser->setTimerRate ((_midi->getBaseTempo() * speed) / 128); + _parser->setTimerRate (((_midi->getBaseTempo() * speed) >> 7) * _se->_tempoFactor / 100); } void Player::send (uint32 b) { @@ -1124,7 +1103,6 @@ void Player::fixAfterLoad() { clear(); } else { start_seq_sound (_id, false); - setTempo (_tempo); setSpeed (_speed); if (_parser) _parser->jumpToTick (_music_tick); // start_seq_sound already switched tracks @@ -1139,13 +1117,9 @@ uint32 Player::getBaseTempo() { void Player::metaEvent (byte type, byte *msg, uint16 len) { if (type == 0x2F) { - _parser->jumpToTick (0); // That aborts current parsing + _parser->unloadMusic(); clear(); - return; } - - if (type == 0x51) - setTempo ((msg[0] << 16) | (msg[1] << 8) | msg[2]); } @@ -1182,7 +1156,7 @@ int Player::save_or_load(Serializer *ser) { MKLINE(Player, _loop_counter, sleUint16, VER_V8), MKLINE(Player, _loop_to_tick, sleUint16, VER_V8), MKLINE(Player, _loop_from_tick, sleUint16, VER_V8), - MKLINE(Player, _tempo, sleUint32, VER_V8), + MK_OBSOLETE(Player, _tempo, sleUint32, VER_V8, VER_V19), MK_OBSOLETE(Player, _cur_pos, sleUint32, VER_V8, VER_V17), MK_OBSOLETE(Player, _next_pos, sleUint32, VER_V8, VER_V17), MK_OBSOLETE(Player, _song_offset, sleUint32, VER_V8, VER_V17), |