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

tramboi bertrand_augereau at yahoo.fr
Mon Aug 29 22:32:18 CEST 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:
c799846344 DREAMWEB: 'showallex' ported to C++


Commit: c79984634474a0bfe564e2043652adf598f4cc73
    https://github.com/scummvm/scummvm/commit/c79984634474a0bfe564e2043652adf598f4cc73
Author: Bertrand Augereau (bertrand_augereau at yahoo.fr)
Date: 2011-08-29T15:26:45-07:00

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

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



diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 641b784..85a1b4b 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -143,6 +143,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'placesetobject',
 	'removesetobject',
 	'showallfree',
+	'showallex',
 	'adjustlen',
 	'finishedwalking',
 	'checkone',
diff --git a/engines/dreamweb/backdrop.cpp b/engines/dreamweb/backdrop.cpp
index f667e7b..cfa4d57 100644
--- a/engines/dreamweb/backdrop.cpp
+++ b/engines/dreamweb/backdrop.cpp
@@ -297,5 +297,40 @@ void DreamGenContext::drawflags() {
 	}
 }
 
+void DreamGenContext::showallex() {
+	data.word(kListpos) = kExlist;
+	memset(segRef(data.word(kBuffers)).ptr(kExlist, 100 * 5), 0xff, 100 * 5);
+
+	data.word(kFrsegment) = data.word(kExtras);
+	data.word(kDataad) = kExframedata;
+	data.word(kFramesad) = kExframes;
+	data.byte(kCurrentex) = 0;
+	si = kExdata + 2;
+	for (size_t i = 0; i < 100; ++i, ++data.byte(kCurrentex), si +=16) {
+		es = data.word(kExtras);
+		if (es.byte(si) == 0xff)
+			continue;
+		if (es.byte(si-2) != data.byte(kReallocation))
+			continue;
+		if (getmapad((const uint8 *)es.ptr(si, 5)) == 0)
+			continue;
+		data.word(kCurrentframe) = 3 * data.byte(kCurrentex);
+		uint8 width, height;
+		calcfrframe(&width, &height);
+		uint16 x, y;
+		finalframe(&x, &y);
+		if ((width != 0) || (height != 0)) {
+			showframe((Frame *)segRef(data.word(kFrsegment)).ptr(0, 0), x + data.word(kMapadx), y + data.word(kMapady), data.word(kCurrentframe) & 0xff, 0);
+			ObjPos *objPos = (ObjPos *)segRef(data.word(kBuffers)).ptr(data.word(kListpos), sizeof(ObjPos));
+			objPos->xMin = data.byte(kSavex);
+			objPos->yMin = data.byte(kSavey);
+			objPos->xMax = data.byte(kSavesize + 0) + data.byte(kSavex);
+			objPos->yMax = data.byte(kSavesize + 1) + data.byte(kSavey);
+			objPos->index = i;
+			data.word(kListpos) += sizeof(ObjPos);
+		}
+	}
+}
+
 } /*namespace dreamgen */
 
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index b7e5ba5..5b1e30f 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -6303,94 +6303,6 @@ void DreamGenContext::drawfloor() {
 	es = pop();
 }
 
-void DreamGenContext::showallex() {
-	STACK_CHECK;
-	es = data.word(kBuffers);
-	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5));
-	data.word(kListpos) = bx;
-	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5));
-	cx = 100*5;
-	al = 255;
-	_stosb(cx, true);
-	es = data.word(kExtras);
-	data.word(kFrsegment) = es;
-	ax = (0);
-	data.word(kDataad) = ax;
-	ax = (0+2080);
-	data.word(kFramesad) = ax;
-	data.byte(kCurrentex) = 0;
-	si = (0+2080+30000)+2;
-	cx = 0;
-exloop:
-	push(cx);
-	push(si);
-	es = data.word(kExtras);
-	push(si);
-	ch = 0;
-	_cmp(es.byte(si), 255);
-	if (flags.z())
-		goto notinroom;
-	al = es.byte(si-2);
-	_cmp(al, data.byte(kReallocation));
-	if (!flags.z())
-		goto notinroom;
-	getmapad();
-notinroom:
-	si = pop();
-	_cmp(ch, 0);
-	if (flags.z())
-		goto blankex;
-	al = data.byte(kCurrentex);
-	ah = 0;
-	dx = ax;
-	_add(ax, ax);
-	_add(ax, dx);
-	data.word(kCurrentframe) = ax;
-	push(es);
-	push(si);
-	calcfrframe();
-	es = data.word(kMapstore);
-	ds = data.word(kFrsegment);
-	finalframe();
-	si = pop();
-	es = pop();
-	_cmp(cx, 0);
-	if (flags.z())
-		goto blankex;
-	ax = data.word(kCurrentframe);
-	ah = 0;
-	_add(di, data.word(kMapadx));
-	_add(bx, data.word(kMapady));
-	showframe();
-	si = data.word(kListpos);
-	es = data.word(kBuffers);
-	al = data.byte(kSavex);
-	ah = data.byte(kSavey);
-	es.word(si) = ax;
-	cx = ax;
-	ax = data.word(kSavesize);
-	_add(al, cl);
-	_add(ah, ch);
-	es.word(si+2) = ax;
-	ax = pop();
-	cx = pop();
-	push(cx);
-	push(ax);
-	es.byte(si+4) = cl;
-	_add(si, 5);
-	data.word(kListpos) = si;
-blankex:
-	_inc(data.byte(kCurrentex));
-	si = pop();
-	cx = pop();
-	_add(si, 16);
-	_inc(cx);
-	_cmp(cx, 100);
-	if (flags.z())
-		return /* (finex) */;
-	goto exloop;
-}
-
 void DreamGenContext::autolook() {
 	STACK_CHECK;
 	ax = data.word(kMousex);
@@ -18078,7 +17990,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
 		case addr_deleteextext: deleteextext(); break;
 		case addr_blockget: blockget(); break;
 		case addr_drawfloor: drawfloor(); break;
-		case addr_showallex: showallex(); break;
 		case addr_autolook: autolook(); break;
 		case addr_look: look(); break;
 		case addr_dolook: dolook(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 18b982f..cc777f4 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -447,7 +447,6 @@ public:
 	static const uint16 addr_dolook = 0xc474;
 	static const uint16 addr_look = 0xc470;
 	static const uint16 addr_autolook = 0xc46c;
-	static const uint16 addr_showallex = 0xc450;
 	static const uint16 addr_drawfloor = 0xc428;
 	static const uint16 addr_blockget = 0xc424;
 	static const uint16 addr_deleteextext = 0xc420;
@@ -1468,7 +1467,7 @@ public:
 	void dumpdiarykeys();
 	void disablesoundint();
 	void checkifset();
-	void showallex();
+	//void showallex();
 	void openpoolboss();
 	void buttontwo();
 	//void usetimedtext();
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 70236aa..0be9c79 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -170,6 +170,7 @@
 	void removesetobject();
 	void removesetobject(uint8 index);
 	void showallfree();
+	void showallex();
 	bool finishedwalkingCPP();
 	void finishedwalking();
 	void checkone();






More information about the Scummvm-git-logs mailing list