diff options
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/intern.h | 1 | ||||
-rw-r--r-- | scumm/script_v6he.cpp | 33 |
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 |