aboutsummaryrefslogtreecommitdiff
path: root/simon
diff options
context:
space:
mode:
authorJamieson Christian2003-05-24 03:10:14 +0000
committerJamieson Christian2003-05-24 03:10:14 +0000
commit1b4b6030fedf0fde1431e2e53d03a97caade4005 (patch)
tree8f6d32873ade45a8ad982740ddc32fa284d4711a /simon
parentbcdf2286f8d877efbb2f7d5434b5e228e150d808 (diff)
downloadscummvm-rg350-1b4b6030fedf0fde1431e2e53d03a97caade4005.tar.gz
scummvm-rg350-1b4b6030fedf0fde1431e2e53d03a97caade4005.tar.bz2
scummvm-rg350-1b4b6030fedf0fde1431e2e53d03a97caade4005.zip
Added support for GMF loop specifier
svn-id: r7874
Diffstat (limited to 'simon')
-rw-r--r--simon/midi.cpp13
-rw-r--r--simon/simon.cpp3
2 files changed, 11 insertions, 5 deletions
diff --git a/simon/midi.cpp b/simon/midi.cpp
index 9159f6f993..bb19e43b9f 100644
--- a/simon/midi.cpp
+++ b/simon/midi.cpp
@@ -298,10 +298,15 @@ void MidiPlayer::loadSMF (File *in, int song, bool sfx) {
p->data = (byte *) calloc (size + 4, 1);
in->read (p->data, size);
- // For GMF files, we're going to have to use
- // hardcoded size tables.
- if (!memcmp (p->data, "GMF\x1", 4) && size == 64000)
- size = simon1_gmf_size [song];
+ if (!memcmp (p->data, "GMF\x1", 4)) {
+ if (!sfx)
+ setLoop (p->data[6] != 0);
+
+ // For GMF files, we're going to have to use
+ // hardcoded size tables.
+ if (size == 64000)
+ size = simon1_gmf_size [song];
+ }
MidiParser *parser = MidiParser::createParser_SMF();
parser->property (MidiParser::mpMalformedPitchBends, 1);
diff --git a/simon/simon.cpp b/simon/simon.cpp
index 59323cc93c..70a14d3a47 100644
--- a/simon/simon.cpp
+++ b/simon/simon.cpp
@@ -5307,6 +5307,8 @@ void SimonState::loadMusic (uint music) {
// TODO Add music support for simon1demo
} else {
midi.stop();
+ midi.setLoop (true); // Must do this BEFORE loading music. (GMF may have its own override.)
+
if (_game & GF_WIN) {
_game_file->seek(_game_offsets_ptr[gss->MUSIC_INDEX_BASE + music], SEEK_SET);
midi.loadMultipleSMF (_game_file);
@@ -5326,7 +5328,6 @@ void SimonState::loadMusic (uint music) {
delete f;
}
- midi.setLoop (true);
midi.startTrack (0);
}
}