From 93a552c26d2323321356ddb9cdd3400769100617 Mon Sep 17 00:00:00 2001 From: lukaslw Date: Wed, 30 Jul 2014 19:54:39 +0200 Subject: PRINCE: Skull mini-game fix --- engines/prince/graphics.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'engines/prince/graphics.cpp') diff --git a/engines/prince/graphics.cpp b/engines/prince/graphics.cpp index 9b8c874642..195c61b5f0 100644 --- a/engines/prince/graphics.cpp +++ b/engines/prince/graphics.cpp @@ -230,6 +230,29 @@ void GraphicsMan::drawAsShadowDrawNode(Graphics::Surface *screen, DrawNode *draw } } +void GraphicsMan::drawBackSpriteDrawNode(Graphics::Surface *screen, DrawNode *drawNode) { + byte *src1 = (byte *)drawNode->s->getBasePtr(0, 0); + byte *dst1 = (byte *)screen->getBasePtr(drawNode->posX, drawNode->posY); + + for (int y = 0; y < drawNode->s->h; y++) { + byte *src2 = src1; + byte *dst2 = dst1; + for (int x = 0; x < drawNode->s->w; x++, src2++, dst2++) { + if (*src2 != 255) { + if (x + drawNode->posX < screen->w && x + drawNode->posX >= 0) { + if (y + drawNode->posY < screen->h && y + drawNode->posY >= 0) { + if (*dst2 == 255) { + *dst2 = *src2; + } + } + } + } + } + src1 += drawNode->s->pitch; + dst1 += screen->pitch; + } +} + void GraphicsMan::drawPixel(Graphics::Surface *screen, int32 posX, int32 posY) { byte *dst = (byte *)screen->getBasePtr(posX, posY); *dst = 255; -- cgit v1.2.3