diff options
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 1 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 86 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 3 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 34 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 1 |
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(); |