diff options
-rw-r--r-- | scumm/intern.h | 3 | ||||
-rw-r--r-- | scumm/script_v6.cpp | 28 |
2 files changed, 28 insertions, 3 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index d188cd1c71..f105859cff 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -366,6 +366,9 @@ protected: void o6_bor(); void o6_band(); void o6_stopTalking(); + void o6_openFile(); + void o6_closeFile(); + void o6_deleteFile(); }; class Scumm_v7 : public Scumm_v6 diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp index c90242f516..eb1f84078b 100644 --- a/scumm/script_v6.cpp +++ b/scumm/script_v6.cpp @@ -314,13 +314,13 @@ void Scumm_v6::setupOpcodes() OPCODE(o6_bor), /* D8 */ OPCODE(o6_isRoomScriptRunning), - OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o6_closeFile), + OPCODE(o6_openFile), OPCODE(o6_invalid), /* DC */ OPCODE(o6_invalid), OPCODE(o6_invalid), - OPCODE(o6_invalid), + OPCODE(o6_deleteFile), OPCODE(o6_invalid), /* E0 */ OPCODE(o6_invalid), @@ -2904,6 +2904,28 @@ void Scumm_v6::o6_stopTalking() { warning("o6_stopTalking: stub"); } +void Scumm_v6::o6_openFile() { + int a, b, len; + a = pop(); + len = resStrLen(_scriptPointer); + warning("stub o6_openFile(\"%s\", %d)", _scriptPointer, a); + _scriptPointer += len + 1; + // -1 open failed, otherwise file handle? + push(0); +} + +void Scumm_v6::o6_closeFile() { + // pop'd variable should be that pushed in o6_openFile() + warning("stub o6_closeFile(%d)", pop()); +} + +void Scumm_v6::o6_deleteFile() { + int len; + len = resStrLen(_scriptPointer); + warning("stub o6_deleteFile(\"%s\")", _scriptPointer); + _scriptPointer += len + 1; +} + void Scumm_v6::decodeParseString(int m, int n) { byte b; |