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 NEW_TILESIZE		1
49 
50 #define ORIG_TILESIZE		16
51 
52 #define ORIG_TILEX		16
53 #define ORIG_TILEY		16
54 #define ORIG_SCOREX		8
55 #define ORIG_SCOREY		9
56 #define ORIG_GFXMENUFONTX	14
57 #define ORIG_GFXMENUFONTY	16
58 #define ORIG_MENUFONTX		12
59 #define ORIG_MENUFONTY		16
60 
61 #if NEW_TILESIZE
62 #define ZOOM_FACTOR		(2 * TILESIZE_VAR / TILESIZE)
63 #else
64 #define ZOOM_FACTOR		2
65 #endif
66 
67 #define TILESIZE		32
68 
69 #if NEW_TILESIZE
70 extern int			TILESIZE_VAR;
71 #define TILEX			TILESIZE_VAR
72 #define TILEY			TILESIZE_VAR
73 #else
74 #define TILEX			(ORIG_TILEX		* ZOOM_FACTOR)
75 #define TILEY			(ORIG_TILEY		* ZOOM_FACTOR)
76 #endif
77 #define SCOREX			(ORIG_SCOREX		* ZOOM_FACTOR)
78 #define SCOREY			(ORIG_SCOREY		* ZOOM_FACTOR)
79 #define GFXMENUFONTX		(ORIG_GFXMENUFONTX	* ZOOM_FACTOR)
80 #define GFXMENUFONTY		(ORIG_GFXMENUFONTY	* ZOOM_FACTOR)
81 #define MENUFONTX		(ORIG_MENUFONTX		* ZOOM_FACTOR)
82 #define MENUFONTY		(ORIG_MENUFONTY		* ZOOM_FACTOR)
83 
84 #define ORIG_SCR_MENUX		20
85 #define ORIG_SCR_MENUY		12
86 #define SCR_MENUX		17
87 #define SCR_MENUY		12
88 #if 1
89 extern int			SCR_FIELDX, SCR_FIELDY;
90 #else
91 #define SCR_FIELDX		17
92 #define SCR_FIELDY		17
93 #endif
94 #define MAX_BUF_XSIZE		(SCR_FIELDX + 2)
95 #define MAX_BUF_YSIZE		(SCR_FIELDY + 2)
96 
97 /* often used screen positions */
98 #define ORIG_MENU_SX		((ORIG_SCR_MENUX - SCR_MENUX) * TILEX / 2)
99 #define ORIG_MENU_SY		0
100 #if 1
101 extern int			SX, SY;
102 #else
103 #define SX			8
104 #define SY			8
105 #endif
106 #define SXSIZE			(SCR_FIELDX * TILEX)
107 #define SYSIZE			(SCR_FIELDY * TILEY)
108 
109 /* other settings */
110 #define PLAY_ELEMENT_SOUND	FALSE
111 
112 
113 /* ------------------------------------------------------------------------- */
114 /* macro function definitions                                                */
115 /* ------------------------------------------------------------------------- */
116 
117 #define ROUNDED_DIVIDE(x, y)	(((x) + (y) - 1) / (y))
118 
119 #define SECONDS_TO_FRAMES(x)	((x) * FRAMES_PER_SECOND)
120 #define FRAMES_TO_SECONDS(x)	((x) / FRAMES_PER_SECOND)
121 
122 #define SECONDS_TO_CYCLES(x)	ROUNDED_DIVIDE((x) * FRAMES_PER_SECOND, 8)
123 #define CYCLES_TO_SECONDS(x)	ROUNDED_DIVIDE((x) * 8, FRAMES_PER_SECOND)
124 
125 #define DISPLAY_TIME(x)		ROUNDED_DIVIDE(x, FRAMES_PER_SECOND)
126 
127 
128 /* ------------------------------------------------------------------------- */
129 /* data structure definitions                                                */
130 /* ------------------------------------------------------------------------- */
131 
132 /* ------------------------------------------------------------------------- */
133 /* exported variables                                                        */
134 /* ------------------------------------------------------------------------- */
135 
136 extern unsigned int RandomEM;
137 
138 extern struct LEVEL lev;
139 extern struct PLAYER ply[MAX_PLAYERS];
140 
141 extern struct LevelInfo_EM native_em_level;
142 extern struct GraphicInfo_EM graphic_info_em_object[TILE_MAX][8];
143 extern struct GraphicInfo_EM graphic_info_em_player[MAX_PLAYERS][SPR_MAX][8];
144 
145 extern short **Boom;
146 extern short **Cave;
147 extern short **Next;
148 extern short **Draw;
149 
150 extern struct GameInfo_EM game_em;
151 
152 extern unsigned char tab_blank[TILE_MAX];
153 extern unsigned char tab_acid[TILE_MAX];
154 extern unsigned char tab_amoeba[TILE_MAX];
155 extern unsigned char tab_android_move[TILE_MAX];
156 extern unsigned short tab_explode_normal[TILE_MAX];
157 extern unsigned short tab_explode_dynamite[TILE_MAX];
158 
159 extern unsigned short map_obj[8][TILE_MAX];
160 extern unsigned short map_spr[2][8][SPR_MAX];
161 extern unsigned short map_ttl[128];
162 
163 extern Bitmap *screenBitmap;
164 extern Bitmap *scoreBitmap;
165 
166 extern Bitmap *objBitmap;
167 extern Bitmap *sprBitmap;
168 extern Bitmap *ttlBitmap;
169 extern Bitmap *botBitmap;
170 
171 extern Pixmap screenPixmap;
172 extern Pixmap scorePixmap;
173 extern Pixmap spriteBitmap;
174 
175 extern Pixmap objmaskBitmap;
176 extern Pixmap sprmaskBitmap;
177 
178 extern GC spriteGC;
179 
180 
181 /* ------------------------------------------------------------------------- */
182 /* exported functions                                                        */
183 /* ------------------------------------------------------------------------- */
184 
185 #endif	/* MAIN_EM_H */
186