aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMax Horn2011-12-15 13:41:30 +0100
committerMax Horn2011-12-15 13:45:43 +0100
commit9ebcaa33e7080098e686c02ec03dff65a0a55174 (patch)
tree2dfc16d12526e944109c2a29ac3ee1c905628194 /engines
parent9972fc613adf7a9f751163724a08ac9bcd5ef7b0 (diff)
downloadscummvm-rg350-9ebcaa33e7080098e686c02ec03dff65a0a55174.tar.gz
scummvm-rg350-9ebcaa33e7080098e686c02ec03dff65a0a55174.tar.bz2
scummvm-rg350-9ebcaa33e7080098e686c02ec03dff65a0a55174.zip
DREAMWEB: Move even more stuff to DreamBase
Diffstat (limited to 'engines')
-rw-r--r--engines/dreamweb/dreambase.h44
-rw-r--r--engines/dreamweb/keypad.cpp24
-rw-r--r--engines/dreamweb/object.cpp36
-rw-r--r--engines/dreamweb/saveload.cpp113
-rw-r--r--engines/dreamweb/sprite.cpp2
-rw-r--r--engines/dreamweb/stubs.cpp270
-rw-r--r--engines/dreamweb/stubs.h58
7 files changed, 264 insertions, 283 deletions
diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h
index 2e3c530853..de7bada943 100644
--- a/engines/dreamweb/dreambase.h
+++ b/engines/dreamweb/dreambase.h
@@ -53,6 +53,10 @@ protected:
// from pathfind.cpp
Common::Point _lineData[200]; // Output of Bresenham
+ // from saveload.cpp
+ char _saveNames[17*7];
+ char _saveNamesOld[17*7];
+
public:
DreamBase(DreamWeb::DreamWebEngine *en);
@@ -109,6 +113,9 @@ public:
// from object.cpp
void obIcons();
+ void fillRyan();
+ void findAllRyan(uint8 *inv);
+ void obToInv(uint8 index, uint8 flag, uint16 x, uint16 y);
// from pathfind.cpp
void checkDest(const RoomPaths *roomsPaths);
@@ -135,8 +142,10 @@ public:
void delCurs();
// from saveload.cpp
- char _saveNames[17*7];
- char _saveNamesOld[17*7];
+ void oldToNames();
+ void namesToOld();
+ void showMainOps();
+ void showDiscOps();
void showNames();
// from sound.cpp
@@ -157,6 +166,7 @@ public:
void soundOnReels(uint16 reelPointer);
void rollEndCredits();
void priestText(ReelRoutine &routine);
+ void checkOne(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY);
// from stubs.cpp
void crosshair();
@@ -185,6 +195,7 @@ public:
DynObject *getFreeAd(uint8 index);
DynObject *getExAd(uint8 index);
DynObject *getEitherAdCPP();
+ void *getAnyAdDir(uint8 index, uint8 flag);
void showWatch();
void showTime();
void showExit();
@@ -203,6 +214,8 @@ public:
void loadIntoTemp2(const char *fileName);
void loadIntoTemp3(const char *fileName);
void loadTempCharset(const char *fileName);
+ void loadTravelText();
+ void loadTempText(const char *fileName);
void clearAndLoad(uint8 *buf, uint8 c, unsigned int size, unsigned int maxSize);
void clearAndLoad(uint16 seg, uint8 c, unsigned int size, unsigned int maxSize);
void sortOutMap();
@@ -218,6 +231,33 @@ public:
void eraseOldObs();
void commandOnly(uint8 command);
void blank();
+ void setTopLeft();
+ void setTopRight();
+ void setBotLeft();
+ void setBotRight();
+ void examIcon();
+ void animPointer();
+ void getFlagUnderP(uint8 *flag, uint8 *flagEx);
+ void workToScreenM();
+ void quitKey();
+ void loadFolder();
+ void folderHints();
+ void folderExit();
+ void showFolder();
+ void showLeftPage();
+ void showRightPage();
+ void underTextLine();
+ void hangOnP(uint16 count);
+ void getUnderZoom();
+ void putUnderZoom();
+ void examineInventory();
+ void openInv();
+ void getBack1();
+ void getBackFromOb();
+ void getBackFromOps();
+ void getBackToOps();
+ void DOSReturn();
+ bool isItWorn(const DynObject *object);
// from use.cpp
void placeFreeObject(uint8 index);
diff --git a/engines/dreamweb/keypad.cpp b/engines/dreamweb/keypad.cpp
index 795f5b053e..032f01873e 100644
--- a/engines/dreamweb/keypad.cpp
+++ b/engines/dreamweb/keypad.cpp
@@ -94,18 +94,18 @@ void DreamBase::addToPressList() {
void DreamGenContext::enterCode(uint8 digit0, uint8 digit1, uint8 digit2, uint8 digit3) {
RectWithCallback keypadList[] = {
- { kKeypadx+9,kKeypadx+30,kKeypady+9,kKeypady+22,&DreamGenContext::buttonOne },
- { kKeypadx+31,kKeypadx+52,kKeypady+9,kKeypady+22,&DreamGenContext::buttonTwo },
- { kKeypadx+53,kKeypadx+74,kKeypady+9,kKeypady+22,&DreamGenContext::buttonThree },
- { kKeypadx+9,kKeypadx+30,kKeypady+23,kKeypady+40,&DreamGenContext::buttonFour },
- { kKeypadx+31,kKeypadx+52,kKeypady+23,kKeypady+40,&DreamGenContext::buttonFive },
- { kKeypadx+53,kKeypadx+74,kKeypady+23,kKeypady+40,&DreamGenContext::buttonSix },
- { kKeypadx+9,kKeypadx+30,kKeypady+41,kKeypady+58,&DreamGenContext::buttonSeven },
- { kKeypadx+31,kKeypadx+52,kKeypady+41,kKeypady+58,&DreamGenContext::buttonEight },
- { kKeypadx+53,kKeypadx+74,kKeypady+41,kKeypady+58,&DreamGenContext::buttonNine },
- { kKeypadx+9,kKeypadx+30,kKeypady+59,kKeypady+73,&DreamGenContext::buttonNought },
- { kKeypadx+31,kKeypadx+74,kKeypady+59,kKeypady+73,&DreamGenContext::buttonEnter },
- { kKeypadx+72,kKeypadx+86,kKeypady+80,kKeypady+94,&DreamGenContext::quitKey },
+ { kKeypadx+9,kKeypadx+30,kKeypady+9,kKeypady+22,&DreamBase::buttonOne },
+ { kKeypadx+31,kKeypadx+52,kKeypady+9,kKeypady+22,&DreamBase::buttonTwo },
+ { kKeypadx+53,kKeypadx+74,kKeypady+9,kKeypady+22,&DreamBase::buttonThree },
+ { kKeypadx+9,kKeypadx+30,kKeypady+23,kKeypady+40,&DreamBase::buttonFour },
+ { kKeypadx+31,kKeypadx+52,kKeypady+23,kKeypady+40,&DreamBase::buttonFive },
+ { kKeypadx+53,kKeypadx+74,kKeypady+23,kKeypady+40,&DreamBase::buttonSix },
+ { kKeypadx+9,kKeypadx+30,kKeypady+41,kKeypady+58,&DreamBase::buttonSeven },
+ { kKeypadx+31,kKeypadx+52,kKeypady+41,kKeypady+58,&DreamBase::buttonEight },
+ { kKeypadx+53,kKeypadx+74,kKeypady+41,kKeypady+58,&DreamBase::buttonNine },
+ { kKeypadx+9,kKeypadx+30,kKeypady+59,kKeypady+73,&DreamBase::buttonNought },
+ { kKeypadx+31,kKeypadx+74,kKeypady+59,kKeypady+73,&DreamBase::buttonEnter },
+ { kKeypadx+72,kKeypadx+86,kKeypady+80,kKeypady+94,&DreamBase::quitKey },
{ 0,320,0,200,&DreamGenContext::blank },
{ 0xFFFF,0,0,0,0 }
};
diff --git a/engines/dreamweb/object.cpp b/engines/dreamweb/object.cpp
index 8e5da2c90e..b430183cee 100644
--- a/engines/dreamweb/object.cpp
+++ b/engines/dreamweb/object.cpp
@@ -24,7 +24,27 @@
namespace DreamGen {
-void DreamGenContext::fillRyan() {
+void DreamBase::showRyanPage() {
+ showFrame(engine->icons1(), kInventx + 167, kInventy - 12, 12, 0);
+ showFrame(engine->icons1(), kInventx + 167 + 18 * data.byte(kRyanpage), kInventy - 12, 13 + data.byte(kRyanpage), 0);
+}
+
+void DreamBase::findAllRyan(uint8 *inv) {
+ memset(inv, 0xff, 60);
+ for (size_t i = 0; i < kNumexobjects; ++i) {
+ DynObject *extra = getExAd(i);
+ if (extra->mapad[0] != 4)
+ continue;
+ if (extra->mapad[1] != 0xff)
+ continue;
+ uint8 slot = extra->mapad[2];
+ assert(slot < 30);
+ inv[2 * slot + 0] = i;
+ inv[2 * slot + 1] = 4;
+ }
+}
+
+void DreamBase::fillRyan() {
uint8 *inv = getSegment(data.word(kBuffers)).ptr(kRyaninvlist, 60);
findAllRyan(inv);
inv += data.byte(kRyanpage) * 2 * 10;
@@ -42,7 +62,7 @@ void DreamGenContext::isItWorn() {
flags._z = isItWorn((const DynObject *)es.ptr(bx, sizeof(DynObject)));
}
-bool DreamGenContext::isItWorn(const DynObject *object) {
+bool DreamBase::isItWorn(const DynObject *object) {
return (object->id[0] == 'W'-'A') && (object->id[1] == 'E'-'A');
}
@@ -72,7 +92,7 @@ void DreamGenContext::obToInv() {
obToInv(al, ah, di, bx);
}
-void DreamGenContext::obToInv(uint8 index, uint8 flag, uint16 x, uint16 y) {
+void DreamBase::obToInv(uint8 index, uint8 flag, uint16 x, uint16 y) {
showFrame(engine->icons1(), x - 2, y - 1, 10, 0);
if (index == 0xff)
return;
@@ -154,8 +174,8 @@ void DreamGenContext::examineOb(bool examineAgain) {
{ 260,300,0,44,&DreamGenContext::useObject },
{ 210,254,0,44,&DreamGenContext::selectOpenOb },
{ 144,176,64,96,&DreamGenContext::setPickup },
- { 0,50,50,200,&DreamGenContext::examineInventory },
- { 0,320,0,200,&DreamGenContext::blank },
+ { 0,50,50,200,&DreamBase::examineInventory },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
checkCoords(examList);
@@ -169,7 +189,7 @@ void DreamGenContext::examineOb(bool examineAgain) {
{ kInventx+167,kInventx+167+(18*3),kInventy-18,kInventy-2,&DreamGenContext::incRyanPage },
{ kInventx,_openChangeSize,kInventy+100,kInventy+100+kItempicsize,&DreamGenContext::useOpened },
{ kInventx,kInventx+(5*kItempicsize),kInventy,kInventy+(2*kItempicsize),&DreamGenContext::inToInv },
- { 0,320,0,200,&DreamGenContext::blank },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
checkCoords(invList1);
@@ -180,7 +200,7 @@ void DreamGenContext::examineOb(bool examineAgain) {
{ 273,320,157,198,&DreamGenContext::getBackFromOb },
{ kInventx+167,kInventx+167+(18*3),kInventy-18,kInventy-2,&DreamGenContext::incRyanPage },
{ kInventx,kInventx+(5*kItempicsize), kInventy,kInventy+(2*kItempicsize),&DreamGenContext::selectOb },
- { 0,320,0,200,&DreamGenContext::blank },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
checkCoords(withList1);
@@ -256,7 +276,7 @@ void DreamGenContext::transferText() {
data.word(kExtextpos) += len + 1;
}
-void DreamGenContext::getBackFromOb() {
+void DreamBase::getBackFromOb() {
if (data.byte(kPickup) != 1)
getBack1();
else
diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index f0fd477ec1..2945874e1a 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -71,7 +71,7 @@ void DreamGenContext::doLoad(int savegameId) {
{ kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamGenContext::getBackToOps },
{ kOpsx+128,kOpsx+190,kOpsy+12,kOpsy+100,&DreamGenContext::actualLoad },
{ kOpsx+2,kOpsx+92,kOpsy+4,kOpsy+81,&DreamGenContext::selectSlot },
- { 0,320,0,200,&DreamGenContext::blank },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
checkCoords(loadlist);
@@ -167,7 +167,7 @@ void DreamGenContext::saveGame() {
{ kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamGenContext::getBackToOps },
{ kOpsx+128,kOpsx+190,kOpsy+12,kOpsy+100,&DreamGenContext::actualSave },
{ kOpsx+2,kOpsx+92,kOpsy+4,kOpsy+81,&DreamGenContext::selectSlot },
- { 0,320,0,200,&DreamGenContext::blank },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
checkCoords(savelist);
@@ -216,11 +216,11 @@ void DreamGenContext::saveGame() {
}
}
-void DreamGenContext::namesToOld() {
+void DreamBase::namesToOld() {
memcpy(_saveNamesOld, _saveNames, 17*7);
}
-void DreamGenContext::oldToNames() {
+void DreamBase::oldToNames() {
memcpy(_saveNames, _saveNamesOld, 17*7);
}
@@ -237,13 +237,77 @@ void DreamGenContext::saveLoad() {
doSaveLoad();
}
-void DreamGenContext::showMainOps() {
+void DreamGenContext::doSaveLoad() {
+ data.byte(kPointerframe) = 0;
+ data.word(kTextaddressx) = 70;
+ data.word(kTextaddressy) = 182-8;
+ data.byte(kTextlen) = 181;
+ data.byte(kManisoffscreen) = 1;
+ clearWork();
+ createPanel2();
+ underTextLine();
+ getRidOfAll();
+ loadSaveBox();
+ showOpBox();
+ showMainOps();
+ workToScreenCPP();
+
+ RectWithCallback opsList[] = {
+ { kOpsx+59,kOpsx+114,kOpsy+30,kOpsy+76,&DreamGenContext::getBackFromOps },
+ { kOpsx+10,kOpsx+77,kOpsy+10,kOpsy+59,&DreamBase::DOSReturn },
+ { kOpsx+128,kOpsx+190,kOpsy+16,kOpsy+100,&DreamGenContext::discOps },
+ { 0,320,0,200,&DreamBase::blank },
+ { 0xFFFF,0,0,0,0 }
+ };
+
+ bool firstOps = true;
+
+ do { // restart ops
+ if (firstOps) {
+ firstOps = false;
+ } else {
+ showOpBox();
+ showMainOps();
+ workToScreenM();
+ }
+ data.byte(kGetback) = 0;
+
+ do { // wait ops
+ if (data.byte(kQuitrequested)) {
+ data.byte(kManisoffscreen) = 0;
+ return;
+ }
+
+ readMouse();
+ showPointer();
+ vSync();
+ dumpPointer();
+ dumpTextLine();
+ delPointer();
+ checkCoords(opsList);
+ } while (!data.byte(kGetback));
+ } while (data.byte(kGetback) == 2);
+
+ data.word(kTextaddressx) = 13;
+ data.word(kTextaddressy) = 182;
+ data.byte(kTextlen) = 240;
+ if (data.byte(kGetback) != 4) {
+ getRidOfTemp();
+ restoreAll();
+ redrawMainScrn();
+ workToScreenM();
+ data.byte(kCommandtype) = 200;
+ }
+ data.byte(kManisoffscreen) = 0;
+}
+
+void DreamBase::showMainOps() {
showFrame(tempGraphics(), kOpsx+10, kOpsy+10, 8, 0);
showFrame(tempGraphics(), kOpsx+59, kOpsy+30, 7, 0);
showFrame(tempGraphics(), kOpsx+128+4, kOpsy+12, 1, 0);
}
-void DreamGenContext::showDiscOps() {
+void DreamBase::showDiscOps() {
showFrame(tempGraphics(), kOpsx+128+4, kOpsy+12, 1, 0);
showFrame(tempGraphics(), kOpsx+10, kOpsy+10, 9, 0);
showFrame(tempGraphics(), kOpsx+59, kOpsy+30, 10, 0);
@@ -522,5 +586,42 @@ void DreamGenContext::checkInput() {
workToScreenM();
}
+void DreamGenContext::selectSlot() {
+ if (data.byte(kCommandtype) != 244) {
+ data.byte(kCommandtype) = 244;
+ commandOnly(45);
+ }
+
+ if (data.word(kMousebutton) != 1 || data.word(kMousebutton) == data.word(kOldbutton))
+ return; // noselslot
+ if (data.byte(kLoadingorsave) == 3)
+ data.byte(kLoadingorsave)--;
+
+ oldToNames();
+ int y = data.word(kMousey) - (kOpsy + 4);
+ if (y < 11)
+ data.byte(kCurrentslot) = 0;
+ else
+ data.byte(kCurrentslot) = y / 11;
+
+ delPointer();
+ showOpBox();
+ showSlots();
+ showNames();
+ if (data.byte(kLoadingorsave) == 1)
+ showLoadOps();
+ else
+ showSaveOps();
+ readMouse();
+ showPointer();
+ workToScreen();
+ delPointer();
+}
+
+void DreamGenContext::selectSlot2() {
+ if (data.word(kMousebutton))
+ data.byte(kLoadingorsave) = 2;
+ selectSlot();
+}
} // End of namespace DreamGen
diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp
index aca935cde9..1a341ce8d3 100644
--- a/engines/dreamweb/sprite.cpp
+++ b/engines/dreamweb/sprite.cpp
@@ -581,7 +581,7 @@ void DreamGenContext::checkOne() {
al = type;
}
-void DreamGenContext::checkOne(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY) {
+void DreamBase::checkOne(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY) {
*flagX = x / 16;
*flagY = y / 16;
const uint8 *tileData = getSegment(data.word(kBuffers)).ptr(kMapflags + (*flagY * 11 + *flagX) * 3, 3);
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 014e3143d9..d53c1a1346 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -882,13 +882,13 @@ void DreamGenContext::triggerMessage(uint16 index) {
void DreamGenContext::processTrigger() {
if (data.byte(kLasttrigger) == '1') {
- DreamBase::setLocation(8);
+ setLocation(8);
triggerMessage(45);
} else if (data.byte(kLasttrigger) == '2') {
- DreamBase::setLocation(9);
+ setLocation(9);
triggerMessage(55);
} else if (data.byte(kLasttrigger) == '3') {
- DreamBase::setLocation(2);
+ setLocation(2);
triggerMessage(59);
}
}
@@ -1000,7 +1000,7 @@ void DreamBase::deallocateMem(uint16 segment) {
}
}
-void DreamGenContext::DOSReturn() {
+void DreamBase::DOSReturn() {
if (data.byte(kCommandtype) != 250) {
data.byte(kCommandtype) = 250;
commandOnly(46);
@@ -1409,7 +1409,7 @@ void *DreamBase::getAnyAd(uint8 *value1, uint8 *value2) {
}
}
-void *DreamGenContext::getAnyAdDir(uint8 index, uint8 flag) {
+void *DreamBase::getAnyAdDir(uint8 index, uint8 flag) {
if (flag == 4)
return getExAd(index);
else if (flag == 2)
@@ -1488,18 +1488,11 @@ bool DreamGenContext::finishedWalkingCPP() {
return (data.byte(kLinepointer) == 254) && (data.byte(kFacing) == data.byte(kTurntoface));
}
-void DreamGenContext::getFlagUnderP() {
- uint8 flag, flagEx;
- getFlagUnderP(&flag, &flagEx);
- cl = flag;
- ch = flagEx;
-}
-
-void DreamGenContext::getFlagUnderP(uint8 *flag, uint8 *flagEx) {
+void DreamBase::getFlagUnderP(uint8 *flag, uint8 *flagEx) {
uint8 type, flagX, flagY;
checkOne(data.word(kMousex) - data.word(kMapadx), data.word(kMousey) - data.word(kMapady), flag, flagEx, &type, &flagX, &flagY);
- cl = data.byte(kLastflag) = *flag;
- ch = data.byte(kLastflagex) = *flagEx;
+ data.byte(kLastflag) = *flag;
+ data.byte(kLastflagex) = *flagEx;
}
void DreamGenContext::walkAndExamine() {
@@ -1574,7 +1567,8 @@ void DreamGenContext::obName(uint8 command, uint8 commandType) {
}
}
- getFlagUnderP();
+ uint8 flag, flagEx;
+ getFlagUnderP(&flag, &flagEx);
if (data.byte(kLastflag) < 2) {
blockNameText();
return;
@@ -1691,7 +1685,7 @@ void DreamBase::showPointer() {
}
}
-void DreamGenContext::animPointer() {
+void DreamBase::animPointer() {
if (data.byte(kPointermode) == 2) {
data.byte(kPointerframe) = 0;
@@ -1879,30 +1873,6 @@ bool DreamGenContext::checkIfSet(uint8 x, uint8 y) {
return false;
}
-void DreamBase::showRyanPage() {
- showFrame(engine->icons1(), kInventx + 167, kInventy - 12, 12, 0);
- showFrame(engine->icons1(), kInventx + 167 + 18 * data.byte(kRyanpage), kInventy - 12, 13 + data.byte(kRyanpage), 0);
-}
-
-void DreamGenContext::findAllRyan() {
- findAllRyan(es.ptr(di, 60));
-}
-
-void DreamGenContext::findAllRyan(uint8 *inv) {
- memset(inv, 0xff, 60);
- for (size_t i = 0; i < kNumexobjects; ++i) {
- DynObject *extra = getExAd(i);
- if (extra->mapad[0] != 4)
- continue;
- if (extra->mapad[1] != 0xff)
- continue;
- uint8 slot = extra->mapad[2];
- assert(slot < 30);
- inv[2 * slot + 0] = i;
- inv[2 * slot + 1] = 4;
- }
-}
-
void DreamGenContext::hangOn() {
hangOn(cx);
}
@@ -1938,7 +1908,7 @@ void DreamGenContext::hangOnP() {
hangOnP(cx);
}
-void DreamGenContext::hangOnP(uint16 count) {
+void DreamBase::hangOnP(uint16 count) {
data.word(kMaintimer) = 0;
uint8 pointerFrame = data.byte(kPointerframe);
uint8 pickup = data.byte(kPickup);
@@ -2022,12 +1992,12 @@ void DreamGenContext::enterSymbol() {
dumpTextLine();
dumpSymbol();
RectWithCallback symbolList[] = {
- { kSymbolx+40,kSymbolx+64,kSymboly+2,kSymboly+16,&DreamGenContext::quitSymbol },
- { kSymbolx,kSymbolx+52,kSymboly+20,kSymboly+50,&DreamGenContext::setTopLeft },
- { kSymbolx+52,kSymbolx+104,kSymboly+20,kSymboly+50,&DreamGenContext::setTopRight },
- { kSymbolx,kSymbolx+52,kSymboly+50,kSymboly+80,&DreamGenContext::setBotLeft },
- { kSymbolx+52,kSymbolx+104,kSymboly+50,kSymboly+80,&DreamGenContext::setBotRight },
- { 0,320,0,200,&DreamGenContext::blank },
+ { kSymbolx+40,kSymbolx+64,kSymboly+2,kSymboly+16,&DreamBase::quitSymbol },
+ { kSymbolx,kSymbolx+52,kSymboly+20,kSymboly+50,&DreamBase::setTopLeft },
+ { kSymbolx+52,kSymbolx+104,kSymboly+20,kSymboly+50,&DreamBase::setTopRight },
+ { kSymbolx,kSymbolx+52,kSymboly+50,kSymboly+80,&DreamBase::setBotLeft },
+ { kSymbolx+52,kSymbolx+104,kSymboly+50,kSymboly+80,&DreamBase::setBotRight },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
checkCoords(symbolList);
@@ -2438,7 +2408,7 @@ void DreamGenContext::restoreReels() {
engine->closeFile();
}
-void DreamGenContext::loadFolder() {
+void DreamBase::loadFolder() {
loadIntoTemp("DREAMWEB.G09"); // folder graphics 1
loadIntoTemp2("DREAMWEB.G10"); // folder graphics 2
loadIntoTemp3("DREAMWEB.G11"); // folder graphics 3
@@ -2446,7 +2416,7 @@ void DreamGenContext::loadFolder() {
loadTempText("DREAMWEB.T50"); // folder text
}
-void DreamGenContext::showFolder() {
+void DreamBase::showFolder() {
data.byte(kCommandtype) = 255;
if (data.byte(kFolderpage)) {
useTempCharset();
@@ -2471,7 +2441,7 @@ void DreamGenContext::showFolder() {
}
}
-void DreamGenContext::showLeftPage() {
+void DreamBase::showLeftPage() {
showFrame(tempGraphics2(), 0, 12, 3, 0);
uint16 y = 12+5;
for (size_t i = 0; i < 9; ++i) {
@@ -2504,7 +2474,7 @@ void DreamGenContext::showLeftPage() {
}
}
-void DreamGenContext::showRightPage() {
+void DreamBase::showRightPage() {
showFrame(tempGraphics2(), 143, 12, 0, 0);
uint16 y = 12+37;
for (size_t i = 0; i < 7; ++i) {
@@ -2552,7 +2522,7 @@ void DreamBase::panelIcons1() {
showWatch();
}
-void DreamGenContext::examIcon() {
+void DreamBase::examIcon() {
showFrame(engine->icons2(), 254, 5, 3, 0);
}
@@ -2560,10 +2530,6 @@ uint8 DreamBase::getLocation(uint8 index) {
return data.byte(kRoomscango + index);
}
-void DreamGenContext::getLocation() {
- al = DreamBase::getLocation(al);
-}
-
void DreamBase::setLocation(uint8 index) {
data.byte(kRoomscango + index) = 1;
}
@@ -2581,10 +2547,10 @@ const uint8 *DreamBase::getTextInFile1(uint16 index) {
void DreamGenContext::checkFolderCoords() {
RectWithCallback folderList[] = {
- { 280,320,160,200, &DreamGenContext::quitKey },
+ { 280,320,160,200, &DreamBase::quitKey },
{ 143,300,6,194, &DreamGenContext::nextFolder },
{ 0,143,6,194, &DreamGenContext::lastFolder },
- { 0,320,0,200, &DreamGenContext::blank },
+ { 0,320,0,200, &DreamBase::blank },
{ 0xFFFF,0,0,0, 0 }
};
checkCoords(folderList);
@@ -2630,10 +2596,10 @@ void DreamGenContext::lastFolder() {
}
}
-void DreamGenContext::folderHints() {
+void DreamBase::folderHints() {
if (data.byte(kFolderpage) == 5) {
- if ((data.byte(kAidedead) != 1) && (DreamBase::getLocation(13) != 1)) {
- DreamBase::setLocation(13);
+ if ((data.byte(kAidedead) != 1) && (getLocation(13) != 1)) {
+ setLocation(13);
showFolder();
const uint8 *string = getTextInFile1(30);
printDirect(string, 0, 86, 141, true);
@@ -2641,8 +2607,8 @@ void DreamGenContext::folderHints() {
hangOnP(200);
}
} else if (data.byte(kFolderpage) == 9) {
- if (DreamBase::getLocation(7) != 1) {
- DreamBase::setLocation(7);
+ if (getLocation(7) != 1) {
+ setLocation(7);
showFolder();
const uint8 *string = getTextInFile1(31);
printDirect(string, 0, 86, 141, true);
@@ -2652,19 +2618,15 @@ void DreamGenContext::folderHints() {
}
}
-void DreamGenContext::folderExit() {
+void DreamBase::folderExit() {
showFrame(tempGraphics2(), 296, 178, 6, 0);
}
-void DreamGenContext::loadTravelText() {
+void DreamBase::loadTravelText() {
data.word(kTraveltext) = standardLoad("DREAMWEB.T81"); // location descs
}
-void DreamGenContext::loadTempText() {
- loadTempText((const char *)data.ptr(dx, 0));
-}
-
-void DreamGenContext::loadTempText(const char *fileName) {
+void DreamBase::loadTempText(const char *fileName) {
data.word(kTextfile1) = standardLoad(fileName);
}
@@ -2692,7 +2654,7 @@ void DreamGenContext::allocateBuffers() {
data.word(kSounddata2) = allocateMem(2048/16);
}
-void DreamGenContext::workToScreenM() {
+void DreamBase::workToScreenM() {
animPointer();
readMouse();
showPointer();
@@ -2742,8 +2704,8 @@ void DreamGenContext::useMenu() {
dumpMenu();
dumpTextLine();
RectWithCallback menuList[] = {
- { kMenux+54,kMenux+68,kMenuy+72,kMenuy+88,&DreamGenContext::quitKey },
- { 0,320,0,200,&DreamGenContext::blank },
+ { kMenux+54,kMenux+68,kMenuy+72,kMenuy+88,&DreamBase::quitKey },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
checkCoords(menuList);
@@ -3169,7 +3131,7 @@ void DreamGenContext::intro() {
data.byte(kLasthardkey) = 0;
}
-void DreamGenContext::setTopLeft() {
+void DreamBase::setTopLeft() {
if (data.byte(kSymboltopdir) != 0) {
blank();
return;
@@ -3184,7 +3146,7 @@ void DreamGenContext::setTopLeft() {
data.byte(kSymboltopdir) = 0xFF;
}
-void DreamGenContext::setTopRight() {
+void DreamBase::setTopRight() {
if (data.byte(kSymboltopdir) != 0) {
blank();
return;
@@ -3199,7 +3161,7 @@ void DreamGenContext::setTopRight() {
data.byte(kSymboltopdir) = 1;
}
-void DreamGenContext::setBotLeft() {
+void DreamBase::setBotLeft() {
if (data.byte(kSymbolbotdir) != 0) {
blank();
return;
@@ -3214,7 +3176,7 @@ void DreamGenContext::setBotLeft() {
data.byte(kSymbolbotdir) = 0xFF;
}
-void DreamGenContext::setBotRight() {
+void DreamBase::setBotRight() {
if (data.byte(kSymbolbotdir) != 0) {
blank();
return;
@@ -3239,14 +3201,14 @@ void DreamGenContext::newGame() {
data.byte(kGetback) = 3;
}
-void DreamGenContext::getBackFromOps() {
+void DreamBase::getBackFromOps() {
if (data.byte(kMandead) == 2)
blank();
else
getBack1();
}
-void DreamGenContext::getBackToOps() {
+void DreamBase::getBackToOps() {
if (data.byte(kCommandtype) != 201) {
data.byte(kCommandtype) = 201;
commandOnly(42);
@@ -3356,12 +3318,6 @@ void DreamGenContext::redrawMainScrn() {
data.byte(kCommandtype) = 255;
}
-void DreamGenContext::selectSlot2() {
- if (data.word(kMousebutton))
- data.byte(kLoadingorsave) = 2;
- selectSlot();
-}
-
void DreamBase::blank() {
if (data.byte(kCommandtype) != 199) {
data.byte(kCommandtype) = 199;
@@ -3392,7 +3348,7 @@ void DreamGenContext::makeMainScreen() {
data.byte(kManisoffscreen) = 0;
}
-void DreamGenContext::openInv() {
+void DreamBase::openInv() {
data.byte(kInvopen) = 1;
printMessage(80, 58 - 10, 61, 240, (240 & 1));
fillRyan();
@@ -3403,8 +3359,8 @@ void DreamGenContext::obsThatDoThings() {
if (!compare(data.byte(kCommand), data.byte(kObjecttype), "MEMB"))
return; // notlouiscard
- if (DreamBase::getLocation(4) != 1) {
- DreamBase::setLocation(4);
+ if (getLocation(4) != 1) {
+ setLocation(4);
lookAtCard();
}
}
@@ -3704,7 +3660,7 @@ void DreamGenContext::selectLocation() {
{ 280,308,4,44,&DreamGenContext::lookAtPlace },
{ 104,216,138,192,&DreamGenContext::destSelect },
{ 273,320,157,198,&DreamGenContext::getBack1 },
- { 0,320,0,200,&DreamGenContext::blank },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
checkCoords(destList);
@@ -3722,7 +3678,7 @@ void DreamGenContext::selectLocation() {
}
-void DreamGenContext::examineInventory() {
+void DreamBase::examineInventory() {
if (data.byte(kCommandtype) != 249) {
data.byte(kCommandtype) = 249;
commandOnly(32);
@@ -3781,13 +3737,11 @@ void DreamBase::showDiary() {
showFrame(tempGraphics(), kDiaryx + 176, kDiaryy + 108, 2, 0);
}
-void DreamGenContext::underTextLine() {
+void DreamBase::underTextLine() {
uint16 y = data.word(kTextaddressy);
if (data.byte(kForeignrelease))
y -= 3;
- ds = data.word(kBuffers);
- si = kTextunder;
- multiGet(ds.ptr(si, 0), data.byte(kTextaddressx), y, kUndertextsizex, kUndertextsizey);
+ multiGet(textUnder(), data.byte(kTextaddressx), y, kUndertextsizex, kUndertextsizey);
}
void DreamGenContext::showDecisions() {
@@ -3797,16 +3751,12 @@ void DreamGenContext::showDecisions() {
underTextLine();
}
-void DreamGenContext::getUnderZoom() {
- ds = data.word(kBuffers);
- si = kZoomspace;
- multiGet(ds.ptr(si, 0), kZoomx + 5, kZoomy + 4, 46, 40);
+void DreamBase::getUnderZoom() {
+ multiGet(getSegment(data.word(kBuffers)).ptr(kZoomspace, 0), kZoomx + 5, kZoomy + 4, 46, 40);
}
-void DreamGenContext::putUnderZoom() {
- ds = data.word(kBuffers);
- si = kZoomspace;
- multiPut(ds.ptr(si, 0), kZoomx + 5, kZoomy + 4, 46, 40);
+void DreamBase::putUnderZoom() {
+ multiPut(getSegment(data.word(kBuffers)).ptr(kZoomspace, 0), kZoomx + 5, kZoomy + 4, 46, 40);
}
void DreamGenContext::showWatchReel() {
@@ -3939,9 +3889,9 @@ void DreamGenContext::decide() {
RectWithCallback decideList[] = {
{ kOpsx+69,kOpsx+124,kOpsy+30,kOpsy+76,&DreamGenContext::newGame },
- { kOpsx+20,kOpsx+87,kOpsy+10,kOpsy+59,&DreamGenContext::DOSReturn },
+ { kOpsx+20,kOpsx+87,kOpsy+10,kOpsy+59,&DreamBase::DOSReturn },
{ kOpsx+123,kOpsx+190,kOpsy+10,kOpsy+59,&DreamGenContext::loadOld },
- { 0,320,0,200,&DreamGenContext::blank },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
@@ -3985,7 +3935,7 @@ void DreamGenContext::talk() {
RectWithCallback talkList[] = {
{ 273,320,157,198,&DreamGenContext::getBack1 },
{ 240,290,2,44,&DreamGenContext::moreTalk },
- { 0,320,0,200,&DreamGenContext::blank },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
@@ -4040,7 +3990,7 @@ void DreamGenContext::discOps() {
{ kOpsx+59,kOpsx+114,kOpsy+30,kOpsy+76,&DreamGenContext::loadGame },
{ kOpsx+10,kOpsx+79,kOpsy+10,kOpsy+59,&DreamGenContext::saveGame },
{ kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamGenContext::getBackToOps },
- { 0,320,0,200,&DreamGenContext::blank },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
@@ -4058,76 +4008,12 @@ void DreamGenContext::discOps() {
} while (!data.byte(kGetback));
}
-void DreamGenContext::doSaveLoad() {
- data.byte(kPointerframe) = 0;
- data.word(kTextaddressx) = 70;
- data.word(kTextaddressy) = 182-8;
- data.byte(kTextlen) = 181;
- data.byte(kManisoffscreen) = 1;
- clearWork();
- createPanel2();
- underTextLine();
- getRidOfAll();
- loadSaveBox();
- showOpBox();
- showMainOps();
- workToScreenCPP();
-
- RectWithCallback opsList[] = {
- { kOpsx+59,kOpsx+114,kOpsy+30,kOpsy+76,&DreamGenContext::getBackFromOps },
- { kOpsx+10,kOpsx+77,kOpsy+10,kOpsy+59,&DreamGenContext::DOSReturn },
- { kOpsx+128,kOpsx+190,kOpsy+16,kOpsy+100,&DreamGenContext::discOps },
- { 0,320,0,200,&DreamGenContext::blank },
- { 0xFFFF,0,0,0,0 }
- };
-
- bool firstOps = true;
-
- do { // restart ops
- if (firstOps) {
- firstOps = false;
- } else {
- showOpBox();
- showMainOps();
- workToScreenM();
- }
- data.byte(kGetback) = 0;
-
- do { // wait ops
- if (data.byte(kQuitrequested)) {
- data.byte(kManisoffscreen) = 0;
- return;
- }
-
- readMouse();
- showPointer();
- vSync();
- dumpPointer();
- dumpTextLine();
- delPointer();
- checkCoords(opsList);
- } while (!data.byte(kGetback));
- } while (data.byte(kGetback) == 2);
-
- data.word(kTextaddressx) = 13;
- data.word(kTextaddressy) = 182;
- data.byte(kTextlen) = 240;
- if (data.byte(kGetback) != 4) {
- getRidOfTemp();
- restoreAll();
- redrawMainScrn();
- workToScreenM();
- data.byte(kCommandtype) = 200;
- }
- data.byte(kManisoffscreen) = 0;
-}
-
void DreamGenContext::hangOnPQ() {
data.byte(kGetback) = 0;
RectWithCallback quitList[] = {
{ 273,320,157,198,&DreamGenContext::getBack1 },
- { 0,320,0,200,&DreamGenContext::blank },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};
@@ -4276,7 +4162,7 @@ void DreamGenContext::cantDrop() {
workToScreenM();
}
-void DreamGenContext::getBack1() {
+void DreamBase::getBack1() {
if (data.byte(kPickup) != 0) {
blank();
return;
@@ -4383,7 +4269,7 @@ void DreamGenContext::autoAppear() {
// In alley
al = 5;
resetLocation();
- DreamBase::setLocation(10);
+ setLocation(10);
data.byte(kDestpos) = 10;
return;
}
@@ -4414,7 +4300,7 @@ void DreamGenContext::autoAppear() {
data.byte(kNewsitem) = 3;
al = 6;
resetLocation();
- DreamBase::setLocation(11);
+ setLocation(11);
data.byte(kDestpos) = 11;
} else {
if (data.byte(kReallocation) == 2 && data.byte(kRockstardead) != 0)
@@ -4423,7 +4309,7 @@ void DreamGenContext::autoAppear() {
}
}
-void DreamGenContext::quitKey() {
+void DreamBase::quitKey() {
if (data.byte(kCommandtype) != 222) {
data.byte(kCommandtype) = 222;
commandOnly(4);
@@ -4557,38 +4443,6 @@ void DreamGenContext::entryAnims() {
}
}
-void DreamGenContext::selectSlot() {
- if (data.byte(kCommandtype) != 244) {
- data.byte(kCommandtype) = 244;
- commandOnly(45);
- }
-
- if (data.word(kMousebutton) != 1 || data.word(kMousebutton) == data.word(kOldbutton))
- return; // noselslot
- if (data.byte(kLoadingorsave) == 3)
- data.byte(kLoadingorsave)--;
-
- oldToNames();
- int y = data.word(kMousey) - (kOpsy + 4);
- if (y < 11)
- data.byte(kCurrentslot) = 0;
- else
- data.byte(kCurrentslot) = y / 11;
-
- delPointer();
- showOpBox();
- showSlots();
- showNames();
- if (data.byte(kLoadingorsave) == 1)
- showLoadOps();
- else
- showSaveOps();
- readMouse();
- showPointer();
- workToScreen();
- delPointer();
-}
-
void DreamGenContext::updateSymbolTop() {
if (!data.byte(kSymboltopdir))
return; // topfinished
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index c028c6851b..0e407415e8 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -72,8 +72,6 @@
void getUnderTimed();
void putUnderTimed();
void dumpTextLine();
- void oldToNames();
- void namesToOld();
void startLoading(const Room &room);
void showFrame();
void showFrame(const Frame *frameData, uint16 x, uint16 y, uint16 frameNumber, uint8 effectsFlag, uint8 *width, uint8 *height) {
@@ -160,14 +158,12 @@
DynObject *getExAd(uint8 index) {
return DreamBase::getExAd(index);
}
- DynObject *getEitherAdCPP();
void *getAnyAd(uint8 *value1, uint8 *value2) {
return DreamBase::getAnyAd(value1, value2);
}
SetObject *getSetAd(uint8 index) {
return DreamBase::getSetAd(index);
}
- void *getAnyAdDir(uint8 index, uint8 flag);
void setAllChanges();
void doChange(uint8 index, uint8 value, uint8 type);
void deleteTaken();
@@ -181,13 +177,12 @@
bool finishedWalkingCPP();
void finishedWalking();
void checkOne();
- void checkOne(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY);
- void getFlagUnderP();
- void getFlagUnderP(uint8 *flag, uint8 *flagEx);
+ void checkOne(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY) {
+ DreamBase::checkOne(x, y, flag, flagEx, type, flagX, flagY);
+ }
void walkAndExamine();
void obName();
void obName(uint8 command, uint8 commandType);
- void animPointer();
void checkCoords(const RectWithCallback *rectWithCallbacks);
void addToPeopleList();
void addToPeopleList(ReelRoutine *routine);
@@ -201,15 +196,16 @@
void checkIfPathIsOn();
bool checkIfPathIsOn(uint8 index);
void isItWorn();
- bool isItWorn(const DynObject *object);
+ bool isItWorn(const DynObject *object) {
+ return DreamBase::isItWorn(object);
+ }
void wornError();
void makeWorn();
void makeWorn(DynObject *object);
void obToInv();
- void obToInv(uint8 index, uint8 flag, uint16 x, uint16 y);
- void findAllRyan();
- void findAllRyan(uint8 *inv);
- void fillRyan();
+ void obToInv(uint8 index, uint8 flag, uint16 x, uint16 y) {
+ DreamBase::obToInv(index, flag, x, y);
+ }
void useRoutine();
void hangOn();
void hangOn(uint16 frameCount) {
@@ -218,7 +214,9 @@
void hangOnW();
void hangOnW(uint16 frameCount);
void hangOnP();
- void hangOnP(uint16 count);
+ void hangOnP(uint16 count) {
+ DreamBase::hangOnP(count);
+ }
uint8 findNextColon(const uint8 **string) {
return DreamBase::findNextColon(string);
}
@@ -274,15 +272,12 @@
void playChannel1(uint8 index) {
DreamBase::playChannel1(index);
}
- void showMainOps();
- void showDiscOps();
void findRoomInLoc();
void reelsOnScreen();
void reconstruct();
void look();
void autoLook();
void doLook();
- void getBackFromOb();
void getRidOfAll();
void getRidOfTemp();
void getRidOfTempText();
@@ -351,28 +346,14 @@
void wearWatch();
void wearShades();
void checkFolderCoords();
- void loadFolder();
- void showFolder();
- void showLeftPage();
- void showRightPage();
void nextFolder();
void lastFolder();
- void folderHints();
- void folderExit();
- void getLocation();
- uint8 getLocation(uint8 index) {
- return DreamBase::getLocation(index);
- }
void setLocation();
void setLocation(uint8 index) {
DreamBase::setLocation(index);
}
- void loadTempText();
- void loadTempText(const char *fileName);
- void loadTravelText();
void drawFloor();
void allocateBuffers();
- void workToScreenM();
bool checkSpeed(ReelRoutine &routine);
void checkSpeed();
void sparkyDrip(ReelRoutine &routine);
@@ -422,7 +403,6 @@
void loadSaveBox();
uint8 nextSymbol(uint8 symbol);
void showSymbol();
- void examIcon();
void enterCode(uint8 digit0, uint8 digit1, uint8 digit2, uint8 digit3);
unsigned int scanForNames();
void doLoad(int slot);
@@ -446,13 +426,7 @@
void clearReels();
void getRidOfReels();
void liftNoise(uint8 index);
- void setTopLeft();
- void setTopRight();
- void setBotLeft();
- void setBotRight();
void newGame();
- void getBackFromOps();
- void getBackToOps();
void pickupOb(uint8 command, uint8 pos);
void initialInv();
void walkIntoRoom();
@@ -469,7 +443,6 @@
void openEden();
void openSarters();
void openLouis();
- void DOSReturn();
void useLadder();
void useLadderB();
void useCart();
@@ -490,7 +463,6 @@
void hotelControl();
void obsThatDoThings();
void makeMainScreen();
- void openInv();
void delEverything();
void clearPalette();
void errorMessage1();
@@ -514,7 +486,6 @@
}
void getTime();
void set16ColPalette();
- void examineInventory();
void showSaveOps();
void showLoadOps();
void watchReel();
@@ -526,9 +497,6 @@
void afterNewRoom();
void madmanRun();
void showDecisions();
- void underTextLine();
- void getUnderZoom();
- void putUnderZoom();
void decide();
void talk();
void discOps();
@@ -542,7 +510,6 @@
void checkInput();
void dropError();
void cantDrop();
- void getBack1();
void newPlace();
void showPuzText(uint16 command, uint16 count);
void showPuzText();
@@ -550,7 +517,6 @@
void rollEndCredits2();
void useButtonA();
void autoAppear();
- void quitKey();
void setupTimedUse();
void entryAnims();
void triggerMessage(uint16 index);