diff options
author | Florian Kagerer | 2009-10-10 18:45:33 +0000 |
---|---|---|
committer | Florian Kagerer | 2009-10-10 18:45:33 +0000 |
commit | 7c065c84cb3fce9c86f93956cd0bfdda24bd6388 (patch) | |
tree | 822c1ca54f1a59aede193eb5acf4c3ad4f1fbb5b | |
parent | 7f2259d2801285eac9d56e01231c250d889069f7 (diff) | |
download | scummvm-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.cpp | 10 | ||||
-rw-r--r-- | engines/kyra/screen.h | 1 | ||||
-rw-r--r-- | engines/kyra/sprites_lol.cpp | 2 |
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); |