diff options
Diffstat (limited to 'engines/sci/scicore/decompressor.h')
-rw-r--r-- | engines/sci/scicore/decompressor.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/engines/sci/scicore/decompressor.h b/engines/sci/scicore/decompressor.h index 39c3b412cb..2c9c203cdd 100644 --- a/engines/sci/scicore/decompressor.h +++ b/engines/sci/scicore/decompressor.h @@ -79,6 +79,7 @@ protected: */ virtual void putByte(byte b); virtual void fetchBits(); + int copyBytes(Common::ReadStream *src, Common::WriteStream *dest, uint32 nSize); uint32 _dwBits; byte _nBits; @@ -120,20 +121,27 @@ public: uint32 nUnpacked); protected: + enum { + PIC_OPX_EMBEDDED_VIEW = 1, + PIC_OPX_SET_PALETTE = 2, + PIC_OP_OPX = 0xfe, + }; // actual unpacking procedure int doUnpack(Common::ReadStream *src, Common::WriteStream *dest, uint32 nPacked, uint32 nUnpacked); // functions to post-process view and pic resources + void decodeRLE(Common::ReadStream *src, Common::WriteStream *dest, byte *pixeldata, uint16 size); + void reorderPic(Common::ReadStream *src, Common::WriteStream *dest, int dsize); + // void decode_rle(byte **rledata, byte **pixeldata, byte *outbuffer, int size); int rle_size(byte *rledata, int dsize); - void pic_reorder(byte *inbuffer, byte *outbuffer, int dsize); void build_cel_headers(byte **seeker, byte **writer, int celindex, int *cc_lengths, int max); void view_reorder(byte *inbuffer, byte *outbuffer); - + // decompressor data struct tokenlist { byte data; uint16 next; - } _tokens[0x1004]; + } _tokens[0x1004]; byte _stak[0x1014]; byte _lastchar; uint16 _stakptr; |