diff options
-rw-r--r-- | kyra/kyra.cpp | 7 | ||||
-rw-r--r-- | kyra/screen.cpp | 3 |
2 files changed, 9 insertions, 1 deletions
diff --git a/kyra/kyra.cpp b/kyra/kyra.cpp index 79b9901c08..3f3d616a95 100644 --- a/kyra/kyra.cpp +++ b/kyra/kyra.cpp @@ -433,7 +433,12 @@ uint8 *KyraEngine::seq_setPanPages(int pageNum, int shape) { const uint8 *data = _screen->getPagePtr(pageNum); uint16 numShapes = READ_LE_UINT16(data); if (shape < numShapes) { - uint16 offs = READ_LE_UINT16(data + 2 + shape * 2); + uint32 offs = 0; + if (_game == KYRA1CD) { + offs = READ_LE_UINT32(data + 2 + shape * 4); + } else { + offs = READ_LE_UINT16(data + 2 + shape * 2); + } if (offs != 0) { data += offs; uint16 sz = READ_LE_UINT16(data + 6); diff --git a/kyra/screen.cpp b/kyra/screen.cpp index c23fbf5885..229009986f 100644 --- a/kyra/screen.cpp +++ b/kyra/screen.cpp @@ -323,6 +323,9 @@ void Screen::drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int DrawShapePlotPixelCallback plotPixel = _drawShapePlotPixelTable[ppc]; const uint8 *src = shapeData; + if (_vm->game() == KYRA1CD) { + src += 2; + } uint16 shapeFlags = READ_LE_UINT16(src); src += 2; int shapeHeight = *src++; |