aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb
diff options
context:
space:
mode:
authorFilippos Karapetis2011-12-26 22:31:50 +0200
committerFilippos Karapetis2011-12-26 22:31:50 +0200
commit1ba4f0a1a8965ee141987693770d2bcd3b74c292 (patch)
tree219b94744b859c5acce9a92483dccf15bd0bb47d /engines/dreamweb
parent4c66f74b58e9a2c191f22a37f485047dd19be131 (diff)
downloadscummvm-rg350-1ba4f0a1a8965ee141987693770d2bcd3b74c292.tar.gz
scummvm-rg350-1ba4f0a1a8965ee141987693770d2bcd3b74c292.tar.bz2
scummvm-rg350-1ba4f0a1a8965ee141987693770d2bcd3b74c292.zip
Revert "DREAMWEB: Remove dead code and move most functions to DreamBase"
This reverts commit 4c66f74b58e9a2c191f22a37f485047dd19be131. These functions aren't ready to be moved yet till the remaining two are finished, and they're so crossreferenced that the safest thing to do is revert this commit and break it down to smaller chunks
Diffstat (limited to 'engines/dreamweb')
-rw-r--r--engines/dreamweb/dreambase.h35
-rw-r--r--engines/dreamweb/monitor.cpp12
-rw-r--r--engines/dreamweb/object.cpp10
-rw-r--r--engines/dreamweb/print.cpp11
-rw-r--r--engines/dreamweb/stubs.cpp54
-rw-r--r--engines/dreamweb/stubs.h95
-rw-r--r--engines/dreamweb/use.cpp3
-rw-r--r--engines/dreamweb/vgagrafx.cpp21
8 files changed, 162 insertions, 79 deletions
diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h
index a4e3adfe42..c17a15e34a 100644
--- a/engines/dreamweb/dreambase.h
+++ b/engines/dreamweb/dreambase.h
@@ -595,41 +595,6 @@ public:
void errorMessage2();
void errorMessage3();
void decide();
- void screenUpdate();
- void mainScreen();
- void walkAndExamine();
- void autoLook();
- void dumpWatch();
- void watchCount();
- void afterNewRoom();
- void examineOb(bool examineAgain = true);
- void walkIntoRoom();
- void doLook();
- void startup1();
- void quickQuit();
- void readOneBlock();
- void seeCommandTail();
- void quickQuit2();
- void width160();
- bool checkIfPerson(uint8 x, uint8 y);
- bool checkIfFree(uint8 x, uint8 y);
- bool checkIfEx(uint8 x, uint8 y);
- void obName(uint8 command, uint8 commandType);
- bool checkIfSet(uint8 x, uint8 y);
- void readSetData();
- void look();
- void useKey();
- void inventory();
- void zoomOnOff();
- void initialInv();
- void allPointer();
- void madmanRun();
- void showGun();
- void triggerMessage(uint16 index);
- void processTrigger();
- void identifyOb();
- void signOn();
- void searchForFiles(uint16 segment);
// from talk.cpp
void talk();
diff --git a/engines/dreamweb/monitor.cpp b/engines/dreamweb/monitor.cpp
index 5e84c82962..0caf4b7c25 100644
--- a/engines/dreamweb/monitor.cpp
+++ b/engines/dreamweb/monitor.cpp
@@ -233,7 +233,7 @@ void DreamBase::input() {
}
void DreamGenContext::makeCaps() {
- al = DreamBase::makeCaps(al);
+ al = makeCaps(al);
}
byte DreamBase::makeCaps(byte c) {
@@ -312,6 +312,10 @@ void DreamBase::accessLightOff() {
multiDump(74, 182, 12, 8);
}
+void DreamGenContext::randomAccess() {
+ randomAccess(cx);
+}
+
void DreamBase::randomAccess(uint16 count) {
for (uint16 i = 0; i < count; ++i) {
vSync();
@@ -326,7 +330,7 @@ void DreamBase::randomAccess(uint16 count) {
}
void DreamGenContext::monMessage() {
- DreamBase::monMessage(al);
+ monMessage(al);
}
void DreamBase::monMessage(uint8 index) {
@@ -547,7 +551,7 @@ void DreamGenContext::read() {
}
}
-void DreamBase::signOn() {
+void DreamGenContext::signOn() {
const char *name = parser();
int8 foundIndex = -1;
@@ -605,7 +609,7 @@ void DreamBase::signOn() {
}
}
-void DreamBase::searchForFiles(uint16 segment) {
+void DreamGenContext::searchForFiles(uint16 segment) {
const char *filesString = (const char *)getSegment(segment).ptr(kTextstart, 0);
byte curChar;
diff --git a/engines/dreamweb/object.cpp b/engines/dreamweb/object.cpp
index 124a4f908d..4fa21e7618 100644
--- a/engines/dreamweb/object.cpp
+++ b/engines/dreamweb/object.cpp
@@ -78,6 +78,10 @@ void DreamBase::makeWorn(DynObject *object) {
object->id[1] = 'E'-'A';
}
+void DreamGenContext::obToInv() {
+ obToInv(al, ah, di, bx);
+}
+
void DreamBase::obToInv(uint8 index, uint8 flag, uint16 x, uint16 y) {
showFrame(engine->icons1(), x - 2, y - 1, 10, 0);
if (index == 0xff)
@@ -116,7 +120,7 @@ void DreamBase::obIcons() {
showFrame(engine->icons2(), 260, 1, 1, 0);
}
-void DreamBase::examineOb(bool examineAgain) {
+void DreamGenContext::examineOb(bool examineAgain) {
data.byte(kPointermode) = 0;
data.word(kTimecount) = 0;
@@ -213,7 +217,7 @@ void DreamBase::examineOb(bool examineAgain) {
data.byte(kOpenedob) = 255;
}
-void DreamBase::inventory() {
+void DreamGenContext::inventory() {
if (data.byte(kMandead) == 1 || data.word(kWatchingtime) != 0) {
blank();
return;
@@ -308,7 +312,7 @@ void DreamBase::openOb() {
_openChangeSize = getOpenedSlotCount() * kItempicsize + kInventx;
}
-void DreamBase::identifyOb() {
+void DreamGenContext::identifyOb() {
if (data.word(kWatchingtime) != 0) {
blank();
return;
diff --git a/engines/dreamweb/print.cpp b/engines/dreamweb/print.cpp
index d19a1931d2..0191aa8860 100644
--- a/engines/dreamweb/print.cpp
+++ b/engines/dreamweb/print.cpp
@@ -120,6 +120,15 @@ uint8 DreamBase::printSlow(const uint8 *string, uint16 x, uint16 y, uint8 maxWid
} while (true);
}
+void DreamGenContext::printDirect() {
+ uint16 y = bx;
+ const uint8 *initialString = es.ptr(si, 0);
+ const uint8 *string = initialString;
+ al = DreamBase::printDirect(&string, di, &y, dl, (bool)(dl & 1));
+ si += (string - initialString);
+ bx = y;
+}
+
uint8 DreamBase::printDirect(const uint8* string, uint16 x, uint16 y, uint8 maxWidth, bool centered) {
return printDirect(&string, x, &y, maxWidth, centered);
}
@@ -207,7 +216,7 @@ uint16 DreamBase::waitFrames() {
void DreamGenContext::monPrint() {
uint16 originalBx = bx;
const char *string = (const char *)es.ptr(bx, 0);
- const char *nextString = DreamBase::monPrint(string);
+ const char *nextString = monPrint(string);
bx = originalBx + (nextString - string);
}
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 759f608cb3..ca98337261 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -651,7 +651,7 @@ bool DreamBase::quitRequested() {
return data.byte(kQuitrequested);
}
-void DreamBase::screenUpdate() {
+void DreamGenContext::screenUpdate() {
newPlace();
mainScreen();
if (quitRequested())
@@ -722,7 +722,7 @@ void DreamBase::startup() {
atmospheres();
}
-void DreamBase::startup1() {
+void DreamGenContext::startup1() {
clearPalette();
data.byte(kThroughdoor) = 0;
@@ -789,15 +789,15 @@ void DreamBase::hangOnCurs(uint16 frameCount) {
}
}
-void DreamBase::seeCommandTail() {
+void DreamGenContext::seeCommandTail() {
data.byte(kBrightness) = 1;
}
-void DreamBase::quickQuit() {
+void DreamGenContext::quickQuit() {
engine->quit();
}
-void DreamBase::quickQuit2() {
+void DreamGenContext::quickQuit2() {
engine->quit();
}
@@ -842,7 +842,7 @@ void DreamBase::putUnderTimed() {
multiPut(_underTimedText, data.byte(kTimedx), data.byte(kTimedy), 240, kUnderTimedTextSizeY);
}
-void DreamBase::triggerMessage(uint16 index) {
+void DreamGenContext::triggerMessage(uint16 index) {
multiGet(mapStore(), 174, 153, 200, 63);
uint16 offset = kTextstart + getSegment(data.word(kPuzzletext)).word(index * 2);
const uint8 *string = getSegment(data.word(kPuzzletext)).ptr(offset, 0);
@@ -856,7 +856,7 @@ void DreamBase::triggerMessage(uint16 index) {
data.byte(kLasttrigger) = 0;
}
-void DreamBase::processTrigger() {
+void DreamGenContext::processTrigger() {
if (data.byte(kLasttrigger) == '1') {
setLocation(8);
triggerMessage(45);
@@ -1145,7 +1145,7 @@ void DreamBase::commandOnly(uint8 command) {
data.byte(kNewtextline) = 1;
}
-bool DreamBase::checkIfPerson(uint8 x, uint8 y) {
+bool DreamGenContext::checkIfPerson(uint8 x, uint8 y) {
Common::List<People>::iterator i;
for (i = _peopleList.begin(); i != _peopleList.end(); ++i) {
People &people = *i;
@@ -1172,7 +1172,7 @@ bool DreamBase::checkIfPerson(uint8 x, uint8 y) {
return false;
}
-bool DreamBase::checkIfFree(uint8 x, uint8 y) {
+bool DreamGenContext::checkIfFree(uint8 x, uint8 y) {
Common::List<ObjPos>::const_iterator i;
for (i = _freeList.reverse_begin(); i != _freeList.end(); --i) {
const ObjPos &pos = *i;
@@ -1185,7 +1185,7 @@ bool DreamBase::checkIfFree(uint8 x, uint8 y) {
return false;
}
-bool DreamBase::checkIfEx(uint8 x, uint8 y) {
+bool DreamGenContext::checkIfEx(uint8 x, uint8 y) {
Common::List<ObjPos>::const_iterator i;
for (i = _exList.reverse_begin(); i != _exList.end(); --i) {
const ObjPos &pos = *i;
@@ -1393,7 +1393,7 @@ void DreamBase::getFlagUnderP(uint8 *flag, uint8 *flagEx) {
data.byte(kLastflag) = *flag;
}
-void DreamBase::walkAndExamine() {
+void DreamGenContext::walkAndExamine() {
if (!finishedWalking())
return;
data.byte(kCommandtype) = data.byte(kWalkexamtype);
@@ -1403,7 +1403,7 @@ void DreamBase::walkAndExamine() {
examineOb();
}
-void DreamBase::obName(uint8 command, uint8 commandType) {
+void DreamGenContext::obName(uint8 command, uint8 commandType) {
if (data.byte(kReasseschanges) == 0) {
if ((commandType == data.byte(kCommandtype)) && (command == data.byte(kCommand))) {
if (data.byte(kWalkandexam) == 1) {
@@ -1723,7 +1723,7 @@ void DreamBase::showIcon() {
}
}
-bool DreamBase::checkIfSet(uint8 x, uint8 y) {
+bool DreamGenContext::checkIfSet(uint8 x, uint8 y) {
Common::List<ObjPos>::const_iterator i;
for (i = _setList.reverse_begin(); i != _setList.end(); --i) {
const ObjPos &pos = *i;
@@ -1862,7 +1862,7 @@ void DreamBase::enterSymbol() {
}
}
-void DreamBase::zoomOnOff() {
+void DreamGenContext::zoomOnOff() {
if (data.word(kWatchingtime) != 0 || data.byte(kPointermode) == 2) {
blank();
return;
@@ -1900,7 +1900,7 @@ void DreamBase::sortOutMap() {
}
}
-void DreamBase::mainScreen() {
+void DreamGenContext::mainScreen() {
data.byte(kInmaparea) = 0;
if (data.byte(kWatchon) == 1) {
RectWithCallback<DreamGenContext> mainList[] = {
@@ -1937,7 +1937,7 @@ void DreamBase::showWatch() {
}
}
-void DreamBase::dumpWatch() {
+void DreamGenContext::dumpWatch() {
if (data.byte(kWatchdump) != 1)
return;
multiDump(256, 21, 40, 12);
@@ -1965,7 +1965,7 @@ void DreamBase::showTime() {
showFrame(charset, 267+5, 21, 91*3+20, 0);
}
-void DreamBase::watchCount() {
+void DreamGenContext::watchCount() {
if (data.byte(kWatchon) == 0)
return;
++data.byte(kTimercount);
@@ -2031,7 +2031,7 @@ void DreamBase::loadRoom() {
getDimension(&mapXstart, &mapYstart, &mapXsize, &mapYsize);
}
-void DreamBase::readSetData() {
+void DreamGenContext::readSetData() {
data.word(kCharset1) = standardLoad("DREAMWEB.C00");
void *icons1Buffer = standardLoadCPP("DREAMWEB.G00");
@@ -2070,7 +2070,7 @@ void DreamBase::findRoomInLoc() {
data.byte(kRoomnum) = roomNum;
}
-void DreamBase::autoLook() {
+void DreamGenContext::autoLook() {
if ((data.word(kMousex) != data.word(kOldx)) || (data.word(kMousey) != data.word(kOldy))) {
data.word(kLookcounter) = 1000;
return;
@@ -2084,7 +2084,7 @@ void DreamBase::autoLook() {
doLook();
}
-void DreamBase::look() {
+void DreamGenContext::look() {
if (data.word(kWatchingtime) || (data.byte(kPointermode) == 2)) {
blank();
return;
@@ -2097,7 +2097,7 @@ void DreamBase::look() {
doLook();
}
-void DreamBase::doLook() {
+void DreamGenContext::doLook() {
createPanel();
showIcon();
underTextLine();
@@ -2721,7 +2721,7 @@ void DreamBase::pickupOb(uint8 command, uint8 pos) {
transferToEx(command);
}
-void DreamBase::initialInv() {
+void DreamGenContext::initialInv() {
if (data.byte(kReallocation) != 24)
return;
@@ -2741,7 +2741,7 @@ void DreamBase::initialInv() {
switchRyanOff();
}
-void DreamBase::walkIntoRoom() {
+void DreamGenContext::walkIntoRoom() {
if (data.byte(kLocation) == 14 && data.byte(kMapx) == 22) {
data.byte(kDestination) = 1;
data.byte(kFinaldest) = 1;
@@ -2785,7 +2785,7 @@ void DreamBase::blank() {
}
}
-void DreamBase::allPointer() {
+void DreamGenContext::allPointer() {
readMouse();
showPointer();
dumpPointer();
@@ -3050,7 +3050,7 @@ void DreamBase::watchReel() {
plotReel(reelPointer);
}
-void DreamBase::afterNewRoom() {
+void DreamGenContext::afterNewRoom() {
if (data.byte(kNowinnewroom) == 0)
return; // notnew
@@ -3081,7 +3081,7 @@ void DreamBase::afterNewRoom() {
atmospheres();
}
-void DreamBase::madmanRun() {
+void DreamGenContext::madmanRun() {
if (data.byte(kLocation) != 14 ||
data.byte(kMapx) != 22 ||
data.byte(kPointermode) != 2 ||
@@ -3147,7 +3147,7 @@ void DreamBase::decide() {
data.byte(kTextlen) = 240;
}
-void DreamBase::showGun() {
+void DreamGenContext::showGun() {
data.byte(kAddtored) = 0;
data.byte(kAddtogreen) = 0;
data.byte(kAddtoblue) = 0;
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index c464163f68..7fa403bbb7 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -22,22 +22,101 @@
#ifndef DREAMWEB_STUBS_H
#define DREAMWEB_STUBS_H
- void monMessage();
- void monMessage(uint8 index) {
- DreamBase::monMessage(index);
+ void screenUpdate();
+ void startup1();
+ void multiGet();
+ void multiGet(uint8 *dst, uint16 x, uint16 y, uint8 width, uint8 height) {
+ DreamBase::multiGet(dst, x, y, width, height);
+ }
+ void multiPut();
+ void multiPut(const uint8 *src, uint16 x, uint16 y, uint8 width, uint8 height) {
+ DreamBase::multiPut(src, x, y, width, height);
+ }
+ void multiDump();
+ void multiDump(uint16 x, uint16 y, uint8 width, uint8 height) {
+ DreamBase::multiDump(x, y, width, height);
+ }
+ void quickQuit();
+ void readOneBlock();
+ void seeCommandTail();
+ void quickQuit2();
+ void printDirect();
+ uint8 printDirect(const uint8** string, uint16 x, uint16 *y, uint8 maxWidth, bool centered) {
+ return DreamBase::printDirect(string, x, y, maxWidth, centered);
+ }
+ uint8 printDirect(const uint8* string, uint16 x, uint16 y, uint8 maxWidth, bool centered) {
+ return DreamBase::printDirect(string, x, y, maxWidth, centered);
+ }
+ void width160();
+ bool checkIfPerson(uint8 x, uint8 y);
+ bool checkIfFree(uint8 x, uint8 y);
+ bool checkIfEx(uint8 x, uint8 y);
+ DynObject *getFreeAd(uint8 index) {
+ return DreamBase::getFreeAd(index);
+ }
+ DynObject *getExAd(uint8 index) {
+ return DreamBase::getExAd(index);
+ }
+ void *getAnyAd(uint8 *slotSize, uint8 *slotCount) {
+ return DreamBase::getAnyAd(slotSize, slotCount);
+ }
+ SetObject *getSetAd(uint8 index) {
+ return DreamBase::getSetAd(index);
+ }
+ void walkAndExamine();
+ void obName(uint8 command, uint8 commandType);
+
+ bool checkIfSet(uint8 x, uint8 y);
+ void obToInv();
+ void obToInv(uint8 index, uint8 flag, uint16 x, uint16 y) {
+ DreamBase::obToInv(index, flag, x, y);
+ }
+ void useRoutine();
+ void examineOb(bool examineAgain = true);
+ void dumpWatch();
+ void watchCount();
+ void readSetData();
+ void useMon();
+ void makeCaps();
+ byte makeCaps(byte c) {
+ return DreamBase::makeCaps(c);
}
void monPrint();
const char *monPrint(const char *string) {
return DreamBase::monPrint(string);
}
- void useRoutine();
+ void randomAccess();
+ void randomAccess(uint16 count) {
+ DreamBase::randomAccess(count);
+ }
+ void monMessage();
+ void monMessage(uint8 index) {
+ DreamBase::monMessage(index);
+ }
+ void look();
+ void autoLook();
+ void doLook();
+ void useKey();
void useObject();
- void makeCaps();
- void useMon();
- void selectOb();
+ void singleKey(uint8 key, uint16 x, uint16 y);
+ void inventory();
+ void mainScreen();
+ void zoomOnOff();
+ void initialInv();
+ void walkIntoRoom();
+ void allPointer();
+ void afterNewRoom();
+ void madmanRun();
+ void showGun();
+ void triggerMessage(uint16 index);
+ void processTrigger();
bool execCommand();
+ void identifyOb();
+ void selectOb();
+ void getKeyAndLogo();
+ void signOn();
+ void searchForFiles(uint16 segment);
void read();
void dirCom();
- void getKeyAndLogo();
#endif
diff --git a/engines/dreamweb/use.cpp b/engines/dreamweb/use.cpp
index 0f31c766b5..25ed8d50e5 100644
--- a/engines/dreamweb/use.cpp
+++ b/engines/dreamweb/use.cpp
@@ -1494,7 +1494,7 @@ void DreamBase::useAxe() {
removeObFromInv();
}
-void DreamBase::useKey() {
+void DreamGenContext::useKey() {
switch(data.byte(kLocation)) {
case 5:
case 30:
@@ -1512,6 +1512,7 @@ void DreamBase::useKey() {
if (data.byte(kMapx) == 11 && data.byte(kMapy) == 10) {
showPuzText(3, 300);
data.byte(kNewlocation) = 30;
+ al = 2;
fadeScreenDown();
showFirstUse();
putBackObStuff();
diff --git a/engines/dreamweb/vgagrafx.cpp b/engines/dreamweb/vgagrafx.cpp
index 06743ed3bb..ecb295a353 100644
--- a/engines/dreamweb/vgagrafx.cpp
+++ b/engines/dreamweb/vgagrafx.cpp
@@ -27,6 +27,13 @@
namespace DreamGen {
+void DreamGenContext::multiGet() {
+ multiGet(ds.ptr(si, 0), di, bx, cl, ch);
+ si += cl * ch;
+ di += bx * kScreenwidth + kScreenwidth * ch;
+ cx = 0;
+}
+
void DreamBase::multiGet(uint8 *dst, uint16 x, uint16 y, uint8 w, uint8 h) {
assert(x < 320);
assert(y < 200);
@@ -43,6 +50,13 @@ void DreamBase::multiGet(uint8 *dst, uint16 x, uint16 y, uint8 w, uint8 h) {
}
}
+void DreamGenContext::multiPut() {
+ multiPut(ds.ptr(si, 0), di, bx, cl, ch);
+ si += cl * ch;
+ di += bx * kScreenwidth + kScreenwidth * ch;
+ cx = 0;
+}
+
void DreamBase::multiPut(const uint8 *src, uint16 x, uint16 y, uint8 w, uint8 h) {
assert(x < 320);
assert(y < 200);
@@ -59,6 +73,13 @@ void DreamBase::multiPut(const uint8 *src, uint16 x, uint16 y, uint8 w, uint8 h)
}
}
+void DreamGenContext::multiDump() {
+ multiDump(di, bx, cl, ch);
+ unsigned offset = di + bx * kScreenwidth;
+ si = di = offset + ch * kScreenwidth;
+ cx = 0;
+}
+
void DreamBase::multiDump(uint16 x, uint16 y, uint8 width, uint8 height) {
unsigned offset = x + y * kScreenwidth;
//debug(1, "multiDump %ux%u(segment: %04x) -> %d,%d(address: %d)", w, h, (uint16)ds, x, y, offset);