aboutsummaryrefslogtreecommitdiff
path: root/gob/mult.h
diff options
context:
space:
mode:
Diffstat (limited to 'gob/mult.h')
-rw-r--r--gob/mult.h185
1 files changed, 185 insertions, 0 deletions
diff --git a/gob/mult.h b/gob/mult.h
new file mode 100644
index 0000000000..fc375a0d16
--- /dev/null
+++ b/gob/mult.h
@@ -0,0 +1,185 @@
+/*
+** Gobliiins 1
+** Original game by CoktelVision
+**
+** Reverse engineered by Ivan Dubrov <WFrag@yandex.ru>
+**
+*/
+#ifndef __MULT_H
+#define __MULT_H
+
+#include "gob/sound.h"
+
+namespace Gob {
+
+#pragma START_PACK_STRUCTS
+typedef struct Mult_AnimData {
+ char animation;
+ char layer;
+ char frame;
+ char animType;
+ char order;
+ char isPaused;
+ char isStatic;
+ char maxTick;
+ char unknown;
+ char newLayer;
+ char newAnimation;
+ byte intersected;
+ char newCycle;
+} GCC_PACK Mult_AnimData;
+
+typedef struct Mult_Object {
+ int32 *pPosX;
+ int32 *pPosY;
+ Mult_AnimData *pAnimData;
+ int16 tick;
+ int16 lastLeft;
+ int16 lastRight;
+ int16 lastTop;
+ int16 lastBottom;
+} Mult_Object;
+
+// Mult
+typedef struct Mult_StaticKey {
+ int16 frame;
+ int16 layer;
+} GCC_PACK Mult_StaticKey;
+
+typedef struct Mult_AnimKey {
+ int16 frame;
+ int16 layer;
+ int16 posX;
+ int16 posY;
+ int16 order;
+} GCC_PACK Mult_AnimKey;
+
+typedef struct Mult_TextKey {
+ int16 frame;
+ int16 cmd;
+ int16 unknown0[9];
+ int16 index;
+ int16 unknown1[2];
+} GCC_PACK Mult_TextKey;
+
+typedef struct Mult_PalKey {
+ int16 frame;
+ int16 cmd;
+ int16 rates[4];
+ int16 unknown0;
+ int16 unknown1;
+ char subst[16][4];
+} GCC_PACK Mult_PalKey;
+
+typedef struct Mult_PalFadeKey {
+ int16 frame;
+ int16 fade;
+ int16 palIndex;
+ char flag;
+} GCC_PACK Mult_PalFadeKey;
+
+typedef struct Mult_SndKey {
+ int16 frame;
+ int16 cmd;
+ int16 freq;
+ int16 channel;
+ int16 repCount;
+ int16 resId;
+ int16 soundIndex;
+} GCC_PACK Mult_SndKey;
+#pragma END_PACK_STRUCTS
+
+// Globals
+
+extern Mult_Object *mult_objects;
+extern int16 *mult_renderData;
+extern int16 mult_objCount;
+extern SurfaceDesc *mult_underAnimSurf;
+
+extern char *mult_multData;
+extern int16 mult_frame;
+extern char mult_doPalSubst;
+extern int16 mult_counter;
+extern int16 mult_frameRate;
+
+extern int32 *mult_animArrayX;
+extern int32 *mult_animArrayY;
+
+extern Mult_AnimData *mult_animArrayData;
+
+extern int16 mult_index;
+
+// Static keys
+extern int16 mult_staticKeysCount;
+extern Mult_StaticKey *mult_staticKeys;
+extern int16 mult_staticIndices[10];
+
+// Anim keys
+extern Mult_AnimKey *mult_animKeys[4];
+extern int16 mult_animKeysCount[4];
+extern int16 mult_animLayer;
+extern int16 mult_animIndices[10];
+
+// Text keys
+extern int16 mult_textKeysCount;
+extern Mult_TextKey *mult_textKeys;
+
+extern int16 mult_frameStart;
+
+// Palette keys
+extern int16 mult_palKeyIndex;
+extern int16 mult_palKeysCount;
+extern Mult_PalKey *mult_palKeys;
+extern Color *mult_oldPalette;
+extern Color mult_palAnimPalette[256];
+extern int16 mult_palAnimKey;
+extern int16 mult_palAnimIndices[4];
+extern int16 mult_palAnimRed[4];
+extern int16 mult_palAnimGreen[4];
+extern int16 mult_palAnimBlue[4];
+
+// Palette fading
+extern Mult_PalFadeKey *mult_palFadeKeys;
+extern int16 mult_palFadeKeysCount;
+extern char mult_palFadingRed;
+extern char mult_palFadingGreen;
+extern char mult_palFadingBlue;
+
+extern char mult_animDataAllocated;
+
+extern char *mult_dataPtr;
+extern int16 mult_staticLoaded[10];
+extern int16 mult_animLoaded[10];
+extern int16 mult_sndSlotsCount;
+
+// Sound keys
+extern int16 mult_sndKeysCount;
+extern Mult_SndKey *mult_sndKeys;
+
+void mult_playSound(Snd_SoundDesc * soundDesc, int16 repCount, int16 freq,
+ int16 negFreq);
+void mult_zeroMultData(void);
+void mult_loadMult(int16 resId);
+void mult_freeMultKeys(void);
+void mult_checkFreeMult(void);
+void mult_playMult(int16 startFrame, int16 endFrame, char checkEscape,
+ char handleMouse);
+void mult_animate(void);
+void mult_interGetObjAnimSize(void);
+void mult_interInitMult(void);
+void mult_freeMult(void);
+void mult_interLoadMult(void);
+void mult_freeAll(void);
+void mult_initAll(void);
+void mult_playSound(Snd_SoundDesc * soundDesc, int16 repCount, int16 freq,
+ int16 negFreq);
+void mult_playMult(int16 startFrame, int16 endFrame, char checkEscape,
+ char handleMouse);
+void mult_zeroMultData(void);
+void mult_loadMult(int16 resId);
+void mult_freeMultKeys(void);
+void mult_checkFreeMult(void);
+
+} // End of namespace Gob
+
+#endif /* __MULT_H */