diff options
author | Eugene Sandulenko | 2006-11-06 13:40:24 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2006-11-06 13:40:24 +0000 |
commit | 8ef5e88323972fa8d2fe5e376c78a1903535f50a (patch) | |
tree | 387dfd64b52c3c1c3dea767d390d4edbfb07ff65 /engines/scumm/he/cup_player_he.h | |
parent | da3e724a990e1d7482c1654623e01723ba890534 (diff) | |
download | scummvm-rg350-8ef5e88323972fa8d2fe5e376c78a1903535f50a.tar.gz scummvm-rg350-8ef5e88323972fa8d2fe5e376c78a1903535f50a.tar.bz2 scummvm-rg350-8ef5e88323972fa8d2fe5e376c78a1903535f50a.zip |
Add support for HE CUP demos based on cyx's standalone player.
svn-id: r24636
Diffstat (limited to 'engines/scumm/he/cup_player_he.h')
-rw-r--r-- | engines/scumm/he/cup_player_he.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/engines/scumm/he/cup_player_he.h b/engines/scumm/he/cup_player_he.h new file mode 100644 index 0000000000..3554350b01 --- /dev/null +++ b/engines/scumm/he/cup_player_he.h @@ -0,0 +1,76 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2006 The ScummVM project + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + */ + + +#if !defined(CUP_PLAYER_HE_H) && !defined(DISABLE_HE) +#define CUP_PLAYER_HE_H + +namespace Scumm { + +struct CUP_Player { + Common::File _fd; + uint32 _dataSize; + int _playbackRate; + int _width, _height; + uint8 _paletteData[256 * 4]; + uint8 *_offscreenBuffer; + uint8 _tempLzssBuffer[0x1000]; + uint8 *_currentChunkData; + uint32 _currentChunkSize; + uint8 *_bufferLzssData; + uint32 _bufferLzssSize; + + ScummEngine_vCUPhe *_vm; + Audio::Mixer *_mixer; + OSystem *_system; + + CUP_Player(OSystem *sys, ScummEngine_vCUPhe *vm, Audio::Mixer *mixer) { + _currentChunkData = 0; + _currentChunkSize = 0; + _bufferLzssData = 0; + _bufferLzssSize = 0; + _vm = vm; + _mixer = mixer; + _system = sys; + } + + bool open(const char *filename); + void close(); + uint32 loadNextChunk(); + void parseHeaderTags(); + void play(); + void parseNextTag(const uint8 *data, Common::Rect *r1, uint32 &tag, uint32 &size); + void handleHEAD(const uint8 *data, uint32 dataSize); + void handleSFXB(const uint8 *data, uint32 dataSize); + void handleRGBS(const uint8 *data, uint32 dataSize); + void handleFRAM(uint8 *dst, const uint8 *data, uint32 size); + void decodeFRAM(uint8 *dst, Common::Rect *r1, const uint8 *data, int code); + uint8 *handleLZSS(const uint8 *data, uint32 dataSize); + void decodeLzssData(uint8 *dst1, const uint8 *src1, const uint8 *src2, const uint8 *src3, uint8 *dst2); + void handleRATE(const uint8 *data, uint32 dataSize); + void handleSNDE(const uint8 *data, uint32 dataSize); + void handleTOIL(const uint8 *data, uint32 dataSize); +}; + +} // End of namespace Scumm + +#endif |