[Scummvm-cvs-logs] scummvm master -> 2fc467dc4f0aa563318458dceb8918d386128129

tramboi bertrand_augereau at yahoo.fr
Tue Aug 30 01:15:22 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:
2fc467dc4f DREAMWEB: 'checkifex' ported to C++


Commit: 2fc467dc4f0aa563318458dceb8918d386128129
    https://github.com/scummvm/scummvm/commit/2fc467dc4f0aa563318458dceb8918d386128129
Author: Bertrand Augereau (bertrand_augereau at yahoo.fr)
Date: 2011-08-29T18:11:32-07:00

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

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



diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 9ecd261..97d33b6 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -108,6 +108,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'doblocks',
 	'checkifperson',
 	'checkiffree',
+	'checkifex',
 	'getreelstart',
 	'findobname',
 	'copyname',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index bcc1cbb..697eb4e 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -15032,41 +15032,6 @@ notasetid:
 		goto identifyset;
 }
 
-void DreamGenContext::checkifex() {
-	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))+(99*5);
-	cx = 99;
-identifyex:
-	_cmp(es.byte(bx+4), 255);
-	if (flags.z())
-		goto notanexid;
-	_cmp(al, es.byte(bx));
-	if (flags.c())
-		goto notanexid;
-	_cmp(al, es.byte(bx+2));
-	if (!flags.c())
-		goto notanexid;
-	_cmp(ah, es.byte(bx+1));
-	if (flags.c())
-		goto notanexid;
-	_cmp(ah, es.byte(bx+3));
-	if (!flags.c())
-		goto notanexid;
-	al = es.byte(bx+4);
-	ah = 4;
-	obname();
-	al = 1;
-	_cmp(al, 0);
-	return;
-notanexid:
-	_sub(bx, 5);
-	_dec(cx);
-	_cmp(cx, -1);
-	if (!flags.z())
-		goto identifyex;
-}
-
 void DreamGenContext::isitdescribed() {
 	STACK_CHECK;
 	push(ax);
@@ -18251,7 +18216,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
 		case addr_madmanrun: madmanrun(); break;
 		case addr_identifyob: identifyob(); break;
 		case addr_checkifset: checkifset(); break;
-		case addr_checkifex: checkifex(); break;
 		case addr_isitdescribed: isitdescribed(); break;
 		case addr_findpathofpoint: findpathofpoint(); break;
 		case addr_findfirstpath: findfirstpath(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index d638722..82d9cd1 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -118,7 +118,6 @@ public:
 	static const uint16 addr_findfirstpath = 0xc9f0;
 	static const uint16 addr_findpathofpoint = 0xc9ec;
 	static const uint16 addr_isitdescribed = 0xc9e8;
-	static const uint16 addr_checkifex = 0xc9e0;
 	static const uint16 addr_checkifset = 0xc9dc;
 	static const uint16 addr_identifyob = 0xc9d4;
 	static const uint16 addr_madmanrun = 0xc9cc;
@@ -1609,7 +1608,7 @@ public:
 	void errormessage3();
 	//void deletetaken();
 	void putundermenu();
-	void checkifex();
+	void intromonks2();
 	void intromagic2();
 	void intromagic3();
 	void edeninbath();
@@ -1925,6 +1924,7 @@ public:
 	void delcurs();
 	void randomaccess();
 	void splitintolines();
+	//void checkifex();
 	//void findobname();
 	void initialmoncols();
 	void checkforshake();
@@ -1955,7 +1955,6 @@ public:
 	//void parseblaster();
 	//void readmouse1();
 	void makemainscreen();
-	void intromonks2();
 	void usewinch();
 	void setbotright();
 	//void readmouse3();
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 0f3e642..37125d8 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -1033,6 +1033,30 @@ bool DreamGenContext::checkiffree(uint8 x, uint8 y) {
 	return false;
 }
 
+void DreamGenContext::checkifex() {
+	flags._z = not checkifex(al, ah);
+}
+
+bool DreamGenContext::checkifex(uint8 x, uint8 y) {
+	const ObjPos *exList = (const ObjPos *)segRef(data.word(kBuffers)).ptr(kExlist, 100 * sizeof(ObjPos));
+	for (size_t i = 0; i < 100; ++i) {
+		const ObjPos *objPos = exList + 99 - i;
+		if (objPos->index == 0xff)
+			continue;
+		if (x < objPos->xMin)
+			continue;
+		if (x >= objPos->xMax)
+			continue;
+		if (y < objPos->yMin)
+			continue;
+		if (y >= objPos->yMax)
+			continue;
+		obname(objPos->index, 4);
+		return true;
+	}
+	return false;
+}
+
 const uint8 *DreamGenContext::findobname(uint8 type, uint8 index) {
 	if (type == 5) {
 		uint16 i = 64 * 2 * (index & 127);
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 17b884c..7c4f43a 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -126,6 +126,8 @@
 	bool checkifperson(uint8 x, uint8 y);
 	void checkiffree();
 	bool checkiffree(uint8 x, uint8 y);
+	void checkifex();
+	bool checkifex(uint8 x, uint8 y);
 	const uint8 *findobname(uint8 type, uint8 index);
 	void copyname();
 	void copyname(uint8 type, uint8 index, uint8 *dst);






More information about the Scummvm-git-logs mailing list