1 /***********************************************************
2 * Rocks'n'Diamonds -- McDuffin Strikes Back! *
3 *----------------------------------------------------------*
4 * (c) 1995-2002 Artsoft Entertainment *
6 * Detmolder Strasse 189 *
9 * e-mail: info@artsoft.org *
10 *----------------------------------------------------------*
12 ***********************************************************/
14 #include "libgame/libgame.h"
23 Bitmap *pix[NUM_BITMAPS];
25 Bitmap *bitmap_db_field, *bitmap_db_door;
27 Pixmap tile_clipmask[NUM_TILES];
29 DrawBuffer *fieldbuffer;
30 DrawBuffer *drawto_field;
32 int game_status = MAINMENU;
33 boolean level_editor_test_game = FALSE;
34 boolean network_playing = FALSE;
36 int key_joystick_mapping = 0;
38 boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE];
39 int redraw_x1 = 0, redraw_y1 = 0;
41 short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
42 short Ur[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
43 short MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
44 short MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
45 short MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
46 short Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
47 short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
48 short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
49 boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
50 short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
51 short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
52 short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA];
53 short ExplodePhase[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
54 short ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
56 unsigned long Properties1[MAX_NUM_ELEMENTS];
57 unsigned long Properties2[MAX_NUM_ELEMENTS];
59 int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
60 short GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
62 int lev_fieldx,lev_fieldy, scroll_x,scroll_y;
64 int FX = SX, FY = SY, ScrollStepSize;
65 int ScreenMovDir = MV_NO_MOVING, ScreenMovPos = 0;
67 int BorderElement = EL_STEELWALL;
68 int GameFrameDelay = GAME_FRAME_DELAY;
69 int FfwdFrameDelay = FFWD_FRAME_DELAY;
70 int BX1 = 0, BY1 = 0, BX2 = SCR_FIELDX-1, BY2 = SCR_FIELDY-1;
71 int SBX_Left, SBX_Right;
72 int SBY_Upper, SBY_Lower;
73 int ZX,ZY, ExitX,ExitY;
76 int TimeFrames, TimePlayed, TimeLeft;
78 boolean network_player_action_received = FALSE;
80 struct LevelInfo level;
81 struct PlayerInfo stored_player[MAX_PLAYERS], *local_player = NULL;
82 struct HiScore highscore[MAX_SCORE_ENTRIES];
84 struct SetupInfo setup;
86 struct GlobalInfo global;
88 /* filenames of sound effects */
89 char *sound_name[NUM_SOUNDS] =
148 /* this is used to reduce memory usage of the different animation types */
149 int graphics_action_mapping[] =
151 0, /* GFX_ACTION_DEFAULT (0) */
152 0, /* GFX_ACTION_WAITING (1) */
154 1, /* GFX_ACTION_FALLING (2) */
155 2, /* GFX_ACTION_MOVING (3) */
156 3, /* GFX_ACTION_DIGGING (4) */
157 4, /* GFX_ACTION_SNAPPING (5) */
158 5, /* GFX_ACTION_COLLECTING (6) */
159 6, /* GFX_ACTION_PUSHING (7) */
161 7, /* GFX_ACTION_PASSING (8) */
162 7, /* GFX_ACTION_IMPACT (9) */
163 7, /* GFX_ACTION_CRACKING (10) */
164 7, /* GFX_ACTION_BREAKING (11) */
165 7, /* GFX_ACTION_ACTIVATING (12) */
166 7, /* GFX_ACTION_OPENING (13) */
167 7, /* GFX_ACTION_CLOSING (14) */
168 7, /* GFX_ACTION_EATING (15) */
169 7, /* GFX_ACTION_ATTACKING (16) */
170 7, /* GFX_ACTION_GROWING (17) */
171 7, /* GFX_ACTION_SHRINKING (18) */
172 7 /* GFX_ACTION_OTHER (19) */
175 struct FileInfo *image_files;
176 struct FileInfo *sound_files;
178 struct ElementInfo element_info[MAX_NUM_ELEMENTS] =
180 /* "real" level file elements */
182 { "empty_space", "empty space" }, /* 0 */
184 { "wall", "normal wall" },
185 { "wall", "round wall" },
188 { "emerald", "emerald" },
189 { "exit", "closed exit" },
190 { "player", "player" },
192 { "spaceship", "spaceship" }, /* 10 */
193 { "yamyam", "yam yam" },
194 { "robot", "robot" },
195 { "wall", "steel wall" },
196 { "diamond", "diamond" },
197 { "amoeba", "dead amoeba" },
198 { "quicksand", "empty quicksand" },
199 { "quicksand", "quicksand with rock" },
200 { "amoeba", "amoeba drop" },
202 { "magic_wall", "magic wall" }, /* 20 */
203 { "speed_pill", "speed pill" },
205 { "amoeba", "dropping amoeba" },
206 { "amoeba", "normal amoeba" },
207 { "nut", "nut with emerald" },
208 { "gameoflife", "Conway's wall of life" },
209 { "biomaze", "biomaze" },
210 { "dynamite", "burning dynamite" },
212 { "robot_wheel", "magic wheel" }, /* 30 */
213 { "robot_wheel", "magic wheel (running)" },
214 { "key", "red key" },
215 { "key", "yellow key" },
216 { "key", "green key" },
217 { "key", "blue key" },
218 { "gate", "red door" },
219 { "gate", "yellow door" },
220 { "gate", "green door" },
221 { "gate", "blue door" },
222 { "gate", "gray door (opened by red key)" }, /* 40 */
223 { "gate", "gray door (opened by yellow key)"},
224 { "gate", "gray door (opened by green key)"},
225 { "gate", "gray door (opened by blue key)"},
226 { "dynamite", "dynamite" },
227 { "pacman", "pac man" },
228 { "wall", "invisible normal wall" },
229 { "lamp", "lamp (off)" },
230 { "lamp", "lamp (on)" },
231 { "wall", "wall with emerald" },
232 { "wall", "wall with diamond" }, /* 50 */
233 { "amoeba", "amoeba with content" },
234 { "bd_amoeba", "amoeba (BD style)" },
235 { "time_orb_full", "time orb (full)" },
236 { "time_orb_empty", "time orb (empty)" },
237 { "wall", "growing wall" },
238 { "bd_diamond", "diamond (BD style)" },
239 { "emerald", "yellow emerald" },
240 { "wall", "wall with BD style diamond" },
241 { "wall", "wall with yellow emerald" },
242 { "dark_yamyam", "dark yam yam" }, /* 60 */
243 { "bd_magic_wall", "magic wall (BD style)" },
244 { "wall", "invisible steel wall" },
246 { NULL, "(not used)" },
248 { "dynabomb_nr", "increases number of bombs" },
249 { "dynabomb_sz", "increases explosion size" },
250 { "dynabomb_xl", "increases power of explosion" },
251 { "sokoban_object", "sokoban object" },
252 { "sokoban_field", "sokoban empty field" },
253 { "sokoban_field", "sokoban field with object" },
254 { "bd_butterfly", "butterfly (starts moving right)"}, /* 70 */
255 { "bd_butterfly", "butterfly (starts moving up)" },
256 { "bd_butterfly", "butterfly (starts moving left)"},
257 { "bd_butterfly", "butterfly (starts moving down)"},
258 { "bd_firefly", "firefly (starts moving right)" },
259 { "bd_firefly", "firefly (starts moving up)" },
260 { "bd_firefly", "firefly (starts moving left)" },
261 { "bd_firefly", "firefly (starts moving down)" },
262 { "bd_butterfly", "butterfly" },
263 { "bd_firefly", "firefly" },
264 { "player", "yellow player" }, /* 80 */
265 { "player", "red player" },
266 { "player", "green player" },
267 { "player", "blue player" },
268 { "bug", "bug (starts moving right)" },
269 { "bug", "bug (starts moving up)" },
270 { "bug", "bug (starts moving left)" },
271 { "bug", "bug (starts moving down)" },
272 { "spaceship", "spaceship (starts moving right)"},
273 { "spaceship", "spaceship (starts moving up)" },
274 { "spaceship", "spaceship (starts moving left)"}, /* 90 */
275 { "spaceship", "spaceship (starts moving down)"},
276 { "pacman", "pac man (starts moving right)" },
277 { "pacman", "pac man (starts moving up)" },
278 { "pacman", "pac man (starts moving left)" },
279 { "pacman", "pac man (starts moving down)" },
280 { "emerald", "red emerald" },
281 { "emerald", "purple emerald" },
282 { "wall", "wall with red emerald" },
283 { "wall", "wall with purple emerald" },
284 { "wall", "acid pool (top left)" }, /* 100 */
285 { "wall", "acid pool (top right)" },
286 { "wall", "acid pool (bottom left)" },
287 { "wall", "acid pool (bottom)" },
288 { "wall", "acid pool (bottom right)" },
289 { "wall", "normal wall (BD style)" },
290 { "bd_rock", "rock (BD style)" },
291 { "exit", "open exit" },
292 { NULL, "black orb bomb" },
293 { "amoeba", "amoeba" },
294 { "mole", "mole" }, /* 110 */
295 { "penguin", "penguin" },
296 { "satellite", "satellite" },
297 { NULL, "arrow left" },
298 { NULL, "arrow right" },
299 { NULL, "arrow up" },
300 { NULL, "arrow down" },
302 { "dragon", "fire breathing dragon" },
303 { "key", "red key (EM style)" },
304 { NULL, "letter ' '" }, /* 120 */
305 { NULL, "letter '!'" },
306 { NULL, "letter '\"'" },
307 { NULL, "letter '#'" },
308 { NULL, "letter '$'" },
309 { NULL, "letter '%'" },
310 { NULL, "letter '&'" },
311 { NULL, "letter '''" },
312 { NULL, "letter '('" },
313 { NULL, "letter ')'" },
314 { NULL, "letter '*'" }, /* 130 */
315 { NULL, "letter '+'" },
316 { NULL, "letter ','" },
317 { NULL, "letter '-'" },
318 { NULL, "letter '.'" },
319 { NULL, "letter '/'" },
320 { NULL, "letter '0'" },
321 { NULL, "letter '1'" },
322 { NULL, "letter '2'" },
323 { NULL, "letter '3'" },
324 { NULL, "letter '4'" }, /* 140 */
325 { NULL, "letter '5'" },
326 { NULL, "letter '6'" },
327 { NULL, "letter '7'" },
328 { NULL, "letter '8'" },
329 { NULL, "letter '9'" },
330 { NULL, "letter ':'" },
331 { NULL, "letter ';'" },
332 { NULL, "letter '<'" },
333 { NULL, "letter '='" },
334 { NULL, "letter '>'" }, /* 150 */
335 { NULL, "letter '?'" },
336 { NULL, "letter '@'" },
337 { NULL, "letter 'A'" },
338 { NULL, "letter 'B'" },
339 { NULL, "letter 'C'" },
340 { NULL, "letter 'D'" },
341 { NULL, "letter 'E'" },
342 { NULL, "letter 'F'" },
343 { NULL, "letter 'G'" },
344 { NULL, "letter 'H'" }, /* 160 */
345 { NULL, "letter 'I'" },
346 { NULL, "letter 'J'" },
347 { NULL, "letter 'K'" },
348 { NULL, "letter 'L'" },
349 { NULL, "letter 'M'" },
350 { NULL, "letter 'N'" },
351 { NULL, "letter 'O'" },
352 { NULL, "letter 'P'" },
353 { NULL, "letter 'Q'" },
354 { NULL, "letter 'R'" }, /* 170 */
355 { NULL, "letter 'S'" },
356 { NULL, "letter 'T'" },
357 { NULL, "letter 'U'" },
358 { NULL, "letter 'V'" },
359 { NULL, "letter 'W'" },
360 { NULL, "letter 'X'" },
361 { NULL, "letter 'Y'" },
362 { NULL, "letter 'Z'" },
363 { NULL, "letter 'Ä'" },
364 { NULL, "letter 'Ö'" }, /* 180 */
365 { NULL, "letter 'Ü'" },
366 { NULL, "letter '^'" },
367 { NULL, "letter ''" },
368 { NULL, "letter ''" },
369 { NULL, "letter ''" },
370 { NULL, "letter ''" },
371 { NULL, "letter ''" },
372 { NULL, "letter ''" },
373 { NULL, "letter ''" },
374 { NULL, "letter ''" }, /* 190 */
375 { NULL, "letter ''" },
376 { NULL, "letter ''" },
377 { NULL, "letter ''" },
378 { NULL, "letter ''" },
379 { NULL, "letter ''" },
380 { NULL, "letter ''" },
381 { NULL, "letter ''" },
382 { NULL, "letter ''" },
383 { NULL, "letter ''" },
384 { "wall", "growing wall (horizontal)" }, /* 200 */
385 { "wall", "growing wall (vertical)" },
386 { "wall", "growing wall (all directions)" },
387 { "gate", "red door (EM style)" },
388 { "gate", "yellow door (EM style)" },
389 { "gate", "green door (EM style)" },
390 { "gate", "blue door (EM style)" },
391 { "key", "yellow key (EM style)" },
392 { "key", "green key (EM style)" },
393 { "key", "blue key (EM style)" },
394 { "empty_space", "empty space" }, /* 210 */
395 { "sp_zonk", "zonk" },
396 { "sp_base", "base" },
397 { "player", "murphy" },
398 { "sp_infotron", "infotron" },
399 { "wall", "chip (single)" },
400 { "wall", "hardware" },
401 { "sp_exit", "exit" },
402 { "sp_disk_orange", "orange disk" },
403 { "sp_port", "port (leading right)" },
404 { "sp_port", "port (leading down)" }, /* 220 */
405 { "sp_port", "port (leading left)" },
406 { "sp_port", "port (leading up)" },
407 { "sp_port", "port (leading right)" },
408 { "sp_port", "port (leading down)" },
409 { "sp_port", "port (leading left)" },
410 { "sp_port", "port (leading up)" },
411 { "sp_sniksnak", "snik snak" },
412 { "sp_disk_yellow", "yellow disk" },
413 { "sp_terminal", "terminal" },
414 { "sp_disk_red", "red disk" }, /* 230 */
415 { "sp_port", "port (vertical)" },
416 { "sp_port", "port (horizontal)" },
417 { "sp_port", "port (all directions)" },
418 { "sp_electron", "electron" },
419 { "sp_buggy_base", "buggy base" },
420 { "wall", "chip (left half)" },
421 { "wall", "chip (right half)" },
422 { "wall", "hardware" },
423 { "wall", "hardware" },
424 { "wall", "hardware" }, /* 240 */
425 { "wall", "hardware" },
426 { "wall", "hardware" },
427 { "wall", "hardware" },
428 { "wall", "hardware" },
429 { "wall", "hardware" },
430 { "wall", "hardware" },
431 { "wall", "hardware" },
432 { "wall", "chip (upper half)" },
433 { "wall", "chip (lower half)" },
434 { "gate", "gray door (EM style, red key)" }, /* 250 */
435 { "gate", "gray door (EM style, yellow key)"},
436 { "gate", "gray door (EM style, green key)"},
437 { "gate", "gray door (EM style, blue key)"},
439 { NULL, "(not used)" },
440 { NULL, "(not used)" },
444 { "pearl", "pearl" }, /* (256) */
445 { "crystal", "crystal" },
446 { "wall", "wall with pearl" },
447 { "wall", "wall with crystal" },
448 { "gate", "white door" }, /* 260 */
449 { "gate", "gray door (opened by white key)"},
450 { "key", "white key" },
451 { "shield_normal", "shield (normal)" },
452 { "extra_time", "extra time" },
453 { "switchgate", "switch gate (open)" },
454 { "switchgate", "switch gate (closed)" },
455 { "switchgate_switch", "switch for switch gate" },
456 { "switchgate_switch", "switch for switch gate" },
458 { NULL, "-" }, /* 270 */
459 { "conveyor_belt", "red conveyor belt (left)" },
460 { "conveyor_belt", "red conveyor belt (middle)" },
461 { "conveyor_belt", "red conveyor belt (right)" },
462 { "conveyor_belt_switch", "switch for red conveyor belt (left)"},
463 { "conveyor_belt_switch", "switch for red conveyor belt (middle)"},
464 { "conveyor_belt_switch", "switch for red conveyor belt (right)"},
465 { "conveyor_belt", "yellow conveyor belt (left)" },
466 { "conveyor_belt", "yellow conveyor belt (middle)" },
467 { "conveyor_belt", "yellow conveyor belt (right)" },
468 { "conveyor_belt_switch", "switch for yellow conveyor belt (left)"},
469 { "conveyor_belt_switch", "switch for yellow conveyor belt (middle)"},
470 { "conveyor_belt_switch", "switch for yellow conveyor belt (right)"},
471 { "conveyor_belt", "green conveyor belt (left)" },
472 { "conveyor_belt", "green conveyor belt (middle)" },
473 { "conveyor_belt", "green conveyor belt (right)" },
474 { "conveyor_belt_switch", "switch for green conveyor belt (left)"},
475 { "conveyor_belt_switch", "switch for green conveyor belt (middle)"},
476 { "conveyor_belt_switch", "switch for green conveyor belt (right)"},
477 { "conveyor_belt", "blue conveyor belt (left)" },
478 { "conveyor_belt", "blue conveyor belt (middle)" },
479 { "conveyor_belt", "blue conveyor belt (right)" },
480 { "conveyor_belt_switch", "switch for blue conveyor belt (left)"},
481 { "conveyor_belt_switch", "switch for blue conveyor belt (middle)"},
482 { "conveyor_belt_switch", "switch for blue conveyor belt (right)"},
483 { "sand", "land mine" },
484 { "envelope", "mail envelope" },
485 { "light_switch", "light switch (off)" },
486 { "light_switch", "light switch (on)" },
487 { "wall", "sign (exclamation)" },
488 { "wall", "sign (radio activity)" }, /* 300 */
489 { "wall", "sign (stop)" },
490 { "wall", "sign (wheel chair)" },
491 { "wall", "sign (parking)" },
492 { "wall", "sign (one way)" },
493 { "wall", "sign (heart)" },
494 { "wall", "sign (triangle)" },
495 { "wall", "sign (round)" },
496 { "wall", "sign (exit)" },
497 { "wall", "sign (yin yang)" },
498 { "wall", "sign (other)" }, /* 310 */
499 { "mole", "mole (starts moving left)" },
500 { "mole", "mole (starts moving right)" },
501 { "mole", "mole (starts moving up)" },
502 { "mole", "mole (starts moving down)" },
503 { "wall", "steel wall (slanted)" },
504 { "sand", "invisible sand" },
506 { NULL, "dx unknown element 15" },
507 { NULL, "dx unknown element 42" },
509 { NULL, "(not used)" },
510 { NULL, "(not used)" }, /* 320 */
512 { "shield_deadly", "shield (deadly, kills enemies)"},
513 { "timegate", "time gate (open)" },
514 { "timegate", "time gate (closed)" },
515 { "timegate_switch", "switch for time gate" },
516 { "timegate_switch", "switch for time gate" },
517 { "balloon", "balloon" },
518 { "balloon_switch", "send balloon to the left" },
519 { "balloon_switch", "send balloon to the right" },
520 { "balloon_switch", "send balloon up" },
521 { "balloon_switch", "send balloon down" }, /* 330 */
522 { "balloon_switch", "send balloon in any direction" },
523 { "wall", "steel wall" },
524 { "wall", "steel wall" },
525 { "wall", "steel wall" },
526 { "wall", "steel wall" },
527 { "wall", "normal wall" },
528 { "wall", "normal wall" },
529 { "wall", "normal wall" },
530 { "wall", "normal wall" },
531 { "wall", "normal wall" }, /* 340 */
532 { "wall", "normal wall" },
533 { "wall", "normal wall" },
534 { "wall", "normal wall" },
535 { "tube", "tube (all directions)" },
536 { "tube", "tube (vertical)" },
537 { "tube", "tube (horizontal)" },
538 { "tube", "tube (vertical & left)" },
539 { "tube", "tube (vertical & right)" },
540 { "tube", "tube (horizontal & up)" },
541 { "tube", "tube (horizontal & down)" }, /* 350 */
542 { "tube", "tube (left & up)" },
543 { "tube", "tube (left & down)" },
544 { "tube", "tube (right & up)" },
545 { "tube", "tube (right & down)" },
546 { "spring", "spring" },
548 { "dx_bomb", "stable bomb (DX style)" },
551 { "custom", "custom element 1" }, /* 360 */
552 { "custom", "custom element 2" },
553 { "custom", "custom element 3" },
554 { "custom", "custom element 4" },
555 { "custom", "custom element 5" },
556 { "custom", "custom element 6" },
557 { "custom", "custom element 7" },
558 { "custom", "custom element 8" },
559 { "custom", "custom element 9" },
560 { "custom", "custom element 10" },
561 { "custom", "custom element 11" }, /* 370 */
562 { "custom", "custom element 12" },
563 { "custom", "custom element 13" },
564 { "custom", "custom element 14" },
565 { "custom", "custom element 15" },
566 { "custom", "custom element 16" },
567 { "custom", "custom element 17" },
568 { "custom", "custom element 18" },
569 { "custom", "custom element 19" },
570 { "custom", "custom element 20" },
571 { "custom", "custom element 21" }, /* 380 */
572 { "custom", "custom element 22" },
573 { "custom", "custom element 23" },
574 { "custom", "custom element 24" },
575 { "custom", "custom element 25" },
576 { "custom", "custom element 26" },
577 { "custom", "custom element 27" },
578 { "custom", "custom element 28" },
579 { "custom", "custom element 29" },
580 { "custom", "custom element 30" },
581 { "custom", "custom element 31" }, /* 390 */
582 { "custom", "custom element 32" },
583 { "custom", "custom element 33" },
584 { "custom", "custom element 34" },
585 { "custom", "custom element 35" },
586 { "custom", "custom element 36" },
587 { "custom", "custom element 37" },
588 { "custom", "custom element 38" },
589 { "custom", "custom element 39" },
590 { "custom", "custom element 40" },
591 { "custom", "custom element 41" }, /* 400 */
592 { "custom", "custom element 42" },
593 { "custom", "custom element 43" },
594 { "custom", "custom element 44" },
595 { "custom", "custom element 45" },
596 { "custom", "custom element 46" },
597 { "custom", "custom element 47" },
598 { "custom", "custom element 48" },
599 { "custom", "custom element 49" },
600 { "custom", "custom element 50" },
601 { "custom", "custom element 51" }, /* 410 */
602 { "custom", "custom element 52" },
603 { "custom", "custom element 53" },
604 { "custom", "custom element 54" },
605 { "custom", "custom element 55" },
606 { "custom", "custom element 56" },
607 { "custom", "custom element 57" },
608 { "custom", "custom element 58" },
609 { "custom", "custom element 59" },
610 { "custom", "custom element 60" },
611 { "custom", "custom element 61" }, /* 420 */
612 { "custom", "custom element 62" },
613 { "custom", "custom element 63" },
614 { "custom", "custom element 64" },
615 { "custom", "custom element 65" },
616 { "custom", "custom element 66" },
617 { "custom", "custom element 67" },
618 { "custom", "custom element 68" },
619 { "custom", "custom element 69" },
620 { "custom", "custom element 70" },
621 { "custom", "custom element 71" }, /* 430 */
622 { "custom", "custom element 72" },
623 { "custom", "custom element 73" },
624 { "custom", "custom element 74" },
625 { "custom", "custom element 75" },
626 { "custom", "custom element 76" },
627 { "custom", "custom element 77" },
628 { "custom", "custom element 78" },
629 { "custom", "custom element 79" },
630 { "custom", "custom element 80" },
631 { "custom", "custom element 81" }, /* 440 */
632 { "custom", "custom element 82" },
633 { "custom", "custom element 83" },
634 { "custom", "custom element 84" },
635 { "custom", "custom element 85" },
636 { "custom", "custom element 86" },
637 { "custom", "custom element 87" },
638 { "custom", "custom element 88" },
639 { "custom", "custom element 89" },
640 { "custom", "custom element 90" },
641 { "custom", "custom element 91" }, /* 450 */
642 { "custom", "custom element 92" },
643 { "custom", "custom element 93" },
644 { "custom", "custom element 94" },
645 { "custom", "custom element 95" },
646 { "custom", "custom element 96" },
647 { "custom", "custom element 97" },
648 { "custom", "custom element 98" },
649 { "custom", "custom element 99" },
650 { "custom", "custom element 100" },
651 { "custom", "custom element 101" }, /* 460 */
652 { "custom", "custom element 102" },
653 { "custom", "custom element 103" },
654 { "custom", "custom element 104" },
655 { "custom", "custom element 105" },
656 { "custom", "custom element 106" },
657 { "custom", "custom element 107" },
658 { "custom", "custom element 108" },
659 { "custom", "custom element 109" },
660 { "custom", "custom element 110" },
661 { "custom", "custom element 111" }, /* 470 */
662 { "custom", "custom element 112" },
663 { "custom", "custom element 113" },
664 { "custom", "custom element 114" },
665 { "custom", "custom element 115" },
666 { "custom", "custom element 116" },
667 { "custom", "custom element 117" },
668 { "custom", "custom element 118" },
669 { "custom", "custom element 119" },
670 { "custom", "custom element 120" },
671 { "custom", "custom element 121" }, /* 480 */
672 { "custom", "custom element 122" },
673 { "custom", "custom element 123" },
674 { "custom", "custom element 124" },
675 { "custom", "custom element 125" },
676 { "custom", "custom element 126" },
677 { "custom", "custom element 127" },
678 { "custom", "custom element 128" },
680 /* "real" (and therefore drawable) runtime elements */
682 { "magic_wall", "-" },
683 { "magic_wall", "-" },
684 { "magic_wall", "-" }, /* 490 */
685 { "magic_wall", "-" },
689 { "sp_terminal", "-" },
690 { "sp_buggy_base", "-" },
694 { "key", "-" }, /* 500 */
699 { "switchgate", "-" },
700 { "switchgate", "-" },
704 { "trap", "-" }, /* 510 */
705 { "murphy_clone", "-" },
706 { "quicksand", "-" },
707 { "magic_wall", "-" },
708 { "magic_wall", "-" },
714 { "conveyor_belt", "-" }, /* 520 */
715 { "conveyor_belt", "-" },
716 { "conveyor_belt", "-" },
717 { "conveyor_belt", "-" },
718 { "conveyor_belt", "-" },
719 { "conveyor_belt", "-" },
720 { "conveyor_belt", "-" },
721 { "conveyor_belt", "-" },
722 { "conveyor_belt", "-" },
723 { "conveyor_belt", "-" },
724 { "conveyor_belt", "-" }, /* 530 */
725 { "conveyor_belt", "-" },
731 struct GraphicInfo graphic_info[MAX_GRAPHICS];
733 struct NewGraphicInfo new_graphic_info[NUM_IMAGE_FILES];
736 /* ========================================================================= */
738 /* ========================================================================= */
740 int main(int argc, char *argv[])
742 InitCommandName(argv[0]);
743 InitExitFunction(CloseAllAndExit);
744 InitPlatformDependantStuff();
752 return 0; /* to keep compilers happy */