25 #include "scumm/base-costume.h" 26 #include "scumm/he/wiz_he.h" 30 #define AKOS_BYLE_RLE_CODEC 1 31 #define AKOS_CDAT_RLE_CODEC 5 32 #define AKOS_RUN_MAJMIN_CODEC 16 33 #define AKOS_TRLE_CODEC 32 35 #define AKOS_AUXD_TYPE_EMPTY_FRAME 0x0000 36 #define AKOS_AUXD_TYPE_DRLE_FRAME 0x0001 37 #define AKOS_AUXD_TYPE_SRLE_FRAME 0x0010 38 #define AKOS_AUXD_TYPE_WRLE_FRAME 0x0020 46 const byte *_akos =
nullptr;
51 void loadCostume(
int id)
override;
52 bool increaseAnims(
Actor *a)
override;
53 void costumeDecodeData(
Actor *a,
int frame, uint useMask)
override;
56 bool hasManyDirections(
int id)
override {
58 return hasManyDirections();
62 bool hasManyDirections();
72 const AkosHeader *_akhd;
86 const AkosOffset *_akof;
99 _useBompPalette =
false;
111 bool _actorHitMode =
false;
112 int16 _actorHitX = 0, _actorHitY = 0;
113 bool _actorHitResult =
false;
115 void setPalette(uint16 *_palette)
override;
116 void setFacing(
const Actor *a)
override;
117 void setCostume(
int costume,
int shadow)
override;
120 byte drawLimb(
const Actor *a,
int limb)
override;
122 byte paintCelByleRLE(
int xMoveCur,
int yMoveCur);
123 byte paintCelCDATRLE(
int xMoveCur,
int yMoveCur);
124 byte paintCelMajMin(
int xMoveCur,
int yMoveCur);
125 byte paintCelTRLE(
int actor,
int drawToBack,
int celX,
int celY,
int celWidth,
int celHeight, byte tcolor,
const byte *shadowTablePtr, int32 specialRenderFlags);
127 #if defined(ENABLE_HE) 129 int actor,
int drawToBack,
int celX,
int celY,
int celWidth,
int celHeight, byte tcolor,
bool allowFlip,
const byte *shadowTablePtr,
130 void (*drawPtr)(
ScummEngine *vm, Wiz *wiz, WizRawPixel *,
int,
int,
Common::Rect *,
const byte *,
int,
int,
Common::Rect *, byte,
const byte *shadowTablePtr,
const WizRawPixel *conversionTable, int32 specialRenderFlags),
131 const WizRawPixel *conversionTable,
132 int32 specialRenderFlags);
136 void majMinCodecDecompress(byte *dest, int32 pitch,
const byte *src, int32 t_width, int32 t_height, int32 dir, int32 numSkipBefore, int32 numSkipAfter, byte transparency,
int maskLeft,
int maskTop,
int zBuf);
142 enum AkosSequenceCodes {
144 AKC_ExtendBit = 0x80,
145 AKC_ExtendWordBit = 0x8000,
146 AKC_CelMask = 0x0FFF,
149 AKC_CommandMask = 0xC000,
151 AKC_EmptyCel = (AKC_CommandMask | 0x0001),
153 AKC_SetVar = (AKC_CommandMask | 0x0010),
154 AKC_StartSound = (AKC_CommandMask | 0x0015),
155 AKC_IfSoundInVarRunningGoTo = (AKC_CommandMask | 0x0016),
156 AKC_IfNotSoundInVarRunningGoTo = (AKC_CommandMask | 0x0017),
157 AKC_IfSoundRunningGoTo = (AKC_CommandMask | 0x0018),
158 AKC_IfNotSoundRunningGoTo = (AKC_CommandMask | 0x0019),
160 AKC_DrawMany = (AKC_CommandMask | 0x0020),
161 AKC_CondDrawMany = (AKC_CommandMask | 0x0021),
162 AKC_CondRelativeOffsetDrawMany = (AKC_CommandMask | 0x0022),
163 AKC_RelativeOffsetDrawMany = (AKC_CommandMask | 0x0025),
165 AKC_GoToState = (AKC_CommandMask | 0x0030),
166 AKC_IfVarGoTo = (AKC_CommandMask | 0x0031),
168 AKC_AddVar = (AKC_CommandMask | 0x0040),
169 AKC_SoftSound = (AKC_CommandMask | 0x0042),
170 AKC_SoftVarSound = (AKC_CommandMask | 0x0044),
171 AKC_SetUserCondition = (AKC_CommandMask | 0x0045),
172 AKC_SetVarToUserCondition = (AKC_CommandMask | 0x0046),
173 AKC_SetTalkCondition = (AKC_CommandMask | 0x0047),
174 AKC_SetVarToTalkCondition = (AKC_CommandMask | 0x0048),
175 AKC_StartScript = (AKC_CommandMask | 0x0050),
177 AKC_IncVar = (AKC_CommandMask | 0x0060),
178 AKC_StartSound_SpecialCase = (AKC_CommandMask | 0x0061),
180 AKC_IfVarEQJump = (AKC_CommandMask | 0x0070),
181 AKC_IfVarNEJump = (AKC_CommandMask | 0x0071),
182 AKC_IfVarLTJump = (AKC_CommandMask | 0x0072),
183 AKC_IfVarLEJump = (AKC_CommandMask | 0x0073),
184 AKC_IfVarGTJump = (AKC_CommandMask | 0x0074),
185 AKC_IfVarGEJump = (AKC_CommandMask | 0x0075),
187 AKC_StartAnim = (AKC_CommandMask | 0x0080),
188 AKC_StartVarAnim = (AKC_CommandMask | 0x0081),
189 AKC_SetVarRandom = (AKC_CommandMask | 0x0082),
190 AKC_SetActorZClipping = (AKC_CommandMask | 0x0083),
191 AKC_StartActorAnim = (AKC_CommandMask | 0x0084),
192 AKC_SetActorVar = (AKC_CommandMask | 0x0085),
193 AKC_HideActor = (AKC_CommandMask | 0x0086),
194 AKC_SetDrawOffs = (AKC_CommandMask | 0x0087),
195 AKC_JumpToOffsetInVar = (AKC_CommandMask | 0x0088),
196 AKC_SoundStuff = (AKC_CommandMask | 0x0089),
197 AKC_Flip = (AKC_CommandMask | 0x008A),
198 AKC_StartActionOn = (AKC_CommandMask | 0x008B),
199 AKC_StartScriptVar = (AKC_CommandMask | 0x008C),
200 AKC_StartSoundVar = (AKC_CommandMask | 0x008D),
201 AKC_DisplayAuxFrame = (AKC_CommandMask | 0x008E),
203 AKC_IfVarEQDo = (AKC_CommandMask | 0x0090),
204 AKC_IfVarNEDo = (AKC_CommandMask | 0x0091),
205 AKC_IfVarLTDo = (AKC_CommandMask | 0x0092),
206 AKC_IfVarLEDo = (AKC_CommandMask | 0x0093),
207 AKC_IfVarGTDo = (AKC_CommandMask | 0x0094),
208 AKC_IfVarGEDo = (AKC_CommandMask | 0x0095),
209 AKC_EndOfIfDo = (AKC_CommandMask | 0x009F),
211 AKC_StartActorTalkie = (AKC_CommandMask | 0x00A0),
212 AKC_IfTalkingGoTo = (AKC_CommandMask | 0x00A1),
213 AKC_IfNotTalkingGoTo = (AKC_CommandMask | 0x00A2),
214 AKC_StartTalkieInVar = (AKC_CommandMask | 0x00A3),
215 AKC_IfAnyTalkingGoTo = (AKC_CommandMask | 0x00A4),
216 AKC_IfNotAnyTalkingGoTo = (AKC_CommandMask | 0x00A5),
217 AKC_IfTalkingPickGoTo = (AKC_CommandMask | 0x00A6),
218 AKC_IfNotTalkingPickGoTo = (AKC_CommandMask | 0x00A7),
220 AKC_EndSeq = (AKC_CommandMask | 0x00FF)
223 enum AkosQueuedCommands {
224 AKQC_PutActorInTheVoid = 1,
226 AKQC_StartAnimation = 4,
227 AKQC_SetZClipping = 5,
228 AKQC_SetXYOffset = 6,
229 AKQC_DisplayAuxFrame = 7,
230 AKQC_StartTalkie = 8,
231 AKQC_SoftStartSound = 9,
234 AKQC_SetSoundVolume = 7,
235 AKQC_SetSoundPan = 8,
236 AKQC_SetSoundPriority = 9
241 AKAT_KillLayer = 0x01,
242 AKAT_LoopLayer = 0x02,
243 AKAT_RunLayer = 0x03,
244 AKAT_LayerInvisible = 0x04,
245 AKAT_LayerVisible = 0x05,
246 AKAT_AlwaysRun = 0x06,
247 AKAT_UserConstant = 0x07,
248 AKAT_DeltaAnim = 0x08
251 #define GW(o) ((int16)READ_LE_UINT16(aksq + curState + (o))) 252 #define GUW(o) READ_LE_UINT16(aksq + curState + (o)) 253 #define GB(o) aksq[curState + (o)] Definition: base-costume.h:114
Definition: base-costume.h:68
Definition: base-costume.h:49