[Scummvm-cvs-logs] scummvm master -> 5adf8b4864e80b10070ad31819271a0af7588f64

tramboi bertrand_augereau at yahoo.fr
Tue Nov 15 13:27:44 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:
5adf8b4864 DREAWMEB: 'transfertext' ported to C++


Commit: 5adf8b4864e80b10070ad31819271a0af7588f64
    https://github.com/scummvm/scummvm/commit/5adf8b4864e80b10070ad31819271a0af7588f64
Author: Bertrand Augereau (bertrand_augereau at yahoo.fr)
Date: 2011-11-15T04:22:30-08:00

Commit Message:
DREAWMEB: 'transfertext' ported 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 adaf05a..470209b 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -208,6 +208,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'examineob',
 	'showwatch',
 	'roomname',
+	'transfertext',
 	], skip_output = [
 	# These functions are processed but not output
 	'dreamweb',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 407e2fc..aa1ea88 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -5284,35 +5284,6 @@ void DreamGenContext::transfercontoex() {
 	ds.byte(si+2) = 255;
 }
 
-void DreamGenContext::transfertext() {
-	STACK_CHECK;
-	es = data.word(kExtras);
-	al = data.byte(kExpos);
-	ah = 0;
-	_add(ax, ax);
-	bx = (0+2080+30000+(16*114));
-	_add(bx, ax);
-	di = data.word(kExtextpos);
-	es.word(bx) = di;
-	_add(di, (0+2080+30000+(16*114)+((114+2)*2)));
-	al = data.byte(kItemtotran);
-	ah = 0;
-	_add(ax, ax);
-	ds = data.word(kFreedesc);
-	bx = (0);
-	_add(bx, ax);
-	si = (0+(82*2));
-	ax = ds.word(bx);
-	_add(si, ax);
-moretext:
-	_lodsb();
-	_stosb();
-	_inc(data.word(kExtextpos));
-	_cmp(al, 0);
-	if (!flags.z())
-		goto moretext;
-}
-
 void DreamGenContext::purgealocation() {
 	STACK_CHECK;
 	push(ax);
@@ -16480,7 +16451,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
 		case addr_transfertoex: transfertoex(); break;
 		case addr_pickupconts: pickupconts(); break;
 		case addr_transfercontoex: transfercontoex(); break;
-		case addr_transfertext: transfertext(); break;
 		case addr_purgealocation: purgealocation(); break;
 		case addr_emergencypurge: emergencypurge(); break;
 		case addr_purgeanitem: purgeanitem(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 8429913..990bba0 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -433,7 +433,6 @@ public:
 	static const uint16 addr_purgeanitem = 0xc414;
 	static const uint16 addr_emergencypurge = 0xc410;
 	static const uint16 addr_purgealocation = 0xc40c;
-	static const uint16 addr_transfertext = 0xc404;
 	static const uint16 addr_transfercontoex = 0xc400;
 	static const uint16 addr_pickupconts = 0xc3fc;
 	static const uint16 addr_transfertoex = 0xc3f8;
@@ -1603,7 +1602,6 @@ public:
 	void checkbasemem();
 	void lastfolder();
 	void transfermap();
-	//void showreelframe();
 	void showmonk();
 	void diarykeyn();
 	void set16colpalette();
@@ -1658,7 +1656,7 @@ public:
 	void actualsave();
 	void autolook();
 	void playguitar();
-	void transfertext();
+	//void showreelframe();
 	void searchforsame();
 	void showmainops();
 	void getback1();
@@ -1788,6 +1786,7 @@ public:
 	//void plotreel();
 	void swapwithopen();
 	//void makesprite();
+	//void transfertext();
 	void dreamweb();
 	void droperror();
 	void edenscdplayer();
diff --git a/engines/dreamweb/object.cpp b/engines/dreamweb/object.cpp
index 277ad20..9bb5a7d 100644
--- a/engines/dreamweb/object.cpp
+++ b/engines/dreamweb/object.cpp
@@ -245,6 +245,20 @@ void DreamGenContext::inventory() {
 	examineob(false);
 }
 
+void DreamGenContext::transfertext() {
+	segRef(data.word(kExtras)).word(kExtextdat + data.byte(kExpos) * 2) = data.word(kExtextpos);
+	uint16 freeTextOffset = data.byte(kItemtotran) * 2;
+	uint16 srcOffset = segRef(data.word(kFreedesc)).word(kFreetextdat + freeTextOffset);
+	const uint8 *src = segRef(data.word(kFreedesc)).ptr(kFreetext + srcOffset, 0);
+	uint8 *dst = segRef(data.word(kExtras)).ptr(kExtext + data.word(kExtextpos), 0);
+	uint8 c;
+	do {
+		c = *src++;
+		*dst++ = c;
+		++data.word(kExtextpos);
+	} while (c);
+}
+
 
 } /*namespace dreamgen */
 
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 0faccc5..a838c77 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -252,4 +252,5 @@
 	void examineob(bool examineAgain = true);
 	void showwatch();
 	void roomname();
+	void transfertext();
 






More information about the Scummvm-git-logs mailing list