aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/dreamweb/dreamweb.cpp14
-rw-r--r--engines/dreamweb/dreamweb.h1
2 files changed, 14 insertions, 1 deletions
diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp
index b5e2a1328c..fb65e71abf 100644
--- a/engines/dreamweb/dreamweb.cpp
+++ b/engines/dreamweb/dreamweb.cpp
@@ -181,6 +181,12 @@ void DreamWebEngine::openFile(const Common::String &name) {
}
}
+uint32 DreamWebEngine::skipBytes(uint32 bytes) {
+ if (!_file.seek(bytes, SEEK_CUR))
+ error("seekk failed");
+ return _file.pos();
+}
+
uint32 DreamWebEngine::readFromFile(uint8 *dst, unsigned size) {
processEvents();
if (!_file.isOpen())
@@ -427,7 +433,13 @@ void createfile(Context &context) {
}
void dontloadseg(Context &context) {
- ::error("dontloadseg");
+ context.ax = context.es.word(context.di);
+ context._add(context.di, 2);
+ context.dx = context.ax;
+ context.cx = 0;
+ unsigned pos = engine()->skipBytes(context.dx);
+ context.dx = pos >> 16;
+ context.ax = pos & 0xffff;
}
void mousecall(Context &context) {
diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h
index 0666bb8518..78c8960b79 100644
--- a/engines/dreamweb/dreamweb.h
+++ b/engines/dreamweb/dreamweb.h
@@ -80,6 +80,7 @@ public:
void openFile(const Common::String &name);
uint32 readFromFile(uint8 *dst, unsigned size);
+ uint32 skipBytes(uint32 bytes);
void closeFile();
void mouseCall(); //fill mouse pos and button state