aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBertrand Augereau2011-07-18 14:30:07 +0200
committerBertrand Augereau2011-07-23 18:23:38 +0200
commit599fbf4fe6e8fd92105ae2bcdd21e0c2f82005f9 (patch)
treec91a3b67f440677e430b70411e6d492bccfcbd19
parentb728323df751a0aec5aee890cdce52f50796b12a (diff)
downloadscummvm-rg350-599fbf4fe6e8fd92105ae2bcdd21e0c2f82005f9.tar.gz
scummvm-rg350-599fbf4fe6e8fd92105ae2bcdd21e0c2f82005f9.tar.bz2
scummvm-rg350-599fbf4fe6e8fd92105ae2bcdd21e0c2f82005f9.zip
DREAMWEB: 'printdirect' ported to C++
-rwxr-xr-xdevtools/tasmrecover/tasm-recover1
-rw-r--r--engines/dreamweb/dreamgen.cpp40
-rw-r--r--engines/dreamweb/dreamgen.h3
-rw-r--r--engines/dreamweb/stubs.cpp31
-rw-r--r--engines/dreamweb/stubs.h1
5 files changed, 34 insertions, 42 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 412d5d4728..ed29eaa617 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -44,6 +44,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'kernchars',
'getnextword',
'getnumber',
+ 'printdirect',
'worktoscreen',
'width160',
'convertkey',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 1a3b6a2497..41dbf9dc3a 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -5108,45 +5108,6 @@ void DreamGenContext::printboth() {
ax = pop();
}
-void DreamGenContext::printdirect() {
- STACK_CHECK;
- data.word(kLastxpos) = di;
- ds = data.word(kCurrentset);
-printloop6:
- push(bx);
- push(di);
- push(dx);
- getnumber();
- ch = 0;
-printloop5:
- ax = es.word(si);
- _inc(si);
- _cmp(al, 0);
- if (flags.z())
- goto finishdirct;
- _cmp(al, ':');
- if (flags.z())
- goto finishdirct;
- push(cx);
- push(es);
- modifychar();
- printchar();
- data.word(kLastxpos) = di;
- es = pop();
- cx = pop();
- if (--cx)
- goto printloop5;
- dx = pop();
- di = pop();
- bx = pop();
- _add(bx, data.word(kLinespacing));
- goto printloop6;
-finishdirct:
- dx = pop();
- di = pop();
- bx = pop();
-}
-
void DreamGenContext::monprint() {
STACK_CHECK;
data.byte(kKerning) = 1;
@@ -21444,7 +21405,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
case addr_printslow: printslow(); break;
case addr_waitframes: waitframes(); break;
case addr_printboth: printboth(); break;
- case addr_printdirect: printdirect(); break;
case addr_monprint: monprint(); break;
case addr_fillryan: fillryan(); break;
case addr_fillopen: fillopen(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 782f4845fc..c50ee96348 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -585,7 +585,6 @@ public:
static const uint16 addr_fillopen = 0xc324;
static const uint16 addr_fillryan = 0xc320;
static const uint16 addr_monprint = 0xc314;
- static const uint16 addr_printdirect = 0xc310;
static const uint16 addr_printboth = 0xc30c;
static const uint16 addr_waitframes = 0xc308;
static const uint16 addr_printslow = 0xc304;
@@ -1566,7 +1565,7 @@ public:
//void spriteupdate();
void usetempcharset();
void discops();
- void printdirect();
+ //void printdirect();
void delthisone();
void makebackob();
void middlepanel();
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index b68f7e67df..fa7ec63a40 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -271,6 +271,37 @@ void DreamGenContext::getnextword() {
bh = charCount;
}
+void DreamGenContext::printdirect() {
+ data.word(kLastxpos) = di;
+ ds = data.word(kCurrentset);
+ while (true) {
+ push(bx);
+ push(di);
+ push(dx);
+ uint8 charCount = getnumber(dl, (bool)(dl & 1));
+ do {
+ ax = es.word(si);
+ ++si;
+ if ((al == 0) || (al == ':')) {
+ dx = pop();
+ di = pop();
+ bx = pop();
+ return;
+ }
+ push(es);
+ al = engine->modifyChar(al);
+ printchar();
+ data.word(kLastxpos) = di;
+ es = pop();
+ --charCount;
+ } while(charCount);
+ dx = pop();
+ di = pop();
+ bx = pop();
+ bx += data.word(kLinespacing);
+ }
+}
+
void DreamGenContext::getnumber() {
cl = getnumber(dl, (bool)(dl & 1));
}
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index b882172b4c..ef957344b4 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -38,6 +38,7 @@
void quickquit2();
void getnextword();
uint8 getnextword(uint8 *totalWidth, uint8 *charCount);
+ void printdirect();
void getnumber();
uint8 getnumber(uint16 maxWidth, bool centered);
void kernchars();