rnd-20090623-1-src
[rocksndiamonds.git] / src / game_em / main_em.h
1 #ifndef MAIN_EM_H
2 #define MAIN_EM_H
3
4 /* ========================================================================= */
5 /* external functions and definitions imported from main program to game_em  */
6 /* ========================================================================= */
7
8 #include "../engines.h"
9
10
11 /* ========================================================================= */
12 /* functions and definitions that are exported from game_em to main program  */
13 /* ========================================================================= */
14
15 #include "export.h"
16
17
18 /* ========================================================================= */
19 /* internal functions and definitions that are not exported to main program  */
20 /* ========================================================================= */
21
22 #include "global.h"
23 #include "sample.h"
24
25
26 /* ------------------------------------------------------------------------- */
27 /* constant definitions                                                      */
28 /* ------------------------------------------------------------------------- */
29
30 /* values for native Emerald Mine game version */
31 #define FILE_VERSION_EM_UNKNOWN 0
32 #define FILE_VERSION_EM_V1      1
33 #define FILE_VERSION_EM_V2      2
34 #define FILE_VERSION_EM_V3      3
35 #define FILE_VERSION_EM_V4      4       /* (there really was no version 4) */
36 #define FILE_VERSION_EM_V5      5
37 #define FILE_VERSION_EM_V6      6
38
39 #define FILE_VERSION_EM_ACTUAL  FILE_VERSION_EM_V6
40
41 /* level sizes and positions for EM engine */
42
43 #define WIDTH                   EM_MAX_CAVE_WIDTH
44 #define HEIGHT                  EM_MAX_CAVE_HEIGHT
45
46 /* screen sizes and positions for EM engine */
47
48 #define ORIG_TILEX              16
49 #define ORIG_TILEY              16
50 #define ORIG_SCOREX             8
51 #define ORIG_SCOREY             9
52 #define ORIG_GFXMENUFONTX       14
53 #define ORIG_GFXMENUFONTY       16
54 #define ORIG_MENUFONTX          12
55 #define ORIG_MENUFONTY          16
56
57 #define ZOOM_FACTOR             2
58
59 #define TILEX                   (ORIG_TILEX             * ZOOM_FACTOR)
60 #define TILEY                   (ORIG_TILEY             * ZOOM_FACTOR)
61 #define SCOREX                  (ORIG_SCOREX            * ZOOM_FACTOR)
62 #define SCOREY                  (ORIG_SCOREY            * ZOOM_FACTOR)
63 #define GFXMENUFONTX            (ORIG_GFXMENUFONTX      * ZOOM_FACTOR)
64 #define GFXMENUFONTY            (ORIG_GFXMENUFONTY      * ZOOM_FACTOR)
65 #define MENUFONTX               (ORIG_MENUFONTX         * ZOOM_FACTOR)
66 #define MENUFONTY               (ORIG_MENUFONTY         * ZOOM_FACTOR)
67
68 #define ORIG_SCR_MENUX          20
69 #define ORIG_SCR_MENUY          12
70 #define SCR_MENUX               17
71 #define SCR_MENUY               12
72 #define SCR_FIELDX              17
73 #define SCR_FIELDY              17
74 #define MAX_BUF_XSIZE           (SCR_FIELDX + 2)
75 #define MAX_BUF_YSIZE           (SCR_FIELDY + 2)
76
77 /* often used screen positions */
78 #define ORIG_MENU_SX            ((ORIG_SCR_MENUX - SCR_MENUX) * TILEX / 2)
79 #define ORIG_MENU_SY            0
80 #define SX                      8
81 #define SY                      8
82 #define SXSIZE                  (SCR_FIELDX * TILEX)
83 #define SYSIZE                  (SCR_FIELDY * TILEY)
84
85 /* other settings */
86 #define PLAY_ELEMENT_SOUND      FALSE
87
88
89 /* ------------------------------------------------------------------------- */
90 /* macro function definitions                                                */
91 /* ------------------------------------------------------------------------- */
92
93 #define ROUNDED_DIVIDE(x, y)    (((x) + (y) - 1) / (y))
94
95 #define SECONDS_TO_FRAMES(x)    ((x) * FRAMES_PER_SECOND)
96 #define FRAMES_TO_SECONDS(x)    ((x) / FRAMES_PER_SECOND)
97
98 #define SECONDS_TO_CYCLES(x)    ROUNDED_DIVIDE((x) * FRAMES_PER_SECOND, 8)
99 #define CYCLES_TO_SECONDS(x)    ROUNDED_DIVIDE((x) * 8, FRAMES_PER_SECOND)
100
101 #define DISPLAY_TIME(x)         ROUNDED_DIVIDE(x, FRAMES_PER_SECOND)
102
103
104 /* ------------------------------------------------------------------------- */
105 /* data structure definitions                                                */
106 /* ------------------------------------------------------------------------- */
107
108 /* ------------------------------------------------------------------------- */
109 /* exported variables                                                        */
110 /* ------------------------------------------------------------------------- */
111
112 extern unsigned long RandomEM;
113
114 extern struct LEVEL lev;
115 extern struct PLAYER ply[MAX_PLAYERS];
116
117 extern struct LevelInfo_EM native_em_level;
118 extern struct GraphicInfo_EM graphic_info_em_object[TILE_MAX][8];
119 extern struct GraphicInfo_EM graphic_info_em_player[MAX_PLAYERS][SPR_MAX][8];
120
121 extern short **Boom;
122 extern short **Cave;
123 extern short **Next;
124 extern short **Draw;
125
126 extern struct GameInfo_EM game_em;
127
128 extern unsigned char tab_blank[TILE_MAX];
129 extern unsigned char tab_acid[TILE_MAX];
130 extern unsigned char tab_amoeba[TILE_MAX];
131 extern unsigned char tab_android_move[TILE_MAX];
132 extern unsigned short tab_explode_normal[TILE_MAX];
133 extern unsigned short tab_explode_dynamite[TILE_MAX];
134
135 extern unsigned short map_obj[8][TILE_MAX];
136 extern unsigned short map_spr[2][8][SPR_MAX];
137 extern unsigned short map_ttl[128];
138
139 extern Bitmap *screenBitmap;
140 extern Bitmap *scoreBitmap;
141
142 extern Bitmap *objBitmap;
143 extern Bitmap *sprBitmap;
144 extern Bitmap *ttlBitmap;
145 extern Bitmap *botBitmap;
146
147 extern Pixmap screenPixmap;
148 extern Pixmap scorePixmap;
149 extern Pixmap spriteBitmap;
150
151 extern Pixmap objmaskBitmap;
152 extern Pixmap sprmaskBitmap;
153
154 extern GC spriteGC;
155
156
157 /* ------------------------------------------------------------------------- */
158 /* exported functions                                                        */
159 /* ------------------------------------------------------------------------- */
160
161 #endif  /* MAIN_EM_H */