1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* 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.
*
*/
#ifndef AGOS_VGA_H
#define AGOS_VGA_H
namespace AGOS {
#include "common/pack-start.h" // START STRUCT PACKING
// Feeble Files
struct VgaFile1Header_Feeble {
uint16 imageCount;
uint16 x_2;
uint16 animationCount;
uint16 x_3;
uint16 imageTable;
uint16 x_4;
uint16 animationTable;
uint16 x_5;
} PACKED_STRUCT;
struct ImageHeader_Feeble {
uint16 id;
uint16 x_1;
uint16 scriptOffs;
uint16 x_2;
} PACKED_STRUCT;
struct AnimationHeader_Feeble {
uint16 scriptOffs;
uint16 x_2;
uint16 id;
} PACKED_STRUCT;
// Simon 1/2
struct ImageHeader_Simon {
uint16 id;
uint16 color;
uint16 x_2;
uint16 scriptOffs;
} PACKED_STRUCT;
struct AnimationHeader_Simon {
uint16 id;
uint16 x_2;
uint16 scriptOffs;
} PACKED_STRUCT;
// Elvira 1/2 and Waxworks
struct ImageHeader_WW {
uint16 id;
uint16 color;
uint16 x_2;
uint16 scriptOffs;
} PACKED_STRUCT;
struct AnimationHeader_WW {
uint16 id;
uint16 x_1;
uint16 x_2;
uint16 scriptOffs;
} PACKED_STRUCT;
// Common
struct VgaFile1Header_Common {
uint16 x_1;
uint16 imageCount;
uint16 x_2;
uint16 animationCount;
uint16 x_3;
uint16 imageTable;
uint16 x_4;
uint16 animationTable;
uint16 x_5;
} PACKED_STRUCT;
#include "common/pack-end.h" // END STRUCT PACKING
enum DrawFlags {
kDFFlip = 0x1,
kDFNonTrans = 0x2,
kDFSkipStoreBG = 0x4,
kDFCompressed = 0x8,
kDFCompressedFlip = 0x10,
kDFMasked = 0x20,
// Feeble specific
kDFOverlayed = 0x10,
kDFScaled = 0x40,
kDFShaded = 0x80
};
struct VC10_state {
int16 image;
uint16 flags;
byte palette;
byte paletteMod;
int16 x, y;
uint16 width, height;
uint16 draw_width, draw_height;
uint16 x_skip, y_skip;
byte *surf2_addr;
uint surf2_pitch;
byte *surf_addr;
uint surf_pitch;
uint16 dl, dh;
const byte *srcPtr;
int8 depack_cont;
byte depack_dest[480];
VC10_state() { memset(this, 0, sizeof(*this)); }
};
byte *vc10_depackColumn(VC10_state *vs);
} // End of namespace AGOS
#endif
|