#define MAX_TAPELEN (1000 * 50) /* max. time * framerate */
#define MAX_LEVDIR_ENTRIES 100
#define MAX_SCORE_ENTRIES 100
-#define MAX_ELEMENTS 512
+#define MAX_ELEMENTS 700 /* 500 static + 200 runtime */
#define MAX_NUM_AMOEBA 100
/* values for elements with content */
boolean magic_wall_active;
int magic_wall_time_left;
int belt_dir[4];
+ int belt_dir_nr[4];
+ int switchgate_pos;
+ int light_time_left;
};
struct GlobalInfo
#define MICRO_GFX_PER_LINE 128
#define HEROES_PER_LINE 16
+
#define MINI_SP_STARTX 0
#define MINI_SP_STARTY 352
#define MICRO_SP_STARTX 0
#define MINI_DC_STARTX 256
#define MINI_DC_STARTY 0
-#define MICRO_DC_STARTX 0
-#define MICRO_DC_STARTY 0
+#define MICRO_DC_STARTX 256
+#define MICRO_DC_STARTY 384
#define DC_PER_LINE 8
#define MINI_DC_PER_LINE 8
-#define MICRO_DC_PER_LINE 32
+#define MICRO_DC_PER_LINE 8
#define FONT_CHARS_PER_LINE 16
#define FONT_LINES_PER_FONT 4
/* game elements:
-** 0 - 1000: real elements, stored in level file
-** 1000 - 2000: flag elements, only used at runtime
+** 0 - 499: real elements, stored in level file
+** 500 - 699: flag elements, only used at runtime
*/
/* "real" level elements */
#define EL_LEERRAUM 0
#define EL_EXTRA_TIME 264
#define EL_SWITCHGATE_OPEN 265
#define EL_SWITCHGATE_CLOSED 266
-#define EL_SWITCHGATE_SWITCH_L 267
-#define EL_SWITCHGATE_SWITCH_R 268
+#define EL_SWITCHGATE_SWITCH_1 267
+#define EL_SWITCHGATE_SWITCH_2 268
#define EL_TIME_GATE 269
#define EL_TIME_GATE_WHEEL 270
#define EL_BELT1_LEFT 271
#define EL_BELT4_SWITCH_R 294
#define EL_LANDMINE 295
#define EL_ENVELOPE 296
-#define EL_LIGHT_SWITCH 297
-#define EL_SIGN_EXCLAMATION 298
-#define EL_SIGN_RADIOACTIVITY 299
-#define EL_SIGN_STOP 300
-#define EL_SIGN_WHEELCHAIR 301
-#define EL_SIGN_PARKING 302
-#define EL_SIGN_ONEWAY 303
-#define EL_SIGN_HEART 304
-#define EL_SIGN_TRIANGLE 305
-#define EL_SIGN_ROUND 306
-#define EL_SIGN_EXIT 307
-#define EL_SIGN_YINYANG 308
-#define EL_SIGN_OTHER 309
-#define EL_MOLE_LEFT 310
-#define EL_MOLE_RIGHT 311
-#define EL_MOLE_UP 312
-#define EL_MOLE_DOWN 313
-#define EL_STEEL_SLANTED 314
-#define EL_SAND_INVISIBLE 315
+#define EL_LIGHT_SWITCH_OFF 297
+#define EL_LIGHT_SWITCH_ON 298
+#define EL_SIGN_EXCLAMATION 299
+#define EL_SIGN_RADIOACTIVITY 300
+#define EL_SIGN_STOP 301
+#define EL_SIGN_WHEELCHAIR 302
+#define EL_SIGN_PARKING 303
+#define EL_SIGN_ONEWAY 304
+#define EL_SIGN_HEART 305
+#define EL_SIGN_TRIANGLE 306
+#define EL_SIGN_ROUND 307
+#define EL_SIGN_EXIT 308
+#define EL_SIGN_YINYANG 309
+#define EL_SIGN_OTHER 310
+#define EL_MOLE_LEFT 311
+#define EL_MOLE_RIGHT 312
+#define EL_MOLE_UP 313
+#define EL_MOLE_DOWN 314
+#define EL_STEEL_SLANTED 315
+#define EL_SAND_INVISIBLE 316
/* "real" (and therefore drawable) runtime elements */
-#define EL_SIEB_LEER 1000
-#define EL_SIEB2_LEER 1001
-#define EL_SIEB_VOLL 1002
-#define EL_SIEB2_VOLL 1003
-#define EL_SIEB_TOT 1004
-#define EL_SIEB2_TOT 1005
-#define EL_AUSGANG_ACT 1006
-#define EL_SP_TERMINAL_ACTIVE 1007
-#define EL_SP_BUG_ACTIVE 1008
-#define EL_EM_KEY_1 1009
-#define EL_EM_KEY_2 1010
-#define EL_EM_KEY_3 1011
-#define EL_EM_KEY_4 1012
-#define EL_DYNABOMB_ACTIVE_1 1013
-#define EL_DYNABOMB_ACTIVE_2 1014
-#define EL_DYNABOMB_ACTIVE_3 1015
-#define EL_DYNABOMB_ACTIVE_4 1016
+#define EL_SIEB_LEER 500
+#define EL_SIEB2_LEER 501
+#define EL_SIEB_VOLL 502
+#define EL_SIEB2_VOLL 503
+#define EL_SIEB_TOT 504
+#define EL_SIEB2_TOT 505
+#define EL_AUSGANG_ACT 506
+#define EL_SP_TERMINAL_ACTIVE 507
+#define EL_SP_BUG_ACTIVE 508
+#define EL_EM_KEY_1 509
+#define EL_EM_KEY_2 510
+#define EL_EM_KEY_3 511
+#define EL_EM_KEY_4 512
+#define EL_DYNABOMB_ACTIVE_1 513
+#define EL_DYNABOMB_ACTIVE_2 514
+#define EL_DYNABOMB_ACTIVE_3 515
+#define EL_DYNABOMB_ACTIVE_4 516
+#define EL_SWITCHGATE_OPENING 517
+#define EL_SWITCHGATE_CLOSING 518
/* "unreal" (and therefore not drawable) runtime elements */
-#define EL_BLOCKED 2000
-#define EL_EXPLODING 2001
-#define EL_CRACKINGNUT 2002
-#define EL_BLURB_LEFT 2003
-#define EL_BLURB_RIGHT 2004
-#define EL_AMOEBING 2005
-#define EL_MAUERND 2006
-#define EL_BURNING 2007
-#define EL_PLAYER_IS_LEAVING 2008
+#define EL_BLOCKED 600
+#define EL_EXPLODING 601
+#define EL_CRACKINGNUT 602
+#define EL_BLURB_LEFT 603
+#define EL_BLURB_RIGHT 604
+#define EL_AMOEBING 605
+#define EL_MAUERND 606
+#define EL_BURNING 607
+#define EL_PLAYER_IS_LEAVING 608
/* game graphics:
** 0 - 255: graphics from "RocksScreen"
#define GFX_SP_CHIP_UPPER (GFX_START_ROCKSSP + 4 * SP_PER_LINE + 6)
#define GFX_SP_CHIP_LOWER (GFX_START_ROCKSSP + 4 * SP_PER_LINE + 7)
+#define GFX_INVISIBLE_STEEL_ON (GFX_START_ROCKSSP + 5 * SP_PER_LINE + 1)
+#define GFX_SAND_INVISIBLE_ON (GFX_START_ROCKSSP + 5 * SP_PER_LINE + 2)
#define GFX_INVISIBLE_STEEL (GFX_START_ROCKSSP + 5 * SP_PER_LINE + 3)
+#define GFX_UNSICHTBAR_ON (GFX_START_ROCKSSP + 5 * SP_PER_LINE + 5)
+#define GFX_SAND_INVISIBLE (GFX_START_ROCKSSP + 5 * SP_PER_LINE + 6)
#define GFX_UNSICHTBAR (GFX_START_ROCKSSP + 5 * SP_PER_LINE + 7)
+
#define GFX_SP_ZONK (GFX_START_ROCKSSP + 6 * SP_PER_LINE + 0)
#define GFX_EM_KEY_1 (GFX_START_ROCKSSP + 6 * SP_PER_LINE + 4)
#define GFX_BELT3_SWITCH_R (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 2)
#define GFX_BELT4_SWITCH_R (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 3)
+#define GFX_SWITCHGATE_OPEN (GFX_START_ROCKSDC + 15 * DC_PER_LINE + 4)
+#define GFX_SWITCHGATE_CLOSED (GFX_START_ROCKSDC + 15 * DC_PER_LINE + 0)
+#define GFX_SWITCHGATE_SWITCH_1 (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 4)
+#define GFX_SWITCHGATE_SWITCH_2 (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 5)
+#define GFX_LIGHT_SWITCH_OFF (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 6)
+#define GFX_LIGHT_SWITCH_ON (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 7)
+
+#define GFX_ENVELOPE (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 4)
+#define GFX_SIGN_EXCLAMATION (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 5)
+#define GFX_SIGN_STOP (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 6)
+#define GFX_LANDMINE (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 7)
+#define GFX_STEEL_SLANTED (GFX_START_ROCKSDC + 15 * DC_PER_LINE + 5)
+
/* graphics from "RocksFont" */
#define GFX_CHAR_START (GFX_START_ROCKSFONT)
#define GFX_CHAR_ASCII0 (GFX_CHAR_START - 32)
#define GFX_KEY_WHITE GFX_CHAR_FRAGE
#define GFX_FORCE_FIELD GFX_CHAR_FRAGE
#define GFX_EXTRA_TIME GFX_CHAR_FRAGE
-#define GFX_SWITCHGATE_OPEN GFX_CHAR_FRAGE
-#define GFX_SWITCHGATE_CLOSED GFX_CHAR_FRAGE
-#define GFX_SWITCHGATE_SWITCH_L GFX_CHAR_FRAGE
-#define GFX_SWITCHGATE_SWITCH_R GFX_CHAR_FRAGE
#define GFX_TIME_GATE GFX_CHAR_FRAGE
#define GFX_TIME_GATE_WHEEL GFX_CHAR_FRAGE
-
-/*
-#define GFX_BELT1_LEFT GFX_CHAR_FRAGE
-#define GFX_BELT1_MIDDLE GFX_CHAR_FRAGE
-#define GFX_BELT1_RIGHT GFX_CHAR_FRAGE
-#define GFX_BELT1_SWITCH_L GFX_CHAR_FRAGE
-#define GFX_BELT1_SWITCH_M GFX_CHAR_FRAGE
-#define GFX_BELT1_SWITCH_R GFX_CHAR_FRAGE
-#define GFX_BELT2_LEFT GFX_CHAR_FRAGE
-#define GFX_BELT2_MIDDLE GFX_CHAR_FRAGE
-#define GFX_BELT2_RIGHT GFX_CHAR_FRAGE
-#define GFX_BELT2_SWITCH_L GFX_CHAR_FRAGE
-#define GFX_BELT2_SWITCH_M GFX_CHAR_FRAGE
-#define GFX_BELT2_SWITCH_R GFX_CHAR_FRAGE
-#define GFX_BELT3_LEFT GFX_CHAR_FRAGE
-#define GFX_BELT3_MIDDLE GFX_CHAR_FRAGE
-#define GFX_BELT3_RIGHT GFX_CHAR_FRAGE
-#define GFX_BELT3_SWITCH_L GFX_CHAR_FRAGE
-#define GFX_BELT3_SWITCH_M GFX_CHAR_FRAGE
-#define GFX_BELT3_SWITCH_R GFX_CHAR_FRAGE
-#define GFX_BELT4_LEFT GFX_CHAR_FRAGE
-#define GFX_BELT4_MIDDLE GFX_CHAR_FRAGE
-#define GFX_BELT4_RIGHT GFX_CHAR_FRAGE
-#define GFX_BELT4_SWITCH_L GFX_CHAR_FRAGE
-#define GFX_BELT4_SWITCH_M GFX_CHAR_FRAGE
-#define GFX_BELT4_SWITCH_R GFX_CHAR_FRAGE
-*/
-
-#define GFX_LANDMINE GFX_CHAR_FRAGE
-#define GFX_ENVELOPE GFX_CHAR_FRAGE
-#define GFX_LIGHT_SWITCH GFX_CHAR_FRAGE
-#define GFX_SIGN_EXCLAMATION GFX_CHAR_FRAGE
#define GFX_SIGN_RADIOACTIVITY GFX_CHAR_FRAGE
-#define GFX_SIGN_STOP GFX_CHAR_FRAGE
#define GFX_SIGN_WHEELCHAIR GFX_CHAR_FRAGE
#define GFX_SIGN_PARKING GFX_CHAR_FRAGE
#define GFX_SIGN_ONEWAY GFX_CHAR_FRAGE
#define GFX_MOLE_RIGHT GFX_CHAR_FRAGE
#define GFX_MOLE_UP GFX_CHAR_FRAGE
#define GFX_MOLE_DOWN GFX_CHAR_FRAGE
-#define GFX_STEEL_SLANTED GFX_CHAR_FRAGE
-#define GFX_SAND_INVISIBLE GFX_CHAR_FRAGE
/* the names of the sounds */
#define SND_ALCHEMY 0