aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Kagerer2009-10-10 18:45:33 +0000
committerFlorian Kagerer2009-10-10 18:45:33 +0000
commit7c065c84cb3fce9c86f93956cd0bfdda24bd6388 (patch)
tree822c1ca54f1a59aede193eb5acf4c3ad4f1fbb5b
parent7f2259d2801285eac9d56e01231c250d889069f7 (diff)
downloadscummvm-rg350-7c065c84cb3fce9c86f93956cd0bfdda24bd6388.tar.gz
scummvm-rg350-7c065c84cb3fce9c86f93956cd0bfdda24bd6388.tar.bz2
scummvm-rg350-7c065c84cb3fce9c86f93956cd0bfdda24bd6388.zip
LOL/PC-98: implemented drawing code for teleporters
svn-id: r44883
-rw-r--r--engines/kyra/screen.cpp10
-rw-r--r--engines/kyra/screen.h1
-rw-r--r--engines/kyra/sprites_lol.cpp2
3 files changed, 11 insertions, 2 deletions
diff --git a/engines/kyra/screen.cpp b/engines/kyra/screen.cpp
index 69ebcbb649..1e568c2236 100644
--- a/engines/kyra/screen.cpp
+++ b/engines/kyra/screen.cpp
@@ -1395,7 +1395,8 @@ void Screen::drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int
&Screen::drawShapePlotType13, // used by Kyra 1
&Screen::drawShapePlotType14, // used by Kyra 1 (invisibility)
&Screen::drawShapePlotType11_15, // used by Kyra 1 (invisibility)
- 0, 0, 0, 0,
+ &Screen::drawShapePlotType16, // used by LoL PC-98/16 Colors (teleporters),
+ 0, 0, 0,
&Screen::drawShapePlotType20, // used by LoL (heal spell effect)
&Screen::drawShapePlotType21, // used by LoL (white tower spirits)
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1969,6 +1970,13 @@ void Screen::drawShapePlotType14(uint8 *dst, uint8 cmd) {
*dst = cmd;
}
+void Screen::drawShapePlotType16(uint8 *dst, uint8 cmd) {
+ uint8 tOffs = _dsTable3[cmd];
+ if (!(tOffs & 0x80))
+ cmd = _dsTable4[tOffs << 8 | *dst];
+ *dst = cmd;
+}
+
void Screen::drawShapePlotType20(uint8 *dst, uint8 cmd) {
cmd = _dsTable2[cmd];
uint8 tOffs = _dsTable3[cmd];
diff --git a/engines/kyra/screen.h b/engines/kyra/screen.h
index 01bd9d5da0..99459214ca 100644
--- a/engines/kyra/screen.h
+++ b/engines/kyra/screen.h
@@ -568,6 +568,7 @@ protected:
void drawShapePlotType12(uint8 *dst, uint8 cmd);
void drawShapePlotType13(uint8 *dst, uint8 cmd);
void drawShapePlotType14(uint8 *dst, uint8 cmd);
+ void drawShapePlotType16(uint8 *dst, uint8 cmd);
void drawShapePlotType20(uint8 *dst, uint8 cmd);
void drawShapePlotType21(uint8 *dst, uint8 cmd);
void drawShapePlotType33(uint8 *dst, uint8 cmd);
diff --git a/engines/kyra/sprites_lol.cpp b/engines/kyra/sprites_lol.cpp
index 6056c36859..4fb7622a71 100644
--- a/engines/kyra/sprites_lol.cpp
+++ b/engines/kyra/sprites_lol.cpp
@@ -992,7 +992,7 @@ uint8 *LoLEngine::drawItemOrMonster(uint8 *shape, uint8 *table, int x, int y, in
ovl2 = table;
table = 0;
} else {
- ovl2 = _screen->getLevelOverlay(4);
+ ovl2 = _screen->getLevelOverlay(_flags.use16ColorMode ? 5 : 4);
}
int r = calcDrawingLayerParameters(x, y, _shpDmX, _shpDmY, _dmScaleW, _dmScaleH, shape, vflip);