diff options
Diffstat (limited to 'engines/dreamweb/sprite.cpp')
-rw-r--r-- | engines/dreamweb/sprite.cpp | 46 |
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 */ |