[Scummvm-cvs-logs] scummvm master -> 76db28dafb8afa84a196526e28a529905e62d151

tramboi bertrand_augereau at yahoo.fr
Tue Aug 23 13:26:29 CEST 2011


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

Summary:
e04761549d DREAMWEB: 'getflagunderp' ported to C++
f6670e9f1f DREAMWEB: 'walkandexamine' ported to C++
76db28dafb DREAMWEB: 'obname' ported to C++


Commit: e04761549d1c4e02be306a2862cbcd6712f24a40
    https://github.com/scummvm/scummvm/commit/e04761549d1c4e02be306a2862cbcd6712f24a40
Author: Bertrand Augereau (bertrand_augereau at yahoo.fr)
Date: 2011-08-23T04:22:14-07:00

Commit Message:
DREAMWEB: 'getflagunderp' 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 8e37b4e..c884e4a 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -145,6 +145,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'adjustlen',
 	'finishedwalking',
 	'checkone',
+	'getflagunderp',
 	], skip_output = [
 	# These functions are processed but not output
 	'dreamweb',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 0ee8c50..288a7a5 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -15976,18 +15976,6 @@ searchmess:
 	printdirect();
 }
 
-void DreamGenContext::getflagunderp() {
-	STACK_CHECK;
-	cx = data.word(kMousex);
-	_sub(cx, data.word(kMapadx));
-	ax = data.word(kMousey);
-	_sub(ax, data.word(kMapady));
-	ch = al;
-	checkone();
-	data.byte(kLastflag) = cl;
-	data.byte(kLastflagex) = ch;
-}
-
 void DreamGenContext::setwalk() {
 	STACK_CHECK;
 	_cmp(data.byte(kLinepointer), 254);
@@ -18582,7 +18570,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
 		case addr_examineobtext: examineobtext(); break;
 		case addr_printmessage: printmessage(); break;
 		case addr_printmessage2: printmessage2(); break;
-		case addr_getflagunderp: getflagunderp(); break;
 		case addr_setwalk: setwalk(); break;
 		case addr_bresenhams: bresenhams(); break;
 		case addr_workoutframes: workoutframes(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 7ed079c..eb15b18 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -115,7 +115,6 @@ public:
 	static const uint16 addr_workoutframes = 0xca54;
 	static const uint16 addr_bresenhams = 0xca50;
 	static const uint16 addr_setwalk = 0xca44;
-	static const uint16 addr_getflagunderp = 0xca40;
 	static const uint16 addr_printmessage2 = 0xca30;
 	static const uint16 addr_printmessage = 0xca2c;
 	static const uint16 addr_examineobtext = 0xca20;
@@ -1843,7 +1842,7 @@ public:
 	void louischair();
 	void saveems();
 	void locationpic();
-	void getflagunderp();
+	//void getflagunderp();
 	void dolook();
 	void opentvdoor();
 	void triggermessage();
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index f0938ea..7cf1a30 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -1163,6 +1163,20 @@ bool DreamGenContext::finishedwalkingCPP() {
 	return (data.byte(kLinepointer) == 254) && (data.byte(kFacing) == data.byte(kTurntoface));
 }
 
+void DreamGenContext::getflagunderp() {
+	uint8 flag, flagEx;
+	getflagunderp(&flag, &flagEx);
+	cl = flag;
+	ch = flagEx;
+}
+
+void DreamGenContext::getflagunderp(uint8 *flag, uint8 *flagEx) {
+	uint8 type, flagX, flagY;
+	checkone(data.word(kMousex) - data.word(kMapadx), data.word(kMousey) - data.word(kMapady), flag, flagEx, &type, &flagX, &flagY);
+	cl = data.byte(kLastflag) = *flag;
+	ch = data.byte(kLastflagex) = *flagEx;
+}
+
 bool DreamGenContext::isCD() {
 	// The original sources has two codepaths depending if the game is 'if cd' or not
 	// This is a hack to guess which version to use with the assumption that if we have a cd version
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 9d5550b..80bee35 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -171,4 +171,6 @@
 	void finishedwalking();
 	void checkone();
 	void checkone(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY);
+	void getflagunderp();
+	void getflagunderp(uint8 *flag, uint8 *flagEx);
 


Commit: f6670e9f1f0f86103e77293f14562ee2c93ecc40
    https://github.com/scummvm/scummvm/commit/f6670e9f1f0f86103e77293f14562ee2c93ecc40
Author: Bertrand Augereau (bertrand_augereau at yahoo.fr)
Date: 2011-08-23T04:22:15-07:00

Commit Message:
DREAMWEB: 'walkandexamine' 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 c884e4a..1680d4f 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -146,6 +146,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'finishedwalking',
 	'checkone',
 	'getflagunderp',
+	'walkandexamine',
 	], skip_output = [
 	# These functions are processed but not output
 	'dreamweb',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 288a7a5..596fbf1 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -15109,88 +15109,6 @@ notzeronum:
 	ch = 1;
 }
 
-void DreamGenContext::walkandexamine() {
-	STACK_CHECK;
-	finishedwalking();
-	if (!flags.z())
-		return /* (noobselect) */;
-	al = data.byte(kWalkexamtype);
-	data.byte(kCommandtype) = al;
-	al = data.byte(kWalkexamnum);
-	data.byte(kCommand) = al;
-	data.byte(kWalkandexam) = 0;
-	_cmp(data.byte(kCommandtype), 5);
-	if (flags.z())
-		return /* (noobselect) */;
-	examineob();
-	return;
-wantstowalk:
-	setwalk();
-	data.byte(kReasseschanges) = 1;
-	return;
-diff:
-	data.byte(kCommand) = al;
-	data.byte(kCommandtype) = ah;
-	_cmp(data.byte(kLinepointer), 254);
-	if (!flags.z())
-		goto middleofwalk;
-	_cmp(data.word(kWatchingtime), 0);
-	if (!flags.z())
-		goto middleofwalk;
-	al = data.byte(kFacing);
-	_cmp(al, data.byte(kTurntoface));
-	if (!flags.z())
-		goto middleofwalk;
-	_cmp(data.byte(kCommandtype), 3);
-	if (!flags.z())
-		goto notblock;
-	bl = data.byte(kManspath);
-	_cmp(bl, data.byte(kPointerspath));
-	if (!flags.z())
-		goto dontcheck;
-	cl = data.byte(kRyanx);
-	_add(cl, 12);
-	ch = data.byte(kRyany);
-	_add(ch, 12);
-	checkone();
-	_cmp(cl, 2);
-	if (flags.c())
-		goto isblock;
-dontcheck:
-	getflagunderp();
-	_cmp(data.byte(kLastflag), 2);
-	if (flags.c())
-		goto isblock;
-	_cmp(data.byte(kLastflag), 128);
-	if (!flags.c())
-		goto isblock;
-	goto toofaraway;
-notblock:
-	bl = data.byte(kManspath);
-	_cmp(bl, data.byte(kPointerspath));
-	if (!flags.z())
-		goto toofaraway;
-	_cmp(data.byte(kCommandtype), 3);
-	if (flags.z())
-		goto isblock;
-	_cmp(data.byte(kCommandtype), 5);
-	if (flags.z())
-		goto isaperson;
-	examineobtext();
-	return;
-middleofwalk:
-	blocknametext();
-	return;
-isblock:
-	blocknametext();
-	return;
-isaperson:
-	personnametext();
-	return;
-toofaraway:
-	walktotext();
-}
-
 void DreamGenContext::mainscreen() {
 	STACK_CHECK;
 	data.byte(kInmaparea) = 0;
@@ -15803,7 +15721,7 @@ notdiffob:
 		goto diff;
 	_cmp(data.byte(kWalkandexam), 1);
 	if (flags.z())
-		goto walkandexamine;
+		{ walkandexamine(); return; };
 	_cmp(data.word(kMousebutton), 0);
 	if (flags.z())
 		return /* (noobselect) */;
@@ -18646,7 +18564,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
 		case addr_setkeyboardint: setkeyboardint(); break;
 		case addr_resetkeyboard: resetkeyboard(); break;
 		case addr_keyboardread: keyboardread(); break;
-		case addr_walkandexamine: walkandexamine(); break;
 		case addr_doload: doload(); break;
 		case addr_generalerror: generalerror(); break;
 		default: ::error("invalid call to %04x dispatched", (uint16)ax);
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index eb15b18..9f2774f 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -137,7 +137,6 @@ public:
 	static const uint16 addr_checkcoords = 0xc9d0;
 	static const uint16 addr_madmanrun = 0xc9cc;
 	static const uint16 addr_mainscreen = 0xc9c8;
-	static const uint16 addr_walkandexamine = 0xcbb8;
 	static const uint16 addr_convnum = 0xc9c4;
 	static const uint16 addr_showword = 0xc9c0;
 	static const uint16 addr_twodigitnum = 0xc9bc;
@@ -194,7 +193,7 @@ public:
 	static const uint16 addr_createname = 0xc8cc;
 	static const uint16 addr_loadspeech = 0xc8c8;
 	static const uint16 addr_loadold = 0xc8c4;
-	static const uint16 addr_doload = 0xcbbc;
+	static const uint16 addr_doload = 0xcbb8;
 	static const uint16 addr_newgame = 0xc8c0;
 	static const uint16 addr_showdecisions = 0xc8bc;
 	static const uint16 addr_decide = 0xc8b8;
@@ -210,7 +209,7 @@ public:
 	static const uint16 addr_oldtonames = 0xc88c;
 	static const uint16 addr_namestoold = 0xc888;
 	static const uint16 addr_error = 0xc884;
-	static const uint16 addr_generalerror = 0xcbc0;
+	static const uint16 addr_generalerror = 0xcbbc;
 	static const uint16 addr_dosreturn = 0xc880;
 	static const uint16 addr_shownames = 0xc87c;
 	static const uint16 addr_showslots = 0xc878;
@@ -1811,7 +1810,7 @@ public:
 	void usetrainer();
 	//void allocatework();
 	void addtopresslist();
-	void walkandexamine();
+	//void walkandexamine();
 	void dmaend();
 	//void quickquit2();
 	void twodigitnum();
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 7cf1a30..82e66ba 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -1177,6 +1177,16 @@ void DreamGenContext::getflagunderp(uint8 *flag, uint8 *flagEx) {
 	ch = data.byte(kLastflagex) = *flagEx;
 }
 
+void DreamGenContext::walkandexamine() {
+	if (! finishedwalkingCPP())
+		return;
+	data.byte(kCommandtype) = data.byte(kWalkexamtype);
+	data.byte(kCommand) = data.byte(kWalkexamnum);
+	data.byte(kWalkandexam) = 0;
+	if (data.byte(kCommandtype) != 5)
+		examineob();
+}
+
 bool DreamGenContext::isCD() {
 	// The original sources has two codepaths depending if the game is 'if cd' or not
 	// This is a hack to guess which version to use with the assumption that if we have a cd version
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 80bee35..036e812 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -173,4 +173,5 @@
 	void checkone(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY);
 	void getflagunderp();
 	void getflagunderp(uint8 *flag, uint8 *flagEx);
+	void walkandexamine();
 


Commit: 76db28dafb8afa84a196526e28a529905e62d151
    https://github.com/scummvm/scummvm/commit/76db28dafb8afa84a196526e28a529905e62d151
Author: Bertrand Augereau (bertrand_augereau at yahoo.fr)
Date: 2011-08-23T04:22:15-07:00

Commit Message:
DREAMWEB: 'obname' 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 1680d4f..91270aa 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -147,6 +147,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'checkone',
 	'getflagunderp',
 	'walkandexamine',
+	'obname',
 	], skip_output = [
 	# These functions are processed but not output
 	'dreamweb',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 596fbf1..026299a 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -15703,140 +15703,6 @@ void DreamGenContext::afterintroroom() {
 	data.byte(kNowinnewroom) = 0;
 }
 
-void DreamGenContext::obname() {
-	STACK_CHECK;
-	_cmp(data.byte(kReasseschanges), 0);
-	if (flags.z())
-		goto notnewpath;
-	data.byte(kReasseschanges) = 0;
-	goto diff;
-notnewpath:
-	_cmp(ah, data.byte(kCommandtype));
-	if (flags.z())
-		goto notdiffob;
-	goto diff;
-notdiffob:
-	_cmp(al, data.byte(kCommand));
-	if (!flags.z())
-		goto diff;
-	_cmp(data.byte(kWalkandexam), 1);
-	if (flags.z())
-		{ walkandexamine(); return; };
-	_cmp(data.word(kMousebutton), 0);
-	if (flags.z())
-		return /* (noobselect) */;
-	_cmp(data.byte(kCommandtype), 3);
-	if (!flags.z())
-		goto isntblock;
-	_cmp(data.byte(kLastflag), 2);
-	if (flags.c())
-		return /* (noobselect) */;
-isntblock:
-	bl = data.byte(kManspath);
-	_cmp(bl, data.byte(kPointerspath));
-	if (!flags.z())
-		goto wantstowalk;
-	_cmp(data.byte(kCommandtype), 3);
-	if (flags.z())
-		goto wantstowalk;
-	finishedwalking();
-	if (!flags.z())
-		return /* (noobselect) */;
-	_cmp(data.byte(kCommandtype), 5);
-	if (flags.z())
-		goto wantstotalk;
-	_cmp(data.word(kWatchingtime), 0);
-	if (!flags.z())
-		return /* (noobselect) */;
-	examineob();
-	return;
-wantstotalk:
-	_cmp(data.word(kWatchingtime), 0);
-	if (!flags.z())
-		return /* (noobselect) */;
-	talk();
-	return;
-walkandexamine:
-	finishedwalking();
-	if (!flags.z())
-		return /* (noobselect) */;
-	al = data.byte(kWalkexamtype);
-	data.byte(kCommandtype) = al;
-	al = data.byte(kWalkexamnum);
-	data.byte(kCommand) = al;
-	data.byte(kWalkandexam) = 0;
-	_cmp(data.byte(kCommandtype), 5);
-	if (flags.z())
-		return /* (noobselect) */;
-	examineob();
-	return;
-wantstowalk:
-	setwalk();
-	data.byte(kReasseschanges) = 1;
-	return;
-diff:
-	data.byte(kCommand) = al;
-	data.byte(kCommandtype) = ah;
-	_cmp(data.byte(kLinepointer), 254);
-	if (!flags.z())
-		goto middleofwalk;
-	_cmp(data.word(kWatchingtime), 0);
-	if (!flags.z())
-		goto middleofwalk;
-	al = data.byte(kFacing);
-	_cmp(al, data.byte(kTurntoface));
-	if (!flags.z())
-		goto middleofwalk;
-	_cmp(data.byte(kCommandtype), 3);
-	if (!flags.z())
-		goto notblock;
-	bl = data.byte(kManspath);
-	_cmp(bl, data.byte(kPointerspath));
-	if (!flags.z())
-		goto dontcheck;
-	cl = data.byte(kRyanx);
-	_add(cl, 12);
-	ch = data.byte(kRyany);
-	_add(ch, 12);
-	checkone();
-	_cmp(cl, 2);
-	if (flags.c())
-		goto isblock;
-dontcheck:
-	getflagunderp();
-	_cmp(data.byte(kLastflag), 2);
-	if (flags.c())
-		goto isblock;
-	_cmp(data.byte(kLastflag), 128);
-	if (!flags.c())
-		goto isblock;
-	goto toofaraway;
-notblock:
-	bl = data.byte(kManspath);
-	_cmp(bl, data.byte(kPointerspath));
-	if (!flags.z())
-		goto toofaraway;
-	_cmp(data.byte(kCommandtype), 3);
-	if (flags.z())
-		goto isblock;
-	_cmp(data.byte(kCommandtype), 5);
-	if (flags.z())
-		goto isaperson;
-	examineobtext();
-	return;
-middleofwalk:
-	blocknametext();
-	return;
-isblock:
-	blocknametext();
-	return;
-isaperson:
-	personnametext();
-	return;
-toofaraway:
-	walktotext();
-}
-
 void DreamGenContext::examineobtext() {
 	STACK_CHECK;
 	bl = data.byte(kCommand);
@@ -18484,7 +18350,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
 		case addr_atmospheres: atmospheres(); break;
 		case addr_walkintoroom: walkintoroom(); break;
 		case addr_afterintroroom: afterintroroom(); break;
-		case addr_obname: obname(); break;
 		case addr_examineobtext: examineobtext(); break;
 		case addr_printmessage: printmessage(); break;
 		case addr_printmessage2: printmessage2(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 9f2774f..520c269 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -118,7 +118,6 @@ public:
 	static const uint16 addr_printmessage2 = 0xca30;
 	static const uint16 addr_printmessage = 0xca2c;
 	static const uint16 addr_examineobtext = 0xca20;
-	static const uint16 addr_obname = 0xca18;
 	static const uint16 addr_afterintroroom = 0xca14;
 	static const uint16 addr_walkintoroom = 0xca10;
 	static const uint16 addr_atmospheres = 0xca0c;
@@ -1477,7 +1476,7 @@ public:
 	//void domix();
 	void priesttext();
 	void paneltomap();
-	void obname();
+	//void obname();
 	void getridoftemp3();
 	void getridoftemp2();
 	void usebalcony();
@@ -1606,7 +1605,7 @@ public:
 	void dumpmenu();
 	void chewy();
 	void accesslighton();
-	void dosreturn();
+	void useplinth();
 	//void adjustlen();
 	//void quickquit();
 	void showpointer();
@@ -1715,7 +1714,7 @@ public:
 	void describeob();
 	void deleteexframe();
 	void folderexit();
-	void useplinth();
+	void dosreturn();
 	void wheelsound();
 	void actualsave();
 	void autolook();
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 82e66ba..576bfac 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -947,9 +947,7 @@ bool DreamGenContext::checkifperson(uint8 x, uint8 y) {
 		if (y >= ymax)
 			continue;
 		data.word(kPersondata) = people->w2();
-		al = people->b4;
-		ah = 5;
-		obname();
+		obname(people->b4, 5);
 		return true;
 	}
 	return false;
@@ -973,9 +971,7 @@ bool DreamGenContext::checkiffree(uint8 x, uint8 y) {
 			continue;
 		if (y >= objPos->yMax)
 			continue;
-		al = objPos->index;
-		ah = 2;
-		obname();
+		obname(objPos->index, 2);
 		return true;
 	}
 	return false;
@@ -1187,6 +1183,81 @@ void DreamGenContext::walkandexamine() {
 		examineob();
 }
 
+void DreamGenContext::obname() {
+	obname(al, ah);
+}
+
+void DreamGenContext::obname(uint8 command, uint8 commandType) {
+	if (data.byte(kReasseschanges) == 0) {
+		if ((commandType == data.byte(kCommandtype)) && (command == data.byte(kCommand))) {
+			if (data.byte(kWalkandexam) == 1) {
+				walkandexamine();
+				return;
+			} else if (data.word(kMousebutton) == 0)
+				return;
+			else if ((data.byte(kCommandtype) == 3) && (data.byte(kLastflag) < 2))
+				return;
+			else if ((data.byte(kManspath) != data.byte(kPointerspath)) || (data.byte(kCommandtype) == 3)) {
+				setwalk();
+				data.byte(kReasseschanges) = 1;
+				return;
+			} else if (! finishedwalkingCPP())
+				return;
+			else if (data.byte(kCommandtype) == 5) {
+				if (data.word(kWatchingtime) == 0)
+					talk();
+				return;
+			} else {
+				if (data.word(kWatchingtime) == 0)
+					examineob();
+				return;
+			}
+		}
+	} else
+		data.byte(kReasseschanges) = 0;
+
+	data.byte(kCommand) = command;
+	data.byte(kCommandtype) = commandType;
+	if ((data.byte(kLinepointer) != 254) || (data.word(kWatchingtime) != 0) || (data.byte(kFacing) != data.byte(kTurntoface))) {
+		blocknametext();
+		return;
+	} else if (data.byte(kCommandtype) != 3) {
+		if (data.byte(kManspath) != data.byte(kPointerspath)) {
+			walktotext();
+			return;
+		} else if (data.byte(kCommandtype) == 3) {
+			blocknametext();
+			return;
+		} else if (data.byte(kCommandtype) == 5) {
+			personnametext();
+			return;
+		} else {
+			examineobtext();
+			return;
+		}
+	}
+	if (data.byte(kManspath) == data.byte(kPointerspath)) {
+		uint8 flag, flagEx, type, flagX, flagY;
+		checkone(data.byte(kRyanx) + 12, data.byte(kRyany) + 12, &flag, &flagEx, &type, &flagX, &flagY);
+		if (flag < 2) {
+			blocknametext();
+			return;
+		}
+	}
+
+	getflagunderp();
+	if (data.byte(kLastflag) < 2) {
+		blocknametext();
+		return;
+	} else if (data.byte(kLastflag) >= 128) {
+		blocknametext();
+		return;
+	} else {
+		walktotext();
+		return;
+	}
+}
+
 bool DreamGenContext::isCD() {
 	// The original sources has two codepaths depending if the game is 'if cd' or not
 	// This is a hack to guess which version to use with the assumption that if we have a cd version
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 036e812..3b5225d 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -174,4 +174,6 @@
 	void getflagunderp();
 	void getflagunderp(uint8 *flag, uint8 *flagEx);
 	void walkandexamine();
+	void obname();
+	void obname(uint8 command, uint8 commandType);
 






More information about the Scummvm-git-logs mailing list