aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
Diffstat (limited to 'scumm')
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v6he.cpp33
2 files changed, 34 insertions, 0 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index f0857b0aa2..0166ad1a0d 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -596,6 +596,7 @@ protected:
void o6_unknownF9();
void o6_unknownFB();
void o6_readFilePos();
+ void o6_quitPauseRestart();
};
class ScummEngine_v7he : public ScummEngine_v6he {
diff --git a/scumm/script_v6he.cpp b/scumm/script_v6he.cpp
index 9e0b52a22f..db689e678e 100644
--- a/scumm/script_v6he.cpp
+++ b/scumm/script_v6he.cpp
@@ -1475,4 +1475,37 @@ void ScummEngine_v6he::decodeParseString(int m, int n) {
}
}
+void ScummEngine_v6he::o6_quitPauseRestart() {
+ byte subOp = fetchScriptByte();
+ int par1;
+
+ if (_heversion == 60)
+ if (subOp != 158 && subOp != 160)
+ error("o6_quitPauseRestart invalid case %d", subOp);
+
+
+ switch (subOp & 0xff) {
+ case 158: // SO_RESTART
+ restart();
+ break;
+ case 160: // SO_QUIT
+ shutDown();
+ break;
+ case 250:
+ par1 = pop();
+ warning("stub: o6_quitPauseRestart subOpcode %d", subOp);
+ break;
+ case 253:
+ par1 = pop();
+ warning("stub: o6_quitPauseRestart subOpcode %d", subOp);
+ case 244:
+ case 251:
+ case 252:
+ warning("stub: o6_quitPauseRestart subOpcode %d", subOp);
+ break;
+ default:
+ error("o6_quitPauseRestart invalid case %d", subOp);
+ }
+}
+
} // End of namespace Scumm