aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBertrand Augereau2011-11-28 12:38:09 +0100
committerBertrand Augereau2011-11-28 15:47:31 +0100
commit88c0246aaec022b8e840c564f08da6f8b4004dc2 (patch)
tree02de3a75e81b3e04af0a3b3817a6dc07b5dc4cfd
parentae8e5ea2f7b93bb0dfdb3aca225ede80eadc5ac7 (diff)
downloadscummvm-rg350-88c0246aaec022b8e840c564f08da6f8b4004dc2.tar.gz
scummvm-rg350-88c0246aaec022b8e840c564f08da6f8b4004dc2.tar.bz2
scummvm-rg350-88c0246aaec022b8e840c564f08da6f8b4004dc2.zip
DREAMWEB: 'showleftpage' ported to C++
-rwxr-xr-xdevtools/tasmrecover/tasm-recover1
-rw-r--r--engines/dreamweb/dreamgen.cpp86
-rw-r--r--engines/dreamweb/dreamgen.h3
-rw-r--r--engines/dreamweb/stubs.cpp34
-rw-r--r--engines/dreamweb/stubs.h1
5 files changed, 37 insertions, 88 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index bff57d8987..8e54272538 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -303,6 +303,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'allocateload',
'viewfolder',
'showfolder',
+ 'showleftpage',
], skip_output = [
# These functions are processed but not output
'dreamweb',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 518d25e2ad..6c63e0f7f9 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -9905,92 +9905,6 @@ void DreamGenContext::folderexit() {
showframe();
}
-void DreamGenContext::showleftpage() {
- STACK_CHECK;
- ds = data.word(kTempgraphics2);
- di = 0;
- bx = 12;
- al = 3;
- ah = 0;
- showframe();
- bx = 12+5;
- cx = 9;
-leftpageloop:
- push(cx);
- push(bx);
- ds = data.word(kTempgraphics2);
- di = 0;
- al = 4;
- ah = 0;
- showframe();
- bx = pop();
- cx = pop();
- _add(bx, 16);
- if (--cx)
- goto leftpageloop;
- ds = data.word(kTempgraphics2);
- di = 0;
- al = 5;
- ah = 0;
- showframe();
- data.word(kLinespacing) = 8;
- data.word(kCharshift) = 91;
- data.byte(kKerning) = 1;
- bl = data.byte(kFolderpage);
- _dec(bl);
- _dec(bl);
- _add(bl, bl);
- bh = 0;
- _add(bx, bx);
- es = data.word(kTextfile1);
- si = es.word(bx);
- _add(si, 66*2);
- di = 2;
- bx = 48;
- dl = 140;
- cx = 2;
-twolotsleft:
- push(cx);
-contleftpage:
- printdirect();
- _add(bx, data.word(kLinespacing));
- _cmp(al, 0);
- if (!flags.z())
- goto contleftpage;
- cx = pop();
- if (--cx)
- goto twolotsleft;
- data.byte(kKerning) = 0;
- data.word(kCharshift) = 0;
- data.word(kLinespacing) = 10;
- es = data.word(kWorkspace);
- ds = data.word(kWorkspace);
- di = (48*320)+2;
- si = (48*320)+2+130;
- cx = 120;
-flipfolder:
- push(cx);
- push(di);
- push(si);
- cx = 65;
-flipfolderline:
- al = es.byte(di);
- ah = es.byte(si);
- es.byte(di) = ah;
- es.byte(si) = al;
- _dec(si);
- _inc(di);
- if (--cx)
- goto flipfolderline;
- si = pop();
- di = pop();
- cx = pop();
- _add(si, 320);
- _add(di, 320);
- if (--cx)
- goto flipfolder;
-}
-
void DreamGenContext::showrightpage() {
STACK_CHECK;
ds = data.word(kTempgraphics2);
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index fc77962601..eef7a350cd 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -177,7 +177,6 @@ public:
static const uint16 addr_quitsymbol = 0xc7dc;
static const uint16 addr_entersymbol = 0xc7d8;
static const uint16 addr_showrightpage = 0xc7d4;
- static const uint16 addr_showleftpage = 0xc7d0;
static const uint16 addr_folderexit = 0xc7cc;
static const uint16 addr_loadfolder = 0xc7c4;
static const uint16 addr_lastfolder = 0xc7c0;
@@ -1415,7 +1414,7 @@ public:
void allpalette();
//void loopchannel0();
//void initrain();
- void showleftpage();
+ //void showleftpage();
void rockstar();
void adjustright();
void putunderzoom();
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 22bf348db9..0973e9ee6c 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -2342,5 +2342,39 @@ void DreamGenContext::showfolder() {
}
}
+void DreamGenContext::showleftpage() {
+ showframe(tempGraphics2(), 0, 12, 3, 0);
+ uint16 y = 12+5;
+ for (size_t i = 0; i < 9; ++i) {
+ showframe(tempGraphics2(), 0, y, 4, 0);
+ y += 16;
+ }
+ showframe(tempGraphics2(), 0, y, 5, 0);
+ data.word(kLinespacing) = 8;
+ data.word(kCharshift) = 91;
+ data.byte(kKerning) = 1;
+ uint8 pageIndex = data.byte(kFolderpage) - 2;
+ uint16 offset = segRef(data.word(kTextfile1)).word(pageIndex * 4) + 66*2;
+ const uint8 *string = segRef(data.word(kTextfile1)).ptr(offset, 0);
+ y = 48;
+ for (size_t i = 0; i < 2; ++i) {
+ uint8 lastChar;
+ do {
+ lastChar = printdirect(&string, 2, &y, 140, false);
+ y += data.word(kLinespacing);
+ } while (lastChar != '\0');
+ }
+ data.byte(kKerning) = 0;
+ data.word(kCharshift) = 0;
+ data.word(kLinespacing) = 10;
+ uint8 *bufferToSwap = workspace() + (48*320)+2;
+ for (size_t i = 0; i < 120; ++i) {
+ for (size_t j = 0; j < 65; ++j) {
+ SWAP(bufferToSwap[j], bufferToSwap[130 - j]);
+ }
+ bufferToSwap += 320;
+ }
+}
+
} /*namespace dreamgen */
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index b5201d847a..129d906abf 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -356,4 +356,5 @@
void restorereels();
void viewfolder();
void showfolder();
+ void showleftpage();