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

tramboi bertrand_augereau at yahoo.fr
Thu Aug 25 05:40:57 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:
2cecbe0e3a DREAMWEB: 'animpointer' ported to C++


Commit: 2cecbe0e3a3caa59cf725b7fad5a90cd1b1e1026
    https://github.com/scummvm/scummvm/commit/2cecbe0e3a3caa59cf725b7fad5a90cd1b1e1026
Author: Bertrand Augereau (bertrand_augereau at yahoo.fr)
Date: 2011-08-24T22:33:59-07:00

Commit Message:
DREAMWEB: 'animpointer' 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 86b789b..68312ec 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -153,6 +153,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'dumpblink',
 	'dumppointer',
 	'showpointer',
+	'animpointer',
 	'checkcoords',
 	], skip_output = [
 	# These functions are processed but not output
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index ffe8d81..01de5fc 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -16352,84 +16352,6 @@ _tmp1:
 	multiget();
 }
 
-void DreamGenContext::animpointer() {
-	STACK_CHECK;
-	_cmp(data.byte(kPointermode), 2);
-	if (flags.z())
-		goto combathand;
-	_cmp(data.byte(kPointermode), 3);
-	if (flags.z())
-		goto mousehand;
-	_cmp(data.word(kWatchingtime), 0);
-	if (flags.z())
-		goto notwatchpoint;
-	data.byte(kPointerframe) = 11;
-	return;
-notwatchpoint:
-	data.byte(kPointerframe) = 0;
-	_cmp(data.byte(kInmaparea), 0);
-	if (flags.z())
-		return /* (gothand) */;
-	_cmp(data.byte(kPointerfirstpath), 0);
-	if (flags.z())
-		return /* (gothand) */;
-	getflagunderp();
-	_cmp(cl, 2);
-	if (flags.c())
-		return /* (gothand) */;
-	_cmp(cl, 128);
-	if (!flags.c())
-		return /* (gothand) */;
-	data.byte(kPointerframe) = 3;
-	_test(cl, 4);
-	if (!flags.z())
-		return /* (gothand) */;
-	data.byte(kPointerframe) = 4;
-	_test(cl, 16);
-	if (!flags.z())
-		return /* (gothand) */;
-	data.byte(kPointerframe) = 5;
-	_test(cl, 2);
-	if (!flags.z())
-		return /* (gothand) */;
-	data.byte(kPointerframe) = 6;
-	_test(cl, 8);
-	if (!flags.z())
-		return /* (gothand) */;
-	data.byte(kPointerframe) = 8;
-	return;
-mousehand:
-	_cmp(data.byte(kPointerspeed), 0);
-	if (flags.z())
-		goto rightspeed3;
-	_dec(data.byte(kPointerspeed));
-	goto finflashmouse;
-rightspeed3:
-	data.byte(kPointerspeed) = 5;
-	_inc(data.byte(kPointercount));
-	_cmp(data.byte(kPointercount), 16);
-	if (!flags.z())
-		goto finflashmouse;
-	data.byte(kPointercount) = 0;
-finflashmouse:
-	al = data.byte(kPointercount);
-	ah = 0;
-	bx = offset_flashmousetab;
-	_add(bx, ax);
-	al = cs.byte(bx);
-	data.byte(kPointerframe) = al;
-	return;
-combathand:
-	data.byte(kPointerframe) = 0;
-	_cmp(data.byte(kReallocation), 14);
-	if (!flags.z())
-		return /* (notarrow) */;
-	_cmp(data.byte(kCommandtype), 211);
-	if (!flags.z())
-		return /* (notarrow) */;
-	data.byte(kPointerframe) = 5;
-}
-
 void DreamGenContext::readmouse() {
 	STACK_CHECK;
 	ax = data.word(kMousebutton);
@@ -18692,7 +18614,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
 		case addr_dumpzoom: dumpzoom(); break;
 		case addr_putunderzoom: putunderzoom(); break;
 		case addr_undertextline: undertextline(); break;
-		case addr_animpointer: animpointer(); break;
 		case addr_setmouse: setmouse(); break;
 		case addr_readmouse: readmouse(); break;
 		case addr_mousecall: mousecall(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index a6a32c2..d92ce47 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -85,7 +85,6 @@ public:
 	static const uint16 addr_mousecall = 0xcae8;
 	static const uint16 addr_readmouse = 0xcae4;
 	static const uint16 addr_setmouse = 0xcae0;
-	static const uint16 addr_animpointer = 0xcadc;
 	static const uint16 addr_undertextline = 0xcad0;
 	static const uint16 addr_putunderzoom = 0xcabc;
 	static const uint16 addr_dumpzoom = 0xcab8;
@@ -683,14 +682,13 @@ public:
 	static const uint16 offset_gameerror2 = 0x0fb2;
 	static const uint16 offset_loadlist = 0x0ef0;
 	static const uint16 offset_gameerror6 = 0x10be;
-	static const uint16 offset_flashmousetab = 0x1707;
 	static const uint16 offset_speechfile = 0x13f1;
 	static const uint16 offset_atmospherelist = 0x147e;
 	static const uint16 offset_gameerror4 = 0x1037;
 	static const uint16 offset_gameerror1 = 0x0f6e;
 	static const uint16 offset_examlist = 0x09be;
 	static const uint16 offset_gameinfo = 0x1170;
-	static const uint16 offset_decidelist = 0x13c1;
+	static const uint16 offset_opslist = 0x0ec6;
 	static const uint16 offset_invlist1 = 0x09fc;
 	static const uint16 offset_money2poke = 0x0d97;
 	static const uint16 offset_talklist = 0x0a64;
@@ -710,7 +708,7 @@ public:
 	static const uint16 offset_gameerror3 = 0x1003;
 	static const uint16 offset_rainlocations = 0x0459;
 	static const uint16 offset_diarylist = 0x0e9c;
-	static const uint16 offset_opslist = 0x0ec6;
+	static const uint16 offset_decidelist = 0x13c1;
 	static const uint16 offset_symbollist = 0x0e5e;
 	static const uint16 offset_folderlist = 0x0e34;
 	static const uint16 offset_facelist = 0x0451;
@@ -1368,7 +1366,7 @@ public:
 	//void findobname();
 	//void makename();
 	void buttonfour();
-	void animpointer();
+	void dosometalk();
 	//void lockmon();
 	//void dochange();
 	void getanyaddir();
@@ -1685,6 +1683,7 @@ public:
 	void textformonk();
 	void reconstruct();
 	void soldier1();
+	//void animpointer();
 	void getundercentre();
 	void checkforexit();
 	void loadseg();
@@ -2015,7 +2014,6 @@ public:
 	void emergencypurge();
 	void usemenu();
 	void alleybarksound();
-	void dosometalk();
 	void usecart();
 	void intromusic();
 	void quitkey();
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 94d7a74..d192807 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -1508,6 +1508,60 @@ void DreamGenContext::showpointer() {
 	}
 }
 
+void DreamGenContext::animpointer() {
+
+	if (data.byte(kPointermode) == 2) {
+		data.byte(kPointerframe) = 0;
+		if ((data.byte(kReallocation) == 14) && (data.byte(kCommandtype) == 211))
+			data.byte(kPointerframe) = 5;
+		return;
+	} else if (data.byte(kPointermode) == 3) {
+		if (data.byte(kPointerspeed) != 0) {
+			--data.byte(kPointerspeed);
+		} else {
+			data.byte(kPointerspeed) = 5;
+			++data.byte(kPointercount);
+			if (data.byte(kPointercount) == 16)
+				data.byte(kPointercount) = 0;
+		}
+		static const uint8 flashMouseTab[] = { 1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2 };
+		data.byte(kPointerframe) = flashMouseTab[data.byte(kPointercount)];
+		return;
+	}
+	if (data.word(kWatchingtime) != 0) {
+		data.byte(kPointerframe) = 11;
+		return;
+	}
+	data.byte(kPointerframe) = 0;
+	if (data.byte(kInmaparea) == 0)
+		return;
+	if (data.byte(kPointerfirstpath) == 0)
+		return;
+	uint8 flag, flagEx;
+	getflagunderp(&flag, &flagEx);
+	if (flag < 2)
+		return;
+	if (flag >= 128)
+		return;
+	if (flag & 4) {
+		data.byte(kPointerframe) = 3;
+		return;
+	}
+	if (flag & 16) {
+		data.byte(kPointerframe) = 4;
+		return;
+	}
+	if (flag & 2) {
+		data.byte(kPointerframe) = 5;
+		return;
+	}
+	if (flag & 8) {
+		data.byte(kPointerframe) = 6;
+		return;
+	}
+	data.byte(kPointerframe) = 8;
+}
+
 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 dcd715a..0409c3a 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -182,6 +182,7 @@
 	void dumpblink();
 	void dumppointer();
 	void showpointer();
+	void animpointer();
 	void checkcoords();
 	void checkcoords(const RectWithCallback *rectWithCallbacks);
 






More information about the Scummvm-git-logs mailing list