aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorBertrand Augereau2011-11-15 12:33:13 +0100
committerBertrand Augereau2011-11-15 13:22:30 +0100
commit5adf8b4864e80b10070ad31819271a0af7588f64 (patch)
treef15ed647e8475eb6b4a88b96cd203d72643822ea /engines
parentbc509e9e086a5d0025e904b0a0e14fbbd23c6786 (diff)
downloadscummvm-rg350-5adf8b4864e80b10070ad31819271a0af7588f64.tar.gz
scummvm-rg350-5adf8b4864e80b10070ad31819271a0af7588f64.tar.bz2
scummvm-rg350-5adf8b4864e80b10070ad31819271a0af7588f64.zip
DREAWMEB: 'transfertext' ported to C++
Diffstat (limited to 'engines')
-rw-r--r--engines/dreamweb/dreamgen.cpp30
-rw-r--r--engines/dreamweb/dreamgen.h5
-rw-r--r--engines/dreamweb/object.cpp14
-rw-r--r--engines/dreamweb/stubs.h1
4 files changed, 17 insertions, 33 deletions
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 407e2fcc3b..aa1ea88551 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 8429913172..990bba0201 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 277ad20927..9bb5a7d0b3 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 0faccc5090..a838c77137 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();