aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/sprite.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/dreamweb/sprite.cpp')
-rw-r--r--engines/dreamweb/sprite.cpp46
1 files changed, 32 insertions, 14 deletions
diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp
index 2f7bfa76cc..17d4ddbbed 100644
--- a/engines/dreamweb/sprite.cpp
+++ b/engines/dreamweb/sprite.cpp
@@ -66,8 +66,7 @@ void DreamGenContext::printasprite(const Sprite *sprite) {
c = 8;
else
c = 0;
- uint8 width, height;
- showframe((const Frame *)segRef(sprite->frameData()).ptr(0, 0), x, y, sprite->b15, c, &width, &height);
+ showframe((const Frame *)segRef(sprite->frameData()).ptr(0, 0), x, y, sprite->b15, c);
}
void DreamGenContext::clearsprites() {
@@ -268,7 +267,7 @@ void DreamGenContext::backobject() {
}
void DreamGenContext::backobject(Sprite *sprite) {
- ObjData *objData = (ObjData *)segRef(data.word(kSetdat)).ptr(sprite->objData(), 0);
+ SetObject *objData = (SetObject *)segRef(data.word(kSetdat)).ptr(sprite->objData(), 0);
if (sprite->delay != 0) {
--sprite->delay;
@@ -292,7 +291,7 @@ void DreamGenContext::backobject(Sprite *sprite) {
steady(sprite, objData);
}
-void DreamGenContext::constant(Sprite *sprite, ObjData *objData) {
+void DreamGenContext::constant(Sprite *sprite, SetObject *objData) {
++sprite->frame;
if (objData->b18[sprite->frame] == 255) {
sprite->frame = 0;
@@ -302,13 +301,13 @@ void DreamGenContext::constant(Sprite *sprite, ObjData *objData) {
sprite->b15 = b18;
}
-void DreamGenContext::random(Sprite *sprite, ObjData *objData) {
+void DreamGenContext::random(Sprite *sprite, SetObject *objData) {
randomnum1();
uint16 r = ax;
sprite->b15 = objData->b18[r&7];
}
-void DreamGenContext::doorway(Sprite *sprite, ObjData *objData) {
+void DreamGenContext::doorway(Sprite *sprite, SetObject *objData) {
data.byte(kDoorcheck1) = -24;
data.byte(kDoorcheck2) = 10;
data.byte(kDoorcheck3) = -30;
@@ -316,7 +315,7 @@ void DreamGenContext::doorway(Sprite *sprite, ObjData *objData) {
dodoor(sprite, objData);
}
-void DreamGenContext::widedoor(Sprite *sprite, ObjData *objData) {
+void DreamGenContext::widedoor(Sprite *sprite, SetObject *objData) {
data.byte(kDoorcheck1) = -24;
data.byte(kDoorcheck2) = 24;
data.byte(kDoorcheck3) = -30;
@@ -326,11 +325,11 @@ void DreamGenContext::widedoor(Sprite *sprite, ObjData *objData) {
void DreamGenContext::dodoor() {
Sprite *sprite = (Sprite *)es.ptr(bx, sizeof(Sprite));
- ObjData *objData = (ObjData *)ds.ptr(di, 0);
+ SetObject *objData = (SetObject *)ds.ptr(di, 0);
dodoor(sprite, objData);
}
-void DreamGenContext::dodoor(Sprite *sprite, ObjData *objData) {
+void DreamGenContext::dodoor(Sprite *sprite, SetObject *objData) {
uint8 ryanx = data.byte(kRyanx);
uint8 ryany = data.byte(kRyany);
if (ryanx < sprite->x) {
@@ -381,13 +380,13 @@ shutdoor:
data.byte(kThroughdoor) = 0;
}
-void DreamGenContext::steady(Sprite *sprite, ObjData *objData) {
+void DreamGenContext::steady(Sprite *sprite, SetObject *objData) {
uint8 b18 = objData->b18[0];
objData->b17 = b18;
sprite->b15 = b18;
}
-void DreamGenContext::lockeddoorway(Sprite *sprite, ObjData *objData) {
+void DreamGenContext::lockeddoorway(Sprite *sprite, SetObject *objData) {
if (data.byte(kRyanx) < sprite->x) {
if (sprite->x - data.byte(kRyanx) > 24)
goto shutdoor2;
@@ -451,7 +450,7 @@ shutdoor2:
}
}
-void DreamGenContext::liftsprite(Sprite *sprite, ObjData *objData) {
+void DreamGenContext::liftsprite(Sprite *sprite, SetObject *objData) {
uint8 liftFlag = data.byte(kLiftflag);
if (liftFlag == 0) { //liftclosed
turnpathoffCPP(data.byte(kLiftpath));
@@ -546,8 +545,7 @@ void DreamGenContext::showreelframe(Reel *reel) {
data.word(kCurrentframe) = reel->frame();
Frame *source = findsourceCPP();
uint16 frame = data.word(kCurrentframe) - data.word(kTakeoff);
- uint8 width, height;
- showframe(source, x, y, frame, 8, &width, &height);
+ showframe(source, x, y, frame, 8);
}
void DreamGenContext::showgamereel() {
@@ -871,5 +869,25 @@ void DreamGenContext::movemap(uint8 param) {
data.byte(kNowinnewroom) = 1;
}
+void DreamGenContext::checkone() {
+ uint8 flag, flagEx, type, flagX, flagY;
+ checkone(cl, ch, &flag, &flagEx, &type, &flagX, &flagY);
+
+ cl = flag;
+ ch = flagEx;
+ dl = flagX;
+ dh = flagY;
+ al = type;
+}
+
+void DreamGenContext::checkone(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY) {
+ *flagX = x / 16;
+ *flagY = y / 16;
+ const uint8 *tileData = segRef(data.word(kBuffers)).ptr(kMapflags + (*flagY * 11 + *flagX) * 3, 3);
+ *flag = tileData[0];
+ *flagEx = tileData[1];
+ *type = tileData[2];
+}
+
} /*namespace dreamgen */