[Scummvm-cvs-logs] CVS: scummvm/queen music.cpp,1.7,1.8 music.h,1.5,1.6 sound.cpp,1.30,1.31
Joost Peters
joostp at users.sourceforge.net
Mon Jan 19 15:55:03 CET 2004
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm/insane insane.cpp,1.5,1.6 insane.h,1.3,1.4 insane_ben.cpp,1.3,1.4 insane_enemy.cpp,1.3,1.4 insane_iact.cpp,1.3,1.4 insane_scenes.cpp,1.3,1.4
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm sound.cpp,1.314,1.315
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1:/tmp/cvs-serv10027/queen
Modified Files:
music.cpp music.h sound.cpp
Log Message:
- Enable music queueing (I don't really like the levels of indirection, but it'll do for now)
- Handle special music type '2000' (restart previously queued music)
Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/music.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- music.cpp 19 Jan 2004 21:23:42 -0000 1.7
+++ music.cpp 19 Jan 2004 23:54:50 -0000 1.8
@@ -30,6 +30,7 @@
MusicPlayer::MusicPlayer(MidiDriver *driver, byte *data, uint32 size) : _driver(driver), _isPlaying(false), _looping(false), _volume(255), _queuePos(0), _musicData(data), _musicDataSize(size) {
queueClear();
+ _lastSong = 0;
_parser = MidiParser::createParser_SMF();
_parser->setMidiDriver(this);
_parser->setTimerRate(_driver->getBaseTempo());
@@ -59,6 +60,7 @@
}
void MusicPlayer::queueClear() {
+ _lastSong = _songQueue[0];
_queuePos = 0;
memset(_songQueue, 0, sizeof(_songQueue));
}
@@ -130,6 +132,15 @@
}
uint16 songNum = _songQueue[_queuePos];
+
+ //Special type
+ //2000: (songNum + 1) - repeat music from previous queue
+ if (songNum == 1999) {
+ songNum = _lastSong;
+ queueClear();
+ queueSong(songNum);
+ }
+
_parser->loadMusic(_musicData + songOffset(songNum), songLength(songNum));
_parser->setTrack(0);
//debug(0, "Playing song %d [queue position: %d]", songNum, _queuePos);
@@ -178,6 +189,15 @@
delete[] _musicData;
}
+ bool Music::queueSong(uint16 songNum) {
+ // Work around bug in Roland music, note that these numbers are 'one-off'
+ // from the original code
+ if (/*isRoland && */ songNum == 88 || songNum == 89)
+ songNum = 62;
+
+ return _player->queueSong(songNum);
+ }
+
void Music::playSong(uint16 songNum) {
_player->queueClear();
_player->queueSong(songNum);
Index: music.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/music.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- music.h 19 Jan 2004 21:23:42 -0000 1.5
+++ music.h 19 Jan 2004 23:54:50 -0000 1.6
@@ -76,6 +76,7 @@
bool _looping;
byte _volume;
uint8 _queuePos;
+ int16 _lastSong; //first song from previous queue
int16 _songQueue[MUSIC_QUEUE_SIZE];
uint16 _numSongs;
@@ -88,8 +89,11 @@
Music(MidiDriver *_driver, QueenEngine *vm);
~Music();
void playSong(uint16 songNum);
+ void queueClear() { return _player->queueClear(); }
+ bool queueSong(uint16 songNum);
+ void playMusic() { return _player->playMusic(); }
void stopSong();
- void loop(bool val) { return _player->setLoop(val); }
+ void loop(bool val) { return _player->setLoop(val); }
protected:
byte *_musicData;
Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/sound.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- sound.cpp 12 Jan 2004 13:40:01 -0000 1.30
+++ sound.cpp 19 Jan 2004 23:54:50 -0000 1.31
@@ -138,16 +138,11 @@
break;
}
- int16 song = _tune[newTune].tuneNum[0] - 1;
-
- // Work around bug in Roland music, note that these numbers are 'one-off' from
- // the original code.
- if (/*isRoland && */ song == 88 || song == 89) {
- warning("Working around Roland music bug");
- song = 62;
- }
-
- _vm->music()->playSong(song);
+ _vm->music()->queueClear();
+ int i = 0;
+ while(_tune[newTune].tuneNum[i])
+ _vm->music()->queueSong(_tune[newTune].tuneNum[i++] - 1);
+ _vm->music()->playMusic();
}
void Sound::saveState(byte *&ptr) {
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm/insane insane.cpp,1.5,1.6 insane.h,1.3,1.4 insane_ben.cpp,1.3,1.4 insane_enemy.cpp,1.3,1.4 insane_iact.cpp,1.3,1.4 insane_scenes.cpp,1.3,1.4
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm sound.cpp,1.314,1.315
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list