[Scummvm-cvs-logs] scummvm master -> 26dd3f52f21d71f3fe054a5cb917639d93b598a4

tramboi bertrand_augereau at yahoo.fr
Fri Nov 18 06:26:53 CET 2011


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

Summary:
26dd3f52f2 DREAMWEB: 'input' ported to C++


Commit: 26dd3f52f21d71f3fe054a5cb917639d93b598a4
    https://github.com/scummvm/scummvm/commit/26dd3f52f21d71f3fe054a5cb917639d93b598a4
Author: Bertrand Augereau (bertrand_augereau at yahoo.fr)
Date: 2011-11-17T23:25:39-08:00

Commit Message:
DREAMWEB: 'input' ported to C++

Changed paths:
    devtools/tasmrecover/tasm-recover
    engines/dreamweb/dreamgen.cpp
    engines/dreamweb/dreamgen.h
    engines/dreamweb/monitor.cpp
    engines/dreamweb/stubs.h



diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 56f1de0..9ac51bf 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -246,6 +246,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'loadroomssample',
 	'printlogo',
 	'usemon',
+	'input',
 	], skip_output = [
 	# These functions are processed but not output
 	'dreamweb',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index fcda22b..22c935c 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -6306,102 +6306,6 @@ void DreamGenContext::locklightoff() {
 	multidump();
 }
 
-void DreamGenContext::input() {
-	STACK_CHECK;
-	es = cs;
-	di = 8045;
-	cx = 64;
-	al = 0;
-	_stosb(cx, true);
-	data.word(kCurpos) = 0;
-	al = '>';
-	di = data.word(kMonadx);
-	bx = data.word(kMonady);
-	ds = data.word(kTempcharset);
-	ah = 0;
-	printchar();
-	di = data.word(kMonadx);
-	bx = data.word(kMonady);
-	cl = 6;
-	ch = 8;
-	multidump();
-	_add(data.word(kMonadx), 6);
-	ax = data.word(kMonadx);
-	data.word(kCurslocx) = ax;
-	ax = data.word(kMonady);
-	data.word(kCurslocy) = ax;
-waitkey:
-	printcurs();
-	vsync();
-	delcurs();
-	readkey();
-	al = data.byte(kCurrentkey);
-	_cmp(al, 0);
-	if (flags.z())
-		goto waitkey;
-	_cmp(al, 13);
-	if (flags.z())
-		return /* (endofinput) */;
-	_cmp(al, 8);
-	if (!flags.z())
-		goto notdel;
-	_cmp(data.word(kCurpos), 0);
-	if (flags.z())
-		goto waitkey;
-	delchar();
-	goto waitkey;
-notdel:
-	_cmp(data.word(kCurpos), 28);
-	if (flags.z())
-		goto waitkey;
-	_cmp(data.byte(kCurrentkey), 32);
-	if (!flags.z())
-		goto notleadingspace;
-	_cmp(data.word(kCurpos), 0);
-	if (flags.z())
-		goto waitkey;
-notleadingspace:
-	makecaps();
-	es = cs;
-	si = data.word(kCurpos);
-	_add(si, si);
-	_add(si, 8045);
-	es.byte(si) = al;
-	_cmp(al, 'Z'+1);
-	if (!flags.c())
-		goto waitkey;
-	push(ax);
-	push(es);
-	push(si);
-	di = data.word(kMonadx);
-	bx = data.word(kMonady);
-	ds = data.word(kMapstore);
-	ax = data.word(kCurpos);
-	_xchg(al, ah);
-	si = ax;
-	cl = 8;
-	ch = 8;
-	multiget();
-	si = pop();
-	es = pop();
-	ax = pop();
-	push(es);
-	push(si);
-	di = data.word(kMonadx);
-	bx = data.word(kMonady);
-	ds = data.word(kTempcharset);
-	ah = 0;
-	printchar();
-	si = pop();
-	es = pop();
-	es.byte(si+1) = cl;
-	ch = 0;
-	_add(data.word(kMonadx), cx);
-	_inc(data.word(kCurpos));
-	_add(data.word(kCurslocx), cx);
-	goto waitkey;
-}
-
 void DreamGenContext::makecaps() {
 	STACK_CHECK;
 	_cmp(al, 'a');
@@ -15468,7 +15372,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
 		case addr_accesslightoff: accesslightoff(); break;
 		case addr_locklighton: locklighton(); break;
 		case addr_locklightoff: locklightoff(); break;
-		case addr_input: input(); break;
 		case addr_makecaps: makecaps(); break;
 		case addr_delchar: delchar(); break;
 		case addr_execcommand: execcommand(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 563c7da..a8bbc44 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -360,7 +360,6 @@ public:
 	static const uint16 addr_execcommand = 0xc52c;
 	static const uint16 addr_delchar = 0xc528;
 	static const uint16 addr_makecaps = 0xc524;
-	static const uint16 addr_input = 0xc520;
 	static const uint16 addr_locklightoff = 0xc51c;
 	static const uint16 addr_locklighton = 0xc518;
 	static const uint16 addr_accesslightoff = 0xc514;
@@ -1770,7 +1769,7 @@ public:
 	void getridoftemptext();
 	void setuptimeduse();
 	void grafittidoor();
-	void input();
+	//void input();
 	void nextdest();
 	//void getdimension();
 	void makecaps();
diff --git a/engines/dreamweb/monitor.cpp b/engines/dreamweb/monitor.cpp
index 8c21a5b..5da481a 100644
--- a/engines/dreamweb/monitor.cpp
+++ b/engines/dreamweb/monitor.cpp
@@ -105,5 +105,58 @@ void DreamGenContext::printlogo() {
 	showcurrentfile();
 }
 
+void DreamGenContext::input() {
+	char *inputLine = (char *)cs.ptr(kInputline, 64);
+	memset(inputLine, 0, 64);
+	data.word(kCurpos) = 0;
+	ds = data.word(kTempcharset);
+	{
+		uint16 x = data.word(kMonadx);
+		uint8 width, height;
+		printchar((Frame *)segRef(data.word(kTempcharset)).ptr(0, 0), &x, data.word(kMonady), '>', 0, &width, &height);
+	}
+	multidump(data.word(kMonadx), data.word(kMonady), 6, 8);
+	data.word(kMonadx) += 6;
+	data.word(kCurslocx) = data.word(kMonadx);
+	data.word(kCurslocy) = data.word(kMonady);
+	while (true) {
+		printcurs();
+		vsync();
+		delcurs();
+		readkey();
+		uint8 currentKey = data.byte(kCurrentkey);
+		if (currentKey == 0)
+			continue;
+		if (currentKey == 13)
+			return;
+		if (currentKey == 8) {
+			if (data.word(kCurpos) > 0)
+				delchar();
+			continue;
+		}
+		if (data.word(kCurpos) == 28)
+			continue;
+		if ((currentKey == 32) && (data.word(kCurpos) == 0))
+			continue;
+		al = currentKey;
+		makecaps();
+		currentKey = al;
+		inputLine[data.word(kCurpos) * 2 + 0] = currentKey;
+		if (currentKey > 'Z')
+			continue;
+		multiget(segRef(data.word(kMapstore)).ptr(data.word(kCurpos) * 256, 0), data.word(kMonadx), data.word(kMonady), 8, 8);
+		uint8 charWidth;
+		{
+			uint16 x = data.word(kMonadx);
+			uint8 height;
+			printchar((Frame *)segRef(data.word(kTempcharset)).ptr(0, 0), &x, data.word(kMonady), currentKey, 0, &charWidth, &height);
+		}
+		inputLine[data.word(kCurpos) * 2 + 1] = charWidth;
+		data.word(kMonadx) += charWidth;
+		++data.word(kCurpos);
+		data.word(kCurslocx) += charWidth;
+	}
+}
+
 } /*namespace dreamgen */
 
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index af4ad10..30f5f1d 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -297,5 +297,5 @@
 	void fadeupmonfirst();
 	void printlogo();
 	void usemon();
-
+	void input();
 






More information about the Scummvm-git-logs mailing list