[Scummvm-cvs-logs] scummvm master -> 7393cce711c24b1911c2ed4f9a7fcd87367b058e

tramboi bertrand_augereau at yahoo.fr
Sun Aug 21 16:34:35 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:
7393cce711 DREAMWEB: 'showallfree' ported to C++


Commit: 7393cce711c24b1911c2ed4f9a7fcd87367b058e
    https://github.com/scummvm/scummvm/commit/7393cce711c24b1911c2ed4f9a7fcd87367b058e
Author: Bertrand Augereau (bertrand_augereau at yahoo.fr)
Date: 2011-08-21T07:29:48-07:00

Commit Message:
DREAMWEB: 'showallfree' 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 004a4c8..c380bfa 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -140,6 +140,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'deletetaken',
 	'placesetobject',
 	'removesetobject',
+	'showallfree',
 	], skip_output = [
 	# These functions are processed but not output
 	'dreamweb',
diff --git a/engines/dreamweb/backdrop.cpp b/engines/dreamweb/backdrop.cpp
index 83e1b13..94963f4 100644
--- a/engines/dreamweb/backdrop.cpp
+++ b/engines/dreamweb/backdrop.cpp
@@ -245,5 +245,42 @@ void DreamGenContext::calcmapad() {
 	data.word(kMapady) = data.word(kMapoffsety) - 8 * (mapYsize + 2 * mapYstart - 10);
 }
 
+void DreamGenContext::showallfree() {
+	data.word(kListpos) = kFreelist;
+	ObjPos *listPos = (ObjPos *)segRef(data.word(kBuffers)).ptr(kFreelist, 80 * sizeof(ObjPos));
+	memset(listPos, 0xff, 80 * sizeof(ObjPos));
+
+	data.word(kFrsegment) = data.word(kFreeframes);
+	data.word(kDataad) = kFrframedata;
+	data.word(kFramesad) = kFrframes;
+	data.byte(kCurrentfree) = 0;
+	const uint8 *mapData = segRef(data.word(kFreedat)).ptr(2, 0);
+	for(size_t i = 0; i < 80; ++i) {
+		uint8 mapad = getmapad(mapData);
+		if (mapad != 0) {
+			data.word(kCurrentframe) = 3 * data.byte(kCurrentfree);
+			uint8 width, height;
+			calcfrframe(&width, &height);
+			uint16 x, y;
+			finalframe(&x, &y);
+			if ((width != 0) || (height != 0)) {
+				x += data.word(kMapadx);
+				y += data.word(kMapady);
+				showframe((Frame *)segRef(data.word(kFrsegment)).ptr(0, 0), x, y, data.word(kCurrentframe) & 0xff, 0, &width, &height);
+				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(kSavex) + data.byte(kSavesize+0);
+				objPos->yMax = data.byte(kSavey) + data.byte(kSavesize+1);
+				objPos->index = i;
+				data.word(kListpos) += sizeof(ObjPos);
+			}
+		}
+
+		++data.byte(kCurrentfree);
+		mapData += 16;
+	}
+}
+
 } /*namespace dreamgen */
 
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 7a48d73..ceec7d9 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -6415,87 +6415,6 @@ _tmp28a:
 		goto _tmp28;
 }
 
-void DreamGenContext::showallfree() {
-	STACK_CHECK;
-	es = data.word(kBuffers);
-	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5));
-	data.word(kListpos) = bx;
-	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5));
-	cx = 80*5;
-	al = 255;
-	_stosb(cx, true);
-	es = data.word(kFreeframes);
-	data.word(kFrsegment) = es;
-	ax = (0);
-	data.word(kDataad) = ax;
-	ax = (0+2080);
-	data.word(kFramesad) = ax;
-	al = 0;
-	data.byte(kCurrentfree) = al;
-	ds = data.word(kFreedat);
-	si = 2;
-	cx = 0;
-loop127:
-	push(cx);
-	push(si);
-	push(si);
-	es = data.word(kFreedat);
-	getmapad();
-	si = pop();
-	_cmp(ch, 0);
-	if (flags.z())
-		goto over138;
-	al = data.byte(kCurrentfree);
-	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 over138;
-	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;
-over138:
-	_inc(data.byte(kCurrentfree));
-	si = pop();
-	cx = pop();
-	_add(si, 16);
-	_inc(cx);
-	_cmp(cx, 80);
-	if (flags.z())
-		return /* (finfree) */;
-	goto loop127;
-}
-
 void DreamGenContext::showallex() {
 	STACK_CHECK;
 	es = data.word(kBuffers);
@@ -18409,7 +18328,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
 		case addr_blockget: blockget(); break;
 		case addr_drawfloor: drawfloor(); break;
 		case addr_drawflags: drawflags(); break;
-		case addr_showallfree: showallfree(); break;
 		case addr_showallex: showallex(); break;
 		case addr_adjustlen: adjustlen(); break;
 		case addr_autolook: autolook(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index bca9cc6..62aaf70 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -467,7 +467,6 @@ public:
 	static const uint16 addr_autolook = 0xc46c;
 	static const uint16 addr_adjustlen = 0xc45c;
 	static const uint16 addr_showallex = 0xc450;
-	static const uint16 addr_showallfree = 0xc44c;
 	static const uint16 addr_drawflags = 0xc43c;
 	static const uint16 addr_drawfloor = 0xc428;
 	static const uint16 addr_blockget = 0xc424;
@@ -1455,7 +1454,7 @@ public:
 	//void cancelch0();
 	void setbotleft();
 	void findfirstpath();
-	void fadescreenup();
+	//void cancelch1();
 	void loadold();
 	void loadtempcharset();
 	void showbyte();
@@ -1709,6 +1708,7 @@ public:
 	void powerlighton();
 	void savefilewrite();
 	void printmessage2();
+	//void showallfree();
 	void loadnews();
 	void rollem();
 	void makeworn();
@@ -1808,7 +1808,6 @@ public:
 	void pickupob();
 	void error();
 	void showopbox();
-	//void cancelch1();
 	void clearbeforeload();
 	void biblequote();
 	void doload();
@@ -1958,7 +1957,7 @@ public:
 	void initialmoncols();
 	void checkforshake();
 	void usebuttona();
-	void showallfree();
+	void fadescreenup();
 	//void getnextword();
 	void generalerror();
 	void actualload();
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index fd2a83e..d2d3e4a 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -163,4 +163,5 @@
 	void placesetobject(uint8 index);
 	void removesetobject();
 	void removesetobject(uint8 index);
+	void showallfree();
 






More information about the Scummvm-git-logs mailing list