From 0cd53d5d3e6324869adf145047c65d2ef93e8b7f Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Sun, 18 Dec 2011 21:07:27 +0200 Subject: [PATCH] DREAMWEB: Port 'lookatplace' to C++ --- devtools/tasmrecover/tasm-recover | 1 + engines/dreamweb/dreamgen.cpp | 71 ------------------------------- engines/dreamweb/dreamgen.h | 1 - engines/dreamweb/stubs.cpp | 32 ++++++++++++++ engines/dreamweb/stubs.h | 1 + 5 files changed, 34 insertions(+), 72 deletions(-) diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index 5f245b41261..04f8ebe6ad3 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -562,6 +562,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'lockmon', 'look', 'lookatcard', + 'lookatplace', 'lookininterface', 'loopchannel0', 'louis', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index f97eba41661..be1bfa6d969 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -1647,77 +1647,6 @@ endheartalk: data.byte(kPointermode) = 0; } -void DreamGenContext::lookAtPlace() { - STACK_CHECK; - _cmp(data.byte(kCommandtype), 224); - if (flags.z()) - goto alreadyinfo; - data.byte(kCommandtype) = 224; - al = 27; - commandOnly(); -alreadyinfo: - ax = data.word(kMousebutton); - _and(ax, 1); - if (flags.z()) - return /* (noinfo) */; - _cmp(ax, data.word(kOldbutton)); - if (flags.z()) - return /* (noinfo) */; - bl = data.byte(kDestpos); - _cmp(bl, 15); - if (!flags.c()) - return /* (noinfo) */; - push(bx); - delPointer(); - delTextLine(); - getUnderCentre(); - ds = data.word(kTempgraphics3); - al = 0; - ah = 0; - di = 60; - bx = 72; - showFrame(); - al = 4; - ah = 0; - di = 60; - bx = 72+55; - showFrame(); - _cmp(data.byte(kForeignrelease), 0); - if (flags.z()) - goto _tmp1; - al = 4; - ah = 0; - di = 60; - bx = 72+55+21; - showFrame(); -_tmp1: - bx = pop(); - bh = 0; - _add(bx, bx); - es = data.word(kTraveltext); - si = es.word(bx); - _add(si, (66*2)); - findNextColon(); - di = 63; - bx = 84; - _cmp(data.byte(kForeignrelease), 0); - if (flags.z()) - goto _tmp2; - bx = 84+4; -_tmp2: - dl = 191; - al = 0; - ah = 0; - printDirect(); - workToScreenM(); - cx = 500; - hangOnP(); - data.byte(kPointermode) = 0; - data.byte(kPointerframe) = 0; - putUnderCentre(); - workToScreenM(); -} - void DreamGenContext::locationPic() { STACK_CHECK; getDestInfo(); diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index fb965156f38..77e3abdcc9b 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -491,7 +491,6 @@ public: void findOpenPos(); void searchForSame(); void rollEm(); - void lookAtPlace(); void findAllOpen(); void fillOpen(); void getEitherAd(); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 98d961ef2be..6989a57a931 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -4584,4 +4584,36 @@ void DreamGenContext::showDiaryKeys() { showDiaryPage(); } +void DreamGenContext::lookAtPlace() { + if (data.byte(kCommandtype) != 224) { + data.byte(kCommandtype) = 224; + commandOnly(27); + } + + if (!(data.word(kMousebutton) & 1) || + data.word(kMousebutton) == data.word(kOldbutton) || + data.byte(kDestpos) >= 15) + return; // noinfo + + delPointer(); + delTextLine(); + getUnderCentre(); + showFrame(tempGraphics3(), 60, 72, 0, 0); + showFrame(tempGraphics3(), 60, 72 + 55, 4, 0); + if (data.byte(kForeignrelease)) + showFrame(tempGraphics3(), 60, 72+55+21, 4, 0); + + uint16 offset = kTextstart + getSegment(data.word(kTraveltext)).word(data.byte(kDestpos) * 2); + const uint8 *string = getSegment(data.word(kTraveltext)).ptr(offset, 0); + findNextColon(&string); + uint16 y = (data.byte(kForeignrelease)) ? 84 + 4 : 84; + printDirect(&string, 63, &y, 191, 191 & 1); + workToScreenM(); + hangOnP(500); + data.byte(kPointermode) = 0; + data.byte(kPointerframe) = 0; + putUnderCentre(); + workToScreenM(); +} + } // End of namespace DreamGen diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index bb86175b0d3..3ab7cfbb11b 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -374,5 +374,6 @@ DreamBase::deleteExText(textNum); } void signOn(); + void lookAtPlace(); #endif