aboutsummaryrefslogtreecommitdiff
path: root/engines/toltecs/script.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/toltecs/script.cpp')
-rw-r--r--engines/toltecs/script.cpp30
1 files changed, 23 insertions, 7 deletions
diff --git a/engines/toltecs/script.cpp b/engines/toltecs/script.cpp
index 780e9ef215..1104c966fe 100644
--- a/engines/toltecs/script.cpp
+++ b/engines/toltecs/script.cpp
@@ -31,6 +31,7 @@
#include "toltecs/animation.h"
#include "toltecs/menu.h"
#include "toltecs/movie.h"
+#include "toltecs/music.h"
#include "toltecs/palette.h"
#include "toltecs/resource.h"
#include "toltecs/script.h"
@@ -1037,17 +1038,32 @@ void ScriptInterpreter::sfStopShakeScreen() {
}
void ScriptInterpreter::sfStartSequence() {
- // TODO
- // DEBUG: Dump music so we know what's in there
int16 sequenceResIndex = arg16(3);
- debug("ScriptInterpreter::sfStartSequence(%d)", sequenceResIndex);
- if (sequenceResIndex >= 0)
- _vm->_arc->dump(sequenceResIndex, "music");
+ //debug("ScriptInterpreter::sfStartSequence(%d)", sequenceResIndex);
+ if (sequenceResIndex >= 0) {
+ //_vm->_arc->dump(sequenceResIndex, "music"); // DEBUG: Dump music so we know what's in there
+
+ int32 resourceSize = _vm->_arc->getResourceSize(sequenceResIndex);
+ byte *data = new byte[resourceSize];
+ _vm->_arc->openResource(sequenceResIndex);
+ _vm->_arc->read(data, resourceSize);
+ _vm->_arc->closeResource();
+
+ if (!memcmp(data, "FORM", 4)) {
+ // TODO: Looping flag
+ _vm->_musicPlayer->playXMIDI(data, resourceSize);
+ } else {
+ // TODO: Where does this occur? Are these SMF MIDI files?
+ warning("sfStartSequence: resource %d isn't XMIDI", sequenceResIndex);
+ }
+
+ delete[] data;
+ }
}
void ScriptInterpreter::sfEndSequence() {
- // TODO
- debug("ScriptInterpreter::sfEndSequence");
+ //debug("ScriptInterpreter::sfEndSequence");
+ _vm->_musicPlayer->stopAndClear();
}
void ScriptInterpreter::sfSetSequenceVolume() {