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

bluegr md5 at scummvm.org
Mon Dec 19 02:25:29 CET 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:
f0eee81d32 DREAMWEB: Port 'intoinv', 'outofinv' to C++


Commit: f0eee81d327957cddb85c5a1ffe7a308a377f636
    https://github.com/scummvm/scummvm/commit/f0eee81d327957cddb85c5a1ffe7a308a377f636
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2011-12-18T17:24:03-08:00

Commit Message:
DREAMWEB: Port 'intoinv', 'outofinv' to C++

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



diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 04f8ebe..e7716ac 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -509,6 +509,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'input',
 	'interupttest',
 	'interviewer',
+	'intoinv',
 	'intro',
 	'intro1text',
 	'intro2text',
@@ -638,6 +639,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'openyourneighbour',
 	'othersmoker',
 	'out22c',
+	'outofinv',
 	'paltoendpal',
 	'paltostartpal',
 	'panelicons1',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index be1bfa6..a0ce29d 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -691,118 +691,6 @@ actuallyswap:
 	delPointer();
 }
 
-void DreamGenContext::inToInv() {
-	STACK_CHECK;
-	_cmp(data.byte(kPickup), 0);
-	if (!flags.z())
-		goto notout;
-	outOfInv();
-	return;
-notout:
-	findInvPos();
-	ax = es.word(bx);
-	_cmp(al, 255);
-	if (flags.z())
-		goto canplace1;
-	swapWithInv();
-	return;
-canplace1:
-	al = data.byte(kItemframe);
-	ah = data.byte(kObjecttype);
-	_cmp(ax, data.word(kOldsubject));
-	if (!flags.z())
-		goto difsub1;
-	_cmp(data.byte(kCommandtype), 220);
-	if (flags.z())
-		goto alreadyplce;
-	data.byte(kCommandtype) = 220;
-difsub1:
-	data.word(kOldsubject) = ax;
-	bx = ax;
-	al = 35;
-	commandWithOb();
-alreadyplce:
-	ax = data.word(kMousebutton);
-	_cmp(ax, data.word(kOldbutton));
-	if (flags.z())
-		return /* (notletgo2) */;
-	_and(ax, 1);
-	if (!flags.z())
-		goto doplace;
-	return;
-doplace:
-	delPointer();
-	al = data.byte(kItemframe);
-	getExAd();
-	es.byte(bx+2) = 4;
-	es.byte(bx+3) = 255;
-	al = data.byte(kLastinvpos);
-	es.byte(bx+4) = al;
-	data.byte(kPickup) = 0;
-	fillRyan();
-	readMouse();
-	showPointer();
-	outOfInv();
-	workToScreen();
-	delPointer();
-}
-
-void DreamGenContext::outOfInv() {
-	STACK_CHECK;
-	findInvPos();
-	ax = es.word(bx);
-	_cmp(al, 255);
-	if (!flags.z())
-		goto canpick2;
-	blank();
-	return;
-canpick2:
-	bx = data.word(kMousebutton);
-	_cmp(bx, 2);
-	if (!flags.z())
-		goto canpick2a;
-	reExFromInv();
-	return;
-canpick2a:
-	_cmp(ax, data.word(kOldsubject));
-	if (!flags.z())
-		goto difsub3;
-	_cmp(data.byte(kCommandtype), 221);
-	if (flags.z())
-		goto alreadygrab;
-	data.byte(kCommandtype) = 221;
-difsub3:
-	data.word(kOldsubject) = ax;
-	bx = ax;
-	al = 36;
-	commandWithOb();
-alreadygrab:
-	ax = data.word(kMousebutton);
-	_cmp(ax, data.word(kOldbutton));
-	if (flags.z())
-		return /* (notletgo) */;
-	_and(ax, 1);
-	if (!flags.z())
-		goto dograb;
-	return;
-dograb:
-	delPointer();
-	data.byte(kPickup) = 1;
-	findInvPos();
-	ax = es.word(bx);
-	data.byte(kItemframe) = al;
-	data.byte(kObjecttype) = ah;
-	getExAd();
-	es.byte(bx+2) = 20;
-	es.byte(bx+3) = 255;
-	fillRyan();
-	readMouse();
-	showPointer();
-	inToInv();
-	workToScreen();
-	delPointer();
-}
-
 void DreamGenContext::getFreeAd() {
 	STACK_CHECK;
 	ah = 0;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 77e3abd..b13d150 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -477,13 +477,11 @@ public:
 	void startTalk();
 	void getAnyAd();
 	void reminders();
-	void inToInv();
 	void getFreeAd();
 	void dirFile();
 	void pickupConts();
 	void fadeUpMon();
 	void reExFromInv();
-	void outOfInv();
 	void transferMap();
 	void purgeAnItem();
 	void purgeALocation();
diff --git a/engines/dreamweb/object.cpp b/engines/dreamweb/object.cpp
index 384e001..9fe94c4 100644
--- a/engines/dreamweb/object.cpp
+++ b/engines/dreamweb/object.cpp
@@ -562,5 +562,87 @@ void DreamBase::removeObFromInv() {
 	deleteExObject(data.byte(kCommand));
 }
 
+void DreamGenContext::inToInv() {
+	if (!data.byte(kPickup)) {
+		outOfInv();
+		return;
+	}
+
+	findInvPos();
+	ax = es.word(bx);
+
+	if (al != 255) {
+		swapWithInv();
+		return;
+	}
+
+	al = data.byte(kItemframe);
+	ah = data.byte(kObjecttype);
+
+	if (ax == data.word(kOldsubject) && data.byte(kCommandtype) != 220)
+		data.byte(kCommandtype) = 220;
+
+	data.word(kOldsubject) = ax;
+	commandWithOb(35, data.byte(kObjecttype), data.byte(kItemframe));
+
+	if (data.word(kMousebutton) == data.word(kOldbutton) || !(data.word(kMousebutton) & 1))
+		return; // notletgo2
+	
+	delPointer();
+	DynObject *object = getExAd(data.byte(kItemframe));
+	object->mapad[0] = 4;
+	object->mapad[1] = 255;
+	object->mapad[2] = data.byte(kLastinvpos);
+	data.byte(kPickup) = 0;
+	fillRyan();
+	readMouse();
+	showPointer();
+	outOfInv();
+	workToScreen();
+	delPointer();
+}
+
+void DreamGenContext::outOfInv() {
+	findInvPos();
+	ax = es.word(bx);
+
+	if (al == 255) {
+		blank();
+		return;
+	}
+
+	if (data.word(kMousebutton) == 2) {
+		reExFromInv();
+		return;
+	}
+
+	if (ax == data.word(kOldsubject) && data.byte(kCommandtype) != 221)
+		data.byte(kCommandtype) = 221;
+
+	data.word(kOldsubject) = ax;
+	commandWithOb(36, ah, al);
+
+	if (data.word(kMousebutton) == data.word(kOldbutton))
+		return; // notletgo
+
+	if (!(data.word(kMousebutton) & 1))
+		return;
+
+	delPointer();
+	data.byte(kPickup) = 1;
+	findInvPos();
+	ax = es.word(bx);
+	data.byte(kItemframe) = al;
+	data.byte(kObjecttype) = ah;
+	DynObject *object = getExAd(data.byte(kItemframe));
+	object->mapad[0] = 20;
+	object->mapad[1] = 255;
+	fillRyan();
+	readMouse();
+	showPointer();
+	inToInv();
+	workToScreen();
+	delPointer();
+}
 
 } // End of namespace DreamGen
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 3ab7cfb..1a76a78 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -375,5 +375,7 @@
 	}
 	void signOn();
 	void lookAtPlace();
+	void inToInv();
+	void outOfInv();
 
 #endif






More information about the Scummvm-git-logs mailing list