diff options
-rw-r--r-- | engines/dm/gfx.cpp | 253 | ||||
-rw-r--r-- | engines/dm/gfx.h | 2 |
2 files changed, 144 insertions, 111 deletions
diff --git a/engines/dm/gfx.cpp b/engines/dm/gfx.cpp index a8c0c95c6e..192d2392cf 100644 --- a/engines/dm/gfx.cpp +++ b/engines/dm/gfx.cpp @@ -37,6 +37,7 @@ #include "timeline.h" #include "champion.h" #include "eventman.h" +#include "lzw.h" namespace DM { DisplayMan::DisplayMan(DMEngine *dmEngine) : _vm(dmEngine) { @@ -44,6 +45,8 @@ DisplayMan::DisplayMan(DMEngine *dmEngine) : _vm(dmEngine) { _bitmaps = nullptr; _grapItemCount = 0; _packedItemPos = nullptr; + _bitmapCompressedByteCount = nullptr; + _bitmapDecompressedByteCount = nullptr; _packedBitmaps = nullptr; _bitmaps = nullptr; _g74_tmpBitmap = nullptr; @@ -393,16 +396,16 @@ void DisplayMan::initConstants() { _projectileAspect[i] = projectileAspect[i]; _doorFrameD1C = new DoorFrames( // @ G0186_s_Graphic558_Frames_Door_D1C - Frame(64, 159, 17, 102, 48, 88, 0, 0), /* Closed Or Destroyed */ - Frame(64, 159, 17, 38, 48, 88, 0, 66), /* Vertical Closed one fourth */ - Frame(64, 159, 17, 60, 48, 88, 0, 44), /* Vertical Closed half */ - Frame(64, 159, 17, 82, 48, 88, 0, 22), /* Vertical Closed three fourth */ - Frame(64, 75, 17, 102, 48, 88, 36, 0), /* Left Horizontal Closed one fourth */ - Frame(64, 87, 17, 102, 48, 88, 24, 0), /* Left Horizontal Closed half */ - Frame(64, 99, 17, 102, 48, 88, 12, 0), /* Left Horizontal Closed three fourth */ - Frame(148, 159, 17, 102, 48, 88, 48, 0), /* Right Horizontal Closed one fourth */ - Frame(136, 159, 17, 102, 48, 88, 48, 0), /* Right Horizontal Closed half */ - Frame(124, 159, 17, 102, 48, 88, 48, 0) /* Right Horizontal Closed three fourth */ + Frame(64, 159, 17, 102, 48, 88, 0, 0), /* Closed Or Destroyed */ + Frame(64, 159, 17, 38, 48, 88, 0, 66), /* Vertical Closed one fourth */ + Frame(64, 159, 17, 60, 48, 88, 0, 44), /* Vertical Closed half */ + Frame(64, 159, 17, 82, 48, 88, 0, 22), /* Vertical Closed three fourth */ + Frame(64, 75, 17, 102, 48, 88, 36, 0), /* Left Horizontal Closed one fourth */ + Frame(64, 87, 17, 102, 48, 88, 24, 0), /* Left Horizontal Closed half */ + Frame(64, 99, 17, 102, 48, 88, 12, 0), /* Left Horizontal Closed three fourth */ + Frame(148, 159, 17, 102, 48, 88, 48, 0), /* Right Horizontal Closed one fourth */ + Frame(136, 159, 17, 102, 48, 88, 48, 0), /* Right Horizontal Closed half */ + Frame(124, 159, 17, 102, 48, 88, 48, 0) /* Right Horizontal Closed three fourth */ ); _boxThievesEyeViewPortVisibleArea = Box(64, 159, 19, 113); // @ G0106_s_Graphic558_Box_ThievesEye_ViewportVisibleArea @@ -417,6 +420,8 @@ DisplayMan::~DisplayMan() { delete[] _bitmaps[0]; delete[] _bitmaps; } + delete[] _bitmapCompressedByteCount; + delete[] _bitmapDecompressedByteCount; delete[] _g639_derivedBitmapByteCount; if (_g638_derivedBitmaps) { @@ -464,26 +469,6 @@ void DisplayMan::setUpScreens(uint16 width, uint16 height) { _g74_tmpBitmap = new byte[_screenWidth * _screenHeight]; } -void DisplayMan::f479_loadGraphics() { - Common::File f; - f.open("graphics.dat"); - _grapItemCount = f.readUint16BE(); - delete[] _packedItemPos; - _packedItemPos = new uint32[_grapItemCount + 1]; - _packedItemPos[0] = 0; - for (uint16 i = 1; i < _grapItemCount + 1; ++i) - _packedItemPos[i] = f.readUint16BE() + _packedItemPos[i - 1]; - - delete[] _packedBitmaps; - _packedBitmaps = new uint8[_packedItemPos[_grapItemCount]]; - - f.seek(2 + _grapItemCount * 4); - for (uint32 i = 0; i < _packedItemPos[_grapItemCount]; ++i) - _packedBitmaps[i] = f.readByte(); - - f.close(); - unpackGraphics(); -} void DisplayMan::f460_initializeGraphicData() { _g85_bitmapCeiling = new byte[224 * 29]; @@ -625,6 +610,49 @@ void DisplayMan::f460_initializeGraphicData() { } } +void DisplayMan::f479_loadGraphics() { + Common::File f; + f.open("graphics.dat"); + _grapItemCount = f.readUint16BE(); + + delete[] _bitmapCompressedByteCount; + _bitmapCompressedByteCount = new uint32[_grapItemCount]; + for (uint16 i = 0; i < _grapItemCount; ++i) + _bitmapCompressedByteCount[i] = f.readUint16BE(); + + delete[] _bitmapDecompressedByteCount; + _bitmapDecompressedByteCount = new uint32[_grapItemCount]; + for (uint16 i = 0; i < _grapItemCount; ++i) + _bitmapDecompressedByteCount[i] = f.readUint16BE(); + + delete[] _packedItemPos; + _packedItemPos = new uint32[_grapItemCount + 1]; + _packedItemPos[0] = 0; + for (uint16 i = 1; i < _grapItemCount + 1; ++i) { + _packedItemPos[i] = _packedItemPos[i - 1] + _bitmapDecompressedByteCount[i - 1]; + } + + delete[] _packedBitmaps; + _packedBitmaps = new uint8[_packedItemPos[_grapItemCount]]; + + LZWdecompressor lzw; + Common::Array<byte> tmpBuffer; + f.seek(2 + _grapItemCount * 4); + for (uint32 i = 0; i < _grapItemCount; ++i) { + byte *bitmap = _packedBitmaps + _packedItemPos[i]; + f.read(bitmap, _bitmapCompressedByteCount[i]); + if (_bitmapCompressedByteCount[i] != _bitmapDecompressedByteCount[i]) { + tmpBuffer.reserve(_bitmapDecompressedByteCount[i]); + Common::MemoryReadStream stream(bitmap, _bitmapCompressedByteCount[i]); + lzw.decompress(stream, _bitmapCompressedByteCount[i], tmpBuffer.begin()); + memcpy(bitmap, tmpBuffer.begin(), _bitmapDecompressedByteCount[i]); + } + } + + f.close(); + unpackGraphics(); +} + void DisplayMan::unpackGraphics() { uint32 unpackedBitmapsSize = 0; for (uint16 i = 0; i <= 20; ++i) @@ -655,6 +683,7 @@ void DisplayMan::unpackGraphics() { void DisplayMan::loadFNT1intoBitmap(uint16 index, byte* destBitmap) { uint8 *data = _packedBitmaps + _packedItemPos[index]; + for (uint16 i = 0; i < 6; i++) { for (uint16 w = 0; w < 128; ++w) { *destBitmap++ = k0_ColorBlack; @@ -755,10 +784,12 @@ void DisplayMan::f566_viewportBlitToScreen() { void DisplayMan::f466_loadIntoBitmap(uint16 index, byte *destBitmap) { uint8 *data = _packedBitmaps + _packedItemPos[index]; + uint16 width = READ_BE_UINT16(data); uint16 height = READ_BE_UINT16(data + 2); uint16 nextByteIndex = 4; - for (uint16 k = 0; k < width * height;) { + + for (int32 k = 0; k < width * height;) { uint8 nextByte = data[nextByteIndex++]; uint8 nibble1 = (nextByte & 0xF0) >> 4; uint8 nibble2 = (nextByte & 0x0F); @@ -1178,16 +1209,16 @@ void DisplayMan::f116_drawSquareD3L(Direction dir, int16 posX, int16 posY) { static Frame frameFloorPitD3L = Frame(0, 79, 66, 73, 40, 8, 0, 0); // @ G0140_s_Graphic558_Frame_FloorPit_D3L static DoorFrames doorFrameD3L = DoorFrames( // @ G0179_s_Graphic558_Frames_Door_D3L /* { X1, X2, Y1, Y2, ByteWidth, Height, X, Y } */ - Frame(24, 71, 28, 67, 24, 41, 0, 0), /* Closed Or Destroyed */ - Frame(24, 71, 28, 38, 24, 41, 0, 30), /* Vertical Closed one fourth */ - Frame(24, 71, 28, 48, 24, 41, 0, 20), /* Vertical Closed half */ - Frame(24, 71, 28, 58, 24, 41, 0, 10), /* Vertical Closed three fourth */ - Frame(24, 29, 28, 67, 24, 41, 18, 0), /* Left Horizontal Closed one fourth */ - Frame(24, 35, 28, 67, 24, 41, 12, 0), /* Left Horizontal Closed half */ - Frame(24, 41, 28, 67, 24, 41, 6, 0), /* Left Horizontal Closed three fourth */ - Frame(66, 71, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed one fourth */ - Frame(60, 71, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed half */ - Frame(54, 71, 28, 67, 24, 41, 24, 0) /* Right Horizontal Closed three fourth */ + Frame(24, 71, 28, 67, 24, 41, 0, 0), /* Closed Or Destroyed */ + Frame(24, 71, 28, 38, 24, 41, 0, 30), /* Vertical Closed one fourth */ + Frame(24, 71, 28, 48, 24, 41, 0, 20), /* Vertical Closed half */ + Frame(24, 71, 28, 58, 24, 41, 0, 10), /* Vertical Closed three fourth */ + Frame(24, 29, 28, 67, 24, 41, 18, 0), /* Left Horizontal Closed one fourth */ + Frame(24, 35, 28, 67, 24, 41, 12, 0), /* Left Horizontal Closed half */ + Frame(24, 41, 28, 67, 24, 41, 6, 0), /* Left Horizontal Closed three fourth */ + Frame(66, 71, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed one fourth */ + Frame(60, 71, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed half */ + Frame(54, 71, 28, 67, 24, 41, 24, 0) /* Right Horizontal Closed three fourth */ ); uint16 squareAspect[5]; @@ -1247,16 +1278,16 @@ void DisplayMan::f117_drawSquareD3R(Direction dir, int16 posX, int16 posY) { static Frame frameFloorPitD3R = Frame(144, 223, 66, 73, 40, 8, 0, 0); // @ G0142_s_Graphic558_Frame_FloorPit_D3R static DoorFrames doorFrameD3R = DoorFrames( // @ G0181_s_Graphic558_Frames_Door_D3R /* { X1, X2, Y1, Y2, ByteWidth, Height, X, Y } */ - Frame(150, 197, 28, 67, 24, 41, 0, 0), /* Closed Or Destroyed */ - Frame(150, 197, 28, 38, 24, 41, 0, 30), /* Vertical Closed one fourth */ - Frame(150, 197, 28, 48, 24, 41, 0, 20), /* Vertical Closed half */ - Frame(150, 197, 28, 58, 24, 41, 0, 10), /* Vertical Closed three fourth */ - Frame(150, 153, 28, 67, 24, 41, 18, 0), /* Left Horizontal Closed one fourth */ - Frame(150, 161, 28, 67, 24, 41, 12, 0), /* Left Horizontal Closed half */ - Frame(150, 167, 28, 67, 24, 41, 6, 0), /* Left Horizontal Closed three fourth */ - Frame(192, 197, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed one fourth */ - Frame(186, 197, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed half */ - Frame(180, 197, 28, 67, 24, 41, 24, 0) /* Right Horizontal Closed three fourth */ + Frame(150, 197, 28, 67, 24, 41, 0, 0), /* Closed Or Destroyed */ + Frame(150, 197, 28, 38, 24, 41, 0, 30), /* Vertical Closed one fourth */ + Frame(150, 197, 28, 48, 24, 41, 0, 20), /* Vertical Closed half */ + Frame(150, 197, 28, 58, 24, 41, 0, 10), /* Vertical Closed three fourth */ + Frame(150, 153, 28, 67, 24, 41, 18, 0), /* Left Horizontal Closed one fourth */ + Frame(150, 161, 28, 67, 24, 41, 12, 0), /* Left Horizontal Closed half */ + Frame(150, 167, 28, 67, 24, 41, 6, 0), /* Left Horizontal Closed three fourth */ + Frame(192, 197, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed one fourth */ + Frame(186, 197, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed half */ + Frame(180, 197, 28, 67, 24, 41, 24, 0) /* Right Horizontal Closed three fourth */ ); int16 order; @@ -1322,16 +1353,16 @@ void DisplayMan::f118_drawSquareD3C(Direction dir, int16 posX, int16 posY) { static Frame frameFloorPitD3C = Frame(64, 159, 66, 73, 48, 8, 0, 0); // @ G0141_s_Graphic558_Frame_FloorPit_D3C static DoorFrames doorFrameD3C = DoorFrames( // @ G0180_s_Graphic558_Frames_Door_D3C /* { X1, X2, Y1, Y2, ByteWidth, Height, X, Y } */ - Frame(88, 135, 28, 67, 24, 41, 0, 0), /* Closed Or Destroyed */ - Frame(88, 135, 28, 38, 24, 41, 0, 30), /* Vertical Closed one fourth */ - Frame(88, 135, 28, 48, 24, 41, 0, 20), /* Vertical Closed half */ - Frame(88, 135, 28, 58, 24, 41, 0, 10), /* Vertical Closed three fourth */ - Frame(88, 93, 28, 67, 24, 41, 18, 0), /* Left Horizontal Closed one fourth */ - Frame(88, 99, 28, 67, 24, 41, 12, 0), /* Left Horizontal Closed half */ - Frame(88, 105, 28, 67, 24, 41, 6, 0), /* Left Horizontal Closed three fourth */ - Frame(130, 135, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed one fourth */ - Frame(124, 135, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed half */ - Frame(118, 135, 28, 67, 24, 41, 24, 0) /* Right Horizontal Closed three fourth */ + Frame(88, 135, 28, 67, 24, 41, 0, 0), /* Closed Or Destroyed */ + Frame(88, 135, 28, 38, 24, 41, 0, 30), /* Vertical Closed one fourth */ + Frame(88, 135, 28, 48, 24, 41, 0, 20), /* Vertical Closed half */ + Frame(88, 135, 28, 58, 24, 41, 0, 10), /* Vertical Closed three fourth */ + Frame(88, 93, 28, 67, 24, 41, 18, 0), /* Left Horizontal Closed one fourth */ + Frame(88, 99, 28, 67, 24, 41, 12, 0), /* Left Horizontal Closed half */ + Frame(88, 105, 28, 67, 24, 41, 6, 0), /* Left Horizontal Closed three fourth */ + Frame(130, 135, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed one fourth */ + Frame(124, 135, 28, 67, 24, 41, 24, 0), /* Right Horizontal Closed half */ + Frame(118, 135, 28, 67, 24, 41, 24, 0) /* Right Horizontal Closed three fourth */ ); uint16 squareAspect[5]; @@ -1392,16 +1423,16 @@ void DisplayMan::f119_drawSquareD2L(Direction dir, int16 posX, int16 posY) { static Frame FrameCeilingPitD2L = Frame(0, 79, 19, 23, 40, 5, 0, 0); // @ G0152_s_Graphic558_Frame_CeilingPit_D2L static DoorFrames doorFrameD2L = DoorFrames( // @ G0182_s_Graphic558_Frames_Door_D2L /* { X1, X2, Y1, Y2, ByteWidth, Height, X, Y } */ - Frame(0, 63, 24, 82, 32, 61, 0, 0), /* Closed Or Destroyed */ - Frame(0, 63, 24, 39, 32, 61, 0, 45), /* Vertical Closed one fourth */ - Frame(0, 63, 24, 54, 32, 61, 0, 30), /* Vertical Closed half */ - Frame(0, 63, 24, 69, 32, 61, 0, 15), /* Vertical Closed three fourth */ - Frame(0, 7, 24, 82, 32, 61, 24, 0), /* Left Horizontal Closed one fourth */ - Frame(0, 15, 24, 82, 32, 61, 16, 0), /* Left Horizontal Closed half */ - Frame(0, 23, 24, 82, 32, 61, 8, 0), /* Left Horizontal Closed three fourth */ - Frame(56, 63, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed one fourth */ - Frame(48, 63, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed half */ - Frame(40, 63, 24, 82, 32, 61, 32, 0) /* Right Horizontal Closed three fourth */ + Frame(0, 63, 24, 82, 32, 61, 0, 0), /* Closed Or Destroyed */ + Frame(0, 63, 24, 39, 32, 61, 0, 45), /* Vertical Closed one fourth */ + Frame(0, 63, 24, 54, 32, 61, 0, 30), /* Vertical Closed half */ + Frame(0, 63, 24, 69, 32, 61, 0, 15), /* Vertical Closed three fourth */ + Frame(0, 7, 24, 82, 32, 61, 24, 0), /* Left Horizontal Closed one fourth */ + Frame(0, 15, 24, 82, 32, 61, 16, 0), /* Left Horizontal Closed half */ + Frame(0, 23, 24, 82, 32, 61, 8, 0), /* Left Horizontal Closed three fourth */ + Frame(56, 63, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed one fourth */ + Frame(48, 63, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed half */ + Frame(40, 63, 24, 82, 32, 61, 32, 0) /* Right Horizontal Closed three fourth */ ); int16 order; @@ -1464,16 +1495,16 @@ void DisplayMan::f120_drawSquareD2R(Direction dir, int16 posX, int16 posY) { static Frame frameCeilingPitD2R = Frame(144, 223, 19, 23, 40, 5, 0, 0); // @ G0154_s_Graphic558_Frame_CeilingPit_D2R static DoorFrames g184_doorFrame_D2R = DoorFrames( // @ G0184_s_Graphic558_Frames_Door_D2R /* { X1, X2, Y1, Y2, ByteWidth, Height, X, Y } */ - Frame(160, 223, 24, 82, 32, 61, 0, 0), /* Closed Or Destroyed */ - Frame(160, 223, 24, 39, 32, 61, 0, 45), /* Vertical Closed one fourth */ - Frame(160, 223, 24, 54, 32, 61, 0, 30), /* Vertical Closed half */ - Frame(160, 223, 24, 69, 32, 61, 0, 15), /* Vertical Closed three fourth */ - Frame(160, 167, 24, 82, 32, 61, 24, 0), /* Left Horizontal Closed one fourth */ - Frame(160, 175, 24, 82, 32, 61, 16, 0), /* Left Horizontal Closed half */ - Frame(160, 183, 24, 82, 32, 61, 8, 0), /* Left Horizontal Closed three fourth */ - Frame(216, 223, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed one fourth */ - Frame(208, 223, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed half */ - Frame(200, 223, 24, 82, 32, 61, 32, 0) /* Right Horizontal Closed three fourth */ + Frame(160, 223, 24, 82, 32, 61, 0, 0), /* Closed Or Destroyed */ + Frame(160, 223, 24, 39, 32, 61, 0, 45), /* Vertical Closed one fourth */ + Frame(160, 223, 24, 54, 32, 61, 0, 30), /* Vertical Closed half */ + Frame(160, 223, 24, 69, 32, 61, 0, 15), /* Vertical Closed three fourth */ + Frame(160, 167, 24, 82, 32, 61, 24, 0), /* Left Horizontal Closed one fourth */ + Frame(160, 175, 24, 82, 32, 61, 16, 0), /* Left Horizontal Closed half */ + Frame(160, 183, 24, 82, 32, 61, 8, 0), /* Left Horizontal Closed three fourth */ + Frame(216, 223, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed one fourth */ + Frame(208, 223, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed half */ + Frame(200, 223, 24, 82, 32, 61, 32, 0) /* Right Horizontal Closed three fourth */ ); int16 order; @@ -1539,16 +1570,16 @@ void DisplayMan::f121_drawSquareD2C(Direction dir, int16 posX, int16 posY) { static Frame frameCeilingPitD2C = Frame(64, 159, 19, 23, 48, 5, 0, 0); // @ G0153_s_Graphic558_Frame_CeilingPit_D2C static DoorFrames doorFrameD2C = DoorFrames( // @ G0183_s_Graphic558_Frames_Door_D2C /* { X1, X2, Y1, Y2, ByteWidth, Height, X, Y } */ - Frame(80, 143, 24, 82, 32, 61, 0, 0), /* Closed Or Destroyed */ - Frame(80, 143, 24, 39, 32, 61, 0, 45), /* Vertical Closed one fourth */ - Frame(80, 143, 24, 54, 32, 61, 0, 30), /* Vertical Closed half */ - Frame(80, 143, 24, 69, 32, 61, 0, 15), /* Vertical Closed three fourth */ - Frame(80, 87, 24, 82, 32, 61, 24, 0), /* Left Horizontal Closed one fourth */ - Frame(80, 95, 24, 82, 32, 61, 16, 0), /* Left Horizontal Closed half */ - Frame(80, 103, 24, 82, 32, 61, 8, 0), /* Left Horizontal Closed three fourth */ - Frame(136, 143, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed one fourth */ - Frame(128, 143, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed half */ - Frame(120, 143, 24, 82, 32, 61, 32, 0) /* Right Horizontal Closed three fourth */ + Frame(80, 143, 24, 82, 32, 61, 0, 0), /* Closed Or Destroyed */ + Frame(80, 143, 24, 39, 32, 61, 0, 45), /* Vertical Closed one fourth */ + Frame(80, 143, 24, 54, 32, 61, 0, 30), /* Vertical Closed half */ + Frame(80, 143, 24, 69, 32, 61, 0, 15), /* Vertical Closed three fourth */ + Frame(80, 87, 24, 82, 32, 61, 24, 0), /* Left Horizontal Closed one fourth */ + Frame(80, 95, 24, 82, 32, 61, 16, 0), /* Left Horizontal Closed half */ + Frame(80, 103, 24, 82, 32, 61, 8, 0), /* Left Horizontal Closed three fourth */ + Frame(136, 143, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed one fourth */ + Frame(128, 143, 24, 82, 32, 61, 32, 0), /* Right Horizontal Closed half */ + Frame(120, 143, 24, 82, 32, 61, 32, 0) /* Right Horizontal Closed three fourth */ ); int16 order; @@ -1611,16 +1642,16 @@ void DisplayMan::f122_drawSquareD1L(Direction dir, int16 posX, int16 posY) { static Frame frameCeilingPitD1L = Frame(0, 63, 8, 16, 32, 9, 0, 0); // @ G0155_s_Graphic558_Frame_CeilingPit_D1L static DoorFrames doorFrameD1L = DoorFrames( // @ G0185_s_Graphic558_Frames_Door_D1L /* { X1, X2, Y1, Y2, ByteWidth, Height, X, Y } */ - Frame(0, 31, 17, 102, 48, 88, 64, 0), /* Closed Or Destroyed */ - Frame(0, 31, 17, 38, 48, 88, 64, 66), /* Vertical Closed one fourth */ - Frame(0, 31, 17, 60, 48, 88, 64, 44), /* Vertical Closed half */ - Frame(0, 31, 17, 82, 48, 88, 64, 22), /* Vertical Closed three fourth */ - Frame(0, 0, 0, 0, 0, 0, 0, 0), /* Left Horizontal Closed one fourth */ - Frame(0, 0, 0, 0, 0, 0, 0, 0), /* Left Horizontal Closed half */ - Frame(0, 0, 0, 0, 0, 0, 0, 0), /* Left Horizontal Closed three fourth */ - Frame(20, 31, 17, 102, 48, 88, 48, 0), /* Right Horizontal Closed one fourth */ - Frame(8, 31, 17, 102, 48, 88, 48, 0), /* Right Horizontal Closed half */ - Frame(0, 31, 17, 102, 48, 88, 52, 0) /* Right Horizontal Closed three fourth */ + Frame(0, 31, 17, 102, 48, 88, 64, 0), /* Closed Or Destroyed */ + Frame(0, 31, 17, 38, 48, 88, 64, 66), /* Vertical Closed one fourth */ + Frame(0, 31, 17, 60, 48, 88, 64, 44), /* Vertical Closed half */ + Frame(0, 31, 17, 82, 48, 88, 64, 22), /* Vertical Closed three fourth */ + Frame(0, 0, 0, 0, 0, 0, 0, 0), /* Left Horizontal Closed one fourth */ + Frame(0, 0, 0, 0, 0, 0, 0, 0), /* Left Horizontal Closed half */ + Frame(0, 0, 0, 0, 0, 0, 0, 0), /* Left Horizontal Closed three fourth */ + Frame(20, 31, 17, 102, 48, 88, 48, 0), /* Right Horizontal Closed one fourth */ + Frame(8, 31, 17, 102, 48, 88, 48, 0), /* Right Horizontal Closed half */ + Frame(0, 31, 17, 102, 48, 88, 52, 0) /* Right Horizontal Closed three fourth */ ); int16 order; @@ -1685,16 +1716,16 @@ void DisplayMan::f123_drawSquareD1R(Direction dir, int16 posX, int16 posY) { static Frame frameCeilingPitD1R = Frame(160, 223, 8, 16, 32, 9, 0, 0); // @ G0157_s_Graphic558_Frame_CeilingPit_D1R static DoorFrames doorFrameD1R = DoorFrames( // @ G0187_s_Graphic558_Frames_Door_D1R /* { X1, X2, Y1, Y2, ByteWidth, Height, X, Y } */ - Frame(192, 223, 17, 102, 48, 88, 0, 0), /* Closed Or Destroyed */ - Frame(192, 223, 17, 38, 48, 88, 0, 66), /* Vertical Closed one fourth */ - Frame(192, 223, 17, 60, 48, 88, 0, 44), /* Vertical Closed half */ - Frame(192, 223, 17, 82, 48, 88, 0, 22), /* Vertical Closed three fourth */ - Frame(192, 203, 17, 102, 48, 88, 36, 0), /* Left Horizontal Closed one fourth */ - Frame(192, 215, 17, 102, 48, 88, 24, 0), /* Left Horizontal Closed half */ - Frame(192, 223, 17, 102, 48, 88, 12, 0), /* Left Horizontal Closed three fourth */ - Frame(0, 0, 0, 0, 0, 0, 0, 0), /* Right Horizontal Closed one fourth */ - Frame(0, 0, 0, 0, 0, 0, 0, 0), /* Right Horizontal Closed half */ - Frame(0, 0, 0, 0, 0, 0, 0, 0) /* Right Horizontal Closed three fourth */ + Frame(192, 223, 17, 102, 48, 88, 0, 0), /* Closed Or Destroyed */ + Frame(192, 223, 17, 38, 48, 88, 0, 66), /* Vertical Closed one fourth */ + Frame(192, 223, 17, 60, 48, 88, 0, 44), /* Vertical Closed half */ + Frame(192, 223, 17, 82, 48, 88, 0, 22), /* Vertical Closed three fourth */ + Frame(192, 203, 17, 102, 48, 88, 36, 0), /* Left Horizontal Closed one fourth */ + Frame(192, 215, 17, 102, 48, 88, 24, 0), /* Left Horizontal Closed half */ + Frame(192, 223, 17, 102, 48, 88, 12, 0), /* Left Horizontal Closed three fourth */ + Frame(0, 0, 0, 0, 0, 0, 0, 0), /* Right Horizontal Closed one fourth */ + Frame(0, 0, 0, 0, 0, 0, 0, 0), /* Right Horizontal Closed half */ + Frame(0, 0, 0, 0, 0, 0, 0, 0) /* Right Horizontal Closed three fourth */ ); int16 order; diff --git a/engines/dm/gfx.h b/engines/dm/gfx.h index 2d4ae4e01f..b8b31f07e4 100644 --- a/engines/dm/gfx.h +++ b/engines/dm/gfx.h @@ -552,6 +552,8 @@ class DisplayMan { DMEngine *_vm; uint16 _grapItemCount; // @ G0632_ui_GraphicCount + uint32 *_bitmapCompressedByteCount; + uint32 *_bitmapDecompressedByteCount; uint32 *_packedItemPos; byte *_packedBitmaps; byte **_bitmaps; |