rnd-20100224-1-src
[rocksndiamonds.git] / src / game_sp / Globals.h
1 // ----------------------------------------------------------------------------
2 // Globals.h
3 // ----------------------------------------------------------------------------
4
5 #ifndef GLOBALS_H
6 #define GLOBALS_H
7
8 #include "vb_types.h"
9 #include "vb_defs.h"
10 #include "vb_vars.h"
11 #include "vb_lib.h"
12
13 #include "global.h"
14
15 #if 1
16
17 #define ZoomFactor                      (2)
18
19 #define BaseWidth                       (ZoomFactor * 16)
20 #define StretchWidth                    (ZoomFactor * 16)
21 #define StretchWidth2                   (StretchWidth / 2)
22 #define TwoPixels                       (ZoomFactor * 2)
23
24 #else
25
26 #define BaseWidth                       (16)
27 #define StretchWidth                    (16)
28 #define StretchWidth2                   (StretchWidth / 2)
29 #define TwoPixels                       (2)
30
31 #endif
32
33
34 // ----------------------------------------------------------------------------
35 // elements (stored in file and playfield)
36 // ----------------------------------------------------------------------------
37
38 #if 1
39
40 #define fiSpace                         (0)
41 #define fiZonk                          (1)
42 #define fiBase                          (2)
43 #define fiMurphy                        (3)
44 #define fiInfotron                      (4)
45 #define fiRAM                           (5)
46 #define fiHardWare                      (6)
47 #define fiExit                          (7)
48 #define fiOrangeDisk                    (8)
49 #define fiPortRight                     (9)
50 #define fiPortDown                      (10)
51 #define fiPortLeft                      (11)
52 #define fiPortUp                        (12)
53 #define fiSpPortRight                   (13)
54 #define fiSpPortDown                    (14)
55 #define fiSpPortLeft                    (15)
56 #define fiSpPortUp                      (16)
57 #define fiSnikSnak                      (17)
58 #define fiYellowDisk                    (18)
59 #define fiTerminal                      (19)
60 #define fiRedDisk                       (20)
61 #define fiPortUpAndDown                 (21)
62 #define fiPortLeftAndRight              (22)
63 #define fiPortAllDirections             (23)
64 #define fiElectron                      (24)
65 #define fiBug                           (25)
66 #define fiRAMLeft                       (26)
67 #define fiRAMRight                      (27)
68 #define fiHWFirst                       (28)
69 #define fiHW0                           (fiHWFirst + 0)         // fiHWFirst
70 #define fiHW1                           (fiHWFirst + 1)
71 #define fiHW2                           (fiHWFirst + 2)
72 #define fiHW3                           (fiHWFirst + 3)
73 #define fiHW4                           (fiHWFirst + 4)
74 #define fiHW5                           (fiHWFirst + 5)
75 #define fiHW6                           (fiHWFirst + 6)
76 #define fiHW7                           (fiHWFirst + 7)
77 #define fiHW8                           (fiHWFirst + 8)
78 #define fiHW9                           (fiHWFirst + 9)         // fiHWLast
79 #define fiHWLast                        (37)
80 #define fiRAMTop                        (38)
81 #define fiRAMBottom                     (39)
82 #define fiWallSpace                     (40)
83 #define fiHWTrash1                      (41)
84 #define fiHWTrash2                      (42)
85 #define fiHWMurphy                      (43)
86
87 #define fiExplosion                     (0x1F)
88
89 #else
90
91 #define fiBase                          (2)
92 #define fiBug                           (25)
93 #define fiElectron                      (24)
94 #define fiExit                          (7)
95 #define fiExplosion                     (0x1F)
96 #define fiHWFirst                       (28)
97 #define fiHWLast                        (37)
98 #define fiHWMurphy                      (43)
99 #define fiHWTrash1                      (41)
100 #define fiHWTrash2                      (42)
101 #define fiHardWare                      (6)
102 #define fiInfotron                      (4)
103 #define fiMurphy                        (3)
104 #define fiOrangeDisk                    (8)
105 #define fiPortAllDirections             (23)
106 #define fiPortDown                      (10)
107 #define fiPortLeft                      (11)
108 #define fiPortLeftAndRight              (22)
109 #define fiPortRight                     (9)
110 #define fiPortUp                        (12)
111 #define fiPortUpAndDown                 (21)
112 #define fiRAM                           (5)
113 #define fiRAMBottom                     (39)
114 #define fiRAMLeft                       (26)
115 #define fiRAMRight                      (27)
116 #define fiRAMTop                        (38)
117 #define fiRedDisk                       (20)
118 #define fiSnikSnak                      (17)
119 #define fiSpPortDown                    (14)
120 #define fiSpPortLeft                    (15)
121 #define fiSpPortRight                   (13)
122 #define fiSpPortUp                      (16)
123 #define fiSpace                         (0)
124 #define fiTerminal                      (19)
125 #define fiWallSpace                     (40)
126 #define fiYellowDisk                    (18)
127 #define fiZonk                          (1)
128
129 #endif
130
131
132 // ----------------------------------------------------------------------------
133 // graphics and animations (used at runtime to display the elements)
134 // ----------------------------------------------------------------------------
135
136 #if 1
137
138 // graphics and animations directly related to file elements
139
140 #define aniSpace                        IMG_EMPTY_SPACE
141 #define aniZonk                         IMG_SP_ZONK
142 #define aniBase                         IMG_SP_BASE
143 #define aniMurphy                       IMG_SP_MURPHY
144 #define aniInfotron                     IMG_SP_INFOTRON
145 #define aniRAM                          IMG_SP_CHIP_SINGLE
146 #define aniHardWare                     IMG_SP_HARDWARE_GRAY
147 #define aniExit                         IMG_SP_EXIT_CLOSED
148 #define aniOrangeDisk                   IMG_SP_DISK_ORANGE
149 #define aniPortRight                    IMG_SP_PORT_RIGHT
150 #define aniPortDown                     IMG_SP_PORT_DOWN
151 #define aniPortLeft                     IMG_SP_PORT_LEFT
152 #define aniPortUp                       IMG_SP_PORT_UP
153 #define aniSpPortRight                  IMG_SP_GRAVITY_PORT_RIGHT
154 #define aniSpPortDown                   IMG_SP_GRAVITY_PORT_DOWN
155 #define aniSpPortLeft                   IMG_SP_GRAVITY_PORT_LEFT
156 #define aniSpPortUp                     IMG_SP_GRAVITY_PORT_UP
157 #define aniSnikSnak                     IMG_SP_SNIKSNAK
158 #define aniYellowDisk                   IMG_SP_DISK_YELLOW
159 #define aniTerminal                     IMG_SP_TERMINAL
160 #define aniRedDisk                      IMG_SP_DISK_RED
161 #define aniPortUpAndDown                IMG_SP_PORT_VERTICAL
162 #define aniPortLeftAndRight             IMG_SP_PORT_HORIZONTAL
163 #define aniPortAllDirections            IMG_SP_PORT_ANY
164 #define aniElectron                     IMG_SP_ELECTRON
165 #define aniBug                          IMG_SP_BUGGY_BASE
166 #define aniRAMLeft                      IMG_SP_CHIP_LEFT
167 #define aniRAMRight                     IMG_SP_CHIP_RIGHT
168 #define aniHWFirst                      IMG_SP_HARDWARE_BASE_1
169 #define aniHW0                          IMG_SP_HARDWARE_BASE_1
170 #define aniHW1                          IMG_SP_HARDWARE_GREEN
171 #define aniHW2                          IMG_SP_HARDWARE_BLUE
172 #define aniHW3                          IMG_SP_HARDWARE_RED
173 #define aniHW4                          IMG_SP_HARDWARE_YELLOW
174 #define aniHW5                          IMG_SP_HARDWARE_BASE_2
175 #define aniHW6                          IMG_SP_HARDWARE_BASE_3
176 #define aniHW7                          IMG_SP_HARDWARE_BASE_4
177 #define aniHW8                          IMG_SP_HARDWARE_BASE_5
178 #define aniHW9                          IMG_SP_HARDWARE_BASE_6
179 #define aniHWLast                       IMG_SP_HARDWARE_BASE_6
180 #define aniRAMTop                       IMG_SP_CHIP_TOP
181 #define aniRAMBottom                    IMG_SP_CHIP_BOTTOM
182 #define aniWallSpace                    IMG_INVISIBLE_WALL
183 #define aniHWTrash1                     
184 #define aniHWTrash2                     
185 #define aniHWMurphy                     
186
187
188 // graphics and animations related to in-game animations for element actions
189
190 #define aniMurphyDropping               IMG_SP_MURPHY_DROPPING
191
192 #define aniMurphySleepLeft              IMG_SP_MURPHY_SLEEPING_LEFT
193 #define aniMurphySleepRight             IMG_SP_MURPHY_SLEEPING_RIGHT
194 #define aniMurphyTouchLeft              IMG_SP_MURPHY_SNAPPING_LEFT
195 #define aniMurphyTouchRight             IMG_SP_MURPHY_SNAPPING_RIGHT
196 #define aniMurphyTouchUp                IMG_SP_MURPHY_SNAPPING_UP
197 #define aniMurphyTouchDown              IMG_SP_MURPHY_SNAPPING_DOWN
198 #define aniMurphyYawn                   IMG_SP_MURPHY_BORING_1
199 #define aniPushLeft                     IMG_SP_MURPHY_PUSHING_LEFT
200 #define aniPushRight                    IMG_SP_MURPHY_PUSHING_RIGHT
201 #define aniPushUpDown                   IMG_SP_MURPHY_PUSHING_RIGHT
202
203 #define aniBugActivating                IMG_SP_BUGGY_BASE_ACTIVATING
204 #define aniBugDeactivating              IMG_SP_BUGGY_BASE_ACTIVATING
205 #define aniBugActive                    IMG_SP_BUGGY_BASE_ACTIVE
206 #define aniZonkRollLeft                 IMG_SP_ZONK_MOVING_LEFT
207 #define aniZonkRollRight                IMG_SP_ZONK_MOVING_RIGHT
208 #define aniEatInfotronLeft              IMG_SP_MURPHY_COLLECTING_LEFT
209 #define aniEatInfotronRight             IMG_SP_MURPHY_COLLECTING_RIGHT
210 #define aniInfotronRollLeft             IMG_SP_INFOTRON_MOVING_LEFT
211 #define aniInfotronRollRight            IMG_SP_INFOTRON_MOVING_RIGHT
212 #define aniMurphyMoveLeft               IMG_SP_MURPHY_MOVING_LEFT
213 #define aniMurphyMoveRight              IMG_SP_MURPHY_MOVING_RIGHT
214 #define aniMurphyMoveUpLeft             IMG_SP_MURPHY_MOVING_LEFT
215 #define aniMurphyMoveUpRight            IMG_SP_MURPHY_MOVING_RIGHT
216 #define aniMurphyDigLeft                IMG_SP_MURPHY_DIGGING_LEFT
217 #define aniMurphyDigRight               IMG_SP_MURPHY_DIGGING_RIGHT
218 #define aniMurphyDigUpLeft              IMG_SP_MURPHY_DIGGING_LEFT
219 #define aniMurphyDigUpRight             IMG_SP_MURPHY_DIGGING_RIGHT
220 #define aniMurphyEatLeft                IMG_SP_MURPHY_COLLECTING_LEFT
221 #define aniMurphyEatRight               IMG_SP_MURPHY_COLLECTING_RIGHT
222 #define aniMurphyEatUpLeft              IMG_SP_MURPHY_COLLECTING_LEFT
223 #define aniMurphyEatUpRight             IMG_SP_MURPHY_COLLECTING_RIGHT
224 #define aniSplitUpDown                  IMG_SP_MURPHY
225 #define aniMurphyExit                   IMG_SP_MURPHY_SHRINKING
226 #define aniElectron                     IMG_SP_ELECTRON
227 #define aniExplosion                    IMG_SP_DEFAULT_EXPLODING
228 #define aniTouchBase                    IMG_SP_BASE_SNAPPING
229 #define aniTouchInfotron                IMG_SP_INFOTRON_COLLECTING
230 #define aniTouchRedDisk                 IMG_SP_DISK_RED_COLLECTING
231 #define aniYellowDisk                   IMG_SP_DISK_YELLOW
232 #define aniOrangeDisk                   IMG_SP_DISK_ORANGE
233 #define aniRedDisk                      IMG_SP_DISK_RED
234
235 #define aniSnikSnakDown                 IMG_SP_SNIKSNAK_DOWN
236 #define aniSnikSnakLeft                 IMG_SP_SNIKSNAK_LEFT
237 #define aniSnikSnakRight                IMG_SP_SNIKSNAK_RIGHT
238 #define aniSnikSnakUp                   IMG_SP_SNIKSNAK_UP
239
240 #define aniSnikSnakTurnLeftToUp         IMG_SP_SNIKSNAK_TURNING_FROM_LEFT_UP
241 #define aniSnikSnakTurnLeftToDown       IMG_SP_SNIKSNAK_TURNING_FROM_LEFT_DOWN
242 #define aniSnikSnakTurnRightToUp        IMG_SP_SNIKSNAK_TURNING_FROM_RIGHT_UP
243 #define aniSnikSnakTurnRightToDown      IMG_SP_SNIKSNAK_TURNING_FROM_RIGHT_DOWN
244 #define aniSnikSnakTurnUpToLeft         IMG_SP_SNIKSNAK_TURNING_FROM_UP_LEFT
245 #define aniSnikSnakTurnUpToRight        IMG_SP_SNIKSNAK_TURNING_FROM_UP_RIGHT
246 #define aniSnikSnakTurnDownToLeft       IMG_SP_SNIKSNAK_TURNING_FROM_DOWN_LEFT
247 #define aniSnikSnakTurnDownToRight      IMG_SP_SNIKSNAK_TURNING_FROM_DOWN_RIGHT
248
249 #define aniTerminalActive               IMG_SP_TERMINAL_ACTIVE
250
251 #define aniDefaultExplosion             IMG_SP_DEFAULT_EXPLODING
252 #define aniElectronExplosion            IMG_SP_ELECTRON_EXPLODING
253
254 #define imgFrameCorner                  IMG_SP_FRAME_CORNER
255 #define imgFrameHorizontal              IMG_SP_FRAME_HORIZONTAL
256 #define imgFrameVertical                IMG_SP_FRAME_VERTICAL
257
258 #else
259
260 #define aniMurphySleepLeft              (71)
261 #define aniMurphySleepRight             (68)
262 #define aniMurphyTouchDown              (47)
263 #define aniMurphyTouchLeft              (95)
264 #define aniMurphyTouchRight             (94)
265 #define aniMurphyTouchUp                (46)
266 #define aniMurphyYawn                   (56)
267 #define aniPushLeft                     (45)
268 #define aniPushRight                    (44)
269 #define aniPushUpDown                   (79)
270
271 #define aniSnikSnakDown                 (167)
272 #define aniSnikSnakLeft                 (239)
273 #define aniSnikSnakRight                (247)
274 #define aniSnikSnakUp                   (159)
275
276 #define aniTerminal                     (0x80)
277 #define aniTerminalActive               (0x88)
278
279 #define aniExplosionInfo                (111)
280
281 #define posFrameCorner                  (55)
282 #define posFrameHorizontal              (111)
283 #define posFrameVertical                (110)
284
285 #endif
286
287
288 #if 1
289
290 extern int aniFramesBug[], aniFramesZonkRollRight[], aniFramesZonkRollLeft[];
291 extern int aniFramesEatInfotronLeft[], aniFramesEatInfotronRight[];
292 extern int aniFramesInfotronRollRight[], aniFramesInfotronRollLeft[];
293 extern int aniFramesMurphyEatLeft[], aniFramesMurphyEatRight[];
294 extern int aniFramesMurphyEatUpLeft[], aniFramesMurphyEatUpRight[], aniFramesSplitUpDown[];
295 extern int aniFramesMurphyExit[];
296 extern int aniFramesSnikSnak[], aniFramesElectron[], aniFramesExplosion[];
297 extern int aniFramesTouchBase[], aniFramesTouchInfotron[], aniFramesTouchRedDisk[];
298 extern int aniFramesYellowDisk[], aniFramesOrangeDisk[], aniFramesRedDisk[];
299
300 #else
301
302 extern int *aniBug, *aniZonkRollRight, *aniZonkRollLeft;
303 extern int *aniEatInfotronLeft, *aniEatInfotronRight;
304 extern int *aniInfotronRollRight, *aniInfotronRollLeft;
305 extern int *aniMurphyEatLeft, *aniMurphyEatRight;
306 extern int *aniMurphyEatUpLeft, *aniMurphyEatUpRight, *aniSplitUpDown;
307 extern int *aniMurphyExit;
308 extern int *aniSnikSnak, *aniElectron, *aniExplosion;
309 extern int *aniTouchBase, *aniTouchInfotron, *aniTouchRedDisk;
310 extern int *aniYellowDisk, *aniOrangeDisk, *aniRedDisk;
311
312 #endif
313
314
315 // ----------------------------------------------------------------------------
316 // input keys
317 // ----------------------------------------------------------------------------
318
319 #if 1
320
321 #define keyNone                         (0)
322 #define keyUp                           (1)
323 #define keyLeft                         (2)
324 #define keyDown                         (3)
325 #define keyRight                        (4)
326 #define keySpaceUp                      (5)
327 #define keySpaceLeft                    (6)
328 #define keySpaceDown                    (7)
329 #define keySpaceRight                   (8)
330 #define keySpace                        (9)
331
332 #else
333
334 #define keyDown                         (3)
335 #define keyLeft                         (2)
336 #define keyNone                         (0)
337 #define keyRight                        (4)
338 #define keySpace                        (9)
339 #define keySpaceDown                    (7)
340 #define keySpaceLeft                    (6)
341 #define keySpaceRight                   (8)
342 #define keySpaceUp                      (5)
343 #define keyUp                           (1)
344
345 #endif
346
347
348 extern int GetSI(int X, int Y);
349 extern int GetStretchX(int si);
350 extern int GetStretchY(int si);
351 extern int GetX(int si);
352 extern int GetY(int si);
353 extern void InitGlobals();
354 extern void InitPseudoCompileFlags();
355
356 extern void ReadLevel();
357
358 extern int getSequenceLength(int sequence);
359 extern boolean isSnappingSequence(int sequence);
360
361 extern int fiGraphic[];
362 extern int aniSnikSnakTurningLeft[];
363 extern int aniSnikSnakTurningRight[];
364
365 extern boolean Alignments;
366 extern boolean BlockingSpeed;
367 extern boolean Cracked;
368 extern boolean Ctrl_Alt_Fix;
369 extern boolean Dead_Code;
370 extern boolean DebugSwitch;
371 extern boolean DemoRecordFix;
372 extern boolean EGA_Arg;
373 extern boolean EP_DEBUG;
374 extern boolean EP_DEMO;
375 extern boolean EP_ENHANCE;
376 extern boolean EP_OLD8;
377 extern boolean EXTRASPEED;
378 extern boolean HP_DEMO;
379 extern boolean LevelLoaded;
380 extern boolean Level_Arg;
381 extern boolean Level_Fix;
382 extern boolean Norm_Time;
383 extern boolean Original;
384 extern boolean Protection;
385 extern boolean Record_Fix;
386 extern boolean Redundant;
387 extern boolean SAVEGAME;
388 extern boolean SafeRecord;
389 extern boolean ScreenFix;
390 extern boolean SpeedKeys;
391 extern boolean TIMINGFIX;
392 extern boolean Ver62;
393 extern boolean Ver62test;
394 extern boolean Ver63;
395 extern boolean Ver64;
396 extern boolean bCapturePane;
397 extern byte *DisPlayField;
398 extern byte *PlayField8;
399 extern char *CurPath, *OrigPath, *TmpPath;
400 extern currency DeltaT;
401 extern int *PlayField16;
402
403 extern int FieldHeight;
404 extern int FieldMax, LevelMax;
405 extern int FieldWidth;
406 extern int FreezeZonks;
407 extern int HeaderSize;
408 extern int LevelNumber;
409 extern int TimerVar;
410 extern short RandomSeed;
411 extern long DeltaTPlay, DeltaTDemo;
412 extern long FileMax;
413 extern long SignatureDelay;
414
415 #endif /* GLOBALS_H */