aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb
diff options
context:
space:
mode:
authorBertrand Augereau2011-10-09 18:04:08 +0200
committerBertrand Augereau2011-10-09 18:04:08 +0200
commit250fac9895afff4f07bd727bbdc79764d691fece (patch)
tree5a5b137ea92b523da9b8e1daa1600b23af2e3624 /engines/dreamweb
parent14569bd62a7c09394269ff37203aee88a10bc3a1 (diff)
downloadscummvm-rg350-250fac9895afff4f07bd727bbdc79764d691fece.tar.gz
scummvm-rg350-250fac9895afff4f07bd727bbdc79764d691fece.tar.bz2
scummvm-rg350-250fac9895afff4f07bd727bbdc79764d691fece.zip
DREAMWEB: object.cpp to replicate object.asm
Diffstat (limited to 'engines/dreamweb')
-rw-r--r--engines/dreamweb/module.mk1
-rw-r--r--engines/dreamweb/object.cpp101
-rw-r--r--engines/dreamweb/stubs.cpp73
3 files changed, 102 insertions, 73 deletions
diff --git a/engines/dreamweb/module.mk b/engines/dreamweb/module.mk
index 8cacbdc91e..21429dc960 100644
--- a/engines/dreamweb/module.mk
+++ b/engines/dreamweb/module.mk
@@ -6,6 +6,7 @@ MODULE_OBJS := \
detection.o \
dreamweb.o \
dreamgen.o \
+ object.o \
pathfind.o \
print.o \
saveload.o \
diff --git a/engines/dreamweb/object.cpp b/engines/dreamweb/object.cpp
new file mode 100644
index 0000000000..99dfa4d6e7
--- /dev/null
+++ b/engines/dreamweb/object.cpp
@@ -0,0 +1,101 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "dreamweb/dreamweb.h"
+
+namespace DreamGen {
+
+void DreamGenContext::fillryan() {
+ uint8 *inv = segRef(data.word(kBuffers)).ptr(kRyaninvlist, 60);
+ findallryan(inv);
+ inv += data.byte(kRyanpage) * 2 * 10;
+ for (size_t i = 0; i < 2; ++i) {
+ for (size_t j = 0; j < 5; ++j) {
+ uint8 objIndex = *inv++;
+ uint8 objType = *inv++;
+ obtoinv(objIndex, objType, kInventx + j * kItempicsize, kInventy + i * kItempicsize);
+ }
+ }
+ showryanpage();
+}
+
+void DreamGenContext::isitworn() {
+ flags._z = isitworn((const DynObject *)es.ptr(bx, sizeof(DynObject)));
+}
+
+bool DreamGenContext::isitworn(const DynObject *object) {
+ return (object->id[0] == 'W'-'A') && (object->id[1] == 'E'-'A');
+}
+
+void DreamGenContext::makeworn() {
+ makeworn((DynObject *)es.ptr(bx, sizeof(DynObject)));
+}
+
+void DreamGenContext::makeworn(DynObject *object) {
+ object->id[0] = 'W'-'A';
+ object->id[1] = 'E'-'A';
+}
+
+void DreamGenContext::obtoinv() {
+ obtoinv(al, ah, di, bx);
+}
+
+void DreamGenContext::obtoinv(uint8 index, uint8 flag, uint16 x, uint16 y) {
+ Frame *icons1 = (Frame *)segRef(data.word(kIcons1)).ptr(0, 0);
+ showframe(icons1, x - 2, y - 1, 10, 0);
+ if (index == 0xff)
+ return;
+
+ Frame *extras = (Frame *)segRef(data.word(kExtras)).ptr(0, 0);
+ Frame *frees = (Frame *)segRef(data.word(kFreeframes)).ptr(0, 0);
+ Frame *frames = (flag == 4) ? extras : frees;
+ showframe(frames, x + 18, y + 19, 3 * index + 1, 128);
+ const DynObject *object = (const DynObject *)getanyaddir(index, flag);
+ bool worn = isitworn(object);
+ if (worn)
+ showframe(icons1, x - 3, y - 2, 7, 0);
+}
+
+void DreamGenContext::obpicture() {
+ if (data.byte(kObjecttype) == 1)
+ return;
+ Frame *frames;
+ if (data.byte(kObjecttype) == 4)
+ frames = (Frame *)segRef(data.word(kExtras)).ptr(0, 0);
+ else
+ frames = (Frame *)segRef(data.word(kFreeframes)).ptr(0, 0);
+ uint8 frame = 3 * data.byte(kCommand) + 1;
+ showframe(frames, 160, 68, frame, 0x80);
+}
+
+void DreamGenContext::obicons() {
+ uint8 value1, value2;
+ getanyad(&value1, &value2);
+ if (value1 == 0xff) {
+ showframe((Frame *)segRef(data.word(kIcons2)).ptr(0, 0), 260, 1, 1, 0);
+ } else {
+ showframe((Frame *)segRef(data.word(kIcons2)).ptr(0, 0), 210, 1, 4, 0);
+ }
+}
+
+} /*namespace dreamgen */
+
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index d81c7cd55c..e3295b3cfe 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -1696,28 +1696,6 @@ void DreamGenContext::printmessage(uint16 x, uint16 y, uint8 index, uint8 maxWid
printdirect(&string, x, &y, maxWidth, centered);
}
-void DreamGenContext::obpicture() {
- if (data.byte(kObjecttype) == 1)
- return;
- Frame *frames;
- if (data.byte(kObjecttype) == 4)
- frames = (Frame *)segRef(data.word(kExtras)).ptr(0, 0);
- else
- frames = (Frame *)segRef(data.word(kFreeframes)).ptr(0, 0);
- uint8 frame = 3 * data.byte(kCommand) + 1;
- showframe(frames, 160, 68, frame, 0x80);
-}
-
-void DreamGenContext::obicons() {
- uint8 value1, value2;
- getanyad(&value1, &value2);
- if (value1 == 0xff) {
- showframe((Frame *)segRef(data.word(kIcons2)).ptr(0, 0), 260, 1, 1, 0);
- } else {
- showframe((Frame *)segRef(data.word(kIcons2)).ptr(0, 0), 210, 1, 4, 0);
- }
-}
-
void DreamGenContext::compare() {
char id[4] = { cl, ch, dl, dh };
flags._z = compare(al, ah, id);
@@ -1775,43 +1753,6 @@ bool DreamGenContext::checkifset(uint8 x, uint8 y) {
return false;
}
-void DreamGenContext::isitworn() {
- flags._z = isitworn((const DynObject *)es.ptr(bx, sizeof(DynObject)));
-}
-
-bool DreamGenContext::isitworn(const DynObject *object) {
- return (object->id[0] == 'W'-'A') && (object->id[1] == 'E'-'A');
-}
-
-void DreamGenContext::makeworn() {
- makeworn((DynObject *)es.ptr(bx, sizeof(DynObject)));
-}
-
-void DreamGenContext::makeworn(DynObject *object) {
- object->id[0] = 'W'-'A';
- object->id[1] = 'E'-'A';
-}
-
-void DreamGenContext::obtoinv() {
- obtoinv(al, ah, di, bx);
-}
-
-void DreamGenContext::obtoinv(uint8 index, uint8 flag, uint16 x, uint16 y) {
- Frame *icons1 = (Frame *)segRef(data.word(kIcons1)).ptr(0, 0);
- showframe(icons1, x - 2, y - 1, 10, 0);
- if (index == 0xff)
- return;
-
- Frame *extras = (Frame *)segRef(data.word(kExtras)).ptr(0, 0);
- Frame *frees = (Frame *)segRef(data.word(kFreeframes)).ptr(0, 0);
- Frame *frames = (flag == 4) ? extras : frees;
- showframe(frames, x + 18, y + 19, 3 * index + 1, 128);
- const DynObject *object = (const DynObject *)getanyaddir(index, flag);
- bool worn = isitworn(object);
- if (worn)
- showframe(icons1, x - 3, y - 2, 7, 0);
-}
-
void DreamGenContext::showryanpage() {
Frame *icons1 = (Frame *)segRef(data.word(kIcons1)).ptr(0, 0);
showframe(icons1, kInventx + 167, kInventy - 12, 12, 0);
@@ -1837,20 +1778,6 @@ void DreamGenContext::findallryan(uint8 *inv) {
}
}
-void DreamGenContext::fillryan() {
- uint8 *inv = segRef(data.word(kBuffers)).ptr(kRyaninvlist, 60);
- findallryan(inv);
- inv += data.byte(kRyanpage) * 2 * 10;
- for (size_t i = 0; i < 2; ++i) {
- for (size_t j = 0; j < 5; ++j) {
- uint8 objIndex = *inv++;
- uint8 objType = *inv++;
- obtoinv(objIndex, objType, kInventx + j * kItempicsize, kInventy + i * kItempicsize);
- }
- }
- showryanpage();
-}
-
void DreamGenContext::hangon() {
hangon(cx);
}