aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/smush/smush_player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/scumm/smush/smush_player.cpp')
-rw-r--r--engines/scumm/smush/smush_player.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/engines/scumm/smush/smush_player.cpp b/engines/scumm/smush/smush_player.cpp
index 7bdc70450d..6980274592 100644
--- a/engines/scumm/smush/smush_player.cpp
+++ b/engines/scumm/smush/smush_player.cpp
@@ -432,13 +432,22 @@ void SmushPlayer::handleFetch(Chunk &b) {
void SmushPlayer::handleIACT(Chunk &b) {
checkBlock(b, TYPE_IACT, 8);
- debugC(DEBUG_SMUSH, "SmushPlayer::handleImuseAction()");
+ debugC(DEBUG_SMUSH, "SmushPlayer::IACT()");
- /* int code = */ b.getWord();
+ int code = b.getWord();
int flags = b.getWord();
int unknown = b.getShort();
int track_flags = b.getWord();
+ if ((code != 8) && (flags != 46)) {
+ _vm->_insane->procIACT(_dst, 0, 0, 0, b, 0, 0, code, flags, unknown, track_flags);
+ return;
+ }
+
+ if (_compressedFileMode) {
+ return;
+ }
+
assert(flags == 46 && unknown == 0);
int track_id = b.getWord();
int index = b.getWord();
@@ -973,13 +982,7 @@ void SmushPlayer::handleFrame(Chunk &b) {
handleDeltaPalette(*sub);
break;
case TYPE_IACT:
- // FIXME: check parameters
- if (_insanity)
- _vm->_insane->procIACT(_dst, 0, 0, 0, *sub, 0, 0);
- else {
- if (!_compressedFileMode)
- handleIACT(*sub);
- }
+ handleIACT(*sub);
break;
case TYPE_STOR:
handleStore(*sub);