aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/intern.h3
-rw-r--r--scumm/script_v6.cpp28
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;