[Scummvm-cvs-logs] scummvm master -> dc34fc1dfb04c8ef3d0fb31ba7176b3234fd8680

wjp wjp at usecode.org
Wed Dec 7 10:33:42 CET 2011


This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
2521646676 DREAMWEB: Add DreamBase as second base class for DreamGenContext
c0e2dddd27 DREAMWEB: Move a few methods to DreamBase, remove some unused code
fdb8b305e0 DREAMWEB: Move more methods to DreamBase, cleanup
f9fddab379 DREAMWEB: Remove unused method
dc34fc1dfb DREAMWEB: Move generated constants out of class DreamGenContext


Commit: 25216466761c1b0c1411454e257cdf82d66b7f65
    https://github.com/scummvm/scummvm/commit/25216466761c1b0c1411454e257cdf82d66b7f65
Author: Max Horn (max at quendi.de)
Date: 2011-12-07T01:30:44-08:00

Commit Message:
DREAMWEB: Add DreamBase as second base class for DreamGenContext

The idea is to slowly transfer converted methods into this new base class.
This transition then proves that the method does not access or modify
any of the emulation context.

for eaiser step-by-step  migration away from Context

Changed paths:
  A engines/dreamweb/dreambase.h
    devtools/tasmrecover/tasm/cpp.py
    engines/dreamweb/dreamgen.h
    engines/dreamweb/runtime.h



diff --git a/devtools/tasmrecover/tasm/cpp.py b/devtools/tasmrecover/tasm/cpp.py
index a302fa1..b545d99 100644
--- a/devtools/tasmrecover/tasm/cpp.py
+++ b/devtools/tasmrecover/tasm/cpp.py
@@ -612,12 +612,15 @@ namespace %s {
 		self.hd.write(
 """\n#include "dreamweb/runtime.h"
 
-#include "structs.h"
+#include "dreamweb/structs.h"
+#include "dreamweb/dreambase.h"
 
 namespace %s {
 
-class %sContext : public Context {
+class %sContext : public DreamBase, public Context {
 public:
+	DreamGenContext() : DreamBase(), Context(_realData) {}
+
 	void __start();
 """
 %(self.namespace, self.namespace))
diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h
new file mode 100644
index 0000000..db3c6d9
--- /dev/null
+++ b/engines/dreamweb/dreambase.h
@@ -0,0 +1,57 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef DREAMBASE_H
+#define DREAMBASE_H
+
+#include "common/scummsys.h"
+
+#include "dreamweb/runtime.h"
+
+namespace DreamWeb {
+	class DreamWebEngine;
+}
+
+
+namespace DreamGen {
+
+class DreamBase {
+public:
+	enum { kDefaultDataSegment = 0x1000 };
+
+	DreamWeb::DreamWebEngine *engine;
+
+	SegmentPtr _realData;	///< the primary data segment, points to a huge blob of binary data
+	SegmentRef data;	///< fake segment register always pointing to data segment
+
+	DreamBase() : _realData(new Segment()), data(kDefaultDataSegment, _realData) {
+	}
+
+
+public:
+// TODO: Move functions from stubs.h which do not access any Context member variables to here.
+};
+
+
+} // End of namespace DreamGen
+
+#endif
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 9b5a798..33a362f 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -27,12 +27,15 @@
 
 #include "dreamweb/runtime.h"
 
-#include "structs.h"
+#include "dreamweb/structs.h"
+#include "dreamweb/dreambase.h"
 
 namespace DreamGen {
 
-class DreamGenContext : public Context {
+class DreamGenContext : public DreamBase, public Context {
 public:
+	DreamGenContext() : DreamBase(), Context(_realData) {}
+
 	void __start();
 #include "stubs.h" // Allow hand-reversed functions to have a signature different than void f()
 
diff --git a/engines/dreamweb/runtime.h b/engines/dreamweb/runtime.h
index 2a23c3e..48f7c88 100644
--- a/engines/dreamweb/runtime.h
+++ b/engines/dreamweb/runtime.h
@@ -31,10 +31,6 @@
 #include "common/list.h"
 #include "common/ptr.h"
 
-namespace DreamWeb {
-	class DreamWebEngine;
-}
-
 namespace DreamGen {
 
 struct Register {
@@ -242,8 +238,6 @@ class Context {
 	FreeSegmentList _freeSegments;
 
 public:
-	DreamWeb::DreamWebEngine *engine;
-
 	enum { kDefaultDataSegment = 0x1000 };
 
 	Register ax, dx, bx, cx, si, di;
@@ -256,21 +250,17 @@ public:
 	LowPartOfRegister	dl;
 	HighPartOfRegister	dh;
 
-	SegmentPtr _realData;	///< the primary data segment, points to a huge blob of binary data
 	SegmentRef cs;
 	MutableSegmentRef ds;
 	MutableSegmentRef es;
-	SegmentRef data;	///< fake segment register always pointing to data segment
 	Flags flags;
 
-	inline Context(): engine(0), al(ax), ah(ax), bl(bx), bh(bx), cl(cx), ch(cx), dl(dx), dh(dx),
-		_realData(new Segment()),
-		cs(kDefaultDataSegment, _realData),
-		ds(this, kDefaultDataSegment, _realData),
-		es(this, kDefaultDataSegment, _realData),
-		data(kDefaultDataSegment, _realData) {
+	Context(SegmentPtr realData): al(ax), ah(ax), bl(bx), bh(bx), cl(cx), ch(cx), dl(dx), dh(dx),
+		cs(kDefaultDataSegment, realData),
+		ds(this, kDefaultDataSegment, realData),
+		es(this, kDefaultDataSegment, realData) {
 
-		_segments[kDefaultDataSegment] = _realData;
+		_segments[kDefaultDataSegment] = realData;
 	}
 
 	SegmentRef getSegment(uint16 value) {


Commit: c0e2dddd271cab2c1301b54992ed879779d06513
    https://github.com/scummvm/scummvm/commit/c0e2dddd271cab2c1301b54992ed879779d06513
Author: Max Horn (max at quendi.de)
Date: 2011-12-07T01:30:44-08:00

Commit Message:
DREAMWEB: Move a few methods to DreamBase, remove some unused code

Changed paths:
    engines/dreamweb/dreambase.h
    engines/dreamweb/print.cpp
    engines/dreamweb/stubs.h



diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h
index db3c6d9..f2a1e43 100644
--- a/engines/dreamweb/dreambase.h
+++ b/engines/dreamweb/dreambase.h
@@ -48,7 +48,11 @@ public:
 
 
 public:
-// TODO: Move functions from stubs.h which do not access any Context member variables to here.
+	uint8 getNextWord(const Frame *charSet, const uint8 *string, uint8 *totalWidth, uint8 *charCount);
+	uint8 getNumber(const Frame *charSet, const uint8 *string, uint16 maxWidth, bool centered, uint16 *offset);
+	uint8 kernChars(uint8 firstChar, uint8 secondChar, uint8 width);
+
+// TODO: Move more methods from stubs.h to here.
 };
 
 
diff --git a/engines/dreamweb/print.cpp b/engines/dreamweb/print.cpp
index 3e6e2df..99386ee 100644
--- a/engines/dreamweb/print.cpp
+++ b/engines/dreamweb/print.cpp
@@ -32,7 +32,7 @@ void DreamGenContext::printBoth(const Frame *charSet, uint16 *x, uint16 y, uint8
 	*x = newX;
 }
 
-uint8 DreamGenContext::getNextWord(const Frame *charSet, const uint8 *string, uint8 *totalWidth, uint8 *charCount) {
+uint8 DreamBase::getNextWord(const Frame *charSet, const uint8 *string, uint8 *totalWidth, uint8 *charCount) {
 	*totalWidth = 0;
 	*charCount = 0;
 	while(true) {
@@ -50,22 +50,13 @@ uint8 DreamGenContext::getNextWord(const Frame *charSet, const uint8 *string, ui
 		firstChar = engine->modifyChar(firstChar);
 		if (firstChar != 255) {
 			uint8 secondChar = *string;
-			uint8 width = charSet[firstChar - 32 + data.word(kCharshift)].width;
+			uint8 width = charSet[firstChar - 32 + data.word(DreamGenContext::kCharshift)].width;
 			width = kernChars(firstChar, secondChar, width);
 			*totalWidth += width;
 		}
 	}
 }
 
-void DreamGenContext::printChar() {
-	uint16 x = di;
-	uint8 width, height;
-	printChar((const Frame *)ds.ptr(0, 0), &x, bx, al, ah, &width, &height);
-	di = x;
-	cl = width;
-	ch = height;
-}
-
 void DreamGenContext::printChar(const Frame *charSet, uint16* x, uint16 y, uint8 c, uint8 nextChar, uint8 *width, uint8 *height) {
 	if (c == 255)
 		return;
@@ -88,10 +79,6 @@ void DreamGenContext::printChar(const Frame *charSet, uint16 x, uint16 y, uint8
 	printChar(charSet, &x, y, c, nextChar, width, height);
 }
 
-void DreamGenContext::printSlow() {
-	al = printSlow(es.ptr(si, 0), di, bx, dl, (bool)(dl & 1));
-}
-
 uint8 DreamGenContext::printSlow(const uint8 *string, uint16 x, uint16 y, uint8 maxWidth, bool centered) {
 	data.byte(kPointerframe) = 1;
 	data.byte(kPointermode) = 3;
@@ -171,7 +158,7 @@ uint8 DreamGenContext::printDirect(const uint8** string, uint16 x, uint16 *y, ui
 	}
 }
 
-uint8 DreamGenContext::getNumber(const Frame *charSet, const uint8 *string, uint16 maxWidth, bool centered, uint16* offset) {
+uint8 DreamBase::getNumber(const Frame *charSet, const uint8 *string, uint16 maxWidth, bool centered, uint16* offset) {
 	uint8 totalWidth = 0;
 	uint8 charCount = 0;
 	while (true) {
@@ -210,7 +197,7 @@ uint8 DreamGenContext::getNumber(const Frame *charSet, const uint8 *string, uint
 	}
 }
 
-uint8 DreamGenContext::kernChars(uint8 firstChar, uint8 secondChar, uint8 width) {
+uint8 DreamBase::kernChars(uint8 firstChar, uint8 secondChar, uint8 width) {
 	if ((firstChar == 'a') || (firstChar == 'u')) {
 		if ((secondChar == 'n') || (secondChar == 't') || (secondChar == 'r') || (secondChar == 'i') || (secondChar == 'l'))
 			return width-1;
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 7b5e33e..c60adb4 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -70,9 +70,7 @@
 	void seeCommandTail();
 	void randomNumber();
 	void quickQuit2();
-	uint8 getNextWord(const Frame *charSet, const uint8 *string, uint8 *totalWidth, uint8 *charCount);
 	void printBoth(const Frame* charSet, uint16 *x, uint16 y, uint8 c, uint8 nextChar);
-	void printChar();
 	void printChar(const Frame* charSet, uint16 *x, uint16 y, uint8 c, uint8 nextChar, uint8 *width, uint8 *height);
 	void printChar(const Frame* charSet, uint16 x, uint16 y, uint8 c, uint8 nextChar, uint8 *width, uint8 *height);
 	void printDirect();
@@ -86,10 +84,7 @@
 	void getUnderTimed();
 	void putUnderTimed();
 	uint8 printSlow(const uint8 *string, uint16 x, uint16 y, uint8 maxWidth, bool centered);
-	void printSlow();
 	void dumpTextLine();
-	uint8 getNumber(const Frame *charSet, const uint8 *string, uint16 maxWidth, bool centered, uint16 *offset);
-	uint8 kernChars(uint8 firstChar, uint8 secondChar, uint8 width);
 	void oldToNames();
 	void namesToOld();
 	void loadPalFromIFF();


Commit: fdb8b305e00e14edb4f97dc598e82d975dc29ca1
    https://github.com/scummvm/scummvm/commit/fdb8b305e00e14edb4f97dc598e82d975dc29ca1
Author: Max Horn (max at quendi.de)
Date: 2011-12-07T01:30:44-08:00

Commit Message:
DREAMWEB: Move more methods to DreamBase, cleanup

Changed paths:
    engines/dreamweb/dreambase.h
    engines/dreamweb/stubs.h
    engines/dreamweb/vgagrafx.cpp



diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h
index f2a1e43..4173499 100644
--- a/engines/dreamweb/dreambase.h
+++ b/engines/dreamweb/dreambase.h
@@ -48,10 +48,21 @@ public:
 
 
 public:
+	// from print.cpp
 	uint8 getNextWord(const Frame *charSet, const uint8 *string, uint8 *totalWidth, uint8 *charCount);
 	uint8 getNumber(const Frame *charSet, const uint8 *string, uint16 maxWidth, bool centered, uint16 *offset);
 	uint8 kernChars(uint8 firstChar, uint8 secondChar, uint8 width);
 
+	// from vgagrafx.cpp
+	void printUnderMon();
+	void cls();
+	void frameOutV(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, int16 x, int16 y);
+	void frameOutNm(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y);
+	void frameOutBh(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y);
+	void frameOutFx(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y);
+	void doShake();
+	void showPCX(const Common::String &name);
+
 // TODO: Move more methods from stubs.h to here.
 };
 
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index c60adb4..486e2f5 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -51,22 +51,16 @@
 	void hangOnCurs();
 	void multiDump();
 	void multiDump(uint16 x, uint16 y, uint8 width, uint8 height);
-	void frameOutV(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, int16 x, int16 y);
-	void frameOutNm(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y);
-	void frameOutBh(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y);
-	void frameOutFx(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y);
 	void workToScreen();
 	void workToScreenCPP();
 	uint8 *mapStore();
 	void multiGet();
 	void multiGet(uint8 *dst, uint16 x, uint16 y, uint8 width, uint8 height);
-	void cls();
 	void printSprites();
 	void quickQuit();
 	void readOneBlock();
 	void readCityPic();
 	void readDestIcon();
-	void printUnderMon();
 	void seeCommandTail();
 	void randomNumber();
 	void quickQuit2();
@@ -487,7 +481,6 @@
 	void loadGame();
 	void saveGame();
 	void zoomOnOff();
-	void doShake();
 	void atmospheres();
 	void loadPersonal();
 	void loadNews();
@@ -497,7 +490,6 @@
 	void hangOne(uint16 delay);
 	void hangOne();
 	void showPCX(const Common::String &name);
-	void showPCX();
 	void bibleQuote();
 	void realCredits();
 	void intro();
diff --git a/engines/dreamweb/vgagrafx.cpp b/engines/dreamweb/vgagrafx.cpp
index 3e1d97e..4d9eb08 100644
--- a/engines/dreamweb/vgagrafx.cpp
+++ b/engines/dreamweb/vgagrafx.cpp
@@ -106,15 +106,15 @@ void DreamGenContext::workToScreen() {
 	cx = 0;
 }
 
-void DreamGenContext::printUnderMon() {
+void DreamBase::printUnderMon() {
 	engine->printUnderMonitor();
 }
 
-void DreamGenContext::cls() {
+void DreamBase::cls() {
 	engine->cls();
 }
 
-void DreamGenContext::frameOutNm(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y) {
+void DreamBase::frameOutNm(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y) {
 	dst += pitch * y + x;
 
 	for (uint16 j = 0; j < height; ++j) {
@@ -124,7 +124,7 @@ void DreamGenContext::frameOutNm(uint8 *dst, const uint8 *src, uint16 pitch, uin
 	}
 }
 
-void DreamGenContext::frameOutBh(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y) {
+void DreamBase::frameOutBh(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y) {
 	uint16 stride = pitch - width;
 	dst += y * pitch + x;
 
@@ -140,7 +140,7 @@ void DreamGenContext::frameOutBh(uint8 *dst, const uint8 *src, uint16 pitch, uin
 	}
 }
 
-void DreamGenContext::frameOutFx(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y) {
+void DreamBase::frameOutFx(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, uint16 x, uint16 y) {
 	uint16 stride = pitch - width;
 	dst += y * pitch + x;
 	dst -= width;
@@ -157,8 +157,8 @@ void DreamGenContext::frameOutFx(uint8 *dst, const uint8 *src, uint16 pitch, uin
 	}
 }
 
-void DreamGenContext::doShake() {
-	uint8 &counter = data.byte(kShakecounter);
+void DreamBase::doShake() {
+	uint8 &counter = data.byte(DreamGenContext::kShakecounter);
 	if (counter == 48)
 		return;
 
@@ -227,8 +227,7 @@ void DreamGenContext::showPCX(const Common::String &name) {
 	// the color components have to be adjusted from 8 to 6 bits.
 
 	pcxFile.seek(16, SEEK_SET);
-	es = data.word(kBuffers);
-	mainGamePal = es.ptr(kMaingamepal, 768);
+	mainGamePal = getSegment(data.word(DreamGenContext::kBuffers)).ptr(DreamGenContext::kMaingamepal, 768);
 	pcxFile.read(mainGamePal, 48);
 
 	memset(mainGamePal + 48, 0xff, 720);
@@ -281,11 +280,7 @@ void DreamGenContext::showPCX(const Common::String &name) {
 	pcxFile.close();
 }
 
-void DreamGenContext::showPCX() {
-	showPCX(getFilename(*this));
-}
-
-void DreamGenContext::frameOutV(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, int16 x, int16 y) {
+void DreamBase::frameOutV(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, int16 x, int16 y) {
 	// NB : These resilience checks were not in the original engine, but did they result in undefined behaviour
 	// or was something broken during porting to C++?
 	assert(pitch == 320);


Commit: f9fddab379c3af1e255f0a64b05fac963ef0cf0a
    https://github.com/scummvm/scummvm/commit/f9fddab379c3af1e255f0a64b05fac963ef0cf0a
Author: Max Horn (max at quendi.de)
Date: 2011-12-07T01:30:44-08:00

Commit Message:
DREAMWEB: Remove unused method

Changed paths:
    engines/dreamweb/stubs.cpp
    engines/dreamweb/stubs.h



diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 73bcbda..da02360 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -769,10 +769,6 @@ void *DreamGenContext::standardLoadCPP(const char *fileName, uint16 *outSizeInBy
 	return buffer;
 }
 
-void DreamGenContext::standardLoad() {
-	ax = standardLoad((const char *)cs.ptr(dx, 0), NULL);
-}
-
 void DreamGenContext::loadIntoTemp() {
 	loadIntoTemp((const char *)cs.ptr(dx, 0));
 }
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 486e2f5..db59ab8 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -34,7 +34,6 @@
 	uint8 *textUnder();
 	void allocateWork();
 	void clearWork();
-	void standardLoad();
 	uint16 standardLoad(const char *fileName, uint16 *outSizeInBytes = NULL); // Returns a segment handle which needs to be freed with deallocatemem for symmetry
 	void *standardLoadCPP(const char *fileName, uint16 *outSizeInBytes = NULL); // And this one should be 'free'd
 	void loadIntoTemp();


Commit: dc34fc1dfb04c8ef3d0fb31ba7176b3234fd8680
    https://github.com/scummvm/scummvm/commit/dc34fc1dfb04c8ef3d0fb31ba7176b3234fd8680
Author: Max Horn (max at quendi.de)
Date: 2011-12-07T01:32:22-08:00

Commit Message:
DREAMWEB: Move generated constants out of class DreamGenContext

Changed paths:
    devtools/tasmrecover/tasm/cpp.py
    engines/dreamweb/dreamgen.h
    engines/dreamweb/dreamweb.cpp
    engines/dreamweb/print.cpp
    engines/dreamweb/vgagrafx.cpp



diff --git a/devtools/tasmrecover/tasm/cpp.py b/devtools/tasmrecover/tasm/cpp.py
index b545d99..24d3535 100644
--- a/devtools/tasmrecover/tasm/cpp.py
+++ b/devtools/tasmrecover/tasm/cpp.py
@@ -617,29 +617,16 @@ namespace %s {
 
 namespace %s {
 
-class %sContext : public DreamBase, public Context {
-public:
-	DreamGenContext() : DreamBase(), Context(_realData) {}
-
-	void __start();
 """
-%(self.namespace, self.namespace))
-		if self.skip_dispatch_call == False:
-			self.hd.write(
-"""	void __dispatch_call(uint16 addr);
-""")
-		self.hd.write(
-"""#include "stubs.h" // Allow hand-reversed functions to have a signature different than void f()
-
-""")
+%(self.namespace))
 
 		if self.skip_addr_constants == False:
 			for name,addr in self.proc_addr:
-				self.hd.write("\tstatic const uint16 addr_%s = 0x%04x;\n" %(name, addr))
+				self.hd.write("static const uint16 addr_%s = 0x%04x;\n" %(name, addr))
 
 
 		for name,addr in self.used_data_offsets:
-			self.hd.write("\tstatic const uint16 offset_%s = 0x%04x;\n" %(name, addr))
+			self.hd.write("static const uint16 offset_%s = 0x%04x;\n" %(name, addr))
 
 		offsets = []
 		for k, v in self.context.get_globals().items():
@@ -650,8 +637,28 @@ public:
 		
 		offsets = sorted(offsets, key=lambda t: t[1])
 		for o in offsets:
-			self.hd.write("\tstatic const uint16 k%s = %s;\n" %o)
+			self.hd.write("static const uint16 k%s = %s;\n" %o)
 		self.hd.write("\n")
+
+		self.hd.write(
+"""
+class %sContext : public DreamBase, public Context {
+public:
+	DreamGenContext() : DreamBase(), Context(_realData) {}
+
+	void __start();
+"""
+%(self.namespace))
+		if self.skip_dispatch_call == False:
+			self.hd.write(
+"""	void __dispatch_call(uint16 addr);
+""")
+		self.hd.write(
+"""#include "stubs.h" // Allow hand-reversed functions to have a signature different than void f()
+
+""")
+
+
 		for p in set(self.methods):
 			if p in self.blacklist:
 				if self.header_omit_blacklisted == False:
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 33a362f..a5be8ec 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -32,6 +32,510 @@
 
 namespace DreamGen {
 
+static const uint16 offset_destlist = 0x0484;
+static const uint16 offset_rootdir = 0x0576;
+static const uint16 offset_opslist = 0x05c4;
+static const uint16 offset_speechfilename = 0x0647;
+static const uint16 offset_operand1 = 0x0568;
+static const uint16 offset_money2poke = 0x0597;
+static const uint16 offset_quitlist = 0x046e;
+static const uint16 offset_keys = 0x04fe;
+static const uint16 offset_decidelist = 0x061d;
+static const uint16 offset_discopslist = 0x05ee;
+static const uint16 offset_diarylist = 0x059a;
+static const uint16 offset_commandline = 0x065a;
+static const uint16 offset_comlist = 0x04c2;
+static const uint16 offset_speechfile = 0x064d;
+static const uint16 offset_talklist = 0x044e;
+static const uint16 offset_openchangesize = 0x044c;
+static const uint16 offset_money1poke = 0x0592;
+static const uint16 kStartvars = 0;
+static const uint16 kProgresspoints = 1;
+static const uint16 kWatchon = 2;
+static const uint16 kShadeson = 3;
+static const uint16 kSecondcount = 4;
+static const uint16 kMinutecount = 5;
+static const uint16 kHourcount = 6;
+static const uint16 kZoomon = 7;
+static const uint16 kLocation = 8;
+static const uint16 kExpos = 9;
+static const uint16 kExframepos = 10;
+static const uint16 kExtextpos = 12;
+static const uint16 kCard1money = 14;
+static const uint16 kListpos = 16;
+static const uint16 kRyanpage = 18;
+static const uint16 kWatchingtime = 19;
+static const uint16 kReeltowatch = 21;
+static const uint16 kEndwatchreel = 23;
+static const uint16 kSpeedcount = 25;
+static const uint16 kWatchspeed = 26;
+static const uint16 kReeltohold = 27;
+static const uint16 kEndofholdreel = 29;
+static const uint16 kWatchmode = 31;
+static const uint16 kDestafterhold = 32;
+static const uint16 kNewsitem = 33;
+static const uint16 kLiftflag = 34;
+static const uint16 kLiftpath = 35;
+static const uint16 kLockstatus = 36;
+static const uint16 kDoorpath = 37;
+static const uint16 kCounttoopen = 38;
+static const uint16 kCounttoclose = 39;
+static const uint16 kRockstardead = 40;
+static const uint16 kGeneraldead = 41;
+static const uint16 kSartaindead = 42;
+static const uint16 kAidedead = 43;
+static const uint16 kBeenmugged = 44;
+static const uint16 kGunpassflag = 45;
+static const uint16 kCanmovealtar = 46;
+static const uint16 kTalkedtoattendant = 47;
+static const uint16 kTalkedtosparky = 48;
+static const uint16 kTalkedtoboss = 49;
+static const uint16 kTalkedtorecep = 50;
+static const uint16 kCardpassflag = 51;
+static const uint16 kMadmanflag = 52;
+static const uint16 kKeeperflag = 53;
+static const uint16 kLasttrigger = 54;
+static const uint16 kMandead = 55;
+static const uint16 kSeed = 56;
+static const uint16 kNeedtotravel = 59;
+static const uint16 kThroughdoor = 60;
+static const uint16 kNewobs = 61;
+static const uint16 kRyanon = 62;
+static const uint16 kCombatcount = 63;
+static const uint16 kLastweapon = 64;
+static const uint16 kDreamnumber = 65;
+static const uint16 kRoomafterdream = 66;
+static const uint16 kShakecounter = 67;
+static const uint16 kSpeechcount = 68;
+static const uint16 kCharshift = 69;
+static const uint16 kKerning = 71;
+static const uint16 kBrightness = 72;
+static const uint16 kRoomloaded = 73;
+static const uint16 kDidzoom = 74;
+static const uint16 kLinespacing = 75;
+static const uint16 kTextaddressx = 77;
+static const uint16 kTextaddressy = 79;
+static const uint16 kTextlen = 81;
+static const uint16 kLastxpos = 82;
+static const uint16 kIcontop = 84;
+static const uint16 kIconleft = 86;
+static const uint16 kItemframe = 88;
+static const uint16 kItemtotran = 89;
+static const uint16 kRoomad = 90;
+static const uint16 kOldsubject = 92;
+static const uint16 kWithobject = 94;
+static const uint16 kWithtype = 95;
+static const uint16 kLookcounter = 96;
+static const uint16 kCommand = 98;
+static const uint16 kCommandtype = 99;
+static const uint16 kOldcommandtype = 100;
+static const uint16 kObjecttype = 101;
+static const uint16 kGetback = 102;
+static const uint16 kInvopen = 103;
+static const uint16 kMainmode = 104;
+static const uint16 kPickup = 105;
+static const uint16 kLastinvpos = 106;
+static const uint16 kExamagain = 107;
+static const uint16 kNewtextline = 108;
+static const uint16 kOpenedob = 109;
+static const uint16 kOpenedtype = 110;
+static const uint16 kOldmapadx = 111;
+static const uint16 kOldmapady = 113;
+static const uint16 kMapadx = 115;
+static const uint16 kMapady = 117;
+static const uint16 kMapoffsetx = 119;
+static const uint16 kMapoffsety = 121;
+static const uint16 kMapxstart = 123;
+static const uint16 kMapystart = 125;
+static const uint16 kMapxsize = 127;
+static const uint16 kMapysize = 128;
+static const uint16 kHavedoneobs = 129;
+static const uint16 kManisoffscreen = 130;
+static const uint16 kRainspace = 131;
+static const uint16 kFacing = 132;
+static const uint16 kLeavedirection = 133;
+static const uint16 kTurntoface = 134;
+static const uint16 kTurndirection = 135;
+static const uint16 kMaintimer = 136;
+static const uint16 kIntrocount = 138;
+static const uint16 kArrowad = 139;
+static const uint16 kCurrentkey = 141;
+static const uint16 kOldkey = 142;
+static const uint16 kUseddirection = 143;
+static const uint16 kCurrentkey2 = 144;
+static const uint16 kTimercount = 145;
+static const uint16 kOldtimercount = 146;
+static const uint16 kMapx = 147;
+static const uint16 kMapy = 148;
+static const uint16 kNewscreen = 149;
+static const uint16 kRyanx = 150;
+static const uint16 kRyany = 151;
+static const uint16 kLastflag = 152;
+static const uint16 kLastflagex = 153;
+static const uint16 kFlagx = 154;
+static const uint16 kFlagy = 155;
+static const uint16 kCurrentex = 156;
+static const uint16 kCurrentfree = 157;
+static const uint16 kCurrentframe = 158;
+static const uint16 kFramesad = 160;
+static const uint16 kDataad = 162;
+static const uint16 kFrsegment = 164;
+static const uint16 kObjectx = 166;
+static const uint16 kObjecty = 168;
+static const uint16 kOffsetx = 170;
+static const uint16 kOffsety = 172;
+static const uint16 kSavesize = 174;
+static const uint16 kSavesource = 176;
+static const uint16 kSavex = 178;
+static const uint16 kSavey = 179;
+static const uint16 kCurrentob = 180;
+static const uint16 kPrioritydep = 181;
+static const uint16 kDestpos = 182;
+static const uint16 kReallocation = 183;
+static const uint16 kRoomnum = 184;
+static const uint16 kNowinnewroom = 185;
+static const uint16 kResetmanxy = 186;
+static const uint16 kNewlocation = 187;
+static const uint16 kAutolocation = 188;
+static const uint16 kMustload = 189;
+static const uint16 kAnswered = 190;
+static const uint16 kSaidno = 191;
+static const uint16 kDoorcheck1 = 192;
+static const uint16 kDoorcheck2 = 193;
+static const uint16 kDoorcheck3 = 194;
+static const uint16 kDoorcheck4 = 195;
+static const uint16 kMousex = 196;
+static const uint16 kMousey = 198;
+static const uint16 kMousebutton = 200;
+static const uint16 kMousebutton1 = 202;
+static const uint16 kMousebutton2 = 204;
+static const uint16 kMousebutton3 = 206;
+static const uint16 kMousebutton4 = 208;
+static const uint16 kOldbutton = 210;
+static const uint16 kOldx = 212;
+static const uint16 kOldy = 214;
+static const uint16 kLastbutton = 216;
+static const uint16 kOldpointerx = 218;
+static const uint16 kOldpointery = 220;
+static const uint16 kDelherex = 222;
+static const uint16 kDelherey = 224;
+static const uint16 kPointerxs = 226;
+static const uint16 kPointerys = 227;
+static const uint16 kDelxs = 228;
+static const uint16 kDelys = 229;
+static const uint16 kPointerframe = 230;
+static const uint16 kPointerpower = 231;
+static const uint16 kAuxpointerframe = 232;
+static const uint16 kPointermode = 233;
+static const uint16 kPointerspeed = 234;
+static const uint16 kPointercount = 235;
+static const uint16 kInmaparea = 236;
+static const uint16 kReelpointer = 237;
+static const uint16 kSlotdata = 239;
+static const uint16 kThisslot = 240;
+static const uint16 kSlotflags = 241;
+static const uint16 kTakeoff = 242;
+static const uint16 kTalkmode = 244;
+static const uint16 kTalkpos = 245;
+static const uint16 kCharacter = 246;
+static const uint16 kPersondata = 247;
+static const uint16 kTalknum = 249;
+static const uint16 kNumberinroom = 250;
+static const uint16 kCurrentcel = 251;
+static const uint16 kOldselection = 252;
+static const uint16 kStopwalking = 253;
+static const uint16 kMouseon = 254;
+static const uint16 kPlayed = 255;
+static const uint16 kTimer1 = 257;
+static const uint16 kTimer2 = 258;
+static const uint16 kTimer3 = 259;
+static const uint16 kWholetimer = 260;
+static const uint16 kTimer1to = 262;
+static const uint16 kTimer2to = 263;
+static const uint16 kTimer3to = 264;
+static const uint16 kWatchdump = 265;
+static const uint16 kLogonum = 266;
+static const uint16 kOldlogonum = 267;
+static const uint16 kNewlogonum = 268;
+static const uint16 kNetseg = 269;
+static const uint16 kNetpoint = 271;
+static const uint16 kKeynum = 273;
+static const uint16 kCursorstate = 274;
+static const uint16 kPressed = 275;
+static const uint16 kPresspointer = 276;
+static const uint16 kGraphicpress = 278;
+static const uint16 kPresscount = 279;
+static const uint16 kKeypadax = 280;
+static const uint16 kKeypadcx = 282;
+static const uint16 kLightcount = 284;
+static const uint16 kFolderpage = 285;
+static const uint16 kDiarypage = 286;
+static const uint16 kMenucount = 287;
+static const uint16 kSymboltopx = 288;
+static const uint16 kSymboltopnum = 289;
+static const uint16 kSymboltopdir = 290;
+static const uint16 kSymbolbotx = 291;
+static const uint16 kSymbolbotnum = 292;
+static const uint16 kSymbolbotdir = 293;
+static const uint16 kSymboltolight = 294;
+static const uint16 kSymbol1 = 295;
+static const uint16 kSymbol2 = 296;
+static const uint16 kSymbol3 = 297;
+static const uint16 kSymbolnum = 298;
+static const uint16 kDumpx = 299;
+static const uint16 kDumpy = 301;
+static const uint16 kWalkandexam = 303;
+static const uint16 kWalkexamtype = 304;
+static const uint16 kWalkexamnum = 305;
+static const uint16 kCursloc = 306;
+static const uint16 kCurslocx = 308;
+static const uint16 kCurslocy = 310;
+static const uint16 kCurpos = 312;
+static const uint16 kMonadx = 314;
+static const uint16 kMonady = 316;
+static const uint16 kGotfrom = 318;
+static const uint16 kMonsource = 320;
+static const uint16 kNumtodo = 322;
+static const uint16 kTimecount = 324;
+static const uint16 kCounttotimed = 326;
+static const uint16 kTimedseg = 328;
+static const uint16 kTimedoffset = 330;
+static const uint16 kTimedy = 332;
+static const uint16 kTimedx = 333;
+static const uint16 kNeedtodumptimed = 334;
+static const uint16 kHandle = 335;
+static const uint16 kLoadingorsave = 337;
+static const uint16 kCurrentslot = 338;
+static const uint16 kCursorpos = 339;
+static const uint16 kColourpos = 340;
+static const uint16 kFadedirection = 341;
+static const uint16 kNumtofade = 342;
+static const uint16 kFadecount = 343;
+static const uint16 kAddtogreen = 344;
+static const uint16 kAddtored = 345;
+static const uint16 kAddtoblue = 346;
+static const uint16 kLastsoundreel = 347;
+static const uint16 kSoundbuffer = 349;
+static const uint16 kSoundbufferad = 351;
+static const uint16 kSoundbufferpage = 353;
+static const uint16 kSoundtimes = 354;
+static const uint16 kNeedsoundbuff = 355;
+static const uint16 kOldint9seg = 356;
+static const uint16 kOldint9add = 358;
+static const uint16 kOldint8seg = 360;
+static const uint16 kOldint8add = 362;
+static const uint16 kOldsoundintseg = 364;
+static const uint16 kOldsoundintadd = 366;
+static const uint16 kSoundbaseadd = 368;
+static const uint16 kDsp_status = 370;
+static const uint16 kDsp_write = 372;
+static const uint16 kDmaaddress = 374;
+static const uint16 kSoundint = 375;
+static const uint16 kSounddmachannel = 376;
+static const uint16 kSampleplaying = 377;
+static const uint16 kTestresult = 378;
+static const uint16 kCurrentirq = 379;
+static const uint16 kSpeechloaded = 380;
+static const uint16 kSpeechlength = 381;
+static const uint16 kVolume = 383;
+static const uint16 kVolumeto = 384;
+static const uint16 kVolumedirection = 385;
+static const uint16 kVolumecount = 386;
+static const uint16 kPlayblock = 387;
+static const uint16 kWongame = 388;
+static const uint16 kLasthardkey = 389;
+static const uint16 kBufferin = 390;
+static const uint16 kBufferout = 392;
+static const uint16 kExtras = 394;
+static const uint16 kWorkspace = 396;
+static const uint16 kMapstore = 398;
+static const uint16 kCharset1 = 400;
+static const uint16 kBuffers = 402;
+static const uint16 kMainsprites = 404;
+static const uint16 kBackdrop = 406;
+static const uint16 kMapdata = 408;
+static const uint16 kSounddata = 410;
+static const uint16 kSounddata2 = 412;
+static const uint16 kRecordspace = 414;
+static const uint16 kFreedat = 416;
+static const uint16 kSetdat = 418;
+static const uint16 kReel1 = 420;
+static const uint16 kReel2 = 422;
+static const uint16 kReel3 = 424;
+static const uint16 kRoomdesc = 426;
+static const uint16 kFreedesc = 428;
+static const uint16 kSetdesc = 430;
+static const uint16 kBlockdesc = 432;
+static const uint16 kSetframes = 434;
+static const uint16 kFreeframes = 436;
+static const uint16 kPeople = 438;
+static const uint16 kReels = 440;
+static const uint16 kCommandtext = 442;
+static const uint16 kPuzzletext = 444;
+static const uint16 kTraveltext = 446;
+static const uint16 kTempgraphics = 448;
+static const uint16 kTempgraphics2 = 450;
+static const uint16 kTempgraphics3 = 452;
+static const uint16 kTempsprites = 454;
+static const uint16 kTextfile1 = 456;
+static const uint16 kTextfile2 = 458;
+static const uint16 kTextfile3 = 460;
+static const uint16 kBlinkframe = 462;
+static const uint16 kBlinkcount = 463;
+static const uint16 kReasseschanges = 464;
+static const uint16 kPointerspath = 465;
+static const uint16 kManspath = 466;
+static const uint16 kPointerfirstpath = 467;
+static const uint16 kFinaldest = 468;
+static const uint16 kDestination = 469;
+static const uint16 kLinestartx = 470;
+static const uint16 kLinestarty = 472;
+static const uint16 kLineendx = 474;
+static const uint16 kLineendy = 476;
+static const uint16 kIncrement1 = 478;
+static const uint16 kIncrement2 = 480;
+static const uint16 kLineroutine = 482;
+static const uint16 kLinepointer = 483;
+static const uint16 kLinedirection = 484;
+static const uint16 kLinelength = 485;
+static const uint16 kLiftsoundcount = 486;
+static const uint16 kEmmhandle = 487;
+static const uint16 kEmmpageframe = 489;
+static const uint16 kEmmhardwarepage = 491;
+static const uint16 kCh0emmpage = 492;
+static const uint16 kCh0offset = 494;
+static const uint16 kCh0blockstocopy = 496;
+static const uint16 kCh0playing = 498;
+static const uint16 kCh0repeat = 499;
+static const uint16 kCh0oldemmpage = 500;
+static const uint16 kCh0oldoffset = 502;
+static const uint16 kCh0oldblockstocopy = 504;
+static const uint16 kCh1playing = 506;
+static const uint16 kCh1emmpage = 507;
+static const uint16 kCh1offset = 509;
+static const uint16 kCh1blockstocopy = 511;
+static const uint16 kCh1blocksplayed = 513;
+static const uint16 kSoundbufferwrite = 515;
+static const uint16 kSoundemmpage = 517;
+static const uint16 kSpeechemmpage = 519;
+static const uint16 kCurrentsample = 521;
+static const uint16 kRoomssample = 522;
+static const uint16 kGameerror = 523;
+static const uint16 kHowmuchalloc = 524;
+static const uint16 kReelroutines = 526;
+static const uint16 kCharacterset3 = 983;
+static const uint16 kBasicsample = 996;
+static const uint16 kDiarygraphic = 1009;
+static const uint16 kDiarytext = 1022;
+static const uint16 kEndtextname = 1035;
+static const uint16 kVolumetabname = 1048;
+static const uint16 kGungraphic = 1061;
+static const uint16 kMonkface = 1074;
+static const uint16 kTitle7graphics = 1087;
+static const uint16 kCurrentfile = 1412;
+static const uint16 kRoomscango = 1723;
+static const uint16 kRoompics = 1739;
+static const uint16 kOplist = 1754;
+static const uint16 kInputline = 1757;
+static const uint16 kPresslist = 1885;
+static const uint16 kSavenames = 1891;
+static const uint16 kQuitrequested = 2010;
+static const uint16 kSubtitles = 2011;
+static const uint16 kForeignrelease = 2012;
+static const uint16 kBlocktextdat = (0);
+static const uint16 kPersonframes = (0);
+static const uint16 kDebuglevel1 = (0);
+static const uint16 kDebuglevel2 = (0);
+static const uint16 kPlayback = (0);
+static const uint16 kMap = (0);
+static const uint16 kSettextdat = (0);
+static const uint16 kSpanish = (0);
+static const uint16 kFramedata = (0);
+static const uint16 kRecording = (0);
+static const uint16 kFlags = (0);
+static const uint16 kGerman = (0);
+static const uint16 kTextunder = (0);
+static const uint16 kPathdata = (0);
+static const uint16 kDemo = (0);
+static const uint16 kExframedata = (0);
+static const uint16 kIntextdat = (0);
+static const uint16 kFreetextdat = (0);
+static const uint16 kFrframedata = (0);
+static const uint16 kSettext = (0+(130*2));
+static const uint16 kOpeninvlist = (0+(228*13));
+static const uint16 kRyaninvlist = (0+(228*13)+32);
+static const uint16 kPointerback = (0+(228*13)+32+60);
+static const uint16 kMapflags = (0+(228*13)+32+60+(32*32));
+static const uint16 kStartpal = (0+(228*13)+32+60+(32*32)+(11*10*3));
+static const uint16 kEndpal = (0+(228*13)+32+60+(32*32)+(11*10*3)+768);
+static const uint16 kMaingamepal = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768);
+static const uint16 kSpritetable = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768);
+static const uint16 kSetlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32));
+static const uint16 kFreelist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5));
+static const uint16 kExlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5));
+static const uint16 kPeoplelist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5));
+static const uint16 kZoomspace = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5));
+static const uint16 kPrintedlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40));
+static const uint16 kListofchanges = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80));
+static const uint16 kUndertimedtext = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4));
+static const uint16 kRainlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30));
+static const uint16 kInitialreelrouts = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64));
+static const uint16 kInitialvars = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+983-526);
+static const uint16 kLengthofbuffer = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+983-526+68-0);
+static const uint16 kReellist = (0+(36*144));
+static const uint16 kIntext = (0+(38*2));
+static const uint16 kLengthofmap = (0+(66*60));
+static const uint16 kFreetext = (0+(82*2));
+static const uint16 kBlocktext = (0+(98*2));
+static const uint16 kBlocks = (0+192);
+static const uint16 kFrframes = (0+2080);
+static const uint16 kExframes = (0+2080);
+static const uint16 kFrames = (0+2080);
+static const uint16 kExdata = (0+2080+30000);
+static const uint16 kExtextdat = (0+2080+30000+(16*114));
+static const uint16 kExtext = (0+2080+30000+(16*114)+((114+2)*2));
+static const uint16 kLengthofextra = (0+2080+30000+(16*114)+((114+2)*2)+18000);
+static const uint16 kPersontxtdat = (0+24);
+static const uint16 kPersontext = (0+24+(1026*2));
+static const uint16 kInputport = (0x63);
+static const uint16 kForeign = (1);
+static const uint16 kCd = (1);
+static const uint16 kNumexobjects = (114);
+static const uint16 kUndertextsizey = (13);
+static const uint16 kZoomy = (132);
+static const uint16 kFreedatlen = (16*80);
+static const uint16 kExtextlen = (18000);
+static const uint16 kLenofmapstore = (22*8*20*8);
+static const uint16 kUndertextsizex = (228);
+static const uint16 kNumchanges = (250);
+static const uint16 kUndertimedysize = (30);
+static const uint16 kExframeslen = (30000);
+static const uint16 kTablesize = (32);
+static const uint16 kScreenwidth = (320);
+static const uint16 kKeypadx = (36+112);
+static const uint16 kItempicsize = (44);
+static const uint16 kDiaryy = (48+12);
+static const uint16 kOpsy = (52);
+static const uint16 kSymboly = (56);
+static const uint16 kInventy = (58);
+static const uint16 kMenuy = (60);
+static const uint16 kOpsx = (60);
+static const uint16 kMaplength = (60);
+static const uint16 kSymbolx = (64);
+static const uint16 kSetdatlen = (64*128);
+static const uint16 kMapwidth = (66);
+static const uint16 kTextstart = (66*2);
+static const uint16 kMaplen = (66*60);
+static const uint16 kDiaryx = (68+24);
+static const uint16 kLengthofvars = (68-0);
+static const uint16 kKeypady = (72);
+static const uint16 kZoomx = (8);
+static const uint16 kInventx = (80);
+static const uint16 kMenux = (80+40);
+static const uint16 kHeaderlen = (96);
+static const uint16 kLenofreelrouts = (983-526);
+
+
 class DreamGenContext : public DreamBase, public Context {
 public:
 	DreamGenContext() : DreamBase(), Context(_realData) {}
@@ -39,509 +543,6 @@ public:
 	void __start();
 #include "stubs.h" // Allow hand-reversed functions to have a signature different than void f()
 
-	static const uint16 offset_destlist = 0x0484;
-	static const uint16 offset_rootdir = 0x0576;
-	static const uint16 offset_opslist = 0x05c4;
-	static const uint16 offset_speechfilename = 0x0647;
-	static const uint16 offset_operand1 = 0x0568;
-	static const uint16 offset_money2poke = 0x0597;
-	static const uint16 offset_quitlist = 0x046e;
-	static const uint16 offset_keys = 0x04fe;
-	static const uint16 offset_decidelist = 0x061d;
-	static const uint16 offset_discopslist = 0x05ee;
-	static const uint16 offset_diarylist = 0x059a;
-	static const uint16 offset_commandline = 0x065a;
-	static const uint16 offset_comlist = 0x04c2;
-	static const uint16 offset_speechfile = 0x064d;
-	static const uint16 offset_talklist = 0x044e;
-	static const uint16 offset_openchangesize = 0x044c;
-	static const uint16 offset_money1poke = 0x0592;
-	static const uint16 kStartvars = 0;
-	static const uint16 kProgresspoints = 1;
-	static const uint16 kWatchon = 2;
-	static const uint16 kShadeson = 3;
-	static const uint16 kSecondcount = 4;
-	static const uint16 kMinutecount = 5;
-	static const uint16 kHourcount = 6;
-	static const uint16 kZoomon = 7;
-	static const uint16 kLocation = 8;
-	static const uint16 kExpos = 9;
-	static const uint16 kExframepos = 10;
-	static const uint16 kExtextpos = 12;
-	static const uint16 kCard1money = 14;
-	static const uint16 kListpos = 16;
-	static const uint16 kRyanpage = 18;
-	static const uint16 kWatchingtime = 19;
-	static const uint16 kReeltowatch = 21;
-	static const uint16 kEndwatchreel = 23;
-	static const uint16 kSpeedcount = 25;
-	static const uint16 kWatchspeed = 26;
-	static const uint16 kReeltohold = 27;
-	static const uint16 kEndofholdreel = 29;
-	static const uint16 kWatchmode = 31;
-	static const uint16 kDestafterhold = 32;
-	static const uint16 kNewsitem = 33;
-	static const uint16 kLiftflag = 34;
-	static const uint16 kLiftpath = 35;
-	static const uint16 kLockstatus = 36;
-	static const uint16 kDoorpath = 37;
-	static const uint16 kCounttoopen = 38;
-	static const uint16 kCounttoclose = 39;
-	static const uint16 kRockstardead = 40;
-	static const uint16 kGeneraldead = 41;
-	static const uint16 kSartaindead = 42;
-	static const uint16 kAidedead = 43;
-	static const uint16 kBeenmugged = 44;
-	static const uint16 kGunpassflag = 45;
-	static const uint16 kCanmovealtar = 46;
-	static const uint16 kTalkedtoattendant = 47;
-	static const uint16 kTalkedtosparky = 48;
-	static const uint16 kTalkedtoboss = 49;
-	static const uint16 kTalkedtorecep = 50;
-	static const uint16 kCardpassflag = 51;
-	static const uint16 kMadmanflag = 52;
-	static const uint16 kKeeperflag = 53;
-	static const uint16 kLasttrigger = 54;
-	static const uint16 kMandead = 55;
-	static const uint16 kSeed = 56;
-	static const uint16 kNeedtotravel = 59;
-	static const uint16 kThroughdoor = 60;
-	static const uint16 kNewobs = 61;
-	static const uint16 kRyanon = 62;
-	static const uint16 kCombatcount = 63;
-	static const uint16 kLastweapon = 64;
-	static const uint16 kDreamnumber = 65;
-	static const uint16 kRoomafterdream = 66;
-	static const uint16 kShakecounter = 67;
-	static const uint16 kSpeechcount = 68;
-	static const uint16 kCharshift = 69;
-	static const uint16 kKerning = 71;
-	static const uint16 kBrightness = 72;
-	static const uint16 kRoomloaded = 73;
-	static const uint16 kDidzoom = 74;
-	static const uint16 kLinespacing = 75;
-	static const uint16 kTextaddressx = 77;
-	static const uint16 kTextaddressy = 79;
-	static const uint16 kTextlen = 81;
-	static const uint16 kLastxpos = 82;
-	static const uint16 kIcontop = 84;
-	static const uint16 kIconleft = 86;
-	static const uint16 kItemframe = 88;
-	static const uint16 kItemtotran = 89;
-	static const uint16 kRoomad = 90;
-	static const uint16 kOldsubject = 92;
-	static const uint16 kWithobject = 94;
-	static const uint16 kWithtype = 95;
-	static const uint16 kLookcounter = 96;
-	static const uint16 kCommand = 98;
-	static const uint16 kCommandtype = 99;
-	static const uint16 kOldcommandtype = 100;
-	static const uint16 kObjecttype = 101;
-	static const uint16 kGetback = 102;
-	static const uint16 kInvopen = 103;
-	static const uint16 kMainmode = 104;
-	static const uint16 kPickup = 105;
-	static const uint16 kLastinvpos = 106;
-	static const uint16 kExamagain = 107;
-	static const uint16 kNewtextline = 108;
-	static const uint16 kOpenedob = 109;
-	static const uint16 kOpenedtype = 110;
-	static const uint16 kOldmapadx = 111;
-	static const uint16 kOldmapady = 113;
-	static const uint16 kMapadx = 115;
-	static const uint16 kMapady = 117;
-	static const uint16 kMapoffsetx = 119;
-	static const uint16 kMapoffsety = 121;
-	static const uint16 kMapxstart = 123;
-	static const uint16 kMapystart = 125;
-	static const uint16 kMapxsize = 127;
-	static const uint16 kMapysize = 128;
-	static const uint16 kHavedoneobs = 129;
-	static const uint16 kManisoffscreen = 130;
-	static const uint16 kRainspace = 131;
-	static const uint16 kFacing = 132;
-	static const uint16 kLeavedirection = 133;
-	static const uint16 kTurntoface = 134;
-	static const uint16 kTurndirection = 135;
-	static const uint16 kMaintimer = 136;
-	static const uint16 kIntrocount = 138;
-	static const uint16 kArrowad = 139;
-	static const uint16 kCurrentkey = 141;
-	static const uint16 kOldkey = 142;
-	static const uint16 kUseddirection = 143;
-	static const uint16 kCurrentkey2 = 144;
-	static const uint16 kTimercount = 145;
-	static const uint16 kOldtimercount = 146;
-	static const uint16 kMapx = 147;
-	static const uint16 kMapy = 148;
-	static const uint16 kNewscreen = 149;
-	static const uint16 kRyanx = 150;
-	static const uint16 kRyany = 151;
-	static const uint16 kLastflag = 152;
-	static const uint16 kLastflagex = 153;
-	static const uint16 kFlagx = 154;
-	static const uint16 kFlagy = 155;
-	static const uint16 kCurrentex = 156;
-	static const uint16 kCurrentfree = 157;
-	static const uint16 kCurrentframe = 158;
-	static const uint16 kFramesad = 160;
-	static const uint16 kDataad = 162;
-	static const uint16 kFrsegment = 164;
-	static const uint16 kObjectx = 166;
-	static const uint16 kObjecty = 168;
-	static const uint16 kOffsetx = 170;
-	static const uint16 kOffsety = 172;
-	static const uint16 kSavesize = 174;
-	static const uint16 kSavesource = 176;
-	static const uint16 kSavex = 178;
-	static const uint16 kSavey = 179;
-	static const uint16 kCurrentob = 180;
-	static const uint16 kPrioritydep = 181;
-	static const uint16 kDestpos = 182;
-	static const uint16 kReallocation = 183;
-	static const uint16 kRoomnum = 184;
-	static const uint16 kNowinnewroom = 185;
-	static const uint16 kResetmanxy = 186;
-	static const uint16 kNewlocation = 187;
-	static const uint16 kAutolocation = 188;
-	static const uint16 kMustload = 189;
-	static const uint16 kAnswered = 190;
-	static const uint16 kSaidno = 191;
-	static const uint16 kDoorcheck1 = 192;
-	static const uint16 kDoorcheck2 = 193;
-	static const uint16 kDoorcheck3 = 194;
-	static const uint16 kDoorcheck4 = 195;
-	static const uint16 kMousex = 196;
-	static const uint16 kMousey = 198;
-	static const uint16 kMousebutton = 200;
-	static const uint16 kMousebutton1 = 202;
-	static const uint16 kMousebutton2 = 204;
-	static const uint16 kMousebutton3 = 206;
-	static const uint16 kMousebutton4 = 208;
-	static const uint16 kOldbutton = 210;
-	static const uint16 kOldx = 212;
-	static const uint16 kOldy = 214;
-	static const uint16 kLastbutton = 216;
-	static const uint16 kOldpointerx = 218;
-	static const uint16 kOldpointery = 220;
-	static const uint16 kDelherex = 222;
-	static const uint16 kDelherey = 224;
-	static const uint16 kPointerxs = 226;
-	static const uint16 kPointerys = 227;
-	static const uint16 kDelxs = 228;
-	static const uint16 kDelys = 229;
-	static const uint16 kPointerframe = 230;
-	static const uint16 kPointerpower = 231;
-	static const uint16 kAuxpointerframe = 232;
-	static const uint16 kPointermode = 233;
-	static const uint16 kPointerspeed = 234;
-	static const uint16 kPointercount = 235;
-	static const uint16 kInmaparea = 236;
-	static const uint16 kReelpointer = 237;
-	static const uint16 kSlotdata = 239;
-	static const uint16 kThisslot = 240;
-	static const uint16 kSlotflags = 241;
-	static const uint16 kTakeoff = 242;
-	static const uint16 kTalkmode = 244;
-	static const uint16 kTalkpos = 245;
-	static const uint16 kCharacter = 246;
-	static const uint16 kPersondata = 247;
-	static const uint16 kTalknum = 249;
-	static const uint16 kNumberinroom = 250;
-	static const uint16 kCurrentcel = 251;
-	static const uint16 kOldselection = 252;
-	static const uint16 kStopwalking = 253;
-	static const uint16 kMouseon = 254;
-	static const uint16 kPlayed = 255;
-	static const uint16 kTimer1 = 257;
-	static const uint16 kTimer2 = 258;
-	static const uint16 kTimer3 = 259;
-	static const uint16 kWholetimer = 260;
-	static const uint16 kTimer1to = 262;
-	static const uint16 kTimer2to = 263;
-	static const uint16 kTimer3to = 264;
-	static const uint16 kWatchdump = 265;
-	static const uint16 kLogonum = 266;
-	static const uint16 kOldlogonum = 267;
-	static const uint16 kNewlogonum = 268;
-	static const uint16 kNetseg = 269;
-	static const uint16 kNetpoint = 271;
-	static const uint16 kKeynum = 273;
-	static const uint16 kCursorstate = 274;
-	static const uint16 kPressed = 275;
-	static const uint16 kPresspointer = 276;
-	static const uint16 kGraphicpress = 278;
-	static const uint16 kPresscount = 279;
-	static const uint16 kKeypadax = 280;
-	static const uint16 kKeypadcx = 282;
-	static const uint16 kLightcount = 284;
-	static const uint16 kFolderpage = 285;
-	static const uint16 kDiarypage = 286;
-	static const uint16 kMenucount = 287;
-	static const uint16 kSymboltopx = 288;
-	static const uint16 kSymboltopnum = 289;
-	static const uint16 kSymboltopdir = 290;
-	static const uint16 kSymbolbotx = 291;
-	static const uint16 kSymbolbotnum = 292;
-	static const uint16 kSymbolbotdir = 293;
-	static const uint16 kSymboltolight = 294;
-	static const uint16 kSymbol1 = 295;
-	static const uint16 kSymbol2 = 296;
-	static const uint16 kSymbol3 = 297;
-	static const uint16 kSymbolnum = 298;
-	static const uint16 kDumpx = 299;
-	static const uint16 kDumpy = 301;
-	static const uint16 kWalkandexam = 303;
-	static const uint16 kWalkexamtype = 304;
-	static const uint16 kWalkexamnum = 305;
-	static const uint16 kCursloc = 306;
-	static const uint16 kCurslocx = 308;
-	static const uint16 kCurslocy = 310;
-	static const uint16 kCurpos = 312;
-	static const uint16 kMonadx = 314;
-	static const uint16 kMonady = 316;
-	static const uint16 kGotfrom = 318;
-	static const uint16 kMonsource = 320;
-	static const uint16 kNumtodo = 322;
-	static const uint16 kTimecount = 324;
-	static const uint16 kCounttotimed = 326;
-	static const uint16 kTimedseg = 328;
-	static const uint16 kTimedoffset = 330;
-	static const uint16 kTimedy = 332;
-	static const uint16 kTimedx = 333;
-	static const uint16 kNeedtodumptimed = 334;
-	static const uint16 kHandle = 335;
-	static const uint16 kLoadingorsave = 337;
-	static const uint16 kCurrentslot = 338;
-	static const uint16 kCursorpos = 339;
-	static const uint16 kColourpos = 340;
-	static const uint16 kFadedirection = 341;
-	static const uint16 kNumtofade = 342;
-	static const uint16 kFadecount = 343;
-	static const uint16 kAddtogreen = 344;
-	static const uint16 kAddtored = 345;
-	static const uint16 kAddtoblue = 346;
-	static const uint16 kLastsoundreel = 347;
-	static const uint16 kSoundbuffer = 349;
-	static const uint16 kSoundbufferad = 351;
-	static const uint16 kSoundbufferpage = 353;
-	static const uint16 kSoundtimes = 354;
-	static const uint16 kNeedsoundbuff = 355;
-	static const uint16 kOldint9seg = 356;
-	static const uint16 kOldint9add = 358;
-	static const uint16 kOldint8seg = 360;
-	static const uint16 kOldint8add = 362;
-	static const uint16 kOldsoundintseg = 364;
-	static const uint16 kOldsoundintadd = 366;
-	static const uint16 kSoundbaseadd = 368;
-	static const uint16 kDsp_status = 370;
-	static const uint16 kDsp_write = 372;
-	static const uint16 kDmaaddress = 374;
-	static const uint16 kSoundint = 375;
-	static const uint16 kSounddmachannel = 376;
-	static const uint16 kSampleplaying = 377;
-	static const uint16 kTestresult = 378;
-	static const uint16 kCurrentirq = 379;
-	static const uint16 kSpeechloaded = 380;
-	static const uint16 kSpeechlength = 381;
-	static const uint16 kVolume = 383;
-	static const uint16 kVolumeto = 384;
-	static const uint16 kVolumedirection = 385;
-	static const uint16 kVolumecount = 386;
-	static const uint16 kPlayblock = 387;
-	static const uint16 kWongame = 388;
-	static const uint16 kLasthardkey = 389;
-	static const uint16 kBufferin = 390;
-	static const uint16 kBufferout = 392;
-	static const uint16 kExtras = 394;
-	static const uint16 kWorkspace = 396;
-	static const uint16 kMapstore = 398;
-	static const uint16 kCharset1 = 400;
-	static const uint16 kBuffers = 402;
-	static const uint16 kMainsprites = 404;
-	static const uint16 kBackdrop = 406;
-	static const uint16 kMapdata = 408;
-	static const uint16 kSounddata = 410;
-	static const uint16 kSounddata2 = 412;
-	static const uint16 kRecordspace = 414;
-	static const uint16 kFreedat = 416;
-	static const uint16 kSetdat = 418;
-	static const uint16 kReel1 = 420;
-	static const uint16 kReel2 = 422;
-	static const uint16 kReel3 = 424;
-	static const uint16 kRoomdesc = 426;
-	static const uint16 kFreedesc = 428;
-	static const uint16 kSetdesc = 430;
-	static const uint16 kBlockdesc = 432;
-	static const uint16 kSetframes = 434;
-	static const uint16 kFreeframes = 436;
-	static const uint16 kPeople = 438;
-	static const uint16 kReels = 440;
-	static const uint16 kCommandtext = 442;
-	static const uint16 kPuzzletext = 444;
-	static const uint16 kTraveltext = 446;
-	static const uint16 kTempgraphics = 448;
-	static const uint16 kTempgraphics2 = 450;
-	static const uint16 kTempgraphics3 = 452;
-	static const uint16 kTempsprites = 454;
-	static const uint16 kTextfile1 = 456;
-	static const uint16 kTextfile2 = 458;
-	static const uint16 kTextfile3 = 460;
-	static const uint16 kBlinkframe = 462;
-	static const uint16 kBlinkcount = 463;
-	static const uint16 kReasseschanges = 464;
-	static const uint16 kPointerspath = 465;
-	static const uint16 kManspath = 466;
-	static const uint16 kPointerfirstpath = 467;
-	static const uint16 kFinaldest = 468;
-	static const uint16 kDestination = 469;
-	static const uint16 kLinestartx = 470;
-	static const uint16 kLinestarty = 472;
-	static const uint16 kLineendx = 474;
-	static const uint16 kLineendy = 476;
-	static const uint16 kIncrement1 = 478;
-	static const uint16 kIncrement2 = 480;
-	static const uint16 kLineroutine = 482;
-	static const uint16 kLinepointer = 483;
-	static const uint16 kLinedirection = 484;
-	static const uint16 kLinelength = 485;
-	static const uint16 kLiftsoundcount = 486;
-	static const uint16 kEmmhandle = 487;
-	static const uint16 kEmmpageframe = 489;
-	static const uint16 kEmmhardwarepage = 491;
-	static const uint16 kCh0emmpage = 492;
-	static const uint16 kCh0offset = 494;
-	static const uint16 kCh0blockstocopy = 496;
-	static const uint16 kCh0playing = 498;
-	static const uint16 kCh0repeat = 499;
-	static const uint16 kCh0oldemmpage = 500;
-	static const uint16 kCh0oldoffset = 502;
-	static const uint16 kCh0oldblockstocopy = 504;
-	static const uint16 kCh1playing = 506;
-	static const uint16 kCh1emmpage = 507;
-	static const uint16 kCh1offset = 509;
-	static const uint16 kCh1blockstocopy = 511;
-	static const uint16 kCh1blocksplayed = 513;
-	static const uint16 kSoundbufferwrite = 515;
-	static const uint16 kSoundemmpage = 517;
-	static const uint16 kSpeechemmpage = 519;
-	static const uint16 kCurrentsample = 521;
-	static const uint16 kRoomssample = 522;
-	static const uint16 kGameerror = 523;
-	static const uint16 kHowmuchalloc = 524;
-	static const uint16 kReelroutines = 526;
-	static const uint16 kCharacterset3 = 983;
-	static const uint16 kBasicsample = 996;
-	static const uint16 kDiarygraphic = 1009;
-	static const uint16 kDiarytext = 1022;
-	static const uint16 kEndtextname = 1035;
-	static const uint16 kVolumetabname = 1048;
-	static const uint16 kGungraphic = 1061;
-	static const uint16 kMonkface = 1074;
-	static const uint16 kTitle7graphics = 1087;
-	static const uint16 kCurrentfile = 1412;
-	static const uint16 kRoomscango = 1723;
-	static const uint16 kRoompics = 1739;
-	static const uint16 kOplist = 1754;
-	static const uint16 kInputline = 1757;
-	static const uint16 kPresslist = 1885;
-	static const uint16 kSavenames = 1891;
-	static const uint16 kQuitrequested = 2010;
-	static const uint16 kSubtitles = 2011;
-	static const uint16 kForeignrelease = 2012;
-	static const uint16 kBlocktextdat = (0);
-	static const uint16 kPersonframes = (0);
-	static const uint16 kDebuglevel1 = (0);
-	static const uint16 kDebuglevel2 = (0);
-	static const uint16 kPlayback = (0);
-	static const uint16 kMap = (0);
-	static const uint16 kSettextdat = (0);
-	static const uint16 kSpanish = (0);
-	static const uint16 kFramedata = (0);
-	static const uint16 kRecording = (0);
-	static const uint16 kFlags = (0);
-	static const uint16 kGerman = (0);
-	static const uint16 kTextunder = (0);
-	static const uint16 kPathdata = (0);
-	static const uint16 kDemo = (0);
-	static const uint16 kExframedata = (0);
-	static const uint16 kIntextdat = (0);
-	static const uint16 kFreetextdat = (0);
-	static const uint16 kFrframedata = (0);
-	static const uint16 kSettext = (0+(130*2));
-	static const uint16 kOpeninvlist = (0+(228*13));
-	static const uint16 kRyaninvlist = (0+(228*13)+32);
-	static const uint16 kPointerback = (0+(228*13)+32+60);
-	static const uint16 kMapflags = (0+(228*13)+32+60+(32*32));
-	static const uint16 kStartpal = (0+(228*13)+32+60+(32*32)+(11*10*3));
-	static const uint16 kEndpal = (0+(228*13)+32+60+(32*32)+(11*10*3)+768);
-	static const uint16 kMaingamepal = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768);
-	static const uint16 kSpritetable = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768);
-	static const uint16 kSetlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32));
-	static const uint16 kFreelist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5));
-	static const uint16 kExlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5));
-	static const uint16 kPeoplelist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5));
-	static const uint16 kZoomspace = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5));
-	static const uint16 kPrintedlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40));
-	static const uint16 kListofchanges = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80));
-	static const uint16 kUndertimedtext = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4));
-	static const uint16 kRainlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30));
-	static const uint16 kInitialreelrouts = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64));
-	static const uint16 kInitialvars = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+983-526);
-	static const uint16 kLengthofbuffer = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+983-526+68-0);
-	static const uint16 kReellist = (0+(36*144));
-	static const uint16 kIntext = (0+(38*2));
-	static const uint16 kLengthofmap = (0+(66*60));
-	static const uint16 kFreetext = (0+(82*2));
-	static const uint16 kBlocktext = (0+(98*2));
-	static const uint16 kBlocks = (0+192);
-	static const uint16 kFrframes = (0+2080);
-	static const uint16 kExframes = (0+2080);
-	static const uint16 kFrames = (0+2080);
-	static const uint16 kExdata = (0+2080+30000);
-	static const uint16 kExtextdat = (0+2080+30000+(16*114));
-	static const uint16 kExtext = (0+2080+30000+(16*114)+((114+2)*2));
-	static const uint16 kLengthofextra = (0+2080+30000+(16*114)+((114+2)*2)+18000);
-	static const uint16 kPersontxtdat = (0+24);
-	static const uint16 kPersontext = (0+24+(1026*2));
-	static const uint16 kInputport = (0x63);
-	static const uint16 kForeign = (1);
-	static const uint16 kCd = (1);
-	static const uint16 kNumexobjects = (114);
-	static const uint16 kUndertextsizey = (13);
-	static const uint16 kZoomy = (132);
-	static const uint16 kFreedatlen = (16*80);
-	static const uint16 kExtextlen = (18000);
-	static const uint16 kLenofmapstore = (22*8*20*8);
-	static const uint16 kUndertextsizex = (228);
-	static const uint16 kNumchanges = (250);
-	static const uint16 kUndertimedysize = (30);
-	static const uint16 kExframeslen = (30000);
-	static const uint16 kTablesize = (32);
-	static const uint16 kScreenwidth = (320);
-	static const uint16 kKeypadx = (36+112);
-	static const uint16 kItempicsize = (44);
-	static const uint16 kDiaryy = (48+12);
-	static const uint16 kOpsy = (52);
-	static const uint16 kSymboly = (56);
-	static const uint16 kInventy = (58);
-	static const uint16 kMenuy = (60);
-	static const uint16 kOpsx = (60);
-	static const uint16 kMaplength = (60);
-	static const uint16 kSymbolx = (64);
-	static const uint16 kSetdatlen = (64*128);
-	static const uint16 kMapwidth = (66);
-	static const uint16 kTextstart = (66*2);
-	static const uint16 kMaplen = (66*60);
-	static const uint16 kDiaryx = (68+24);
-	static const uint16 kLengthofvars = (68-0);
-	static const uint16 kKeypady = (72);
-	static const uint16 kZoomx = (8);
-	static const uint16 kInventx = (80);
-	static const uint16 kMenux = (80+40);
-	static const uint16 kHeaderlen = (96);
-	static const uint16 kLenofreelrouts = (983-526);
-
 	void useWire();
 	void getNamePos();
 	void identifyOb();
@@ -641,6 +642,7 @@ public:
 	void selectSlot();
 	void fadeUpMon();
 	void soundEnd();
+	void clearChanges();
 	void introMagic2();
 	void introMagic3();
 	void showDiaryPage();
@@ -672,7 +674,6 @@ public:
 	void deleteExFrame();
 	void bossMan();
 	void searchForSame();
-	void getBack1();
 	void fadeFromWhite();
 	void checkSoundInt();
 	void rollEm();
@@ -717,6 +718,7 @@ public:
 	void openFileNoCheck();
 	void checkInside();
 	void findPathOfPoint();
+	void getBack1();
 	void getDestInfo();
 	void setupTimedUse();
 	void makeCaps();
@@ -732,7 +734,6 @@ public:
 	void showPuzText();
 	void incRyanPage();
 	void findExObject();
-	void clearChanges();
 	void searchForFiles();
 	void monkSpeaking();
 	void clearRest();
diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp
index 51000ca..2220cdb 100644
--- a/engines/dreamweb/dreamweb.cpp
+++ b/engines/dreamweb/dreamweb.cpp
@@ -107,8 +107,8 @@ void DreamWebEngine::waitForVSync() {
 }
 
 void DreamWebEngine::quit() {
-	_context.data.byte(DreamGen::DreamGenContext::kQuitrequested) = 1;
-	_context.data.byte(DreamGen::DreamGenContext::kLasthardkey) = 1;
+	_context.data.byte(DreamGen::kQuitrequested) = 1;
+	_context.data.byte(DreamGen::kLasthardkey) = 1;
 }
 
 void DreamWebEngine::processEvents() {
@@ -144,8 +144,8 @@ void DreamWebEngine::processEvents() {
 					break;
 
 				case Common::KEYCODE_c: //skip statue puzzle
-					_context.data.byte(DreamGen::DreamGenContext::kSymbolbotnum) = 3;
-					_context.data.byte(DreamGen::DreamGenContext::kSymboltopnum) = 5;
+					_context.data.byte(DreamGen::kSymbolbotnum) = 3;
+					_context.data.byte(DreamGen::kSymboltopnum) = 5;
 					break;
 
 				default:
@@ -175,7 +175,7 @@ void DreamWebEngine::processEvents() {
 				break;
 			}
 
-			_context.data.byte(DreamGen::DreamGenContext::kLasthardkey) = hardKey;
+			_context.data.byte(DreamGen::kLasthardkey) = hardKey;
 
 			// The rest of the keys are converted to ASCII. This
 			// is fairly restrictive, and eventually we may want
@@ -219,7 +219,7 @@ Common::Error DreamWebEngine::run() {
 
 	getTimerManager()->installTimerProc(vSyncInterrupt, 1000000 / 70, this, "dreamwebVSync");
 	_context.__start();
-	_context.data.byte(DreamGen::DreamGenContext::kQuitrequested) = 0;
+	_context.data.byte(DreamGen::kQuitrequested) = 0;
 
 	getTimerManager()->removeTimerProc(vSyncInterrupt);
 
@@ -298,13 +298,13 @@ uint DreamWebEngine::readFromSaveFile(uint8 *data, uint size) {
 
 void DreamWebEngine::keyPressed(uint16 ascii) {
 	debug(2, "key pressed = %04x", ascii);
-	uint16 in = (_context.data.word(DreamGen::DreamGenContext::kBufferin) + 1) & 0x0f;
-	uint16 out = _context.data.word(DreamGen::DreamGenContext::kBufferout);
+	uint16 in = (_context.data.word(DreamGen::kBufferin) + 1) & 0x0f;
+	uint16 out = _context.data.word(DreamGen::kBufferout);
 	if (in == out) {
 		warning("keyboard buffer is full");
 		return;
 	}
-	_context.data.word(DreamGen::DreamGenContext::kBufferin) = in;
+	_context.data.word(DreamGen::kBufferin) = in;
 	DreamGen::g_keyBuffer[in] = ascii;
 }
 
@@ -329,11 +329,11 @@ void DreamWebEngine::mouseCall(uint16 *x, uint16 *y, uint16 *state) {
 }
 
 void DreamWebEngine::fadeDos() {
-	_context.ds = _context.es = _context.data.word(DreamGen::DreamGenContext::kBuffers);
+	_context.ds = _context.es = _context.data.word(DreamGen::kBuffers);
 	return; //fixme later
 	waitForVSync();
 	//processEvents will be called from vsync
-	uint8 *dst = _context.es.ptr(DreamGen::DreamGenContext::kStartpal, 768);
+	uint8 *dst = _context.es.ptr(DreamGen::kStartpal, 768);
 	getPalette(dst, 0, 64);
 	for(int fade = 0; fade < 64; ++fade) {
 		for(int c = 0; c < 768; ++c) { //original sources decrement 768 values -> 256 colors
@@ -382,7 +382,7 @@ void DreamWebEngine::blit(const uint8 *src, int pitch, int x, int y, int w, int
 
 void DreamWebEngine::printUnderMonitor() {
 	uint8 *workspace = _context.workspace();
-	uint8 *dst = workspace + DreamGen::DreamGenContext::kScreenwidth * 43 + 76;
+	uint8 *dst = workspace + DreamGen::kScreenwidth * 43 + 76;
 
 	Graphics::Surface *s = _system->lockScreen();
 	if (!s)
@@ -397,7 +397,7 @@ void DreamWebEngine::printUnderMonitor() {
 				++dst; ++src;
 			}
 		}
-		dst += DreamGen::DreamGenContext::kScreenwidth - 170;
+		dst += DreamGen::kScreenwidth - 170;
 	}
 	_system->unlockScreen();
 }
@@ -490,12 +490,12 @@ bool DreamWebEngine::loadSpeech(const Common::String &filename) {
 }
 
 void DreamWebEngine::soundHandler() {
-	_context.data.byte(_context.kSubtitles) = ConfMan.getBool("subtitles");
+	_context.data.byte(DreamGen::kSubtitles) = ConfMan.getBool("subtitles");
 	_context.push(_context.ax);
 	_context.volumeAdjust();
 	_context.ax = _context.pop();
 
-	uint volume = _context.data.byte(DreamGen::DreamGenContext::kVolume);
+	uint volume = _context.data.byte(DreamGen::kVolume);
 	//.vol file loaded into soundbuf:0x4000
 	//volume table at (volume * 0x100 + 0x3f00)
 	//volume value could be from 1 to 7
@@ -511,13 +511,13 @@ void DreamWebEngine::soundHandler() {
 	volume = (8 - volume) * Audio::Mixer::kMaxChannelVolume / 8;
 	_mixer->setChannelVolume(_channelHandle[0], volume);
 
-	uint8 ch0 = _context.data.byte(DreamGen::DreamGenContext::kCh0playing);
+	uint8 ch0 = _context.data.byte(DreamGen::kCh0playing);
 	if (ch0 == 255)
 		ch0 = 0;
-	uint8 ch1 = _context.data.byte(DreamGen::DreamGenContext::kCh1playing);
+	uint8 ch1 = _context.data.byte(DreamGen::kCh1playing);
 	if (ch1 == 255)
 		ch1 = 0;
-	uint8 ch0loop = _context.data.byte(DreamGen::DreamGenContext::kCh0repeat);
+	uint8 ch0loop = _context.data.byte(DreamGen::kCh0repeat);
 
 	if (_channel0 != ch0) {
 		_channel0 = ch0;
@@ -532,11 +532,11 @@ void DreamWebEngine::soundHandler() {
 		}
 	}
 	if (!_mixer->isSoundHandleActive(_channelHandle[0])) {
-		_context.data.byte(DreamGen::DreamGenContext::kCh0playing) = 255;
+		_context.data.byte(DreamGen::kCh0playing) = 255;
 		_channel0 = 0;
 	}
 	if (!_mixer->isSoundHandleActive(_channelHandle[1])) {
-		_context.data.byte(DreamGen::DreamGenContext::kCh1playing) = 255;
+		_context.data.byte(DreamGen::kCh1playing) = 255;
 		_channel1 = 0;
 	}
 
diff --git a/engines/dreamweb/print.cpp b/engines/dreamweb/print.cpp
index 99386ee..1fc652f 100644
--- a/engines/dreamweb/print.cpp
+++ b/engines/dreamweb/print.cpp
@@ -50,7 +50,7 @@ uint8 DreamBase::getNextWord(const Frame *charSet, const uint8 *string, uint8 *t
 		firstChar = engine->modifyChar(firstChar);
 		if (firstChar != 255) {
 			uint8 secondChar = *string;
-			uint8 width = charSet[firstChar - 32 + data.word(DreamGenContext::kCharshift)].width;
+			uint8 width = charSet[firstChar - 32 + data.word(kCharshift)].width;
 			width = kernChars(firstChar, secondChar, width);
 			*totalWidth += width;
 		}
diff --git a/engines/dreamweb/vgagrafx.cpp b/engines/dreamweb/vgagrafx.cpp
index 4d9eb08..20eb840 100644
--- a/engines/dreamweb/vgagrafx.cpp
+++ b/engines/dreamweb/vgagrafx.cpp
@@ -158,7 +158,7 @@ void DreamBase::frameOutFx(uint8 *dst, const uint8 *src, uint16 pitch, uint16 wi
 }
 
 void DreamBase::doShake() {
-	uint8 &counter = data.byte(DreamGenContext::kShakecounter);
+	uint8 &counter = data.byte(kShakecounter);
 	if (counter == 48)
 		return;
 
@@ -227,7 +227,7 @@ void DreamGenContext::showPCX(const Common::String &name) {
 	// the color components have to be adjusted from 8 to 6 bits.
 
 	pcxFile.seek(16, SEEK_SET);
-	mainGamePal = getSegment(data.word(DreamGenContext::kBuffers)).ptr(DreamGenContext::kMaingamepal, 768);
+	mainGamePal = getSegment(data.word(kBuffers)).ptr(kMaingamepal, 768);
 	pcxFile.read(mainGamePal, 48);
 
 	memset(mainGamePal + 48, 0xff, 720);






More information about the Scummvm-git-logs mailing list