-#define IS_FILE_ELEMENT(e) ((e) >= 0 && \
- (e) <= NUM_FILE_ELEMENTS)
-
-#define IS_DRAWABLE_ELEMENT(e) ((e) >= 0 && \
- (e) <= NUM_DRAWABLE_ELEMENTS)
-
-#define IS_RUNTIME_ELEMENT(e) ((e) >= 0 && \
- (e) <= NUM_RUNTIME_ELEMENTS)
-
-#define IS_VALID_ELEMENT(e) ((e) >= 0 && \
- (e) <= MAX_NUM_ELEMENTS)
-
-#define IS_CUSTOM_ELEMENT(e) ((e) >= EL_CUSTOM_START && \
- (e) <= EL_CUSTOM_END)
-
-#define IS_GROUP_ELEMENT(e) ((e) >= EL_GROUP_START && \
- (e) <= EL_GROUP_END)
-
-#define IS_CLIPBOARD_ELEMENT(e) ((e) >= EL_INTERNAL_CLIPBOARD_START && \
- (e) <= EL_INTERNAL_CLIPBOARD_END)
-
-#define IS_INTERNAL_ELEMENT(e) ((e) >= EL_INTERNAL_START && \
- (e) <= EL_INTERNAL_END)
-
-#define IS_MM_ELEMENT_1(e) ((e) >= EL_MM_START_1 && \
- (e) <= EL_MM_END_1)
-#define IS_MM_ELEMENT_2(e) ((e) >= EL_MM_START_2 && \
- (e) <= EL_MM_END_2)
-#define IS_MM_ELEMENT_3(e) ((e) >= EL_MM_START_3 && \
- (e) <= EL_MM_END_3)
-#define IS_MM_ELEMENT(e) (IS_MM_ELEMENT_1(e) || \
- IS_MM_ELEMENT_2(e) || \
- IS_MM_ELEMENT_3(e))
-
-#define IS_DF_ELEMENT_1(e) ((e) >= EL_DF_START_1 && \
- (e) <= EL_DF_END_1)
-#define IS_DF_ELEMENT_2(e) ((e) >= EL_DF_START_2 && \
- (e) <= EL_DF_END_2)
-#define IS_DF_ELEMENT(e) (IS_DF_ELEMENT_1(e) || \
- IS_DF_ELEMENT_2(e))
-
-#define IS_MM_MCDUFFIN(e) ((e) >= EL_MM_MCDUFFIN_START && \
- (e) <= EL_MM_MCDUFFIN_END)
-
-#define IS_DF_LASER(e) ((e) >= EL_DF_LASER_START && \
- (e) <= EL_DF_LASER_END)
-
-#define IS_MM_WALL(e) (((e) >= EL_MM_WALL_START && \
- (e) <= EL_MM_WALL_END) || \
- ((e) >= EL_DF_WALL_START && \
- (e) <= EL_DF_WALL_END))
-
-#define IS_DF_WALL(e) ((e) >= EL_DF_WALL_START && \
- (e) <= EL_DF_WALL_END)
-
-#define IS_MM_WALL_EDITOR(e) ((e) == EL_MM_STEEL_WALL || \
- (e) == EL_MM_WOODEN_WALL || \
- (e) == EL_MM_ICE_WALL || \
- (e) == EL_MM_AMOEBA_WALL || \
- (e) == EL_DF_STEEL_WALL || \
- (e) == EL_DF_WOODEN_WALL)
-
-#define IS_ENVELOPE(e) ((e) >= EL_ENVELOPE_1 && \
- (e) <= EL_ENVELOPE_4)
-
-#define IS_MM_ENVELOPE(e) ((e) >= EL_MM_ENVELOPE_1 && \
- (e) <= EL_MM_ENVELOPE_4)
-
-#define IS_BALLOON_ELEMENT(e) ((e) == EL_BALLOON || \
- (e) == EL_BALLOON_SWITCH_LEFT || \
- (e) == EL_BALLOON_SWITCH_RIGHT || \
- (e) == EL_BALLOON_SWITCH_UP || \
- (e) == EL_BALLOON_SWITCH_DOWN || \
- (e) == EL_BALLOON_SWITCH_ANY || \
- (e) == EL_BALLOON_SWITCH_NONE)
-
-#define IS_RND_KEY(e) ((e) >= EL_KEY_1 && \
- (e) <= EL_KEY_4)
-#define IS_EM_KEY(e) ((e) >= EL_EM_KEY_1 && \
- (e) <= EL_EM_KEY_4)
-#define IS_EMC_KEY(e) ((e) >= EL_EMC_KEY_5 && \
- (e) <= EL_EMC_KEY_8)
-#define IS_KEY(e) (IS_RND_KEY(e) || \
- IS_EM_KEY(e) || \
- IS_EMC_KEY(e))
-#define RND_KEY_NR(e) ((e) - EL_KEY_1)
-#define EM_KEY_NR(e) ((e) - EL_EM_KEY_1)
-#define EMC_KEY_NR(e) ((e) - EL_EMC_KEY_5 + 4)
-#define KEY_NR(e) (IS_RND_KEY(e) ? RND_KEY_NR(e) : \
- IS_EM_KEY(e) ? EM_KEY_NR(e) : \
- IS_EMC_KEY(e) ? EMC_KEY_NR(e) : 0)
-
-#define IS_RND_GATE(e) ((e) >= EL_GATE_1 && \
- (e) <= EL_GATE_4)
-#define IS_EM_GATE(e) ((e) >= EL_EM_GATE_1 && \
- (e) <= EL_EM_GATE_4)
-#define IS_EMC_GATE(e) ((e) >= EL_EMC_GATE_5 && \
- (e) <= EL_EMC_GATE_8)
-#define IS_DC_GATE(e) ((e) == EL_DC_GATE_WHITE)
-#define IS_GATE(e) (IS_RND_GATE(e) || \
- IS_EM_GATE(e) || \
- IS_EMC_GATE(e) || \
- IS_DC_GATE(e))
-#define RND_GATE_NR(e) ((e) - EL_GATE_1)
-#define EM_GATE_NR(e) ((e) - EL_EM_GATE_1)
-#define EMC_GATE_NR(e) ((e) - EL_EMC_GATE_5 + 4)
-#define GATE_NR(e) (IS_RND_GATE(e) ? RND_GATE_NR(e) : \
- IS_EM_GATE(e) ? EM_GATE_NR(e) : \
- IS_EMC_GATE(e) ? EMC_GATE_NR(e) : 0)
-
-#define IS_RND_GATE_GRAY(e) ((e) >= EL_GATE_1_GRAY && \
- (e) <= EL_GATE_4_GRAY)
-#define IS_RND_GATE_GRAY_ACTIVE(e) ((e) >= EL_GATE_1_GRAY_ACTIVE && \
- (e) <= EL_GATE_4_GRAY_ACTIVE)
-#define IS_EM_GATE_GRAY(e) ((e) >= EL_EM_GATE_1_GRAY && \
- (e) <= EL_EM_GATE_4_GRAY)
-#define IS_EM_GATE_GRAY_ACTIVE(e) ((e) >= EL_EM_GATE_1_GRAY_ACTIVE && \
- (e) <= EL_EM_GATE_4_GRAY_ACTIVE)
-#define IS_EMC_GATE_GRAY(e) ((e) >= EL_EMC_GATE_5_GRAY && \
- (e) <= EL_EMC_GATE_8_GRAY)
-#define IS_EMC_GATE_GRAY_ACTIVE(e) ((e) >= EL_EMC_GATE_5_GRAY_ACTIVE && \
- (e) <= EL_EMC_GATE_8_GRAY_ACTIVE)
-#define IS_DC_GATE_GRAY(e) ((e) == EL_DC_GATE_WHITE_GRAY)
-#define IS_DC_GATE_GRAY_ACTIVE(e) ((e) == EL_DC_GATE_WHITE_GRAY_ACTIVE)
-
-#define IS_GATE_GRAY(e) (IS_RND_GATE_GRAY(e) || \
- IS_EM_GATE_GRAY(e) || \
- IS_EMC_GATE_GRAY(e) || \
- IS_DC_GATE_GRAY(e))
-#define IS_GATE_GRAY_ACTIVE(e) (IS_RND_GATE_GRAY_ACTIVE(e) || \
- IS_EM_GATE_GRAY_ACTIVE(e) || \
- IS_EMC_GATE_GRAY_ACTIVE(e) || \
- IS_DC_GATE_GRAY_ACTIVE(e))
-#define RND_GATE_GRAY_NR(e) ((e) - EL_GATE_1_GRAY)
-#define RND_GATE_GRAY_ACTIVE_NR(e) ((e) - EL_GATE_1_GRAY_ACTIVE)
-#define EM_GATE_GRAY_NR(e) ((e) - EL_EM_GATE_1_GRAY)
-#define EM_GATE_GRAY_ACTIVE_NR(e) ((e) - EL_EM_GATE_1_GRAY_ACTIVE)
-#define EMC_GATE_GRAY_NR(e) ((e) - EL_EMC_GATE_5_GRAY + 4)
-#define EMC_GATE_GRAY_ACTIVE_NR(e) ((e) - EL_EMC_GATE_5_GRAY_ACTIVE + 4)
-#define GATE_GRAY_NR(e) (IS_RND_GATE_GRAY(e) ? RND_GATE_GRAY_NR(e) : \
- IS_EM_GATE_GRAY(e) ? EM_GATE_GRAY_NR(e) : \
- IS_EMC_GATE_GRAY(e) ? EMC_GATE_GRAY_NR(e) : 0)
-
-#define RND_ENVELOPE_NR(e) ((e) - EL_ENVELOPE_1)
-#define MM_ENVELOPE_NR(e) ((e) - EL_MM_ENVELOPE_1)
-#define ENVELOPE_NR(e) (IS_ENVELOPE(e) ? RND_ENVELOPE_NR(e) : \
- MM_ENVELOPE_NR(e))
-
-#define IS_ACID_POOL_OR_ACID(e) (IS_ACID_POOL(e) || (e) == EL_ACID)
-
-#define IS_EMC_PILLAR(e) ((e) >= EL_EMC_WALL_1 && \
- (e) <= EL_EMC_WALL_3)
-#define IS_SP_CHIP(e) ((e) == EL_SP_CHIP_SINGLE || \
- (e) == EL_SP_CHIP_LEFT || \
- (e) == EL_SP_CHIP_RIGHT || \
- (e) == EL_SP_CHIP_TOP || \
- (e) == EL_SP_CHIP_BOTTOM)
-#define IS_SP_HARDWARE_BASE(e) ((e) == EL_SP_HARDWARE_BASE_1 || \
- (e) == EL_SP_HARDWARE_BASE_2 || \
- (e) == EL_SP_HARDWARE_BASE_3 || \
- (e) == EL_SP_HARDWARE_BASE_4 || \
- (e) == EL_SP_HARDWARE_BASE_5 || \
- (e) == EL_SP_HARDWARE_BASE_6)
-
-#define IS_DC_STEELWALL_2(e) ((e) >= EL_DC_STEELWALL_2_LEFT && \
- (e) <= EL_DC_STEELWALL_2_SINGLE)
+#define IS_FILE_ELEMENT(e) ((e) >= 0 && \
+ (e) <= NUM_FILE_ELEMENTS)
+
+#define IS_DRAWABLE_ELEMENT(e) ((e) >= 0 && \
+ (e) <= NUM_DRAWABLE_ELEMENTS)
+
+#define IS_RUNTIME_ELEMENT(e) ((e) >= 0 && \
+ (e) <= NUM_RUNTIME_ELEMENTS)
+
+#define IS_VALID_ELEMENT(e) ((e) >= 0 && \
+ (e) <= MAX_NUM_ELEMENTS)
+
+#define IS_CUSTOM_ELEMENT(e) ((e) >= EL_CUSTOM_START && \
+ (e) <= EL_CUSTOM_END)
+
+#define IS_GROUP_ELEMENT(e) ((e) >= EL_GROUP_START && \
+ (e) <= EL_GROUP_END)
+
+#define IS_CLIPBOARD_ELEMENT(e) ((e) >= EL_INTERNAL_CLIPBOARD_START && \
+ (e) <= EL_INTERNAL_CLIPBOARD_END)
+
+#define IS_INTERNAL_ELEMENT(e) ((e) >= EL_INTERNAL_START && \
+ (e) <= EL_INTERNAL_END)
+
+#define IS_MM_ELEMENT_1(e) ((e) >= EL_MM_START_1 && \
+ (e) <= EL_MM_END_1)
+#define IS_MM_ELEMENT_2(e) ((e) >= EL_MM_START_2 && \
+ (e) <= EL_MM_END_2)
+#define IS_MM_ELEMENT_3(e) ((e) >= EL_MM_START_3 && \
+ (e) <= EL_MM_END_3)
+#define IS_MM_ELEMENT(e) (IS_MM_ELEMENT_1(e) || \
+ IS_MM_ELEMENT_2(e) || \
+ IS_MM_ELEMENT_3(e))
+
+#define IS_DF_ELEMENT_1(e) ((e) >= EL_DF_START_1 && \
+ (e) <= EL_DF_END_1)
+#define IS_DF_ELEMENT_2(e) ((e) >= EL_DF_START_2 && \
+ (e) <= EL_DF_END_2)
+#define IS_DF_ELEMENT(e) (IS_DF_ELEMENT_1(e) || \
+ IS_DF_ELEMENT_2(e))
+
+#define IS_MM_MCDUFFIN(e) ((e) >= EL_MM_MCDUFFIN_START && \
+ (e) <= EL_MM_MCDUFFIN_END)
+
+#define IS_DF_LASER(e) ((e) >= EL_DF_LASER_START && \
+ (e) <= EL_DF_LASER_END)
+
+#define IS_MM_WALL(e) (((e) >= EL_MM_WALL_START && \
+ (e) <= EL_MM_WALL_END) || \
+ ((e) >= EL_DF_WALL_START && \
+ (e) <= EL_DF_WALL_END))
+
+#define IS_DF_WALL(e) ((e) >= EL_DF_WALL_START && \
+ (e) <= EL_DF_WALL_END)
+
+#define IS_MM_WALL_EDITOR(e) ((e) == EL_MM_STEEL_WALL || \
+ (e) == EL_MM_WOODEN_WALL || \
+ (e) == EL_MM_ICE_WALL || \
+ (e) == EL_MM_AMOEBA_WALL || \
+ (e) == EL_DF_STEEL_WALL || \
+ (e) == EL_DF_WOODEN_WALL)
+
+#define IS_ENVELOPE(e) ((e) >= EL_ENVELOPE_1 && \
+ (e) <= EL_ENVELOPE_4)
+
+#define IS_MM_ENVELOPE(e) ((e) >= EL_MM_ENVELOPE_1 && \
+ (e) <= EL_MM_ENVELOPE_4)
+
+#define IS_BALLOON_ELEMENT(e) ((e) == EL_BALLOON || \
+ (e) == EL_BALLOON_SWITCH_LEFT || \
+ (e) == EL_BALLOON_SWITCH_RIGHT || \
+ (e) == EL_BALLOON_SWITCH_UP || \
+ (e) == EL_BALLOON_SWITCH_DOWN || \
+ (e) == EL_BALLOON_SWITCH_ANY || \
+ (e) == EL_BALLOON_SWITCH_NONE)
+
+#define IS_RND_KEY(e) ((e) >= EL_KEY_1 && \
+ (e) <= EL_KEY_4)
+#define IS_EM_KEY(e) ((e) >= EL_EM_KEY_1 && \
+ (e) <= EL_EM_KEY_4)
+#define IS_EMC_KEY(e) ((e) >= EL_EMC_KEY_5 && \
+ (e) <= EL_EMC_KEY_8)
+#define IS_KEY(e) (IS_RND_KEY(e) || \
+ IS_EM_KEY(e) || \
+ IS_EMC_KEY(e))
+#define RND_KEY_NR(e) ((e) - EL_KEY_1)
+#define EM_KEY_NR(e) ((e) - EL_EM_KEY_1)
+#define EMC_KEY_NR(e) ((e) - EL_EMC_KEY_5 + 4)
+#define KEY_NR(e) (IS_RND_KEY(e) ? RND_KEY_NR(e) : \
+ IS_EM_KEY(e) ? EM_KEY_NR(e) : \
+ IS_EMC_KEY(e) ? EMC_KEY_NR(e) : 0)
+
+#define IS_RND_GATE(e) ((e) >= EL_GATE_1 && \
+ (e) <= EL_GATE_4)
+#define IS_EM_GATE(e) ((e) >= EL_EM_GATE_1 && \
+ (e) <= EL_EM_GATE_4)
+#define IS_EMC_GATE(e) ((e) >= EL_EMC_GATE_5 && \
+ (e) <= EL_EMC_GATE_8)
+#define IS_DC_GATE(e) ((e) == EL_DC_GATE_WHITE)
+#define IS_GATE(e) (IS_RND_GATE(e) || \
+ IS_EM_GATE(e) || \
+ IS_EMC_GATE(e) || \
+ IS_DC_GATE(e))
+#define RND_GATE_NR(e) ((e) - EL_GATE_1)
+#define EM_GATE_NR(e) ((e) - EL_EM_GATE_1)
+#define EMC_GATE_NR(e) ((e) - EL_EMC_GATE_5 + 4)
+#define GATE_NR(e) (IS_RND_GATE(e) ? RND_GATE_NR(e) : \
+ IS_EM_GATE(e) ? EM_GATE_NR(e) : \
+ IS_EMC_GATE(e) ? EMC_GATE_NR(e) : 0)
+
+#define IS_RND_GATE_GRAY(e) ((e) >= EL_GATE_1_GRAY && \
+ (e) <= EL_GATE_4_GRAY)
+#define IS_RND_GATE_GRAY_ACTIVE(e) ((e) >= EL_GATE_1_GRAY_ACTIVE && \
+ (e) <= EL_GATE_4_GRAY_ACTIVE)
+#define IS_EM_GATE_GRAY(e) ((e) >= EL_EM_GATE_1_GRAY && \
+ (e) <= EL_EM_GATE_4_GRAY)
+#define IS_EM_GATE_GRAY_ACTIVE(e) ((e) >= EL_EM_GATE_1_GRAY_ACTIVE && \
+ (e) <= EL_EM_GATE_4_GRAY_ACTIVE)
+#define IS_EMC_GATE_GRAY(e) ((e) >= EL_EMC_GATE_5_GRAY && \
+ (e) <= EL_EMC_GATE_8_GRAY)
+#define IS_EMC_GATE_GRAY_ACTIVE(e) ((e) >= EL_EMC_GATE_5_GRAY_ACTIVE && \
+ (e) <= EL_EMC_GATE_8_GRAY_ACTIVE)
+#define IS_DC_GATE_GRAY(e) ((e) == EL_DC_GATE_WHITE_GRAY)
+#define IS_DC_GATE_GRAY_ACTIVE(e) ((e) == EL_DC_GATE_WHITE_GRAY_ACTIVE)
+
+#define IS_GATE_GRAY(e) (IS_RND_GATE_GRAY(e) || \
+ IS_EM_GATE_GRAY(e) || \
+ IS_EMC_GATE_GRAY(e) || \
+ IS_DC_GATE_GRAY(e))
+#define IS_GATE_GRAY_ACTIVE(e) (IS_RND_GATE_GRAY_ACTIVE(e) || \
+ IS_EM_GATE_GRAY_ACTIVE(e) || \
+ IS_EMC_GATE_GRAY_ACTIVE(e) || \
+ IS_DC_GATE_GRAY_ACTIVE(e))
+#define RND_GATE_GRAY_NR(e) ((e) - EL_GATE_1_GRAY)
+#define RND_GATE_GRAY_ACTIVE_NR(e) ((e) - EL_GATE_1_GRAY_ACTIVE)
+#define EM_GATE_GRAY_NR(e) ((e) - EL_EM_GATE_1_GRAY)
+#define EM_GATE_GRAY_ACTIVE_NR(e) ((e) - EL_EM_GATE_1_GRAY_ACTIVE)
+#define EMC_GATE_GRAY_NR(e) ((e) - EL_EMC_GATE_5_GRAY + 4)
+#define EMC_GATE_GRAY_ACTIVE_NR(e) ((e) - EL_EMC_GATE_5_GRAY_ACTIVE + 4)
+#define GATE_GRAY_NR(e) (IS_RND_GATE_GRAY(e) ? RND_GATE_GRAY_NR(e) : \
+ IS_EM_GATE_GRAY(e) ? EM_GATE_GRAY_NR(e) : \
+ IS_EMC_GATE_GRAY(e) ? EMC_GATE_GRAY_NR(e) : 0)
+
+#define RND_ENVELOPE_NR(e) ((e) - EL_ENVELOPE_1)
+#define MM_ENVELOPE_NR(e) ((e) - EL_MM_ENVELOPE_1)
+#define ENVELOPE_NR(e) (IS_ENVELOPE(e) ? RND_ENVELOPE_NR(e) : \
+ MM_ENVELOPE_NR(e))
+
+#define IS_ACID_POOL_OR_ACID(e) (IS_ACID_POOL(e) || (e) == EL_ACID)
+
+#define IS_EMC_PILLAR(e) ((e) >= EL_EMC_WALL_1 && \
+ (e) <= EL_EMC_WALL_3)
+#define IS_SP_CHIP(e) ((e) == EL_SP_CHIP_SINGLE || \
+ (e) == EL_SP_CHIP_LEFT || \
+ (e) == EL_SP_CHIP_RIGHT || \
+ (e) == EL_SP_CHIP_TOP || \
+ (e) == EL_SP_CHIP_BOTTOM)
+#define IS_SP_HARDWARE_BASE(e) ((e) == EL_SP_HARDWARE_BASE_1 || \
+ (e) == EL_SP_HARDWARE_BASE_2 || \
+ (e) == EL_SP_HARDWARE_BASE_3 || \
+ (e) == EL_SP_HARDWARE_BASE_4 || \
+ (e) == EL_SP_HARDWARE_BASE_5 || \
+ (e) == EL_SP_HARDWARE_BASE_6)
+
+#define IS_DC_STEELWALL_2(e) ((e) >= EL_DC_STEELWALL_2_LEFT && \
+ (e) <= EL_DC_STEELWALL_2_SINGLE)
-#define EL_UNDEFINED -1
-
-#define EL_EMPTY_SPACE 0
-#define EL_EMPTY EL_EMPTY_SPACE
-#define EL_SAND 1
-#define EL_WALL 2
-#define EL_WALL_SLIPPERY 3
-#define EL_ROCK 4
-#define EL_KEY_OBSOLETE 5 // obsolete; now EL_KEY_1
-#define EL_EMERALD 6
-#define EL_EXIT_CLOSED 7
-#define EL_PLAYER_OBSOLETE 8 // obsolete; now EL_PLAYER_1
-#define EL_BUG 9
-#define EL_SPACESHIP 10
-#define EL_YAMYAM 11
-#define EL_ROBOT 12
-#define EL_STEELWALL 13
-#define EL_DIAMOND 14
-#define EL_AMOEBA_DEAD 15
-#define EL_QUICKSAND_EMPTY 16
-#define EL_QUICKSAND_FULL 17
-#define EL_AMOEBA_DROP 18
-#define EL_BOMB 19
-#define EL_MAGIC_WALL 20
-#define EL_SPEED_PILL 21
-#define EL_ACID 22
-#define EL_AMOEBA_WET 23
-#define EL_AMOEBA_DRY 24
-#define EL_NUT 25
-#define EL_GAME_OF_LIFE 26
-#define EL_BIOMAZE 27
-#define EL_DYNAMITE_ACTIVE 28
-#define EL_STONEBLOCK 29
-#define EL_ROBOT_WHEEL 30
-#define EL_ROBOT_WHEEL_ACTIVE 31
-#define EL_KEY_1 32
-#define EL_KEY_2 33
-#define EL_KEY_3 34
-#define EL_KEY_4 35
-#define EL_GATE_1 36
-#define EL_GATE_2 37
-#define EL_GATE_3 38
-#define EL_GATE_4 39
-#define EL_GATE_1_GRAY 40
-#define EL_GATE_2_GRAY 41
-#define EL_GATE_3_GRAY 42
-#define EL_GATE_4_GRAY 43
-#define EL_DYNAMITE 44
-#define EL_PACMAN 45
-#define EL_INVISIBLE_WALL 46
-#define EL_LAMP 47
-#define EL_LAMP_ACTIVE 48
-#define EL_WALL_EMERALD 49
-#define EL_WALL_DIAMOND 50
-#define EL_AMOEBA_FULL 51
-#define EL_BD_AMOEBA 52
-#define EL_TIME_ORB_FULL 53
-#define EL_TIME_ORB_EMPTY 54
-#define EL_EXPANDABLE_WALL 55
-#define EL_BD_DIAMOND 56
-#define EL_EMERALD_YELLOW 57
-#define EL_WALL_BD_DIAMOND 58
-#define EL_WALL_EMERALD_YELLOW 59
-#define EL_DARK_YAMYAM 60
-#define EL_BD_MAGIC_WALL 61
-#define EL_INVISIBLE_STEELWALL 62
-#define EL_SOKOBAN_FIELD_PLAYER 63
-#define EL_DYNABOMB_INCREASE_NUMBER 64
-#define EL_DYNABOMB_INCREASE_SIZE 65
-#define EL_DYNABOMB_INCREASE_POWER 66
-#define EL_SOKOBAN_OBJECT 67
-#define EL_SOKOBAN_FIELD_EMPTY 68
-#define EL_SOKOBAN_FIELD_FULL 69
-#define EL_BD_BUTTERFLY_RIGHT 70
-#define EL_BD_BUTTERFLY_UP 71
-#define EL_BD_BUTTERFLY_LEFT 72
-#define EL_BD_BUTTERFLY_DOWN 73
-#define EL_BD_FIREFLY_RIGHT 74
-#define EL_BD_FIREFLY_UP 75
-#define EL_BD_FIREFLY_LEFT 76
-#define EL_BD_FIREFLY_DOWN 77
-#define EL_BD_BUTTERFLY_1 EL_BD_BUTTERFLY_DOWN
-#define EL_BD_BUTTERFLY_2 EL_BD_BUTTERFLY_LEFT
-#define EL_BD_BUTTERFLY_3 EL_BD_BUTTERFLY_UP
-#define EL_BD_BUTTERFLY_4 EL_BD_BUTTERFLY_RIGHT
-#define EL_BD_FIREFLY_1 EL_BD_FIREFLY_LEFT
-#define EL_BD_FIREFLY_2 EL_BD_FIREFLY_DOWN
-#define EL_BD_FIREFLY_3 EL_BD_FIREFLY_RIGHT
-#define EL_BD_FIREFLY_4 EL_BD_FIREFLY_UP
-#define EL_BD_BUTTERFLY 78
-#define EL_BD_FIREFLY 79
-#define EL_PLAYER_1 80
-#define EL_PLAYER_2 81
-#define EL_PLAYER_3 82
-#define EL_PLAYER_4 83
-#define EL_BUG_RIGHT 84
-#define EL_BUG_UP 85
-#define EL_BUG_LEFT 86
-#define EL_BUG_DOWN 87
-#define EL_SPACESHIP_RIGHT 88
-#define EL_SPACESHIP_UP 89
-#define EL_SPACESHIP_LEFT 90
-#define EL_SPACESHIP_DOWN 91
-#define EL_PACMAN_RIGHT 92
-#define EL_PACMAN_UP 93
-#define EL_PACMAN_LEFT 94
-#define EL_PACMAN_DOWN 95
-#define EL_EMERALD_RED 96
-#define EL_EMERALD_PURPLE 97
-#define EL_WALL_EMERALD_RED 98
-#define EL_WALL_EMERALD_PURPLE 99
-#define EL_ACID_POOL_TOPLEFT 100
-#define EL_ACID_POOL_TOPRIGHT 101
-#define EL_ACID_POOL_BOTTOMLEFT 102
-#define EL_ACID_POOL_BOTTOM 103
-#define EL_ACID_POOL_BOTTOMRIGHT 104
-#define EL_BD_WALL 105
-#define EL_BD_ROCK 106
-#define EL_EXIT_OPEN 107
-#define EL_BLACK_ORB 108
-#define EL_AMOEBA_TO_DIAMOND 109
-#define EL_MOLE 110
-#define EL_PENGUIN 111
-#define EL_SATELLITE 112
-#define EL_ARROW_LEFT 113
-#define EL_ARROW_RIGHT 114
-#define EL_ARROW_UP 115
-#define EL_ARROW_DOWN 116
-#define EL_PIG 117
-#define EL_DRAGON 118
-
-#define EL_EM_KEY_1_FILE_OBSOLETE 119 // obsolete; now EL_EM_KEY_1
-
-#define EL_CHAR_START 120
-#define EL_CHAR_ASCII0 (EL_CHAR_START - 32)
-#define EL_CHAR_ASCII0_START (EL_CHAR_ASCII0 + 32)
+#define EL_UNDEFINED -1
+
+#define EL_EMPTY_SPACE 0
+#define EL_EMPTY EL_EMPTY_SPACE
+#define EL_SAND 1
+#define EL_WALL 2
+#define EL_WALL_SLIPPERY 3
+#define EL_ROCK 4
+#define EL_KEY_OBSOLETE 5 // obsolete; now EL_KEY_1
+#define EL_EMERALD 6
+#define EL_EXIT_CLOSED 7
+#define EL_PLAYER_OBSOLETE 8 // obsolete; now EL_PLAYER_1
+#define EL_BUG 9
+#define EL_SPACESHIP 10
+#define EL_YAMYAM 11
+#define EL_ROBOT 12
+#define EL_STEELWALL 13
+#define EL_DIAMOND 14
+#define EL_AMOEBA_DEAD 15
+#define EL_QUICKSAND_EMPTY 16
+#define EL_QUICKSAND_FULL 17
+#define EL_AMOEBA_DROP 18
+#define EL_BOMB 19
+#define EL_MAGIC_WALL 20
+#define EL_SPEED_PILL 21
+#define EL_ACID 22
+#define EL_AMOEBA_WET 23
+#define EL_AMOEBA_DRY 24
+#define EL_NUT 25
+#define EL_GAME_OF_LIFE 26
+#define EL_BIOMAZE 27
+#define EL_DYNAMITE_ACTIVE 28
+#define EL_STONEBLOCK 29
+#define EL_ROBOT_WHEEL 30
+#define EL_ROBOT_WHEEL_ACTIVE 31
+#define EL_KEY_1 32
+#define EL_KEY_2 33
+#define EL_KEY_3 34
+#define EL_KEY_4 35
+#define EL_GATE_1 36
+#define EL_GATE_2 37
+#define EL_GATE_3 38
+#define EL_GATE_4 39
+#define EL_GATE_1_GRAY 40
+#define EL_GATE_2_GRAY 41
+#define EL_GATE_3_GRAY 42
+#define EL_GATE_4_GRAY 43
+#define EL_DYNAMITE 44
+#define EL_PACMAN 45
+#define EL_INVISIBLE_WALL 46
+#define EL_LAMP 47
+#define EL_LAMP_ACTIVE 48
+#define EL_WALL_EMERALD 49
+#define EL_WALL_DIAMOND 50
+#define EL_AMOEBA_FULL 51
+#define EL_BD_AMOEBA 52
+#define EL_TIME_ORB_FULL 53
+#define EL_TIME_ORB_EMPTY 54
+#define EL_EXPANDABLE_WALL 55
+#define EL_BD_DIAMOND 56
+#define EL_EMERALD_YELLOW 57
+#define EL_WALL_BD_DIAMOND 58
+#define EL_WALL_EMERALD_YELLOW 59
+#define EL_DARK_YAMYAM 60
+#define EL_BD_MAGIC_WALL 61
+#define EL_INVISIBLE_STEELWALL 62
+#define EL_SOKOBAN_FIELD_PLAYER 63
+#define EL_DYNABOMB_INCREASE_NUMBER 64
+#define EL_DYNABOMB_INCREASE_SIZE 65
+#define EL_DYNABOMB_INCREASE_POWER 66
+#define EL_SOKOBAN_OBJECT 67
+#define EL_SOKOBAN_FIELD_EMPTY 68
+#define EL_SOKOBAN_FIELD_FULL 69
+#define EL_BD_BUTTERFLY_RIGHT 70
+#define EL_BD_BUTTERFLY_UP 71
+#define EL_BD_BUTTERFLY_LEFT 72
+#define EL_BD_BUTTERFLY_DOWN 73
+#define EL_BD_FIREFLY_RIGHT 74
+#define EL_BD_FIREFLY_UP 75
+#define EL_BD_FIREFLY_LEFT 76
+#define EL_BD_FIREFLY_DOWN 77
+#define EL_BD_BUTTERFLY 78
+#define EL_BD_FIREFLY 79
+#define EL_PLAYER_1 80
+#define EL_PLAYER_2 81
+#define EL_PLAYER_3 82
+#define EL_PLAYER_4 83
+#define EL_BUG_RIGHT 84
+#define EL_BUG_UP 85
+#define EL_BUG_LEFT 86
+#define EL_BUG_DOWN 87
+#define EL_SPACESHIP_RIGHT 88
+#define EL_SPACESHIP_UP 89
+#define EL_SPACESHIP_LEFT 90
+#define EL_SPACESHIP_DOWN 91
+#define EL_PACMAN_RIGHT 92
+#define EL_PACMAN_UP 93
+#define EL_PACMAN_LEFT 94
+#define EL_PACMAN_DOWN 95
+#define EL_EMERALD_RED 96
+#define EL_EMERALD_PURPLE 97
+#define EL_WALL_EMERALD_RED 98
+#define EL_WALL_EMERALD_PURPLE 99
+#define EL_ACID_POOL_TOPLEFT 100
+#define EL_ACID_POOL_TOPRIGHT 101
+#define EL_ACID_POOL_BOTTOMLEFT 102
+#define EL_ACID_POOL_BOTTOM 103
+#define EL_ACID_POOL_BOTTOMRIGHT 104
+#define EL_BD_WALL 105
+#define EL_BD_ROCK 106
+#define EL_EXIT_OPEN 107
+#define EL_BLACK_ORB 108
+#define EL_AMOEBA_TO_DIAMOND 109
+#define EL_MOLE 110
+#define EL_PENGUIN 111
+#define EL_SATELLITE 112
+#define EL_ARROW_LEFT 113
+#define EL_ARROW_RIGHT 114
+#define EL_ARROW_UP 115
+#define EL_ARROW_DOWN 116
+#define EL_PIG 117
+#define EL_DRAGON 118
+
+#define EL_EM_KEY_1_FILE_OBSOLETE 119 // obsolete; now EL_EM_KEY_1
+
+// text character elements
+#define EL_CHAR_START 120
+#define EL_CHAR_ASCII0 (EL_CHAR_START - 32)
+#define EL_CHAR_ASCII0_START (EL_CHAR_ASCII0 + 32)
-#define EL_CHAR_ASCII0_END (EL_CHAR_ASCII0 + 111)
-#define EL_CHAR_END (EL_CHAR_START + 79)
-
-#define EL_CHAR(c) (EL_CHAR_ASCII0 + MAP_FONT_ASCII(c))
-
-#define EL_EXPANDABLE_WALL_HORIZONTAL 200
-#define EL_EXPANDABLE_WALL_VERTICAL 201
-#define EL_EXPANDABLE_WALL_ANY 202
-
-#define EL_EM_GATE_1 203
-#define EL_EM_GATE_2 204
-#define EL_EM_GATE_3 205
-#define EL_EM_GATE_4 206
-
-#define EL_EM_KEY_2_FILE_OBSOLETE 207 // obsolete; now EL_EM_KEY_2
-#define EL_EM_KEY_3_FILE_OBSOLETE 208 // obsolete; now EL_EM_KEY_3
-#define EL_EM_KEY_4_FILE_OBSOLETE 209 // obsolete; now EL_EM_KEY_4
-
-#define EL_SP_START 210
-#define EL_SP_EMPTY_SPACE (EL_SP_START + 0)
-#define EL_SP_EMPTY EL_SP_EMPTY_SPACE
-#define EL_SP_ZONK (EL_SP_START + 1)
-#define EL_SP_BASE (EL_SP_START + 2)
-#define EL_SP_MURPHY (EL_SP_START + 3)
-#define EL_SP_INFOTRON (EL_SP_START + 4)
-#define EL_SP_CHIP_SINGLE (EL_SP_START + 5)
-#define EL_SP_HARDWARE_GRAY (EL_SP_START + 6)
-#define EL_SP_EXIT_CLOSED (EL_SP_START + 7)
-#define EL_SP_DISK_ORANGE (EL_SP_START + 8)
-#define EL_SP_PORT_RIGHT (EL_SP_START + 9)
-#define EL_SP_PORT_DOWN (EL_SP_START + 10)
-#define EL_SP_PORT_LEFT (EL_SP_START + 11)
-#define EL_SP_PORT_UP (EL_SP_START + 12)
-#define EL_SP_GRAVITY_PORT_RIGHT (EL_SP_START + 13)
-#define EL_SP_GRAVITY_PORT_DOWN (EL_SP_START + 14)
-#define EL_SP_GRAVITY_PORT_LEFT (EL_SP_START + 15)
-#define EL_SP_GRAVITY_PORT_UP (EL_SP_START + 16)
-#define EL_SP_SNIKSNAK (EL_SP_START + 17)
-#define EL_SP_DISK_YELLOW (EL_SP_START + 18)
-#define EL_SP_TERMINAL (EL_SP_START + 19)
-#define EL_SP_DISK_RED (EL_SP_START + 20)
-#define EL_SP_PORT_VERTICAL (EL_SP_START + 21)
-#define EL_SP_PORT_HORIZONTAL (EL_SP_START + 22)
-#define EL_SP_PORT_ANY (EL_SP_START + 23)
-#define EL_SP_ELECTRON (EL_SP_START + 24)
-#define EL_SP_BUGGY_BASE (EL_SP_START + 25)
-#define EL_SP_CHIP_LEFT (EL_SP_START + 26)
-#define EL_SP_CHIP_RIGHT (EL_SP_START + 27)
-#define EL_SP_HARDWARE_BASE_1 (EL_SP_START + 28)
-#define EL_SP_HARDWARE_GREEN (EL_SP_START + 29)
-#define EL_SP_HARDWARE_BLUE (EL_SP_START + 30)
-#define EL_SP_HARDWARE_RED (EL_SP_START + 31)
-#define EL_SP_HARDWARE_YELLOW (EL_SP_START + 32)
-#define EL_SP_HARDWARE_BASE_2 (EL_SP_START + 33)
-#define EL_SP_HARDWARE_BASE_3 (EL_SP_START + 34)
-#define EL_SP_HARDWARE_BASE_4 (EL_SP_START + 35)
-#define EL_SP_HARDWARE_BASE_5 (EL_SP_START + 36)
-#define EL_SP_HARDWARE_BASE_6 (EL_SP_START + 37)
-#define EL_SP_CHIP_TOP (EL_SP_START + 38)
-#define EL_SP_CHIP_BOTTOM (EL_SP_START + 39)
-#define EL_SP_END (EL_SP_START + 39)
-
-#define EL_EM_GATE_1_GRAY 250
-#define EL_EM_GATE_2_GRAY 251
-#define EL_EM_GATE_3_GRAY 252
-#define EL_EM_GATE_4_GRAY 253
-
-#define EL_EM_DYNAMITE 254
-#define EL_EM_DYNAMITE_ACTIVE 255
-
-#define EL_PEARL 256
-#define EL_CRYSTAL 257
-#define EL_WALL_PEARL 258
-#define EL_WALL_CRYSTAL 259
-#define EL_DC_GATE_WHITE 260
-#define EL_DC_GATE_WHITE_GRAY 261
-#define EL_DC_KEY_WHITE 262
-#define EL_SHIELD_NORMAL 263
-#define EL_EXTRA_TIME 264
-#define EL_SWITCHGATE_OPEN 265
-#define EL_SWITCHGATE_CLOSED 266
-#define EL_SWITCHGATE_SWITCH_UP 267
-#define EL_SWITCHGATE_SWITCH_DOWN 268
-
-#define EL_UNUSED_269 269
-#define EL_UNUSED_270 270
-
-#define EL_CONVEYOR_BELT_1_LEFT 271
-#define EL_CONVEYOR_BELT_1_MIDDLE 272
-#define EL_CONVEYOR_BELT_1_RIGHT 273
-#define EL_CONVEYOR_BELT_1_SWITCH_LEFT 274
-#define EL_CONVEYOR_BELT_1_SWITCH_MIDDLE 275
-#define EL_CONVEYOR_BELT_1_SWITCH_RIGHT 276
-#define EL_CONVEYOR_BELT_2_LEFT 277
-#define EL_CONVEYOR_BELT_2_MIDDLE 278
-#define EL_CONVEYOR_BELT_2_RIGHT 279
-#define EL_CONVEYOR_BELT_2_SWITCH_LEFT 280
-#define EL_CONVEYOR_BELT_2_SWITCH_MIDDLE 281
-#define EL_CONVEYOR_BELT_2_SWITCH_RIGHT 282
-#define EL_CONVEYOR_BELT_3_LEFT 283
-#define EL_CONVEYOR_BELT_3_MIDDLE 284
-#define EL_CONVEYOR_BELT_3_RIGHT 285
-#define EL_CONVEYOR_BELT_3_SWITCH_LEFT 286
-#define EL_CONVEYOR_BELT_3_SWITCH_MIDDLE 287
-#define EL_CONVEYOR_BELT_3_SWITCH_RIGHT 288
-#define EL_CONVEYOR_BELT_4_LEFT 289
-#define EL_CONVEYOR_BELT_4_MIDDLE 290
-#define EL_CONVEYOR_BELT_4_RIGHT 291
-#define EL_CONVEYOR_BELT_4_SWITCH_LEFT 292
-#define EL_CONVEYOR_BELT_4_SWITCH_MIDDLE 293
-#define EL_CONVEYOR_BELT_4_SWITCH_RIGHT 294
-#define EL_LANDMINE 295
-#define EL_ENVELOPE_OBSOLETE 296 // obsolete; now EL_ENVELOPE_1
-#define EL_LIGHT_SWITCH 297
-#define EL_LIGHT_SWITCH_ACTIVE 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_NO_ENTRY 304
-#define EL_SIGN_UNUSED_1 305
-#define EL_SIGN_GIVE_WAY 306
-#define EL_SIGN_ENTRY_FORBIDDEN 307
-#define EL_SIGN_EMERGENCY_EXIT 308
-#define EL_SIGN_YIN_YANG 309
-#define EL_SIGN_UNUSED_2 310
-#define EL_MOLE_LEFT 311
-#define EL_MOLE_RIGHT 312
-#define EL_MOLE_UP 313
-#define EL_MOLE_DOWN 314
-#define EL_STEELWALL_SLIPPERY 315
-#define EL_INVISIBLE_SAND 316
-#define EL_DX_UNKNOWN_15 317
-#define EL_DX_UNKNOWN_42 318
-
-#define EL_UNUSED_319 319
-#define EL_UNUSED_320 320
-
-#define EL_SHIELD_DEADLY 321
-#define EL_TIMEGATE_OPEN 322
-#define EL_TIMEGATE_CLOSED 323
-#define EL_TIMEGATE_SWITCH_ACTIVE 324
-#define EL_TIMEGATE_SWITCH 325
-
-#define EL_BALLOON 326
-#define EL_BALLOON_SWITCH_LEFT 327
-#define EL_BALLOON_SWITCH_RIGHT 328
-#define EL_BALLOON_SWITCH_UP 329
-#define EL_BALLOON_SWITCH_DOWN 330
-#define EL_BALLOON_SWITCH_ANY 331
-
-#define EL_EMC_STEELWALL_1 332
-#define EL_EMC_STEELWALL_2 333
-#define EL_EMC_STEELWALL_3 334
-#define EL_EMC_STEELWALL_4 335
-#define EL_EMC_WALL_1 336
-#define EL_EMC_WALL_2 337
-#define EL_EMC_WALL_3 338
-#define EL_EMC_WALL_4 339
-#define EL_EMC_WALL_5 340
-#define EL_EMC_WALL_6 341
-#define EL_EMC_WALL_7 342
-#define EL_EMC_WALL_8 343
-
-#define EL_TUBE_ANY 344
-#define EL_TUBE_VERTICAL 345
-#define EL_TUBE_HORIZONTAL 346
-#define EL_TUBE_VERTICAL_LEFT 347
-#define EL_TUBE_VERTICAL_RIGHT 348
-#define EL_TUBE_HORIZONTAL_UP 349
-#define EL_TUBE_HORIZONTAL_DOWN 350
-#define EL_TUBE_LEFT_UP 351
-#define EL_TUBE_LEFT_DOWN 352
-#define EL_TUBE_RIGHT_UP 353
-#define EL_TUBE_RIGHT_DOWN 354
-#define EL_SPRING 355
-#define EL_TRAP 356
-#define EL_DX_SUPABOMB 357
-
-#define EL_UNUSED_358 358
-#define EL_UNUSED_359 359
+#define EL_CHAR_ASCII0_END (EL_CHAR_ASCII0 + 111)
+#define EL_CHAR_END (EL_CHAR_START + 79)
+
+#define EL_CHAR(c) (EL_CHAR_ASCII0 + MAP_FONT_ASCII(c))
+
+#define EL_EXPANDABLE_WALL_HORIZONTAL 200
+#define EL_EXPANDABLE_WALL_VERTICAL 201
+#define EL_EXPANDABLE_WALL_ANY 202
+
+// EM style elements
+#define EL_EM_GATE_1 203
+#define EL_EM_GATE_2 204
+#define EL_EM_GATE_3 205
+#define EL_EM_GATE_4 206
+
+#define EL_EM_KEY_2_FILE_OBSOLETE 207 // obsolete; now EL_EM_KEY_2
+#define EL_EM_KEY_3_FILE_OBSOLETE 208 // obsolete; now EL_EM_KEY_3
+#define EL_EM_KEY_4_FILE_OBSOLETE 209 // obsolete; now EL_EM_KEY_4
+
+// SP style elements
+#define EL_SP_START 210
+#define EL_SP_EMPTY_SPACE (EL_SP_START + 0)
+#define EL_SP_EMPTY EL_SP_EMPTY_SPACE
+#define EL_SP_ZONK (EL_SP_START + 1)
+#define EL_SP_BASE (EL_SP_START + 2)
+#define EL_SP_MURPHY (EL_SP_START + 3)
+#define EL_SP_INFOTRON (EL_SP_START + 4)
+#define EL_SP_CHIP_SINGLE (EL_SP_START + 5)
+#define EL_SP_HARDWARE_GRAY (EL_SP_START + 6)
+#define EL_SP_EXIT_CLOSED (EL_SP_START + 7)
+#define EL_SP_DISK_ORANGE (EL_SP_START + 8)
+#define EL_SP_PORT_RIGHT (EL_SP_START + 9)
+#define EL_SP_PORT_DOWN (EL_SP_START + 10)
+#define EL_SP_PORT_LEFT (EL_SP_START + 11)
+#define EL_SP_PORT_UP (EL_SP_START + 12)
+#define EL_SP_GRAVITY_PORT_RIGHT (EL_SP_START + 13)
+#define EL_SP_GRAVITY_PORT_DOWN (EL_SP_START + 14)
+#define EL_SP_GRAVITY_PORT_LEFT (EL_SP_START + 15)
+#define EL_SP_GRAVITY_PORT_UP (EL_SP_START + 16)
+#define EL_SP_SNIKSNAK (EL_SP_START + 17)
+#define EL_SP_DISK_YELLOW (EL_SP_START + 18)
+#define EL_SP_TERMINAL (EL_SP_START + 19)
+#define EL_SP_DISK_RED (EL_SP_START + 20)
+#define EL_SP_PORT_VERTICAL (EL_SP_START + 21)
+#define EL_SP_PORT_HORIZONTAL (EL_SP_START + 22)
+#define EL_SP_PORT_ANY (EL_SP_START + 23)
+#define EL_SP_ELECTRON (EL_SP_START + 24)
+#define EL_SP_BUGGY_BASE (EL_SP_START + 25)
+#define EL_SP_CHIP_LEFT (EL_SP_START + 26)
+#define EL_SP_CHIP_RIGHT (EL_SP_START + 27)
+#define EL_SP_HARDWARE_BASE_1 (EL_SP_START + 28)
+#define EL_SP_HARDWARE_GREEN (EL_SP_START + 29)
+#define EL_SP_HARDWARE_BLUE (EL_SP_START + 30)
+#define EL_SP_HARDWARE_RED (EL_SP_START + 31)
+#define EL_SP_HARDWARE_YELLOW (EL_SP_START + 32)
+#define EL_SP_HARDWARE_BASE_2 (EL_SP_START + 33)
+#define EL_SP_HARDWARE_BASE_3 (EL_SP_START + 34)
+#define EL_SP_HARDWARE_BASE_4 (EL_SP_START + 35)
+#define EL_SP_HARDWARE_BASE_5 (EL_SP_START + 36)
+#define EL_SP_HARDWARE_BASE_6 (EL_SP_START + 37)
+#define EL_SP_CHIP_TOP (EL_SP_START + 38)
+#define EL_SP_CHIP_BOTTOM (EL_SP_START + 39)
+#define EL_SP_END (EL_SP_START + 39)
+
+// EM style elements
+#define EL_EM_GATE_1_GRAY 250
+#define EL_EM_GATE_2_GRAY 251
+#define EL_EM_GATE_3_GRAY 252
+#define EL_EM_GATE_4_GRAY 253
+
+#define EL_EM_DYNAMITE 254
+#define EL_EM_DYNAMITE_ACTIVE 255
+
+// DC2 style elements
+#define EL_PEARL 256
+#define EL_CRYSTAL 257
+#define EL_WALL_PEARL 258
+#define EL_WALL_CRYSTAL 259
+#define EL_DC_GATE_WHITE 260
+#define EL_DC_GATE_WHITE_GRAY 261
+#define EL_DC_KEY_WHITE 262
+#define EL_SHIELD_NORMAL 263
+#define EL_EXTRA_TIME 264
+#define EL_SWITCHGATE_OPEN 265
+#define EL_SWITCHGATE_CLOSED 266
+#define EL_SWITCHGATE_SWITCH_UP 267
+#define EL_SWITCHGATE_SWITCH_DOWN 268
+
+#define EL_UNUSED_269 269
+#define EL_UNUSED_270 270
+
+#define EL_CONVEYOR_BELT_1_LEFT 271
+#define EL_CONVEYOR_BELT_1_MIDDLE 272
+#define EL_CONVEYOR_BELT_1_RIGHT 273
+#define EL_CONVEYOR_BELT_1_SWITCH_LEFT 274
+#define EL_CONVEYOR_BELT_1_SWITCH_MIDDLE 275
+#define EL_CONVEYOR_BELT_1_SWITCH_RIGHT 276
+#define EL_CONVEYOR_BELT_2_LEFT 277
+#define EL_CONVEYOR_BELT_2_MIDDLE 278
+#define EL_CONVEYOR_BELT_2_RIGHT 279
+#define EL_CONVEYOR_BELT_2_SWITCH_LEFT 280
+#define EL_CONVEYOR_BELT_2_SWITCH_MIDDLE 281
+#define EL_CONVEYOR_BELT_2_SWITCH_RIGHT 282
+#define EL_CONVEYOR_BELT_3_LEFT 283
+#define EL_CONVEYOR_BELT_3_MIDDLE 284
+#define EL_CONVEYOR_BELT_3_RIGHT 285
+#define EL_CONVEYOR_BELT_3_SWITCH_LEFT 286
+#define EL_CONVEYOR_BELT_3_SWITCH_MIDDLE 287
+#define EL_CONVEYOR_BELT_3_SWITCH_RIGHT 288
+#define EL_CONVEYOR_BELT_4_LEFT 289
+#define EL_CONVEYOR_BELT_4_MIDDLE 290
+#define EL_CONVEYOR_BELT_4_RIGHT 291
+#define EL_CONVEYOR_BELT_4_SWITCH_LEFT 292
+#define EL_CONVEYOR_BELT_4_SWITCH_MIDDLE 293
+#define EL_CONVEYOR_BELT_4_SWITCH_RIGHT 294
+#define EL_LANDMINE 295
+#define EL_ENVELOPE_OBSOLETE 296 // obsolete; now EL_ENVELOPE_1
+#define EL_LIGHT_SWITCH 297
+#define EL_LIGHT_SWITCH_ACTIVE 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_NO_ENTRY 304
+#define EL_SIGN_UNUSED_1 305
+#define EL_SIGN_GIVE_WAY 306
+#define EL_SIGN_ENTRY_FORBIDDEN 307
+#define EL_SIGN_EMERGENCY_EXIT 308
+#define EL_SIGN_YIN_YANG 309
+#define EL_SIGN_UNUSED_2 310
+#define EL_MOLE_LEFT 311
+#define EL_MOLE_RIGHT 312
+#define EL_MOLE_UP 313
+#define EL_MOLE_DOWN 314
+#define EL_STEELWALL_SLIPPERY 315
+#define EL_INVISIBLE_SAND 316
+#define EL_DX_UNKNOWN_15 317
+#define EL_DX_UNKNOWN_42 318
+
+#define EL_UNUSED_319 319
+#define EL_UNUSED_320 320
+
+#define EL_SHIELD_DEADLY 321
+#define EL_TIMEGATE_OPEN 322
+#define EL_TIMEGATE_CLOSED 323
+#define EL_TIMEGATE_SWITCH_ACTIVE 324
+#define EL_TIMEGATE_SWITCH 325
+
+// EMC style elements
+#define EL_BALLOON 326
+#define EL_BALLOON_SWITCH_LEFT 327
+#define EL_BALLOON_SWITCH_RIGHT 328
+#define EL_BALLOON_SWITCH_UP 329
+#define EL_BALLOON_SWITCH_DOWN 330
+#define EL_BALLOON_SWITCH_ANY 331
+
+#define EL_EMC_STEELWALL_1 332
+#define EL_EMC_STEELWALL_2 333
+#define EL_EMC_STEELWALL_3 334
+#define EL_EMC_STEELWALL_4 335
+#define EL_EMC_WALL_1 336
+#define EL_EMC_WALL_2 337
+#define EL_EMC_WALL_3 338
+#define EL_EMC_WALL_4 339
+#define EL_EMC_WALL_5 340
+#define EL_EMC_WALL_6 341
+#define EL_EMC_WALL_7 342
+#define EL_EMC_WALL_8 343
+
+// DX style elements
+#define EL_TUBE_ANY 344
+#define EL_TUBE_VERTICAL 345
+#define EL_TUBE_HORIZONTAL 346
+#define EL_TUBE_VERTICAL_LEFT 347
+#define EL_TUBE_VERTICAL_RIGHT 348
+#define EL_TUBE_HORIZONTAL_UP 349
+#define EL_TUBE_HORIZONTAL_DOWN 350
+#define EL_TUBE_LEFT_UP 351
+#define EL_TUBE_LEFT_DOWN 352
+#define EL_TUBE_RIGHT_UP 353
+#define EL_TUBE_RIGHT_DOWN 354
+#define EL_SPRING 355
+#define EL_TRAP 356
+#define EL_DX_SUPABOMB 357
+
+#define EL_UNUSED_358 358
+#define EL_UNUSED_359 359
-#define EL_STEEL_CHAR_ASCII0_END (EL_STEEL_CHAR_ASCII0 + 111)
-#define EL_STEEL_CHAR_END (EL_STEEL_CHAR_START + 79)
-
-#define EL_STEEL_CHAR(c) (EL_STEEL_CHAR_ASCII0+MAP_FONT_ASCII(c))
-
-#define EL_SPERMS 812
-#define EL_BULLET 813
-#define EL_HEART 814
-#define EL_CROSS 815
-#define EL_FRANKIE 816
-#define EL_SIGN_SPERMS 817
-#define EL_SIGN_BULLET 818
-#define EL_SIGN_HEART 819
-#define EL_SIGN_CROSS 820
-#define EL_SIGN_FRANKIE 821
-
-#define EL_STEEL_EXIT_CLOSED 822
-#define EL_STEEL_EXIT_OPEN 823
-
-#define EL_DC_STEELWALL_1_LEFT 824
-#define EL_DC_STEELWALL_1_RIGHT 825
-#define EL_DC_STEELWALL_1_TOP 826
-#define EL_DC_STEELWALL_1_BOTTOM 827
-#define EL_DC_STEELWALL_1_HORIZONTAL 828
-#define EL_DC_STEELWALL_1_VERTICAL 829
-#define EL_DC_STEELWALL_1_TOPLEFT 830
-#define EL_DC_STEELWALL_1_TOPRIGHT 831
-#define EL_DC_STEELWALL_1_BOTTOMLEFT 832
-#define EL_DC_STEELWALL_1_BOTTOMRIGHT 833
-#define EL_DC_STEELWALL_1_TOPLEFT_2 834
-#define EL_DC_STEELWALL_1_TOPRIGHT_2 835
-#define EL_DC_STEELWALL_1_BOTTOMLEFT_2 836
-#define EL_DC_STEELWALL_1_BOTTOMRIGHT_2 837
-
-#define EL_DC_STEELWALL_2_LEFT 838
-#define EL_DC_STEELWALL_2_RIGHT 839
-#define EL_DC_STEELWALL_2_TOP 840
-#define EL_DC_STEELWALL_2_BOTTOM 841
-#define EL_DC_STEELWALL_2_HORIZONTAL 842
-#define EL_DC_STEELWALL_2_VERTICAL 843
-#define EL_DC_STEELWALL_2_MIDDLE 844
-#define EL_DC_STEELWALL_2_SINGLE 845
-
-#define EL_DC_SWITCHGATE_SWITCH_UP 846
-#define EL_DC_SWITCHGATE_SWITCH_DOWN 847
-#define EL_DC_TIMEGATE_SWITCH 848
-#define EL_DC_TIMEGATE_SWITCH_ACTIVE 849
-
-#define EL_DC_LANDMINE 850
-
-#define EL_EXPANDABLE_STEELWALL 851
-#define EL_EXPANDABLE_STEELWALL_HORIZONTAL 852
-#define EL_EXPANDABLE_STEELWALL_VERTICAL 853
-#define EL_EXPANDABLE_STEELWALL_ANY 854
-
-#define EL_EM_EXIT_CLOSED 855
-#define EL_EM_EXIT_OPEN 856
-#define EL_EM_STEEL_EXIT_CLOSED 857
-#define EL_EM_STEEL_EXIT_OPEN 858
-
-#define EL_DC_GATE_FAKE_GRAY 859
-
-#define EL_DC_MAGIC_WALL 860
-
-#define EL_QUICKSAND_FAST_EMPTY 861
-#define EL_QUICKSAND_FAST_FULL 862
-
-#define EL_FROM_LEVEL_TEMPLATE 863
-
-#define EL_MM_START 864
-#define EL_MM_START_1 EL_MM_START
-
-#define EL_MM_EMPTY_SPACE (EL_MM_START + 0)
-#define EL_MM_EMPTY EL_MM_EMPTY_SPACE
-#define EL_MM_MIRROR_START (EL_MM_START + 1)
-#define EL_MM_MIRROR_1 (EL_MM_MIRROR_START + 0)
-#define EL_MM_MIRROR_2 (EL_MM_MIRROR_START + 1)
-#define EL_MM_MIRROR_3 (EL_MM_MIRROR_START + 2)
-#define EL_MM_MIRROR_4 (EL_MM_MIRROR_START + 3)
-#define EL_MM_MIRROR_5 (EL_MM_MIRROR_START + 4)
-#define EL_MM_MIRROR_6 (EL_MM_MIRROR_START + 5)
-#define EL_MM_MIRROR_7 (EL_MM_MIRROR_START + 6)
-#define EL_MM_MIRROR_8 (EL_MM_MIRROR_START + 7)
-#define EL_MM_MIRROR_9 (EL_MM_MIRROR_START + 8)
-#define EL_MM_MIRROR_10 (EL_MM_MIRROR_START + 9)
-#define EL_MM_MIRROR_11 (EL_MM_MIRROR_START + 10)
-#define EL_MM_MIRROR_12 (EL_MM_MIRROR_START + 11)
-#define EL_MM_MIRROR_13 (EL_MM_MIRROR_START + 12)
-#define EL_MM_MIRROR_14 (EL_MM_MIRROR_START + 13)
-#define EL_MM_MIRROR_15 (EL_MM_MIRROR_START + 14)
-#define EL_MM_MIRROR_16 (EL_MM_MIRROR_START + 15)
-#define EL_MM_MIRROR_END EL_MM_MIRROR_15
-#define EL_MM_STEEL_GRID_FIXED_START (EL_MM_START + 17)
-#define EL_MM_STEEL_GRID_FIXED_1 (EL_MM_STEEL_GRID_FIXED_START + 0)
-#define EL_MM_STEEL_GRID_FIXED_2 (EL_MM_STEEL_GRID_FIXED_START + 1)
-#define EL_MM_STEEL_GRID_FIXED_3 (EL_MM_STEEL_GRID_FIXED_START + 2)
-#define EL_MM_STEEL_GRID_FIXED_4 (EL_MM_STEEL_GRID_FIXED_START + 3)
-#define EL_MM_STEEL_GRID_FIXED_END EL_MM_STEEL_GRID_FIXED_03
-#define EL_MM_MCDUFFIN_START (EL_MM_START + 21)
-#define EL_MM_MCDUFFIN_RIGHT (EL_MM_MCDUFFIN_START + 0)
-#define EL_MM_MCDUFFIN_UP (EL_MM_MCDUFFIN_START + 1)
-#define EL_MM_MCDUFFIN_LEFT (EL_MM_MCDUFFIN_START + 2)
-#define EL_MM_MCDUFFIN_DOWN (EL_MM_MCDUFFIN_START + 3)
-#define EL_MM_MCDUFFIN_END EL_MM_MCDUFFIN_DOWN
-#define EL_MM_EXIT_CLOSED (EL_MM_START + 25)
-#define EL_MM_EXIT_OPENING_1 (EL_MM_START + 26)
-#define EL_MM_EXIT_OPENING_2 (EL_MM_START + 27)
-#define EL_MM_EXIT_OPEN (EL_MM_START + 28)
-#define EL_MM_KETTLE (EL_MM_START + 29)
-#define EL_MM_BOMB (EL_MM_START + 30)
-#define EL_MM_PRISM (EL_MM_START + 31)
-#define EL_MM_WALL_START (EL_MM_START + 32)
-#define EL_MM_WALL_EMPTY EL_MM_WALL_START
-#define EL_MM_WALL_00 EL_MM_WALL_START
-#define EL_MM_STEEL_WALL_START EL_MM_WALL_00
-#define EL_MM_STEEL_WALL_1 EL_MM_STEEL_WALL_START
-#define EL_MM_WALL_15 (EL_MM_START + 47)
-#define EL_MM_STEEL_WALL_END EL_MM_WALL_15
-#define EL_MM_WALL_16 (EL_MM_START + 48)
-#define EL_MM_WOODEN_WALL_START EL_MM_WALL_16
-#define EL_MM_WOODEN_WALL_1 EL_MM_WOODEN_WALL_START
-#define EL_MM_WALL_31 (EL_MM_START + 63)
-#define EL_MM_WOODEN_WALL_END EL_MM_WALL_31
-#define EL_MM_WALL_32 (EL_MM_START + 64)
-#define EL_MM_ICE_WALL_START EL_MM_WALL_32
-#define EL_MM_ICE_WALL_1 EL_MM_ICE_WALL_START
-#define EL_MM_WALL_47 (EL_MM_START + 79)
-#define EL_MM_ICE_WALL_END EL_MM_WALL_47
-#define EL_MM_WALL_48 (EL_MM_START + 80)
-#define EL_MM_AMOEBA_WALL_START EL_MM_WALL_48
-#define EL_MM_AMOEBA_WALL_1 EL_MM_AMOEBA_WALL_START
-#define EL_MM_WALL_63 (EL_MM_START + 95)
-#define EL_MM_AMOEBA_WALL_END EL_MM_WALL_63
-#define EL_MM_WALL_END EL_MM_WALL_63
-#define EL_MM_WOODEN_BLOCK (EL_MM_START + 96)
-#define EL_MM_GRAY_BALL (EL_MM_START + 97)
-#define EL_MM_TELEPORTER_START (EL_MM_START + 98)
-#define EL_MM_TELEPORTER_1 (EL_MM_TELEPORTER_START + 0)
-#define EL_MM_TELEPORTER_2 (EL_MM_TELEPORTER_START + 1)
-#define EL_MM_TELEPORTER_3 (EL_MM_TELEPORTER_START + 2)
-#define EL_MM_TELEPORTER_4 (EL_MM_TELEPORTER_START + 3)
-#define EL_MM_TELEPORTER_5 (EL_MM_TELEPORTER_START + 4)
-#define EL_MM_TELEPORTER_6 (EL_MM_TELEPORTER_START + 5)
-#define EL_MM_TELEPORTER_7 (EL_MM_TELEPORTER_START + 6)
-#define EL_MM_TELEPORTER_8 (EL_MM_TELEPORTER_START + 7)
-#define EL_MM_TELEPORTER_9 (EL_MM_TELEPORTER_START + 8)
-#define EL_MM_TELEPORTER_10 (EL_MM_TELEPORTER_START + 9)
-#define EL_MM_TELEPORTER_11 (EL_MM_TELEPORTER_START + 10)
-#define EL_MM_TELEPORTER_12 (EL_MM_TELEPORTER_START + 11)
-#define EL_MM_TELEPORTER_13 (EL_MM_TELEPORTER_START + 12)
-#define EL_MM_TELEPORTER_14 (EL_MM_TELEPORTER_START + 13)
-#define EL_MM_TELEPORTER_15 (EL_MM_TELEPORTER_START + 14)
-#define EL_MM_TELEPORTER_16 (EL_MM_TELEPORTER_START + 15)
-#define EL_MM_TELEPORTER_END EL_MM_TELEPORTER_15
-#define EL_MM_FUSE_ACTIVE (EL_MM_START + 114)
-#define EL_MM_PACMAN_START (EL_MM_START + 115)
-#define EL_MM_PACMAN_RIGHT (EL_MM_PACMAN_START + 0)
-#define EL_MM_PACMAN_UP (EL_MM_PACMAN_START + 1)
-#define EL_MM_PACMAN_LEFT (EL_MM_PACMAN_START + 2)
-#define EL_MM_PACMAN_DOWN (EL_MM_PACMAN_START + 3)
-#define EL_MM_PACMAN_END EL_MM_PACMAN_DOWN
-#define EL_MM_POLARIZER_START (EL_MM_START + 119)
-#define EL_MM_POLARIZER_1 (EL_MM_POLARIZER_START + 0)
-#define EL_MM_POLARIZER_2 (EL_MM_POLARIZER_START + 1)
-#define EL_MM_POLARIZER_3 (EL_MM_POLARIZER_START + 2)
-#define EL_MM_POLARIZER_4 (EL_MM_POLARIZER_START + 3)
-#define EL_MM_POLARIZER_5 (EL_MM_POLARIZER_START + 4)
-#define EL_MM_POLARIZER_6 (EL_MM_POLARIZER_START + 5)
-#define EL_MM_POLARIZER_7 (EL_MM_POLARIZER_START + 6)
-#define EL_MM_POLARIZER_8 (EL_MM_POLARIZER_START + 7)
-#define EL_MM_POLARIZER_9 (EL_MM_POLARIZER_START + 8)
-#define EL_MM_POLARIZER_10 (EL_MM_POLARIZER_START + 9)
-#define EL_MM_POLARIZER_11 (EL_MM_POLARIZER_START + 10)
-#define EL_MM_POLARIZER_12 (EL_MM_POLARIZER_START + 11)
-#define EL_MM_POLARIZER_13 (EL_MM_POLARIZER_START + 12)
-#define EL_MM_POLARIZER_14 (EL_MM_POLARIZER_START + 13)
-#define EL_MM_POLARIZER_15 (EL_MM_POLARIZER_START + 14)
-#define EL_MM_POLARIZER_16 (EL_MM_POLARIZER_START + 15)
-#define EL_MM_POLARIZER_END EL_MM_POLARIZER_15
-#define EL_MM_POLARIZER_CROSS_START (EL_MM_START + 135)
-#define EL_MM_POLARIZER_CROSS_1 (EL_MM_POLARIZER_CROSS_START + 0)
-#define EL_MM_POLARIZER_CROSS_2 (EL_MM_POLARIZER_CROSS_START + 1)
-#define EL_MM_POLARIZER_CROSS_3 (EL_MM_POLARIZER_CROSS_START + 2)
-#define EL_MM_POLARIZER_CROSS_4 (EL_MM_POLARIZER_CROSS_START + 3)
-#define EL_MM_POLARIZER_CROSS_END EL_MM_POLARIZER_CROSS_03
-#define EL_MM_MIRROR_FIXED_START (EL_MM_START + 139)
-#define EL_MM_MIRROR_FIXED_1 (EL_MM_MIRROR_FIXED_START + 0)
-#define EL_MM_MIRROR_FIXED_2 (EL_MM_MIRROR_FIXED_START + 1)
-#define EL_MM_MIRROR_FIXED_3 (EL_MM_MIRROR_FIXED_START + 2)
-#define EL_MM_MIRROR_FIXED_4 (EL_MM_MIRROR_FIXED_START + 3)
-#define EL_MM_MIRROR_FIXED_END EL_MM_MIRROR_FIXED_03
-#define EL_MM_STEEL_LOCK (EL_MM_START + 143)
-#define EL_MM_KEY (EL_MM_START + 144)
-#define EL_MM_LIGHTBULB (EL_MM_START + 145)
-#define EL_MM_LIGHTBULB_ACTIVE (EL_MM_START + 146)
-#define EL_MM_LIGHTBALL (EL_MM_START + 147)
-#define EL_MM_STEEL_BLOCK (EL_MM_START + 148)
-#define EL_MM_WOODEN_LOCK (EL_MM_START + 149)
-#define EL_MM_FUEL_FULL (EL_MM_START + 150)
-#define EL_MM_WOODEN_GRID_FIXED_START (EL_MM_START + 151)
-#define EL_MM_WOODEN_GRID_FIXED_1 (EL_MM_WOODEN_GRID_FIXED_START + 0)
-#define EL_MM_WOODEN_GRID_FIXED_2 (EL_MM_WOODEN_GRID_FIXED_START + 1)
-#define EL_MM_WOODEN_GRID_FIXED_3 (EL_MM_WOODEN_GRID_FIXED_START + 2)
-#define EL_MM_WOODEN_GRID_FIXED_4 (EL_MM_WOODEN_GRID_FIXED_START + 3)
-#define EL_MM_WOODEN_GRID_FIXED_END EL_MM_WOODEN_GRID_FIXED_03
-#define EL_MM_FUEL_EMPTY (EL_MM_START + 155)
-#define EL_MM_ENVELOPE_1 (EL_MM_START + 156)
-#define EL_MM_ENVELOPE_2 (EL_MM_START + 157)
-#define EL_MM_ENVELOPE_3 (EL_MM_START + 158)
-#define EL_MM_ENVELOPE_4 (EL_MM_START + 159)
-
-#define EL_MM_END_1 (EL_MM_START + 159)
-#define EL_MM_START_2 (EL_MM_START + 160)
-
-#define EL_DF_START EL_MM_START_2
-#define EL_DF_START_1 EL_MM_START_2
-#define EL_DF_START2 (EL_DF_START - 240)
-
-#define EL_DF_MIRROR_START EL_DF_START
-#define EL_DF_MIRROR_1 (EL_DF_MIRROR_START + 0)
-#define EL_DF_MIRROR_2 (EL_DF_MIRROR_START + 1)
-#define EL_DF_MIRROR_3 (EL_DF_MIRROR_START + 2)
-#define EL_DF_MIRROR_4 (EL_DF_MIRROR_START + 3)
-#define EL_DF_MIRROR_5 (EL_DF_MIRROR_START + 4)
-#define EL_DF_MIRROR_6 (EL_DF_MIRROR_START + 5)
-#define EL_DF_MIRROR_7 (EL_DF_MIRROR_START + 6)
-#define EL_DF_MIRROR_8 (EL_DF_MIRROR_START + 7)
-#define EL_DF_MIRROR_9 (EL_DF_MIRROR_START + 8)
-#define EL_DF_MIRROR_10 (EL_DF_MIRROR_START + 9)
-#define EL_DF_MIRROR_11 (EL_DF_MIRROR_START + 10)
-#define EL_DF_MIRROR_12 (EL_DF_MIRROR_START + 11)
-#define EL_DF_MIRROR_13 (EL_DF_MIRROR_START + 12)
-#define EL_DF_MIRROR_14 (EL_DF_MIRROR_START + 13)
-#define EL_DF_MIRROR_15 (EL_DF_MIRROR_START + 14)
-#define EL_DF_MIRROR_16 (EL_DF_MIRROR_START + 15)
-#define EL_DF_MIRROR_END EL_DF_MIRROR_15
-
-#define EL_DF_WOODEN_GRID_FIXED_START (EL_DF_START2 + 256)
-#define EL_DF_WOODEN_GRID_FIXED_1 (EL_DF_WOODEN_GRID_FIXED_START + 0)
-#define EL_DF_WOODEN_GRID_FIXED_2 (EL_DF_WOODEN_GRID_FIXED_START + 1)
-#define EL_DF_WOODEN_GRID_FIXED_3 (EL_DF_WOODEN_GRID_FIXED_START + 2)
-#define EL_DF_WOODEN_GRID_FIXED_4 (EL_DF_WOODEN_GRID_FIXED_START + 3)
-#define EL_DF_WOODEN_GRID_FIXED_5 (EL_DF_WOODEN_GRID_FIXED_START + 4)
-#define EL_DF_WOODEN_GRID_FIXED_6 (EL_DF_WOODEN_GRID_FIXED_START + 5)
-#define EL_DF_WOODEN_GRID_FIXED_7 (EL_DF_WOODEN_GRID_FIXED_START + 6)
-#define EL_DF_WOODEN_GRID_FIXED_8 (EL_DF_WOODEN_GRID_FIXED_START + 7)
-#define EL_DF_WOODEN_GRID_FIXED_END EL_DF_WOODEN_GRID_FIXED_07
-
-#define EL_DF_STEEL_GRID_FIXED_START (EL_DF_START2 + 264)
-#define EL_DF_STEEL_GRID_FIXED_1 (EL_DF_STEEL_GRID_FIXED_START + 0)
-#define EL_DF_STEEL_GRID_FIXED_2 (EL_DF_STEEL_GRID_FIXED_START + 1)
-#define EL_DF_STEEL_GRID_FIXED_3 (EL_DF_STEEL_GRID_FIXED_START + 2)
-#define EL_DF_STEEL_GRID_FIXED_4 (EL_DF_STEEL_GRID_FIXED_START + 3)
-#define EL_DF_STEEL_GRID_FIXED_5 (EL_DF_STEEL_GRID_FIXED_START + 4)
-#define EL_DF_STEEL_GRID_FIXED_6 (EL_DF_STEEL_GRID_FIXED_START + 5)
-#define EL_DF_STEEL_GRID_FIXED_7 (EL_DF_STEEL_GRID_FIXED_START + 6)
-#define EL_DF_STEEL_GRID_FIXED_8 (EL_DF_STEEL_GRID_FIXED_START + 7)
-#define EL_DF_STEEL_GRID_FIXED_END EL_DF_STEEL_GRID_FIXED_07
-
-#define EL_DF_WOODEN_WALL_START (EL_DF_START2 + 272)
-#define EL_DF_WOODEN_WALL_1 (EL_DF_WOODEN_WALL_START + 0)
-#define EL_DF_WOODEN_WALL_END (EL_DF_WOODEN_WALL_START + 15)
-
-#define EL_DF_STEEL_WALL_START (EL_DF_START2 + 288)
-#define EL_DF_STEEL_WALL_1 (EL_DF_STEEL_WALL_START + 0)
-#define EL_DF_STEEL_WALL_END (EL_DF_STEEL_WALL_START + 15)
-
-#define EL_DF_WALL_START EL_DF_WOODEN_WALL_START
-#define EL_DF_WALL_END EL_DF_STEEL_WALL_END
-
-#define EL_DF_EMPTY (EL_DF_START2 + 304)
-#define EL_DF_CELL (EL_DF_START2 + 305)
-#define EL_DF_MINE (EL_DF_START2 + 306)
-#define EL_DF_REFRACTOR (EL_DF_START2 + 307)
-
-#define EL_DF_LASER_START (EL_DF_START2 + 308)
-#define EL_DF_LASER_RIGHT (EL_DF_LASER_START + 0)
-#define EL_DF_LASER_UP (EL_DF_LASER_START + 1)
-#define EL_DF_LASER_LEFT (EL_DF_LASER_START + 2)
-#define EL_DF_LASER_DOWN (EL_DF_LASER_START + 3)
-#define EL_DF_LASER_END EL_DF_LASER_DOWN
-
-#define EL_DF_RECEIVER_START (EL_DF_START2 + 312)
-#define EL_DF_RECEIVER_RIGHT (EL_DF_RECEIVER_START + 0)
-#define EL_DF_RECEIVER_UP (EL_DF_RECEIVER_START + 1)
-#define EL_DF_RECEIVER_LEFT (EL_DF_RECEIVER_START + 2)
-#define EL_DF_RECEIVER_DOWN (EL_DF_RECEIVER_START + 3)
-#define EL_DF_RECEIVER_END EL_DF_RECEIVER_DOWN
-
-#define EL_DF_FIBRE_OPTIC_START (EL_DF_START2 + 316)
-#define EL_DF_FIBRE_OPTIC_RED_1 (EL_DF_FIBRE_OPTIC_START + 0)
-#define EL_DF_FIBRE_OPTIC_RED_2 (EL_DF_FIBRE_OPTIC_START + 1)
-#define EL_DF_FIBRE_OPTIC_YELLOW_1 (EL_DF_FIBRE_OPTIC_START + 2)
-#define EL_DF_FIBRE_OPTIC_YELLOW_2 (EL_DF_FIBRE_OPTIC_START + 3)
-#define EL_DF_FIBRE_OPTIC_GREEN_1 (EL_DF_FIBRE_OPTIC_START + 4)
-#define EL_DF_FIBRE_OPTIC_GREEN_2 (EL_DF_FIBRE_OPTIC_START + 5)
-#define EL_DF_FIBRE_OPTIC_BLUE_1 (EL_DF_FIBRE_OPTIC_START + 6)
-#define EL_DF_FIBRE_OPTIC_BLUE_2 (EL_DF_FIBRE_OPTIC_START + 7)
-#define EL_DF_FIBRE_OPTIC_END EL_DF_FIBRE_OPTIC_07
-
-#define EL_DF_MIRROR_ROTATING_START (EL_DF_START2 + 324)
-#define EL_DF_MIRROR_ROTATING_1 (EL_DF_MIRROR_ROTATING_START + 0)
-#define EL_DF_MIRROR_ROTATING_2 (EL_DF_MIRROR_ROTATING_START + 1)
-#define EL_DF_MIRROR_ROTATING_3 (EL_DF_MIRROR_ROTATING_START + 2)
-#define EL_DF_MIRROR_ROTATING_4 (EL_DF_MIRROR_ROTATING_START + 3)
-#define EL_DF_MIRROR_ROTATING_5 (EL_DF_MIRROR_ROTATING_START + 4)
-#define EL_DF_MIRROR_ROTATING_6 (EL_DF_MIRROR_ROTATING_START + 5)
-#define EL_DF_MIRROR_ROTATING_7 (EL_DF_MIRROR_ROTATING_START + 6)
-#define EL_DF_MIRROR_ROTATING_8 (EL_DF_MIRROR_ROTATING_START + 7)
-#define EL_DF_MIRROR_ROTATING_9 (EL_DF_MIRROR_ROTATING_START + 8)
-#define EL_DF_MIRROR_ROTATING_10 (EL_DF_MIRROR_ROTATING_START + 9)
-#define EL_DF_MIRROR_ROTATING_11 (EL_DF_MIRROR_ROTATING_START + 10)
-#define EL_DF_MIRROR_ROTATING_12 (EL_DF_MIRROR_ROTATING_START + 11)
-#define EL_DF_MIRROR_ROTATING_13 (EL_DF_MIRROR_ROTATING_START + 12)
-#define EL_DF_MIRROR_ROTATING_14 (EL_DF_MIRROR_ROTATING_START + 13)
-#define EL_DF_MIRROR_ROTATING_15 (EL_DF_MIRROR_ROTATING_START + 14)
-#define EL_DF_MIRROR_ROTATING_16 (EL_DF_MIRROR_ROTATING_START + 15)
-#define EL_DF_MIRROR_ROTATING_END EL_DF_MIRROR_ROTATING_15
-
-#define EL_DF_WOODEN_GRID_ROTATING_START (EL_DF_START2 + 340)
-#define EL_DF_WOODEN_GRID_ROTATING_1 (EL_DF_WOODEN_GRID_ROTATING_START + 0)
-#define EL_DF_WOODEN_GRID_ROTATING_2 (EL_DF_WOODEN_GRID_ROTATING_START + 1)
-#define EL_DF_WOODEN_GRID_ROTATING_3 (EL_DF_WOODEN_GRID_ROTATING_START + 2)
-#define EL_DF_WOODEN_GRID_ROTATING_4 (EL_DF_WOODEN_GRID_ROTATING_START + 3)
-#define EL_DF_WOODEN_GRID_ROTATING_5 (EL_DF_WOODEN_GRID_ROTATING_START + 4)
-#define EL_DF_WOODEN_GRID_ROTATING_6 (EL_DF_WOODEN_GRID_ROTATING_START + 5)
-#define EL_DF_WOODEN_GRID_ROTATING_7 (EL_DF_WOODEN_GRID_ROTATING_START + 6)
-#define EL_DF_WOODEN_GRID_ROTATING_8 (EL_DF_WOODEN_GRID_ROTATING_START + 7)
-#define EL_DF_WOODEN_GRID_ROTATING_END EL_DF_WOODEN_GRID_ROTATING_07
-
-#define EL_DF_STEEL_GRID_ROTATING_START (EL_DF_START2 + 348)
-#define EL_DF_STEEL_GRID_ROTATING_1 (EL_DF_STEEL_GRID_ROTATING_START + 0)
-#define EL_DF_STEEL_GRID_ROTATING_2 (EL_DF_STEEL_GRID_ROTATING_START + 1)
-#define EL_DF_STEEL_GRID_ROTATING_3 (EL_DF_STEEL_GRID_ROTATING_START + 2)
-#define EL_DF_STEEL_GRID_ROTATING_4 (EL_DF_STEEL_GRID_ROTATING_START + 3)
-#define EL_DF_STEEL_GRID_ROTATING_5 (EL_DF_STEEL_GRID_ROTATING_START + 4)
-#define EL_DF_STEEL_GRID_ROTATING_6 (EL_DF_STEEL_GRID_ROTATING_START + 5)
-#define EL_DF_STEEL_GRID_ROTATING_7 (EL_DF_STEEL_GRID_ROTATING_START + 6)
-#define EL_DF_STEEL_GRID_ROTATING_8 (EL_DF_STEEL_GRID_ROTATING_START + 7)
-#define EL_DF_STEEL_GRID_ROTATING_END EL_DF_STEEL_GRID_ROTATING_07
-
-#define EL_DF_END_1 (EL_DF_START2 + 355)
-
-#define EL_MM_TELEPORTER_RED_START (EL_DF_START2 + 356)
-#define EL_MM_TELEPORTER_RED_1 (EL_MM_TELEPORTER_RED_START + 0)
-#define EL_MM_TELEPORTER_RED_2 (EL_MM_TELEPORTER_RED_START + 1)
-#define EL_MM_TELEPORTER_RED_3 (EL_MM_TELEPORTER_RED_START + 2)
-#define EL_MM_TELEPORTER_RED_4 (EL_MM_TELEPORTER_RED_START + 3)
-#define EL_MM_TELEPORTER_RED_5 (EL_MM_TELEPORTER_RED_START + 4)
-#define EL_MM_TELEPORTER_RED_6 (EL_MM_TELEPORTER_RED_START + 5)
-#define EL_MM_TELEPORTER_RED_7 (EL_MM_TELEPORTER_RED_START + 6)
-#define EL_MM_TELEPORTER_RED_8 (EL_MM_TELEPORTER_RED_START + 7)
-#define EL_MM_TELEPORTER_RED_9 (EL_MM_TELEPORTER_RED_START + 8)
-#define EL_MM_TELEPORTER_RED_10 (EL_MM_TELEPORTER_RED_START + 9)
-#define EL_MM_TELEPORTER_RED_11 (EL_MM_TELEPORTER_RED_START + 10)
-#define EL_MM_TELEPORTER_RED_12 (EL_MM_TELEPORTER_RED_START + 11)
-#define EL_MM_TELEPORTER_RED_13 (EL_MM_TELEPORTER_RED_START + 12)
-#define EL_MM_TELEPORTER_RED_14 (EL_MM_TELEPORTER_RED_START + 13)
-#define EL_MM_TELEPORTER_RED_15 (EL_MM_TELEPORTER_RED_START + 14)
-#define EL_MM_TELEPORTER_RED_16 (EL_MM_TELEPORTER_RED_START + 15)
-#define EL_MM_TELEPORTER_RED_END EL_MM_TELEPORTER_RED_16
-#define EL_MM_TELEPORTER_YELLOW_START (EL_DF_START2 + 372)
-#define EL_MM_TELEPORTER_YELLOW_1 (EL_MM_TELEPORTER_YELLOW_START + 0)
-#define EL_MM_TELEPORTER_YELLOW_2 (EL_MM_TELEPORTER_YELLOW_START + 1)
-#define EL_MM_TELEPORTER_YELLOW_3 (EL_MM_TELEPORTER_YELLOW_START + 2)
-#define EL_MM_TELEPORTER_YELLOW_4 (EL_MM_TELEPORTER_YELLOW_START + 3)
-#define EL_MM_TELEPORTER_YELLOW_5 (EL_MM_TELEPORTER_YELLOW_START + 4)
-#define EL_MM_TELEPORTER_YELLOW_6 (EL_MM_TELEPORTER_YELLOW_START + 5)
-#define EL_MM_TELEPORTER_YELLOW_7 (EL_MM_TELEPORTER_YELLOW_START + 6)
-#define EL_MM_TELEPORTER_YELLOW_8 (EL_MM_TELEPORTER_YELLOW_START + 7)
-#define EL_MM_TELEPORTER_YELLOW_9 (EL_MM_TELEPORTER_YELLOW_START + 8)
-#define EL_MM_TELEPORTER_YELLOW_10 (EL_MM_TELEPORTER_YELLOW_START + 9)
-#define EL_MM_TELEPORTER_YELLOW_11 (EL_MM_TELEPORTER_YELLOW_START + 10)
-#define EL_MM_TELEPORTER_YELLOW_12 (EL_MM_TELEPORTER_YELLOW_START + 11)
-#define EL_MM_TELEPORTER_YELLOW_13 (EL_MM_TELEPORTER_YELLOW_START + 12)
-#define EL_MM_TELEPORTER_YELLOW_14 (EL_MM_TELEPORTER_YELLOW_START + 13)
-#define EL_MM_TELEPORTER_YELLOW_15 (EL_MM_TELEPORTER_YELLOW_START + 14)
-#define EL_MM_TELEPORTER_YELLOW_16 (EL_MM_TELEPORTER_YELLOW_START + 15)
-#define EL_MM_TELEPORTER_YELLOW_END EL_MM_TELEPORTER_YELLOW_16
-#define EL_MM_TELEPORTER_GREEN_START (EL_DF_START2 + 388)
-#define EL_MM_TELEPORTER_GREEN_1 (EL_MM_TELEPORTER_GREEN_START + 0)
-#define EL_MM_TELEPORTER_GREEN_2 (EL_MM_TELEPORTER_GREEN_START + 1)
-#define EL_MM_TELEPORTER_GREEN_3 (EL_MM_TELEPORTER_GREEN_START + 2)
-#define EL_MM_TELEPORTER_GREEN_4 (EL_MM_TELEPORTER_GREEN_START + 3)
-#define EL_MM_TELEPORTER_GREEN_5 (EL_MM_TELEPORTER_GREEN_START + 4)
-#define EL_MM_TELEPORTER_GREEN_6 (EL_MM_TELEPORTER_GREEN_START + 5)
-#define EL_MM_TELEPORTER_GREEN_7 (EL_MM_TELEPORTER_GREEN_START + 6)
-#define EL_MM_TELEPORTER_GREEN_8 (EL_MM_TELEPORTER_GREEN_START + 7)
-#define EL_MM_TELEPORTER_GREEN_9 (EL_MM_TELEPORTER_GREEN_START + 8)
-#define EL_MM_TELEPORTER_GREEN_10 (EL_MM_TELEPORTER_GREEN_START + 9)
-#define EL_MM_TELEPORTER_GREEN_11 (EL_MM_TELEPORTER_GREEN_START + 10)
-#define EL_MM_TELEPORTER_GREEN_12 (EL_MM_TELEPORTER_GREEN_START + 11)
-#define EL_MM_TELEPORTER_GREEN_13 (EL_MM_TELEPORTER_GREEN_START + 12)
-#define EL_MM_TELEPORTER_GREEN_14 (EL_MM_TELEPORTER_GREEN_START + 13)
-#define EL_MM_TELEPORTER_GREEN_15 (EL_MM_TELEPORTER_GREEN_START + 14)
-#define EL_MM_TELEPORTER_GREEN_16 (EL_MM_TELEPORTER_GREEN_START + 15)
-#define EL_MM_TELEPORTER_GREEN_END EL_MM_TELEPORTER_GREEN_16
-#define EL_MM_TELEPORTER_BLUE_START (EL_DF_START2 + 404)
-#define EL_MM_TELEPORTER_BLUE_1 (EL_MM_TELEPORTER_BLUE_START + 0)
-#define EL_MM_TELEPORTER_BLUE_2 (EL_MM_TELEPORTER_BLUE_START + 1)
-#define EL_MM_TELEPORTER_BLUE_3 (EL_MM_TELEPORTER_BLUE_START + 2)
-#define EL_MM_TELEPORTER_BLUE_4 (EL_MM_TELEPORTER_BLUE_START + 3)
-#define EL_MM_TELEPORTER_BLUE_5 (EL_MM_TELEPORTER_BLUE_START + 4)
-#define EL_MM_TELEPORTER_BLUE_6 (EL_MM_TELEPORTER_BLUE_START + 5)
-#define EL_MM_TELEPORTER_BLUE_7 (EL_MM_TELEPORTER_BLUE_START + 6)
-#define EL_MM_TELEPORTER_BLUE_8 (EL_MM_TELEPORTER_BLUE_START + 7)
-#define EL_MM_TELEPORTER_BLUE_9 (EL_MM_TELEPORTER_BLUE_START + 8)
-#define EL_MM_TELEPORTER_BLUE_10 (EL_MM_TELEPORTER_BLUE_START + 9)
-#define EL_MM_TELEPORTER_BLUE_11 (EL_MM_TELEPORTER_BLUE_START + 10)
-#define EL_MM_TELEPORTER_BLUE_12 (EL_MM_TELEPORTER_BLUE_START + 11)
-#define EL_MM_TELEPORTER_BLUE_13 (EL_MM_TELEPORTER_BLUE_START + 12)
-#define EL_MM_TELEPORTER_BLUE_14 (EL_MM_TELEPORTER_BLUE_START + 13)
-#define EL_MM_TELEPORTER_BLUE_15 (EL_MM_TELEPORTER_BLUE_START + 14)
-#define EL_MM_TELEPORTER_BLUE_16 (EL_MM_TELEPORTER_BLUE_START + 15)
-#define EL_MM_TELEPORTER_BLUE_END EL_MM_TELEPORTER_BLUE_16
-
-#define EL_MM_MCDUFFIN 1204
-#define EL_MM_PACMAN 1205
-#define EL_MM_FUSE 1206
-#define EL_MM_STEEL_WALL 1207
-#define EL_MM_WOODEN_WALL 1208
-#define EL_MM_ICE_WALL 1209
-#define EL_MM_AMOEBA_WALL 1210
-#define EL_DF_LASER 1211
-#define EL_DF_RECEIVER 1212
-#define EL_DF_STEEL_WALL 1213
-#define EL_DF_WOODEN_WALL 1214
-
-#define EL_MM_END_2 (EL_DF_START2 + 430)
-
-#define EL_SPRING_LEFT 1215
-#define EL_SPRING_RIGHT 1216
+#define EL_STEEL_CHAR_ASCII0_END (EL_STEEL_CHAR_ASCII0 + 111)
+#define EL_STEEL_CHAR_END (EL_STEEL_CHAR_START + 79)
+
+#define EL_STEEL_CHAR(c) (EL_STEEL_CHAR_ASCII0+MAP_FONT_ASCII(c))
+
+// unused elements
+#define EL_SPERMS 812
+#define EL_BULLET 813
+#define EL_HEART 814
+#define EL_CROSS 815
+#define EL_FRANKIE 816
+#define EL_SIGN_SPERMS 817
+#define EL_SIGN_BULLET 818
+#define EL_SIGN_HEART 819
+#define EL_SIGN_CROSS 820
+#define EL_SIGN_FRANKIE 821
+
+// DC2 style elements
+#define EL_STEEL_EXIT_CLOSED 822
+#define EL_STEEL_EXIT_OPEN 823
+
+#define EL_DC_STEELWALL_1_LEFT 824
+#define EL_DC_STEELWALL_1_RIGHT 825
+#define EL_DC_STEELWALL_1_TOP 826
+#define EL_DC_STEELWALL_1_BOTTOM 827
+#define EL_DC_STEELWALL_1_HORIZONTAL 828
+#define EL_DC_STEELWALL_1_VERTICAL 829
+#define EL_DC_STEELWALL_1_TOPLEFT 830
+#define EL_DC_STEELWALL_1_TOPRIGHT 831
+#define EL_DC_STEELWALL_1_BOTTOMLEFT 832
+#define EL_DC_STEELWALL_1_BOTTOMRIGHT 833
+#define EL_DC_STEELWALL_1_TOPLEFT_2 834
+#define EL_DC_STEELWALL_1_TOPRIGHT_2 835
+#define EL_DC_STEELWALL_1_BOTTOMLEFT_2 836
+#define EL_DC_STEELWALL_1_BOTTOMRIGHT_2 837
+
+#define EL_DC_STEELWALL_2_LEFT 838
+#define EL_DC_STEELWALL_2_RIGHT 839
+#define EL_DC_STEELWALL_2_TOP 840
+#define EL_DC_STEELWALL_2_BOTTOM 841
+#define EL_DC_STEELWALL_2_HORIZONTAL 842
+#define EL_DC_STEELWALL_2_VERTICAL 843
+#define EL_DC_STEELWALL_2_MIDDLE 844
+#define EL_DC_STEELWALL_2_SINGLE 845
+
+#define EL_DC_SWITCHGATE_SWITCH_UP 846
+#define EL_DC_SWITCHGATE_SWITCH_DOWN 847
+#define EL_DC_TIMEGATE_SWITCH 848
+#define EL_DC_TIMEGATE_SWITCH_ACTIVE 849
+
+#define EL_DC_LANDMINE 850
+
+#define EL_EXPANDABLE_STEELWALL 851
+#define EL_EXPANDABLE_STEELWALL_HORIZONTAL 852
+#define EL_EXPANDABLE_STEELWALL_VERTICAL 853
+#define EL_EXPANDABLE_STEELWALL_ANY 854
+
+#define EL_EM_EXIT_CLOSED 855
+#define EL_EM_EXIT_OPEN 856
+#define EL_EM_STEEL_EXIT_CLOSED 857
+#define EL_EM_STEEL_EXIT_OPEN 858
+
+#define EL_DC_GATE_FAKE_GRAY 859
+
+#define EL_DC_MAGIC_WALL 860
+
+#define EL_QUICKSAND_FAST_EMPTY 861
+#define EL_QUICKSAND_FAST_FULL 862
+
+#define EL_FROM_LEVEL_TEMPLATE 863
+
+// MM style elements
+#define EL_MM_START 864
+#define EL_MM_START_1 EL_MM_START
+
+#define EL_MM_EMPTY_SPACE (EL_MM_START + 0)
+#define EL_MM_EMPTY EL_MM_EMPTY_SPACE
+#define EL_MM_MIRROR_START (EL_MM_START + 1)
+#define EL_MM_MIRROR_1 (EL_MM_MIRROR_START + 0)
+#define EL_MM_MIRROR_2 (EL_MM_MIRROR_START + 1)
+#define EL_MM_MIRROR_3 (EL_MM_MIRROR_START + 2)
+#define EL_MM_MIRROR_4 (EL_MM_MIRROR_START + 3)
+#define EL_MM_MIRROR_5 (EL_MM_MIRROR_START + 4)
+#define EL_MM_MIRROR_6 (EL_MM_MIRROR_START + 5)
+#define EL_MM_MIRROR_7 (EL_MM_MIRROR_START + 6)
+#define EL_MM_MIRROR_8 (EL_MM_MIRROR_START + 7)
+#define EL_MM_MIRROR_9 (EL_MM_MIRROR_START + 8)
+#define EL_MM_MIRROR_10 (EL_MM_MIRROR_START + 9)
+#define EL_MM_MIRROR_11 (EL_MM_MIRROR_START + 10)
+#define EL_MM_MIRROR_12 (EL_MM_MIRROR_START + 11)
+#define EL_MM_MIRROR_13 (EL_MM_MIRROR_START + 12)
+#define EL_MM_MIRROR_14 (EL_MM_MIRROR_START + 13)
+#define EL_MM_MIRROR_15 (EL_MM_MIRROR_START + 14)
+#define EL_MM_MIRROR_16 (EL_MM_MIRROR_START + 15)
+#define EL_MM_MIRROR_END EL_MM_MIRROR_15
+#define EL_MM_STEEL_GRID_FIXED_START (EL_MM_START + 17)
+#define EL_MM_STEEL_GRID_FIXED_1 (EL_MM_STEEL_GRID_FIXED_START + 0)
+#define EL_MM_STEEL_GRID_FIXED_2 (EL_MM_STEEL_GRID_FIXED_START + 1)
+#define EL_MM_STEEL_GRID_FIXED_3 (EL_MM_STEEL_GRID_FIXED_START + 2)
+#define EL_MM_STEEL_GRID_FIXED_4 (EL_MM_STEEL_GRID_FIXED_START + 3)
+#define EL_MM_STEEL_GRID_FIXED_END EL_MM_STEEL_GRID_FIXED_03
+#define EL_MM_MCDUFFIN_START (EL_MM_START + 21)
+#define EL_MM_MCDUFFIN_RIGHT (EL_MM_MCDUFFIN_START + 0)
+#define EL_MM_MCDUFFIN_UP (EL_MM_MCDUFFIN_START + 1)
+#define EL_MM_MCDUFFIN_LEFT (EL_MM_MCDUFFIN_START + 2)
+#define EL_MM_MCDUFFIN_DOWN (EL_MM_MCDUFFIN_START + 3)
+#define EL_MM_MCDUFFIN_END EL_MM_MCDUFFIN_DOWN
+#define EL_MM_EXIT_CLOSED (EL_MM_START + 25)
+#define EL_MM_EXIT_OPENING_1 (EL_MM_START + 26)
+#define EL_MM_EXIT_OPENING_2 (EL_MM_START + 27)
+#define EL_MM_EXIT_OPEN (EL_MM_START + 28)
+#define EL_MM_KETTLE (EL_MM_START + 29)
+#define EL_MM_BOMB (EL_MM_START + 30)
+#define EL_MM_PRISM (EL_MM_START + 31)
+#define EL_MM_WALL_START (EL_MM_START + 32)
+#define EL_MM_WALL_EMPTY EL_MM_WALL_START
+#define EL_MM_WALL_00 EL_MM_WALL_START
+#define EL_MM_STEEL_WALL_START EL_MM_WALL_00
+#define EL_MM_STEEL_WALL_1 EL_MM_STEEL_WALL_START
+#define EL_MM_WALL_15 (EL_MM_START + 47)
+#define EL_MM_STEEL_WALL_END EL_MM_WALL_15
+#define EL_MM_WALL_16 (EL_MM_START + 48)
+#define EL_MM_WOODEN_WALL_START EL_MM_WALL_16
+#define EL_MM_WOODEN_WALL_1 EL_MM_WOODEN_WALL_START
+#define EL_MM_WALL_31 (EL_MM_START + 63)
+#define EL_MM_WOODEN_WALL_END EL_MM_WALL_31
+#define EL_MM_WALL_32 (EL_MM_START + 64)
+#define EL_MM_ICE_WALL_START EL_MM_WALL_32
+#define EL_MM_ICE_WALL_1 EL_MM_ICE_WALL_START
+#define EL_MM_WALL_47 (EL_MM_START + 79)
+#define EL_MM_ICE_WALL_END EL_MM_WALL_47
+#define EL_MM_WALL_48 (EL_MM_START + 80)
+#define EL_MM_AMOEBA_WALL_START EL_MM_WALL_48
+#define EL_MM_AMOEBA_WALL_1 EL_MM_AMOEBA_WALL_START
+#define EL_MM_WALL_63 (EL_MM_START + 95)
+#define EL_MM_AMOEBA_WALL_END EL_MM_WALL_63
+#define EL_MM_WALL_END EL_MM_WALL_63
+#define EL_MM_WOODEN_BLOCK (EL_MM_START + 96)
+#define EL_MM_GRAY_BALL (EL_MM_START + 97)
+#define EL_MM_TELEPORTER_START (EL_MM_START + 98)
+#define EL_MM_TELEPORTER_1 (EL_MM_TELEPORTER_START + 0)
+#define EL_MM_TELEPORTER_2 (EL_MM_TELEPORTER_START + 1)
+#define EL_MM_TELEPORTER_3 (EL_MM_TELEPORTER_START + 2)
+#define EL_MM_TELEPORTER_4 (EL_MM_TELEPORTER_START + 3)
+#define EL_MM_TELEPORTER_5 (EL_MM_TELEPORTER_START + 4)
+#define EL_MM_TELEPORTER_6 (EL_MM_TELEPORTER_START + 5)
+#define EL_MM_TELEPORTER_7 (EL_MM_TELEPORTER_START + 6)
+#define EL_MM_TELEPORTER_8 (EL_MM_TELEPORTER_START + 7)
+#define EL_MM_TELEPORTER_9 (EL_MM_TELEPORTER_START + 8)
+#define EL_MM_TELEPORTER_10 (EL_MM_TELEPORTER_START + 9)
+#define EL_MM_TELEPORTER_11 (EL_MM_TELEPORTER_START + 10)
+#define EL_MM_TELEPORTER_12 (EL_MM_TELEPORTER_START + 11)
+#define EL_MM_TELEPORTER_13 (EL_MM_TELEPORTER_START + 12)
+#define EL_MM_TELEPORTER_14 (EL_MM_TELEPORTER_START + 13)
+#define EL_MM_TELEPORTER_15 (EL_MM_TELEPORTER_START + 14)
+#define EL_MM_TELEPORTER_16 (EL_MM_TELEPORTER_START + 15)
+#define EL_MM_TELEPORTER_END EL_MM_TELEPORTER_15
+#define EL_MM_FUSE_ACTIVE (EL_MM_START + 114)
+#define EL_MM_PACMAN_START (EL_MM_START + 115)
+#define EL_MM_PACMAN_RIGHT (EL_MM_PACMAN_START + 0)
+#define EL_MM_PACMAN_UP (EL_MM_PACMAN_START + 1)
+#define EL_MM_PACMAN_LEFT (EL_MM_PACMAN_START + 2)
+#define EL_MM_PACMAN_DOWN (EL_MM_PACMAN_START + 3)
+#define EL_MM_PACMAN_END EL_MM_PACMAN_DOWN
+#define EL_MM_POLARIZER_START (EL_MM_START + 119)
+#define EL_MM_POLARIZER_1 (EL_MM_POLARIZER_START + 0)
+#define EL_MM_POLARIZER_2 (EL_MM_POLARIZER_START + 1)
+#define EL_MM_POLARIZER_3 (EL_MM_POLARIZER_START + 2)
+#define EL_MM_POLARIZER_4 (EL_MM_POLARIZER_START + 3)
+#define EL_MM_POLARIZER_5 (EL_MM_POLARIZER_START + 4)
+#define EL_MM_POLARIZER_6 (EL_MM_POLARIZER_START + 5)
+#define EL_MM_POLARIZER_7 (EL_MM_POLARIZER_START + 6)
+#define EL_MM_POLARIZER_8 (EL_MM_POLARIZER_START + 7)
+#define EL_MM_POLARIZER_9 (EL_MM_POLARIZER_START + 8)
+#define EL_MM_POLARIZER_10 (EL_MM_POLARIZER_START + 9)
+#define EL_MM_POLARIZER_11 (EL_MM_POLARIZER_START + 10)
+#define EL_MM_POLARIZER_12 (EL_MM_POLARIZER_START + 11)
+#define EL_MM_POLARIZER_13 (EL_MM_POLARIZER_START + 12)
+#define EL_MM_POLARIZER_14 (EL_MM_POLARIZER_START + 13)
+#define EL_MM_POLARIZER_15 (EL_MM_POLARIZER_START + 14)
+#define EL_MM_POLARIZER_16 (EL_MM_POLARIZER_START + 15)
+#define EL_MM_POLARIZER_END EL_MM_POLARIZER_15
+#define EL_MM_POLARIZER_CROSS_START (EL_MM_START + 135)
+#define EL_MM_POLARIZER_CROSS_1 (EL_MM_POLARIZER_CROSS_START + 0)
+#define EL_MM_POLARIZER_CROSS_2 (EL_MM_POLARIZER_CROSS_START + 1)
+#define EL_MM_POLARIZER_CROSS_3 (EL_MM_POLARIZER_CROSS_START + 2)
+#define EL_MM_POLARIZER_CROSS_4 (EL_MM_POLARIZER_CROSS_START + 3)
+#define EL_MM_POLARIZER_CROSS_END EL_MM_POLARIZER_CROSS_03
+#define EL_MM_MIRROR_FIXED_START (EL_MM_START + 139)
+#define EL_MM_MIRROR_FIXED_1 (EL_MM_MIRROR_FIXED_START + 0)
+#define EL_MM_MIRROR_FIXED_2 (EL_MM_MIRROR_FIXED_START + 1)
+#define EL_MM_MIRROR_FIXED_3 (EL_MM_MIRROR_FIXED_START + 2)
+#define EL_MM_MIRROR_FIXED_4 (EL_MM_MIRROR_FIXED_START + 3)
+#define EL_MM_MIRROR_FIXED_END EL_MM_MIRROR_FIXED_03
+#define EL_MM_STEEL_LOCK (EL_MM_START + 143)
+#define EL_MM_KEY (EL_MM_START + 144)
+#define EL_MM_LIGHTBULB (EL_MM_START + 145)
+#define EL_MM_LIGHTBULB_ACTIVE (EL_MM_START + 146)
+#define EL_MM_LIGHTBALL (EL_MM_START + 147)
+#define EL_MM_STEEL_BLOCK (EL_MM_START + 148)
+#define EL_MM_WOODEN_LOCK (EL_MM_START + 149)
+#define EL_MM_FUEL_FULL (EL_MM_START + 150)
+#define EL_MM_WOODEN_GRID_FIXED_START (EL_MM_START + 151)
+#define EL_MM_WOODEN_GRID_FIXED_1 (EL_MM_WOODEN_GRID_FIXED_START + 0)
+#define EL_MM_WOODEN_GRID_FIXED_2 (EL_MM_WOODEN_GRID_FIXED_START + 1)
+#define EL_MM_WOODEN_GRID_FIXED_3 (EL_MM_WOODEN_GRID_FIXED_START + 2)
+#define EL_MM_WOODEN_GRID_FIXED_4 (EL_MM_WOODEN_GRID_FIXED_START + 3)
+#define EL_MM_WOODEN_GRID_FIXED_END EL_MM_WOODEN_GRID_FIXED_03
+#define EL_MM_FUEL_EMPTY (EL_MM_START + 155)
+#define EL_MM_ENVELOPE_1 (EL_MM_START + 156)
+#define EL_MM_ENVELOPE_2 (EL_MM_START + 157)
+#define EL_MM_ENVELOPE_3 (EL_MM_START + 158)
+#define EL_MM_ENVELOPE_4 (EL_MM_START + 159)
+
+#define EL_MM_END_1 (EL_MM_START + 159)
+#define EL_MM_START_2 (EL_MM_START + 160)
+
+// DF style elements
+#define EL_DF_START EL_MM_START_2
+#define EL_DF_START_1 EL_MM_START_2
+#define EL_DF_START2 (EL_DF_START - 240)
+
+#define EL_DF_MIRROR_START EL_DF_START
+#define EL_DF_MIRROR_1 (EL_DF_MIRROR_START + 0)
+#define EL_DF_MIRROR_2 (EL_DF_MIRROR_START + 1)
+#define EL_DF_MIRROR_3 (EL_DF_MIRROR_START + 2)
+#define EL_DF_MIRROR_4 (EL_DF_MIRROR_START + 3)
+#define EL_DF_MIRROR_5 (EL_DF_MIRROR_START + 4)
+#define EL_DF_MIRROR_6 (EL_DF_MIRROR_START + 5)
+#define EL_DF_MIRROR_7 (EL_DF_MIRROR_START + 6)
+#define EL_DF_MIRROR_8 (EL_DF_MIRROR_START + 7)
+#define EL_DF_MIRROR_9 (EL_DF_MIRROR_START + 8)
+#define EL_DF_MIRROR_10 (EL_DF_MIRROR_START + 9)
+#define EL_DF_MIRROR_11 (EL_DF_MIRROR_START + 10)
+#define EL_DF_MIRROR_12 (EL_DF_MIRROR_START + 11)
+#define EL_DF_MIRROR_13 (EL_DF_MIRROR_START + 12)
+#define EL_DF_MIRROR_14 (EL_DF_MIRROR_START + 13)
+#define EL_DF_MIRROR_15 (EL_DF_MIRROR_START + 14)
+#define EL_DF_MIRROR_16 (EL_DF_MIRROR_START + 15)
+#define EL_DF_MIRROR_END EL_DF_MIRROR_15
+
+#define EL_DF_WOODEN_GRID_FIXED_START (EL_DF_START2 + 256)
+#define EL_DF_WOODEN_GRID_FIXED_1 (EL_DF_WOODEN_GRID_FIXED_START + 0)
+#define EL_DF_WOODEN_GRID_FIXED_2 (EL_DF_WOODEN_GRID_FIXED_START + 1)
+#define EL_DF_WOODEN_GRID_FIXED_3 (EL_DF_WOODEN_GRID_FIXED_START + 2)
+#define EL_DF_WOODEN_GRID_FIXED_4 (EL_DF_WOODEN_GRID_FIXED_START + 3)
+#define EL_DF_WOODEN_GRID_FIXED_5 (EL_DF_WOODEN_GRID_FIXED_START + 4)
+#define EL_DF_WOODEN_GRID_FIXED_6 (EL_DF_WOODEN_GRID_FIXED_START + 5)
+#define EL_DF_WOODEN_GRID_FIXED_7 (EL_DF_WOODEN_GRID_FIXED_START + 6)
+#define EL_DF_WOODEN_GRID_FIXED_8 (EL_DF_WOODEN_GRID_FIXED_START + 7)
+#define EL_DF_WOODEN_GRID_FIXED_END EL_DF_WOODEN_GRID_FIXED_07
+
+#define EL_DF_STEEL_GRID_FIXED_START (EL_DF_START2 + 264)
+#define EL_DF_STEEL_GRID_FIXED_1 (EL_DF_STEEL_GRID_FIXED_START + 0)
+#define EL_DF_STEEL_GRID_FIXED_2 (EL_DF_STEEL_GRID_FIXED_START + 1)
+#define EL_DF_STEEL_GRID_FIXED_3 (EL_DF_STEEL_GRID_FIXED_START + 2)
+#define EL_DF_STEEL_GRID_FIXED_4 (EL_DF_STEEL_GRID_FIXED_START + 3)
+#define EL_DF_STEEL_GRID_FIXED_5 (EL_DF_STEEL_GRID_FIXED_START + 4)
+#define EL_DF_STEEL_GRID_FIXED_6 (EL_DF_STEEL_GRID_FIXED_START + 5)
+#define EL_DF_STEEL_GRID_FIXED_7 (EL_DF_STEEL_GRID_FIXED_START + 6)
+#define EL_DF_STEEL_GRID_FIXED_8 (EL_DF_STEEL_GRID_FIXED_START + 7)
+#define EL_DF_STEEL_GRID_FIXED_END EL_DF_STEEL_GRID_FIXED_07
+
+#define EL_DF_WOODEN_WALL_START (EL_DF_START2 + 272)
+#define EL_DF_WOODEN_WALL_1 (EL_DF_WOODEN_WALL_START + 0)
+#define EL_DF_WOODEN_WALL_END (EL_DF_WOODEN_WALL_START + 15)
+
+#define EL_DF_STEEL_WALL_START (EL_DF_START2 + 288)
+#define EL_DF_STEEL_WALL_1 (EL_DF_STEEL_WALL_START + 0)
+#define EL_DF_STEEL_WALL_END (EL_DF_STEEL_WALL_START + 15)
+
+#define EL_DF_WALL_START EL_DF_WOODEN_WALL_START
+#define EL_DF_WALL_END EL_DF_STEEL_WALL_END
+
+#define EL_DF_EMPTY (EL_DF_START2 + 304)
+#define EL_DF_CELL (EL_DF_START2 + 305)
+#define EL_DF_MINE (EL_DF_START2 + 306)
+#define EL_DF_REFRACTOR (EL_DF_START2 + 307)
+
+#define EL_DF_LASER_START (EL_DF_START2 + 308)
+#define EL_DF_LASER_RIGHT (EL_DF_LASER_START + 0)
+#define EL_DF_LASER_UP (EL_DF_LASER_START + 1)
+#define EL_DF_LASER_LEFT (EL_DF_LASER_START + 2)
+#define EL_DF_LASER_DOWN (EL_DF_LASER_START + 3)
+#define EL_DF_LASER_END EL_DF_LASER_DOWN
+
+#define EL_DF_RECEIVER_START (EL_DF_START2 + 312)
+#define EL_DF_RECEIVER_RIGHT (EL_DF_RECEIVER_START + 0)
+#define EL_DF_RECEIVER_UP (EL_DF_RECEIVER_START + 1)
+#define EL_DF_RECEIVER_LEFT (EL_DF_RECEIVER_START + 2)
+#define EL_DF_RECEIVER_DOWN (EL_DF_RECEIVER_START + 3)
+#define EL_DF_RECEIVER_END EL_DF_RECEIVER_DOWN
+
+#define EL_DF_FIBRE_OPTIC_START (EL_DF_START2 + 316)
+#define EL_DF_FIBRE_OPTIC_RED_1 (EL_DF_FIBRE_OPTIC_START + 0)
+#define EL_DF_FIBRE_OPTIC_RED_2 (EL_DF_FIBRE_OPTIC_START + 1)
+#define EL_DF_FIBRE_OPTIC_YELLOW_1 (EL_DF_FIBRE_OPTIC_START + 2)
+#define EL_DF_FIBRE_OPTIC_YELLOW_2 (EL_DF_FIBRE_OPTIC_START + 3)
+#define EL_DF_FIBRE_OPTIC_GREEN_1 (EL_DF_FIBRE_OPTIC_START + 4)
+#define EL_DF_FIBRE_OPTIC_GREEN_2 (EL_DF_FIBRE_OPTIC_START + 5)
+#define EL_DF_FIBRE_OPTIC_BLUE_1 (EL_DF_FIBRE_OPTIC_START + 6)
+#define EL_DF_FIBRE_OPTIC_BLUE_2 (EL_DF_FIBRE_OPTIC_START + 7)
+#define EL_DF_FIBRE_OPTIC_END EL_DF_FIBRE_OPTIC_07
+
+#define EL_DF_MIRROR_ROTATING_START (EL_DF_START2 + 324)
+#define EL_DF_MIRROR_ROTATING_1 (EL_DF_MIRROR_ROTATING_START + 0)
+#define EL_DF_MIRROR_ROTATING_2 (EL_DF_MIRROR_ROTATING_START + 1)
+#define EL_DF_MIRROR_ROTATING_3 (EL_DF_MIRROR_ROTATING_START + 2)
+#define EL_DF_MIRROR_ROTATING_4 (EL_DF_MIRROR_ROTATING_START + 3)
+#define EL_DF_MIRROR_ROTATING_5 (EL_DF_MIRROR_ROTATING_START + 4)
+#define EL_DF_MIRROR_ROTATING_6 (EL_DF_MIRROR_ROTATING_START + 5)
+#define EL_DF_MIRROR_ROTATING_7 (EL_DF_MIRROR_ROTATING_START + 6)
+#define EL_DF_MIRROR_ROTATING_8 (EL_DF_MIRROR_ROTATING_START + 7)
+#define EL_DF_MIRROR_ROTATING_9 (EL_DF_MIRROR_ROTATING_START + 8)
+#define EL_DF_MIRROR_ROTATING_10 (EL_DF_MIRROR_ROTATING_START + 9)
+#define EL_DF_MIRROR_ROTATING_11 (EL_DF_MIRROR_ROTATING_START + 10)
+#define EL_DF_MIRROR_ROTATING_12 (EL_DF_MIRROR_ROTATING_START + 11)
+#define EL_DF_MIRROR_ROTATING_13 (EL_DF_MIRROR_ROTATING_START + 12)
+#define EL_DF_MIRROR_ROTATING_14 (EL_DF_MIRROR_ROTATING_START + 13)
+#define EL_DF_MIRROR_ROTATING_15 (EL_DF_MIRROR_ROTATING_START + 14)
+#define EL_DF_MIRROR_ROTATING_16 (EL_DF_MIRROR_ROTATING_START + 15)
+#define EL_DF_MIRROR_ROTATING_END EL_DF_MIRROR_ROTATING_15
+
+#define EL_DF_WOODEN_GRID_ROTATING_START (EL_DF_START2 + 340)
+#define EL_DF_WOODEN_GRID_ROTATING_1 (EL_DF_WOODEN_GRID_ROTATING_START + 0)
+#define EL_DF_WOODEN_GRID_ROTATING_2 (EL_DF_WOODEN_GRID_ROTATING_START + 1)
+#define EL_DF_WOODEN_GRID_ROTATING_3 (EL_DF_WOODEN_GRID_ROTATING_START + 2)
+#define EL_DF_WOODEN_GRID_ROTATING_4 (EL_DF_WOODEN_GRID_ROTATING_START + 3)
+#define EL_DF_WOODEN_GRID_ROTATING_5 (EL_DF_WOODEN_GRID_ROTATING_START + 4)
+#define EL_DF_WOODEN_GRID_ROTATING_6 (EL_DF_WOODEN_GRID_ROTATING_START + 5)
+#define EL_DF_WOODEN_GRID_ROTATING_7 (EL_DF_WOODEN_GRID_ROTATING_START + 6)
+#define EL_DF_WOODEN_GRID_ROTATING_8 (EL_DF_WOODEN_GRID_ROTATING_START + 7)
+#define EL_DF_WOODEN_GRID_ROTATING_END EL_DF_WOODEN_GRID_ROTATING_07
+
+#define EL_DF_STEEL_GRID_ROTATING_START (EL_DF_START2 + 348)
+#define EL_DF_STEEL_GRID_ROTATING_1 (EL_DF_STEEL_GRID_ROTATING_START + 0)
+#define EL_DF_STEEL_GRID_ROTATING_2 (EL_DF_STEEL_GRID_ROTATING_START + 1)
+#define EL_DF_STEEL_GRID_ROTATING_3 (EL_DF_STEEL_GRID_ROTATING_START + 2)
+#define EL_DF_STEEL_GRID_ROTATING_4 (EL_DF_STEEL_GRID_ROTATING_START + 3)
+#define EL_DF_STEEL_GRID_ROTATING_5 (EL_DF_STEEL_GRID_ROTATING_START + 4)
+#define EL_DF_STEEL_GRID_ROTATING_6 (EL_DF_STEEL_GRID_ROTATING_START + 5)
+#define EL_DF_STEEL_GRID_ROTATING_7 (EL_DF_STEEL_GRID_ROTATING_START + 6)
+#define EL_DF_STEEL_GRID_ROTATING_8 (EL_DF_STEEL_GRID_ROTATING_START + 7)
+#define EL_DF_STEEL_GRID_ROTATING_END EL_DF_STEEL_GRID_ROTATING_07
+
+#define EL_DF_END_1 (EL_DF_START2 + 355)
+
+// MM style elements
+#define EL_MM_TELEPORTER_RED_START (EL_DF_START2 + 356)
+#define EL_MM_TELEPORTER_RED_1 (EL_MM_TELEPORTER_RED_START + 0)
+#define EL_MM_TELEPORTER_RED_2 (EL_MM_TELEPORTER_RED_START + 1)
+#define EL_MM_TELEPORTER_RED_3 (EL_MM_TELEPORTER_RED_START + 2)
+#define EL_MM_TELEPORTER_RED_4 (EL_MM_TELEPORTER_RED_START + 3)
+#define EL_MM_TELEPORTER_RED_5 (EL_MM_TELEPORTER_RED_START + 4)
+#define EL_MM_TELEPORTER_RED_6 (EL_MM_TELEPORTER_RED_START + 5)
+#define EL_MM_TELEPORTER_RED_7 (EL_MM_TELEPORTER_RED_START + 6)
+#define EL_MM_TELEPORTER_RED_8 (EL_MM_TELEPORTER_RED_START + 7)
+#define EL_MM_TELEPORTER_RED_9 (EL_MM_TELEPORTER_RED_START + 8)
+#define EL_MM_TELEPORTER_RED_10 (EL_MM_TELEPORTER_RED_START + 9)
+#define EL_MM_TELEPORTER_RED_11 (EL_MM_TELEPORTER_RED_START + 10)
+#define EL_MM_TELEPORTER_RED_12 (EL_MM_TELEPORTER_RED_START + 11)
+#define EL_MM_TELEPORTER_RED_13 (EL_MM_TELEPORTER_RED_START + 12)
+#define EL_MM_TELEPORTER_RED_14 (EL_MM_TELEPORTER_RED_START + 13)
+#define EL_MM_TELEPORTER_RED_15 (EL_MM_TELEPORTER_RED_START + 14)
+#define EL_MM_TELEPORTER_RED_16 (EL_MM_TELEPORTER_RED_START + 15)
+#define EL_MM_TELEPORTER_RED_END EL_MM_TELEPORTER_RED_16
+#define EL_MM_TELEPORTER_YELLOW_START (EL_DF_START2 + 372)
+#define EL_MM_TELEPORTER_YELLOW_1 (EL_MM_TELEPORTER_YELLOW_START + 0)
+#define EL_MM_TELEPORTER_YELLOW_2 (EL_MM_TELEPORTER_YELLOW_START + 1)
+#define EL_MM_TELEPORTER_YELLOW_3 (EL_MM_TELEPORTER_YELLOW_START + 2)
+#define EL_MM_TELEPORTER_YELLOW_4 (EL_MM_TELEPORTER_YELLOW_START + 3)
+#define EL_MM_TELEPORTER_YELLOW_5 (EL_MM_TELEPORTER_YELLOW_START + 4)
+#define EL_MM_TELEPORTER_YELLOW_6 (EL_MM_TELEPORTER_YELLOW_START + 5)
+#define EL_MM_TELEPORTER_YELLOW_7 (EL_MM_TELEPORTER_YELLOW_START + 6)
+#define EL_MM_TELEPORTER_YELLOW_8 (EL_MM_TELEPORTER_YELLOW_START + 7)
+#define EL_MM_TELEPORTER_YELLOW_9 (EL_MM_TELEPORTER_YELLOW_START + 8)
+#define EL_MM_TELEPORTER_YELLOW_10 (EL_MM_TELEPORTER_YELLOW_START + 9)
+#define EL_MM_TELEPORTER_YELLOW_11 (EL_MM_TELEPORTER_YELLOW_START + 10)
+#define EL_MM_TELEPORTER_YELLOW_12 (EL_MM_TELEPORTER_YELLOW_START + 11)
+#define EL_MM_TELEPORTER_YELLOW_13 (EL_MM_TELEPORTER_YELLOW_START + 12)
+#define EL_MM_TELEPORTER_YELLOW_14 (EL_MM_TELEPORTER_YELLOW_START + 13)
+#define EL_MM_TELEPORTER_YELLOW_15 (EL_MM_TELEPORTER_YELLOW_START + 14)
+#define EL_MM_TELEPORTER_YELLOW_16 (EL_MM_TELEPORTER_YELLOW_START + 15)
+#define EL_MM_TELEPORTER_YELLOW_END EL_MM_TELEPORTER_YELLOW_16
+#define EL_MM_TELEPORTER_GREEN_START (EL_DF_START2 + 388)
+#define EL_MM_TELEPORTER_GREEN_1 (EL_MM_TELEPORTER_GREEN_START + 0)
+#define EL_MM_TELEPORTER_GREEN_2 (EL_MM_TELEPORTER_GREEN_START + 1)
+#define EL_MM_TELEPORTER_GREEN_3 (EL_MM_TELEPORTER_GREEN_START + 2)
+#define EL_MM_TELEPORTER_GREEN_4 (EL_MM_TELEPORTER_GREEN_START + 3)
+#define EL_MM_TELEPORTER_GREEN_5 (EL_MM_TELEPORTER_GREEN_START + 4)
+#define EL_MM_TELEPORTER_GREEN_6 (EL_MM_TELEPORTER_GREEN_START + 5)
+#define EL_MM_TELEPORTER_GREEN_7 (EL_MM_TELEPORTER_GREEN_START + 6)
+#define EL_MM_TELEPORTER_GREEN_8 (EL_MM_TELEPORTER_GREEN_START + 7)
+#define EL_MM_TELEPORTER_GREEN_9 (EL_MM_TELEPORTER_GREEN_START + 8)
+#define EL_MM_TELEPORTER_GREEN_10 (EL_MM_TELEPORTER_GREEN_START + 9)
+#define EL_MM_TELEPORTER_GREEN_11 (EL_MM_TELEPORTER_GREEN_START + 10)
+#define EL_MM_TELEPORTER_GREEN_12 (EL_MM_TELEPORTER_GREEN_START + 11)
+#define EL_MM_TELEPORTER_GREEN_13 (EL_MM_TELEPORTER_GREEN_START + 12)
+#define EL_MM_TELEPORTER_GREEN_14 (EL_MM_TELEPORTER_GREEN_START + 13)
+#define EL_MM_TELEPORTER_GREEN_15 (EL_MM_TELEPORTER_GREEN_START + 14)
+#define EL_MM_TELEPORTER_GREEN_16 (EL_MM_TELEPORTER_GREEN_START + 15)
+#define EL_MM_TELEPORTER_GREEN_END EL_MM_TELEPORTER_GREEN_16
+#define EL_MM_TELEPORTER_BLUE_START (EL_DF_START2 + 404)
+#define EL_MM_TELEPORTER_BLUE_1 (EL_MM_TELEPORTER_BLUE_START + 0)
+#define EL_MM_TELEPORTER_BLUE_2 (EL_MM_TELEPORTER_BLUE_START + 1)
+#define EL_MM_TELEPORTER_BLUE_3 (EL_MM_TELEPORTER_BLUE_START + 2)
+#define EL_MM_TELEPORTER_BLUE_4 (EL_MM_TELEPORTER_BLUE_START + 3)
+#define EL_MM_TELEPORTER_BLUE_5 (EL_MM_TELEPORTER_BLUE_START + 4)
+#define EL_MM_TELEPORTER_BLUE_6 (EL_MM_TELEPORTER_BLUE_START + 5)
+#define EL_MM_TELEPORTER_BLUE_7 (EL_MM_TELEPORTER_BLUE_START + 6)
+#define EL_MM_TELEPORTER_BLUE_8 (EL_MM_TELEPORTER_BLUE_START + 7)
+#define EL_MM_TELEPORTER_BLUE_9 (EL_MM_TELEPORTER_BLUE_START + 8)
+#define EL_MM_TELEPORTER_BLUE_10 (EL_MM_TELEPORTER_BLUE_START + 9)
+#define EL_MM_TELEPORTER_BLUE_11 (EL_MM_TELEPORTER_BLUE_START + 10)
+#define EL_MM_TELEPORTER_BLUE_12 (EL_MM_TELEPORTER_BLUE_START + 11)
+#define EL_MM_TELEPORTER_BLUE_13 (EL_MM_TELEPORTER_BLUE_START + 12)
+#define EL_MM_TELEPORTER_BLUE_14 (EL_MM_TELEPORTER_BLUE_START + 13)
+#define EL_MM_TELEPORTER_BLUE_15 (EL_MM_TELEPORTER_BLUE_START + 14)
+#define EL_MM_TELEPORTER_BLUE_16 (EL_MM_TELEPORTER_BLUE_START + 15)
+#define EL_MM_TELEPORTER_BLUE_END EL_MM_TELEPORTER_BLUE_16
+
+#define EL_MM_MCDUFFIN 1204
+#define EL_MM_PACMAN 1205
+#define EL_MM_FUSE 1206
+#define EL_MM_STEEL_WALL 1207
+#define EL_MM_WOODEN_WALL 1208
+#define EL_MM_ICE_WALL 1209
+#define EL_MM_AMOEBA_WALL 1210
+#define EL_DF_LASER 1211
+#define EL_DF_RECEIVER 1212
+#define EL_DF_STEEL_WALL 1213
+#define EL_DF_WOODEN_WALL 1214
+
+#define EL_MM_END_2 (EL_DF_START2 + 430)
+
+// EMC style elements
+#define EL_SPRING_LEFT 1215
+#define EL_SPRING_RIGHT 1216
-#define EL_MM_START_3 EL_DF_MIRROR_FIXED_START
-#define EL_DF_START_2 EL_DF_MIRROR_FIXED_START
-
-#define EL_DF_MIRROR_FIXED_START 1233
-#define EL_DF_MIRROR_FIXED_1 (EL_DF_MIRROR_FIXED_START + 0)
-#define EL_DF_MIRROR_FIXED_2 (EL_DF_MIRROR_FIXED_START + 1)
-#define EL_DF_MIRROR_FIXED_3 (EL_DF_MIRROR_FIXED_START + 2)
-#define EL_DF_MIRROR_FIXED_4 (EL_DF_MIRROR_FIXED_START + 3)
-#define EL_DF_MIRROR_FIXED_5 (EL_DF_MIRROR_FIXED_START + 4)
-#define EL_DF_MIRROR_FIXED_6 (EL_DF_MIRROR_FIXED_START + 5)
-#define EL_DF_MIRROR_FIXED_7 (EL_DF_MIRROR_FIXED_START + 6)
-#define EL_DF_MIRROR_FIXED_8 (EL_DF_MIRROR_FIXED_START + 7)
-#define EL_DF_MIRROR_FIXED_9 (EL_DF_MIRROR_FIXED_START + 8)
-#define EL_DF_MIRROR_FIXED_10 (EL_DF_MIRROR_FIXED_START + 9)
-#define EL_DF_MIRROR_FIXED_11 (EL_DF_MIRROR_FIXED_START + 10)
-#define EL_DF_MIRROR_FIXED_12 (EL_DF_MIRROR_FIXED_START + 11)
-#define EL_DF_MIRROR_FIXED_13 (EL_DF_MIRROR_FIXED_START + 12)
-#define EL_DF_MIRROR_FIXED_14 (EL_DF_MIRROR_FIXED_START + 13)
-#define EL_DF_MIRROR_FIXED_15 (EL_DF_MIRROR_FIXED_START + 14)
-#define EL_DF_MIRROR_FIXED_16 (EL_DF_MIRROR_FIXED_START + 15)
-#define EL_DF_MIRROR_FIXED_END EL_DF_MIRROR_FIXED_16
-
-#define EL_DF_SLOPE_START 1249
-#define EL_DF_SLOPE_1 (EL_DF_SLOPE_START + 0)
-#define EL_DF_SLOPE_2 (EL_DF_SLOPE_START + 1)
-#define EL_DF_SLOPE_3 (EL_DF_SLOPE_START + 2)
-#define EL_DF_SLOPE_4 (EL_DF_SLOPE_START + 3)
-#define EL_DF_SLOPE_END EL_DF_SLOPE_4
-
-#define EL_MM_END_3 EL_DF_SLOPE_END
-#define EL_DF_END_2 EL_DF_SLOPE_END
-
-#define NUM_FILE_ELEMENTS 1253
+#define EL_MM_START_3 EL_DF_MIRROR_FIXED_START
+#define EL_DF_START_2 EL_DF_MIRROR_FIXED_START
+
+// DF style elements
+#define EL_DF_MIRROR_FIXED_START 1233
+#define EL_DF_MIRROR_FIXED_1 (EL_DF_MIRROR_FIXED_START + 0)
+#define EL_DF_MIRROR_FIXED_2 (EL_DF_MIRROR_FIXED_START + 1)
+#define EL_DF_MIRROR_FIXED_3 (EL_DF_MIRROR_FIXED_START + 2)
+#define EL_DF_MIRROR_FIXED_4 (EL_DF_MIRROR_FIXED_START + 3)
+#define EL_DF_MIRROR_FIXED_5 (EL_DF_MIRROR_FIXED_START + 4)
+#define EL_DF_MIRROR_FIXED_6 (EL_DF_MIRROR_FIXED_START + 5)
+#define EL_DF_MIRROR_FIXED_7 (EL_DF_MIRROR_FIXED_START + 6)
+#define EL_DF_MIRROR_FIXED_8 (EL_DF_MIRROR_FIXED_START + 7)
+#define EL_DF_MIRROR_FIXED_9 (EL_DF_MIRROR_FIXED_START + 8)
+#define EL_DF_MIRROR_FIXED_10 (EL_DF_MIRROR_FIXED_START + 9)
+#define EL_DF_MIRROR_FIXED_11 (EL_DF_MIRROR_FIXED_START + 10)
+#define EL_DF_MIRROR_FIXED_12 (EL_DF_MIRROR_FIXED_START + 11)
+#define EL_DF_MIRROR_FIXED_13 (EL_DF_MIRROR_FIXED_START + 12)
+#define EL_DF_MIRROR_FIXED_14 (EL_DF_MIRROR_FIXED_START + 13)
+#define EL_DF_MIRROR_FIXED_15 (EL_DF_MIRROR_FIXED_START + 14)
+#define EL_DF_MIRROR_FIXED_16 (EL_DF_MIRROR_FIXED_START + 15)
+#define EL_DF_MIRROR_FIXED_END EL_DF_MIRROR_FIXED_16
+
+#define EL_DF_SLOPE_START 1249
+#define EL_DF_SLOPE_1 (EL_DF_SLOPE_START + 0)
+#define EL_DF_SLOPE_2 (EL_DF_SLOPE_START + 1)
+#define EL_DF_SLOPE_3 (EL_DF_SLOPE_START + 2)
+#define EL_DF_SLOPE_4 (EL_DF_SLOPE_START + 3)
+#define EL_DF_SLOPE_END EL_DF_SLOPE_4
+
+#define EL_MM_END_3 EL_DF_SLOPE_END
+#define EL_DF_END_2 EL_DF_SLOPE_END
+
+// BD style elements (normal)
+#define EL_BDX_START 1253
+#define EL_BDX_EMPTY_SPACE EL_BDX_START
+#define EL_BDX_EMPTY EL_BDX_EMPTY_SPACE
+#define EL_BDX_SAND_1 1254
+#define EL_BDX_SAND_2 1255
+#define EL_BDX_SAND_BALL 1256
+#define EL_BDX_SAND_LOOSE 1257
+#define EL_BDX_SAND_SLOPED_UP_RIGHT 1258
+#define EL_BDX_SAND_SLOPED_UP_LEFT 1259
+#define EL_BDX_SAND_SLOPED_DOWN_LEFT 1260
+#define EL_BDX_SAND_SLOPED_DOWN_RIGHT 1261
+#define EL_BDX_SAND_GLUED 1262
+#define EL_BDX_WALL_SLOPED_UP_RIGHT 1263
+#define EL_BDX_WALL_SLOPED_UP_LEFT 1264
+#define EL_BDX_WALL_SLOPED_DOWN_LEFT 1265
+#define EL_BDX_WALL_SLOPED_DOWN_RIGHT 1266
+#define EL_BDX_WALL_NON_SLOPED 1267
+#define EL_BDX_WALL_DIGGABLE 1268
+#define EL_BDX_WALL_DIAMOND 1269
+#define EL_BDX_WALL_KEY_1 1270
+#define EL_BDX_WALL_KEY_2 1271
+#define EL_BDX_WALL_KEY_3 1272
+#define EL_BDX_FALLING_WALL 1273
+#define EL_BDX_STEELWALL 1274
+#define EL_BDX_STEELWALL_SLOPED_UP_RIGHT 1275
+#define EL_BDX_STEELWALL_SLOPED_UP_LEFT 1276
+#define EL_BDX_STEELWALL_SLOPED_DOWN_LEFT 1277
+#define EL_BDX_STEELWALL_SLOPED_DOWN_RIGHT 1278
+#define EL_BDX_STEELWALL_EXPLODABLE 1279
+#define EL_BDX_STEELWALL_DIGGABLE 1280
+#define EL_BDX_EXPANDABLE_WALL_HORIZONTAL 1281
+#define EL_BDX_EXPANDABLE_WALL_VERTICAL 1282
+#define EL_BDX_EXPANDABLE_WALL_ANY 1283
+#define EL_BDX_EXPANDABLE_STEELWALL_HORIZONTAL 1284
+#define EL_BDX_EXPANDABLE_STEELWALL_VERTICAL 1285
+#define EL_BDX_EXPANDABLE_STEELWALL_ANY 1286
+#define EL_BDX_EXPANDABLE_WALL_SWITCH 1287
+#define EL_BDX_EXPANDABLE_WALL_SWITCH_ACTIVE 1288
+#define EL_BDX_INBOX 1289
+#define EL_BDX_EXIT_CLOSED 1290
+#define EL_BDX_EXIT_OPEN 1291
+#define EL_BDX_INVISIBLE_EXIT_CLOSED 1292
+#define EL_BDX_INVISIBLE_EXIT_OPEN 1293
+#define EL_BDX_FLYING_ROCK 1294
+#define EL_BDX_MEGA_ROCK 1295
+#define EL_BDX_ROCK_GLUED 1296
+#define EL_BDX_FLYING_DIAMOND 1297
+#define EL_BDX_DIAMOND_GLUED 1298
+#define EL_BDX_DIAMOND_KEY 1299
+#define EL_BDX_TRAPPED_DIAMOND 1300
+#define EL_BDX_NUT 1301
+#define EL_BDX_AMOEBA_1 1302
+#define EL_BDX_AMOEBA_2 1303
+#define EL_BDX_BLADDER 1304
+#define EL_BDX_BLADDER_SPENDER 1305
+#define EL_BDX_CREATURE_SWITCH 1306
+#define EL_BDX_CREATURE_SWITCH_ACTIVE 1307
+#define EL_BDX_BITER_SWITCH_1 1308
+#define EL_BDX_BITER_SWITCH_2 1309
+#define EL_BDX_BITER_SWITCH_3 1310
+#define EL_BDX_BITER_SWITCH_4 1311
+#define EL_BDX_REPLICATOR 1312
+#define EL_BDX_REPLICATOR_ACTIVE 1313
+#define EL_BDX_REPLICATOR_SWITCH 1314
+#define EL_BDX_REPLICATOR_SWITCH_ACTIVE 1315
+#define EL_BDX_CONVEYOR_LEFT 1316
+#define EL_BDX_CONVEYOR_LEFT_ACTIVE 1317
+#define EL_BDX_CONVEYOR_RIGHT 1318
+#define EL_BDX_CONVEYOR_RIGHT_ACTIVE 1319
+#define EL_BDX_CONVEYOR_SWITCH 1320
+#define EL_BDX_CONVEYOR_SWITCH_ACTIVE 1321
+#define EL_BDX_CONVEYOR_DIR_SWITCH 1322
+#define EL_BDX_CONVEYOR_DIR_SWITCH_ACTIVE 1323
+#define EL_BDX_GRAVITY_SWITCH 1324
+#define EL_BDX_GRAVITY_SWITCH_ACTIVE 1325
+#define EL_BDX_ACID 1326
+#define EL_BDX_BOX 1327
+#define EL_BDX_TIME_PENALTY 1328
+#define EL_BDX_GRAVESTONE 1329
+#define EL_BDX_CLOCK 1330
+#define EL_BDX_POT 1331
+#define EL_BDX_PNEUMATIC_HAMMER 1332
+#define EL_BDX_TELEPORTER 1333
+#define EL_BDX_SKELETON 1334
+#define EL_BDX_WATER 1335
+#define EL_BDX_KEY_1 1336
+#define EL_BDX_KEY_2 1337
+#define EL_BDX_KEY_3 1338
+#define EL_BDX_GATE_1 1339
+#define EL_BDX_GATE_2 1340
+#define EL_BDX_GATE_3 1341
+#define EL_BDX_LAVA 1342
+#define EL_BDX_SWEET 1343
+#define EL_BDX_VOODOO_DOLL 1344
+#define EL_BDX_SLIME 1345
+#define EL_BDX_WAITING_ROCK 1346
+#define EL_BDX_CHASING_ROCK 1347
+#define EL_BDX_GHOST 1348
+#define EL_BDX_COW 1349
+#define EL_BDX_COW_LEFT 1350
+#define EL_BDX_COW_UP 1351
+#define EL_BDX_COW_RIGHT 1352
+#define EL_BDX_COW_DOWN 1353
+#define EL_BDX_BUTTERFLY_1 1354
+#define EL_BDX_BUTTERFLY_1_RIGHT 1355
+#define EL_BDX_BUTTERFLY_1_UP 1356
+#define EL_BDX_BUTTERFLY_1_LEFT 1357
+#define EL_BDX_BUTTERFLY_1_DOWN 1358
+#define EL_BDX_BUTTERFLY_2 1359
+#define EL_BDX_BUTTERFLY_2_RIGHT 1360
+#define EL_BDX_BUTTERFLY_2_UP 1361
+#define EL_BDX_BUTTERFLY_2_LEFT 1362
+#define EL_BDX_BUTTERFLY_2_DOWN 1363
+#define EL_BDX_FIREFLY_1 1364
+#define EL_BDX_FIREFLY_1_RIGHT 1365
+#define EL_BDX_FIREFLY_1_UP 1366
+#define EL_BDX_FIREFLY_1_LEFT 1367
+#define EL_BDX_FIREFLY_1_DOWN 1368
+#define EL_BDX_FIREFLY_2 1369
+#define EL_BDX_FIREFLY_2_RIGHT 1370
+#define EL_BDX_FIREFLY_2_UP 1371
+#define EL_BDX_FIREFLY_2_LEFT 1372
+#define EL_BDX_FIREFLY_2_DOWN 1373
+#define EL_BDX_STONEFLY 1374
+#define EL_BDX_STONEFLY_RIGHT 1375
+#define EL_BDX_STONEFLY_UP 1376
+#define EL_BDX_STONEFLY_LEFT 1377
+#define EL_BDX_STONEFLY_DOWN 1378
+#define EL_BDX_BITER 1379
+#define EL_BDX_BITER_RIGHT 1380
+#define EL_BDX_BITER_UP 1381
+#define EL_BDX_BITER_LEFT 1382
+#define EL_BDX_BITER_DOWN 1383
+#define EL_BDX_DRAGONFLY 1384
+#define EL_BDX_DRAGONFLY_RIGHT 1385
+#define EL_BDX_DRAGONFLY_UP 1386
+#define EL_BDX_DRAGONFLY_LEFT 1387
+#define EL_BDX_DRAGONFLY_DOWN 1388
+#define EL_BDX_BOMB 1389
+#define EL_BDX_NITRO_PACK 1390
+#define EL_BDX_PLAYER 1391
+#define EL_BDX_PLAYER_WITH_BOMB 1392
+#define EL_BDX_PLAYER_WITH_ROCKET_LAUNCHER 1393
+#define EL_BDX_PLAYER_GLUED 1394
+#define EL_BDX_PLAYER_STIRRING 1395
+#define EL_BDX_ROCKET_LAUNCHER 1396
+#define EL_BDX_ROCKET 1397
+#define EL_BDX_ROCKET_RIGHT 1398
+#define EL_BDX_ROCKET_UP 1399
+#define EL_BDX_ROCKET_LEFT 1400
+#define EL_BDX_ROCKET_DOWN 1401
+#define EL_BDX_FAKE_BONUS 1402
+#define EL_BDX_COVERED 1403
+#define EL_BDX_WALL 1404
+#define EL_BDX_ROCK 1405
+#define EL_BDX_DIAMOND 1406
+#define EL_BDX_MAGIC_WALL 1407
+
+// BD style elements ("effects"; mostly runtime elements, but can also be stored in level file)
+#define EL_BDX_RUNTIME_START 1408
+#define EL_BDX_SAND_BALL_FALLING EL_BDX_RUNTIME_START
+#define EL_BDX_SAND_LOOSE_FALLING 1409
+#define EL_BDX_ROCK_FALLING 1410
+#define EL_BDX_FLYING_ROCK_FLYING 1411
+#define EL_BDX_MEGA_ROCK_FALLING 1412
+#define EL_BDX_DIAMOND_FALLING 1413
+#define EL_BDX_FLYING_DIAMOND_FLYING 1414
+#define EL_BDX_NUT_FALLING 1415
+#define EL_BDX_FALLING_WALL_FALLING 1416
+#define EL_BDX_NITRO_PACK_FALLING 1417
+#define EL_BDX_WATER_1 1418
+#define EL_BDX_WATER_2 1419
+#define EL_BDX_WATER_3 1420
+#define EL_BDX_WATER_4 1421
+#define EL_BDX_WATER_5 1422
+#define EL_BDX_WATER_6 1423
+#define EL_BDX_WATER_7 1424
+#define EL_BDX_WATER_8 1425
+#define EL_BDX_WATER_9 1426
+#define EL_BDX_WATER_10 1427
+#define EL_BDX_WATER_11 1428
+#define EL_BDX_WATER_12 1429
+#define EL_BDX_WATER_13 1430
+#define EL_BDX_WATER_14 1431
+#define EL_BDX_WATER_15 1432
+#define EL_BDX_WATER_16 1433
+#define EL_BDX_COW_ENCLOSED_1 1434
+#define EL_BDX_COW_ENCLOSED_2 1435
+#define EL_BDX_COW_ENCLOSED_3 1436
+#define EL_BDX_COW_ENCLOSED_4 1437
+#define EL_BDX_COW_ENCLOSED_5 1438
+#define EL_BDX_COW_ENCLOSED_6 1439
+#define EL_BDX_COW_ENCLOSED_7 1440
+#define EL_BDX_BLADDER_1 1441
+#define EL_BDX_BLADDER_2 1442
+#define EL_BDX_BLADDER_3 1443
+#define EL_BDX_BLADDER_4 1444
+#define EL_BDX_BLADDER_5 1445
+#define EL_BDX_BLADDER_6 1446
+#define EL_BDX_BLADDER_7 1447
+#define EL_BDX_BLADDER_8 1448
+#define EL_BDX_PLAYER_GROWING_1 1449
+#define EL_BDX_PLAYER_GROWING_2 1450
+#define EL_BDX_PLAYER_GROWING_3 1451
+#define EL_BDX_BOMB_TICKING_1 1452
+#define EL_BDX_BOMB_TICKING_2 1453
+#define EL_BDX_BOMB_TICKING_3 1454
+#define EL_BDX_BOMB_TICKING_4 1455
+#define EL_BDX_BOMB_TICKING_5 1456
+#define EL_BDX_BOMB_TICKING_6 1457
+#define EL_BDX_BOMB_TICKING_7 1458
+#define EL_BDX_CLOCK_GROWING_1 1459
+#define EL_BDX_CLOCK_GROWING_2 1460
+#define EL_BDX_CLOCK_GROWING_3 1461
+#define EL_BDX_CLOCK_GROWING_4 1462
+#define EL_BDX_DIAMOND_GROWING_1 1463
+#define EL_BDX_DIAMOND_GROWING_2 1464
+#define EL_BDX_DIAMOND_GROWING_3 1465
+#define EL_BDX_DIAMOND_GROWING_4 1466
+#define EL_BDX_DIAMOND_GROWING_5 1467
+#define EL_BDX_EXPLODING_1 1468
+#define EL_BDX_EXPLODING_2 1469
+#define EL_BDX_EXPLODING_3 1470
+#define EL_BDX_EXPLODING_4 1471
+#define EL_BDX_EXPLODING_5 1472
+#define EL_BDX_ROCK_GROWING_1 1473
+#define EL_BDX_ROCK_GROWING_2 1474
+#define EL_BDX_ROCK_GROWING_3 1475
+#define EL_BDX_ROCK_GROWING_4 1476
+#define EL_BDX_STEELWALL_GROWING_1 1477
+#define EL_BDX_STEELWALL_GROWING_2 1478
+#define EL_BDX_STEELWALL_GROWING_3 1479
+#define EL_BDX_STEELWALL_GROWING_4 1480
+#define EL_BDX_GHOST_EXPLODING_1 1481
+#define EL_BDX_GHOST_EXPLODING_2 1482
+#define EL_BDX_GHOST_EXPLODING_3 1483
+#define EL_BDX_GHOST_EXPLODING_4 1484
+#define EL_BDX_BOMB_EXPLODING_1 1485
+#define EL_BDX_BOMB_EXPLODING_2 1486
+#define EL_BDX_BOMB_EXPLODING_3 1487
+#define EL_BDX_BOMB_EXPLODING_4 1488
+#define EL_BDX_NITRO_PACK_EXPLODING 1489
+#define EL_BDX_NITRO_PACK_EXPLODING_1 1490
+#define EL_BDX_NITRO_PACK_EXPLODING_2 1491
+#define EL_BDX_NITRO_PACK_EXPLODING_3 1492
+#define EL_BDX_NITRO_PACK_EXPLODING_4 1493
+#define EL_BDX_AMOEBA_2_EXPLODING_1 1494
+#define EL_BDX_AMOEBA_2_EXPLODING_2 1495
+#define EL_BDX_AMOEBA_2_EXPLODING_3 1496
+#define EL_BDX_AMOEBA_2_EXPLODING_4 1497
+#define EL_BDX_NUT_BREAKING_1 1498
+#define EL_BDX_NUT_BREAKING_2 1499
+#define EL_BDX_NUT_BREAKING_3 1500
+#define EL_BDX_NUT_BREAKING_4 1501
+#define EL_BDX_RUNTIME_END EL_BDX_NUT_BREAKING_4
+#define EL_BDX_END EL_BDX_RUNTIME_END
+
+#define NUM_FILE_ELEMENTS 1502
-#define EL_FIRST_RUNTIME_REAL NUM_FILE_ELEMENTS
-
-#define EL_DYNABOMB_PLAYER_1_ACTIVE (EL_FIRST_RUNTIME_REAL + 0)
-#define EL_DYNABOMB_PLAYER_2_ACTIVE (EL_FIRST_RUNTIME_REAL + 1)
-#define EL_DYNABOMB_PLAYER_3_ACTIVE (EL_FIRST_RUNTIME_REAL + 2)
-#define EL_DYNABOMB_PLAYER_4_ACTIVE (EL_FIRST_RUNTIME_REAL + 3)
-#define EL_SP_DISK_RED_ACTIVE (EL_FIRST_RUNTIME_REAL + 4)
-#define EL_SWITCHGATE_OPENING (EL_FIRST_RUNTIME_REAL + 5)
-#define EL_SWITCHGATE_CLOSING (EL_FIRST_RUNTIME_REAL + 6)
-#define EL_TIMEGATE_OPENING (EL_FIRST_RUNTIME_REAL + 7)
-#define EL_TIMEGATE_CLOSING (EL_FIRST_RUNTIME_REAL + 8)
-#define EL_PEARL_BREAKING (EL_FIRST_RUNTIME_REAL + 9)
-#define EL_TRAP_ACTIVE (EL_FIRST_RUNTIME_REAL + 10)
-#define EL_INVISIBLE_STEELWALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 11)
-#define EL_INVISIBLE_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 12)
-#define EL_INVISIBLE_SAND_ACTIVE (EL_FIRST_RUNTIME_REAL + 13)
-#define EL_CONVEYOR_BELT_1_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 14)
-#define EL_CONVEYOR_BELT_1_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 15)
-#define EL_CONVEYOR_BELT_1_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 16)
-#define EL_CONVEYOR_BELT_2_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 17)
-#define EL_CONVEYOR_BELT_2_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 18)
-#define EL_CONVEYOR_BELT_2_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 19)
-#define EL_CONVEYOR_BELT_3_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 20)
-#define EL_CONVEYOR_BELT_3_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 21)
-#define EL_CONVEYOR_BELT_3_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 22)
-#define EL_CONVEYOR_BELT_4_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 23)
-#define EL_CONVEYOR_BELT_4_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 24)
-#define EL_CONVEYOR_BELT_4_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 25)
-#define EL_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 26)
-#define EL_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 27)
-#define EL_STEEL_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 28)
-#define EL_STEEL_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 29)
-#define EL_EM_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 30)
-#define EL_EM_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 31)
-#define EL_EM_STEEL_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 32)
-#define EL_EM_STEEL_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 33)
-#define EL_SP_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 34)
-#define EL_SP_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 35)
-#define EL_SP_EXIT_OPEN (EL_FIRST_RUNTIME_REAL + 36)
-#define EL_SP_TERMINAL_ACTIVE (EL_FIRST_RUNTIME_REAL + 37)
-#define EL_SP_BUGGY_BASE_ACTIVATING (EL_FIRST_RUNTIME_REAL + 38)
-#define EL_SP_BUGGY_BASE_ACTIVE (EL_FIRST_RUNTIME_REAL + 39)
-#define EL_SP_MURPHY_CLONE (EL_FIRST_RUNTIME_REAL + 40)
-#define EL_AMOEBA_DROPPING (EL_FIRST_RUNTIME_REAL + 41)
-#define EL_QUICKSAND_EMPTYING (EL_FIRST_RUNTIME_REAL + 42)
-#define EL_QUICKSAND_FAST_EMPTYING (EL_FIRST_RUNTIME_REAL + 43)
-#define EL_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 44)
-#define EL_BD_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 45)
-#define EL_DC_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 46)
-#define EL_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 47)
-#define EL_BD_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 48)
-#define EL_DC_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 49)
-#define EL_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 50)
-#define EL_BD_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 51)
-#define EL_DC_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 52)
-#define EL_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 53)
-#define EL_BD_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 54)
-#define EL_DC_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 55)
-#define EL_EMC_FAKE_GRASS_ACTIVE (EL_FIRST_RUNTIME_REAL + 56)
-#define EL_GATE_1_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 57)
-#define EL_GATE_2_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 58)
-#define EL_GATE_3_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 59)
-#define EL_GATE_4_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 60)
-#define EL_EM_GATE_1_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 61)
-#define EL_EM_GATE_2_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 62)
-#define EL_EM_GATE_3_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 63)
-#define EL_EM_GATE_4_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 64)
-#define EL_EMC_GATE_5_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 65)
-#define EL_EMC_GATE_6_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 66)
-#define EL_EMC_GATE_7_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 67)
-#define EL_EMC_GATE_8_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 68)
-#define EL_DC_GATE_WHITE_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 69)
-#define EL_EMC_DRIPPER_ACTIVE (EL_FIRST_RUNTIME_REAL + 70)
-#define EL_EMC_SPRING_BUMPER_ACTIVE (EL_FIRST_RUNTIME_REAL + 71)
-#define EL_MM_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 72)
-#define EL_MM_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 73)
-#define EL_MM_GRAY_BALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 74)
-#define EL_MM_GRAY_BALL_OPENING (EL_FIRST_RUNTIME_REAL + 75)
-#define EL_MM_ICE_WALL_SHRINKING (EL_FIRST_RUNTIME_REAL + 76)
-#define EL_MM_AMOEBA_WALL_GROWING (EL_FIRST_RUNTIME_REAL + 77)
-#define EL_MM_PACMAN_EATING_RIGHT (EL_FIRST_RUNTIME_REAL + 78)
-#define EL_MM_PACMAN_EATING_UP (EL_FIRST_RUNTIME_REAL + 79)
-#define EL_MM_PACMAN_EATING_LEFT (EL_FIRST_RUNTIME_REAL + 80)
-#define EL_MM_PACMAN_EATING_DOWN (EL_FIRST_RUNTIME_REAL + 81)
-#define EL_MM_BOMB_ACTIVE (EL_FIRST_RUNTIME_REAL + 82)
-#define EL_DF_MINE_ACTIVE (EL_FIRST_RUNTIME_REAL + 83)
-
-#define NUM_DRAWABLE_ELEMENTS (EL_FIRST_RUNTIME_REAL + 84)
-
-#define EL_MM_RUNTIME_START EL_MM_EXIT_OPENING
-#define EL_MM_RUNTIME_END EL_MM_AMOEBA_WALL_GROWING
+#define EL_FIRST_RUNTIME_REAL NUM_FILE_ELEMENTS
+
+#define EL_DYNABOMB_PLAYER_1_ACTIVE (EL_FIRST_RUNTIME_REAL + 0)
+#define EL_DYNABOMB_PLAYER_2_ACTIVE (EL_FIRST_RUNTIME_REAL + 1)
+#define EL_DYNABOMB_PLAYER_3_ACTIVE (EL_FIRST_RUNTIME_REAL + 2)
+#define EL_DYNABOMB_PLAYER_4_ACTIVE (EL_FIRST_RUNTIME_REAL + 3)
+#define EL_SP_DISK_RED_ACTIVE (EL_FIRST_RUNTIME_REAL + 4)
+#define EL_SWITCHGATE_OPENING (EL_FIRST_RUNTIME_REAL + 5)
+#define EL_SWITCHGATE_CLOSING (EL_FIRST_RUNTIME_REAL + 6)
+#define EL_TIMEGATE_OPENING (EL_FIRST_RUNTIME_REAL + 7)
+#define EL_TIMEGATE_CLOSING (EL_FIRST_RUNTIME_REAL + 8)
+#define EL_PEARL_BREAKING (EL_FIRST_RUNTIME_REAL + 9)
+#define EL_TRAP_ACTIVE (EL_FIRST_RUNTIME_REAL + 10)
+#define EL_INVISIBLE_STEELWALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 11)
+#define EL_INVISIBLE_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 12)
+#define EL_INVISIBLE_SAND_ACTIVE (EL_FIRST_RUNTIME_REAL + 13)
+#define EL_CONVEYOR_BELT_1_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 14)
+#define EL_CONVEYOR_BELT_1_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 15)
+#define EL_CONVEYOR_BELT_1_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 16)
+#define EL_CONVEYOR_BELT_2_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 17)
+#define EL_CONVEYOR_BELT_2_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 18)
+#define EL_CONVEYOR_BELT_2_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 19)
+#define EL_CONVEYOR_BELT_3_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 20)
+#define EL_CONVEYOR_BELT_3_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 21)
+#define EL_CONVEYOR_BELT_3_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 22)
+#define EL_CONVEYOR_BELT_4_LEFT_ACTIVE (EL_FIRST_RUNTIME_REAL + 23)
+#define EL_CONVEYOR_BELT_4_MIDDLE_ACTIVE (EL_FIRST_RUNTIME_REAL + 24)
+#define EL_CONVEYOR_BELT_4_RIGHT_ACTIVE (EL_FIRST_RUNTIME_REAL + 25)
+#define EL_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 26)
+#define EL_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 27)
+#define EL_STEEL_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 28)
+#define EL_STEEL_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 29)
+#define EL_EM_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 30)
+#define EL_EM_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 31)
+#define EL_EM_STEEL_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 32)
+#define EL_EM_STEEL_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 33)
+#define EL_SP_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 34)
+#define EL_SP_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 35)
+#define EL_SP_EXIT_OPEN (EL_FIRST_RUNTIME_REAL + 36)
+#define EL_SP_TERMINAL_ACTIVE (EL_FIRST_RUNTIME_REAL + 37)
+#define EL_SP_BUGGY_BASE_ACTIVATING (EL_FIRST_RUNTIME_REAL + 38)
+#define EL_SP_BUGGY_BASE_ACTIVE (EL_FIRST_RUNTIME_REAL + 39)
+#define EL_SP_MURPHY_CLONE (EL_FIRST_RUNTIME_REAL + 40)
+#define EL_AMOEBA_DROPPING (EL_FIRST_RUNTIME_REAL + 41)
+#define EL_QUICKSAND_EMPTYING (EL_FIRST_RUNTIME_REAL + 42)
+#define EL_QUICKSAND_FAST_EMPTYING (EL_FIRST_RUNTIME_REAL + 43)
+#define EL_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 44)
+#define EL_BD_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 45)
+#define EL_DC_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 46)
+#define EL_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 47)
+#define EL_BD_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 48)
+#define EL_DC_MAGIC_WALL_FULL (EL_FIRST_RUNTIME_REAL + 49)
+#define EL_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 50)
+#define EL_BD_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 51)
+#define EL_DC_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 52)
+#define EL_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 53)
+#define EL_BD_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 54)
+#define EL_DC_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 55)
+#define EL_EMC_FAKE_GRASS_ACTIVE (EL_FIRST_RUNTIME_REAL + 56)
+#define EL_GATE_1_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 57)
+#define EL_GATE_2_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 58)
+#define EL_GATE_3_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 59)
+#define EL_GATE_4_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 60)
+#define EL_EM_GATE_1_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 61)
+#define EL_EM_GATE_2_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 62)
+#define EL_EM_GATE_3_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 63)
+#define EL_EM_GATE_4_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 64)
+#define EL_EMC_GATE_5_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 65)
+#define EL_EMC_GATE_6_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 66)
+#define EL_EMC_GATE_7_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 67)
+#define EL_EMC_GATE_8_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 68)
+#define EL_DC_GATE_WHITE_GRAY_ACTIVE (EL_FIRST_RUNTIME_REAL + 69)
+#define EL_EMC_DRIPPER_ACTIVE (EL_FIRST_RUNTIME_REAL + 70)
+#define EL_EMC_SPRING_BUMPER_ACTIVE (EL_FIRST_RUNTIME_REAL + 71)
+#define EL_MM_EXIT_OPENING (EL_FIRST_RUNTIME_REAL + 72)
+#define EL_MM_EXIT_CLOSING (EL_FIRST_RUNTIME_REAL + 73)
+#define EL_MM_GRAY_BALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 74)
+#define EL_MM_GRAY_BALL_OPENING (EL_FIRST_RUNTIME_REAL + 75)
+#define EL_MM_ICE_WALL_SHRINKING (EL_FIRST_RUNTIME_REAL + 76)
+#define EL_MM_AMOEBA_WALL_GROWING (EL_FIRST_RUNTIME_REAL + 77)
+#define EL_MM_PACMAN_EATING_RIGHT (EL_FIRST_RUNTIME_REAL + 78)
+#define EL_MM_PACMAN_EATING_UP (EL_FIRST_RUNTIME_REAL + 79)
+#define EL_MM_PACMAN_EATING_LEFT (EL_FIRST_RUNTIME_REAL + 80)
+#define EL_MM_PACMAN_EATING_DOWN (EL_FIRST_RUNTIME_REAL + 81)
+#define EL_MM_BOMB_ACTIVE (EL_FIRST_RUNTIME_REAL + 82)
+#define EL_DF_MINE_ACTIVE (EL_FIRST_RUNTIME_REAL + 83)
+#define EL_BDX_MAGIC_WALL_ACTIVE (EL_FIRST_RUNTIME_REAL + 84)
+
+#define NUM_DRAWABLE_ELEMENTS (EL_FIRST_RUNTIME_REAL + 85)
+
+#define EL_MM_RUNTIME_START EL_MM_EXIT_OPENING
+#define EL_MM_RUNTIME_END EL_MM_AMOEBA_WALL_GROWING
- boolean em_slippery_gems; // EM style "gems slip from wall" behaviour
- boolean em_explodes_by_fire; // EM style chain explosion behaviour
- boolean use_spring_bug; // for compatibility with old levels
- boolean use_time_orb_bug; // for compatibility with old levels
- boolean use_life_bugs; // for compatibility with old levels
- boolean instant_relocation; // no visual delay when relocating player
- boolean shifted_relocation; // no level centering when relocating player
- boolean lazy_relocation; // only redraw off-screen player relocation
- boolean can_pass_to_walkable; // player can pass to empty or walkable tile
- boolean grow_into_diggable; // amoeba can grow into anything diggable
- boolean sb_fields_needed; // all Sokoban fields must be solved
- boolean sb_objects_needed; // all Sokoban objects must be solved
- boolean auto_exit_sokoban; // automatically finish solved Sokoban levels
- boolean solved_by_one_player; // level is solved if one player enters exit
- boolean finish_dig_collect; // only finished dig/collect triggers ce action
- boolean keep_walkable_ce; // keep walkable CE if it changes to the player
-
- boolean continuous_snapping; // repeated snapping without releasing key
- boolean block_snap_field; // snapping blocks field to show animation
- boolean block_last_field; // player blocks previous field while moving
- boolean sp_block_last_field; // player blocks previous field while moving
+ int bd_cycle_delay_ms; // BD game cycle delay (in milliseconds)
+ int bd_cycle_delay_c64; // BD game cycle delay (in C64 game units)
+ int bd_hatching_delay_cycles; // BD hatching delay (in game cycles)
+ int bd_hatching_delay_seconds; // BD hatching delay (in seconds)
+ int bd_scheduling_type; // BD engine scheduling type
+ boolean bd_pal_timing; // BD engine uses special PAL timing
+ boolean bd_line_shifting_borders; // BD engine uses line-shifting wrap-around
+ boolean bd_scan_first_and_last_row; // BD engine scans top and bottom border rows
+ boolean bd_short_explosions; // BD engine uses four game cycles for explosions
+ boolean bd_intermission; // BD level is intermission
+ boolean bd_diagonal_movements; // BD style diagonal movements
+ boolean bd_topmost_player_active; // BD engine uses first player found on playfield
+ int bd_snap_element; // BD element that is created when player is snapping
+ int bd_pushing_prob; // BD player probability to push rocks
+ int bd_pushing_prob_with_sweet; // BD player probability to push rocks after eating sweet
+ boolean bd_push_mega_rock_with_sweet; // BD player can push mega rocks after eating sweet
+ boolean bd_magic_wall_zero_infinite; // BD magic wall with timer of zero runs infinitely
+ boolean bd_magic_wall_wait_hatching; // BD magic wall waits for player's birth
+ boolean bd_magic_wall_stops_amoeba; // BD magic wall can stop amoeba and turn to diamonds
+ boolean bd_magic_wall_break_scan; // BD magic wall setting to implement buggy BD1 behaviour
+ int bd_magic_wall_time; // BD magic wall time
+ int bd_magic_wall_diamond_to; // BD magic wall turns diamonds to specified element
+ int bd_magic_wall_rock_to; // BD magic wall turns rocks to specified element
+ int bd_magic_wall_mega_rock_to; // BD magic wall turns mega rocks to specified element
+ int bd_magic_wall_nut_to; // BD magic wall turns nuts to specified element
+ int bd_magic_wall_nitro_pack_to; // BD magic wall turns nitro packs to specified element
+ int bd_magic_wall_flying_diamond_to; // BD magic wall turns flying diamonds to specified element
+ int bd_magic_wall_flying_rock_to; // BD magic wall turns flying rocks to specified element
+ boolean bd_amoeba_wait_for_hatching; // BD amoeba waits for player's birth
+ boolean bd_amoeba_start_immediately; // BD amoeba growth starts immediately
+ boolean bd_amoeba_2_explode_by_amoeba;// BD amoeba 2 explodes if touched by BD amoeba
+ int bd_amoeba_1_threshold_too_big; // BD amoeba 1 turns to stones if threshold reached
+ int bd_amoeba_1_slow_growth_time; // BD amoeba 1 slow growth time (in seconds)
+ int bd_amoeba_1_slow_growth_rate; // BD amoeba 1 slow growth rate (in percent)
+ int bd_amoeba_1_fast_growth_rate; // BD amoeba 1 fast growth rate (in percent)
+ int bd_amoeba_1_content_too_big; // BD amoeba 1 changes to this element if too big
+ int bd_amoeba_1_content_enclosed; // BD amoeba 1 changes to this element if enclosed
+ int bd_amoeba_2_threshold_too_big; // BD amoeba 2 turns to stones if threshold reached
+ int bd_amoeba_2_slow_growth_time; // BD amoeba 2 slow growth time (in seconds)
+ int bd_amoeba_2_slow_growth_rate; // BD amoeba 2 slow growth rate (in percent)
+ int bd_amoeba_2_fast_growth_rate; // BD amoeba 2 fast growth rate (in percent)
+ int bd_amoeba_2_content_too_big; // BD amoeba 2 changes to this element if too big
+ int bd_amoeba_2_content_enclosed; // BD amoeba 2 changes to this element if enclosed
+ int bd_amoeba_2_content_exploding; // BD amoeba 2 changes to this element if exploding
+ int bd_amoeba_2_content_looks_like; // BD amoeba 2 looks like this other game element
+ int bd_clock_extra_time; // BD engine extra time when collecting clock
+ boolean bd_voodoo_collects_diamonds; // BD voodoo doll can collect diamonds for the player
+ boolean bd_voodoo_hurt_kills_player; // BD voodoo doll hurt in any way, player is killed
+ boolean bd_voodoo_dies_by_rock; // BD voodoo doll can be killed by a falling rock
+ boolean bd_voodoo_vanish_by_explosion;// BD voodoo doll can be destroyed by explosions
+ int bd_voodoo_penalty_time; // BD engine penalty time when voodoo doll destroyed
+ boolean bd_slime_is_predictable; // BD slime uses predictable random number generator
+ boolean bd_slime_correct_random; // BD slime needs corrected random number generator
+ int bd_slime_permeability_rate; // BD slime permeability rate for unpredictable slime
+ int bd_slime_permeability_bits_c64; // BD slime permeability bits for predictable slime
+ int bd_slime_random_seed_c64; // BD slime random number seed for predictable slime
+ int bd_slime_eats_element_1; // BD slime can eat and convert this game element
+ int bd_slime_converts_to_element_1; // BD slime can convert eaten element to this game element
+ int bd_slime_eats_element_2; // BD slime can eat and convert this game element
+ int bd_slime_converts_to_element_2; // BD slime can convert eaten element to this game element
+ int bd_slime_eats_element_3; // BD slime can eat and convert this game element
+ int bd_slime_converts_to_element_3; // BD slime can convert eaten element to this game element
+ int bd_cave_random_seed_c64; // BD cave random number seed for predictable slime
+ int bd_acid_eats_element; // BD acid eats this game element when spreading
+ int bd_acid_spread_rate; // BD acid probability of spreading (in percent)
+ int bd_acid_turns_to_element; // BD acid target element after spreading
+ int bd_biter_move_delay; // BD biter delay between movements (in BD frames)
+ int bd_biter_eats_element; // BD biter eats this game element when moving
+ int bd_bladder_converts_by_element; // BD bladder converts to clock by touching this element
+ boolean bd_change_expanding_wall; // BD expanding wall direction is changed if enabled
+ boolean bd_replicators_active; // BD replicators start in active state if enabled
+ int bd_replicator_create_delay; // BD replicator delay between replications (in BD frames)
+ boolean bd_conveyor_belts_active; // BD conveyor belts start in active state if enabled
+ boolean bd_conveyor_belts_changed; // BD conveyor belts direction is changed if enabled
+ boolean bd_water_cannot_flow_down; // BD water does not flow downwards if enabled
+ int bd_nut_content; // BD nut contains the specified game element
+ int bd_hammer_walls_break_delay; // BD hammer time for breaking walls (in BD frames)
+ boolean bd_hammer_walls_reappear; // BD hammered walls are reappearing after some delay
+ int bd_hammer_walls_reappear_delay; // BD hammer time for reappearing walls (in BD frames)
+ boolean bd_infinite_rockets; // BD rocket launcher has infinite number of rockets
+ int bd_num_skeletons_needed_for_pot; // BD skeletons amount must be collected to use a pot
+ int bd_skeleton_worth_num_diamonds; // BD skeleton collected is worth this number of diamonds
+ int bd_expanding_wall_looks_like; // BD expanding wall looks like this other game element
+ int bd_sand_looks_like; // BD sand looks like this other game element
+ boolean bd_creatures_start_backwards; // BD creatures start moving in opposite direction
+ boolean bd_creatures_turn_on_hatching;// BD creatures change direction after hatching
+ int bd_creatures_auto_turn_delay; // BD creatures change direction after delay (in seconds)
+ int bd_gravity_direction; // BD engine initial gravity direction
+ boolean bd_gravity_switch_active; // BD engine gravity switch starts in active state
+ int bd_gravity_switch_delay; // BD engine gravity change delay for switch (in seconds)
+ boolean bd_gravity_affects_all; // BD engine gravity affects all falling objects
+ int bd_rock_turns_to_on_falling; // BD rock changes to specified element when falling
+ int bd_rock_turns_to_on_impact; // BD rock changes to specified element on impact
+ int bd_diamond_turns_to_on_falling; // BD diamond changes to specified element when falling
+ int bd_diamond_turns_to_on_impact; // BD diamond changes to specified element on impact
+ int bd_firefly_1_explodes_to; // BD firefly 1 explodes to specified element
+ int bd_firefly_2_explodes_to; // BD firefly 2 explodes to specified element
+ int bd_butterfly_1_explodes_to; // BD butterfly 1 explodes to specified element
+ int bd_butterfly_2_explodes_to; // BD butterfly 2 explodes to specified element
+ int bd_stonefly_explodes_to; // BD stonefly explodes to specified element
+ int bd_dragonfly_explodes_to; // BD dragonfly explodes to specified element
+ int bd_diamond_birth_turns_to; // BD diamond birth changes to specified element
+ int bd_bomb_explosion_turns_to; // BD bomb explosion changes to specified element
+ int bd_nitro_explosion_turns_to; // BD nitro pack explosion changes to specified element
+ int bd_explosion_turns_to; // BD other explosions change to specified element
+ int bd_color_b; // BD engine C64-style cave color (border)
+ int bd_color_0; // BD engine C64-style cave color (background)
+ int bd_color_1; // BD engine C64-style cave color (sand)
+ int bd_color_2; // BD engine C64-style cave color (steel wall)
+ int bd_color_3; // BD engine C64-style cave color (wall)
+ int bd_color_4; // BD engine C64-style cave color (amoeba)
+ int bd_color_5; // BD engine C64-style cave color (slime)
+
+ boolean em_slippery_gems; // EM style "gems slip from wall" behaviour
+ boolean em_explodes_by_fire; // EM style chain explosion behaviour
+ boolean use_spring_bug; // for compatibility with old levels
+ boolean use_time_orb_bug; // for compatibility with old levels
+ boolean use_life_bugs; // for compatibility with old levels
+ boolean instant_relocation; // no visual delay when relocating player
+ boolean shifted_relocation; // no level centering when relocating player
+ boolean lazy_relocation; // only redraw off-screen player relocation
+ boolean can_pass_to_walkable; // player can pass to empty or walkable tile
+ boolean grow_into_diggable; // amoeba can grow into anything diggable
+ boolean sb_fields_needed; // all Sokoban fields must be solved
+ boolean sb_objects_needed; // all Sokoban objects must be solved
+ boolean auto_exit_sokoban; // automatically finish solved Sokoban levels
+ boolean solved_by_one_player; // level is solved if one player enters exit
+ boolean finish_dig_collect; // only finished dig/collect triggers ce action
+ boolean keep_walkable_ce; // keep walkable CE if it changes to the player
+
+ boolean continuous_snapping; // repeated snapping without releasing key
+ boolean block_snap_field; // snapping blocks field to show animation
+ boolean block_last_field; // player blocks previous field while moving
+ boolean sp_block_last_field; // player blocks previous field while moving
-extern Bitmap *bitmap_db_field;
-extern Bitmap *bitmap_db_door_1;
-extern Bitmap *bitmap_db_door_2;
-extern Bitmap *bitmap_db_store_1;
-extern Bitmap *bitmap_db_store_2;
-extern DrawBuffer *fieldbuffer;
-extern DrawBuffer *drawto_field;
-
-extern int game_status;
-extern int game_status_last_screen;
-extern boolean level_editor_test_game;
-extern boolean score_info_tape_play;
-extern boolean network_playing;
-
-extern int key_joystick_mapping;
-
-extern short Tile[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short Last[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short ChangeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short ChangePage[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short CustomValue[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short Back[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern boolean Pushed[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short ChangeCount[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short WasJustMoving[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short WasJustFalling[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short CheckCollision[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short CheckImpact[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short AmoebaCnt[MAX_NUM_AMOEBA];
-extern short AmoebaCnt2[MAX_NUM_AMOEBA];
-extern short ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short ExplodePhase[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short ExplodeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern int RunnerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern int PlayerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-
-extern int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern int GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern int GfxRandomStatic[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern int GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern int GfxElementEmpty[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern int GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern int GfxDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern int GfxRedraw[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-
-extern int ActiveElement[MAX_NUM_ELEMENTS];
-extern int ActiveButton[NUM_IMAGE_FILES];
-extern int ActiveFont[NUM_FONTS];
-
-extern int lev_fieldx, lev_fieldy;
-extern int scroll_x, scroll_y;
-
-extern int WIN_XSIZE, WIN_YSIZE;
-extern int SCR_FIELDX, SCR_FIELDY;
-extern int REAL_SX, REAL_SY;
-extern int SX, SY;
-extern int DX, DY;
-extern int VX, VY;
-extern int EX, EY;
-extern int dDX, dDY;
-extern int FULL_SXSIZE, FULL_SYSIZE;
-extern int SXSIZE, SYSIZE;
-extern int DXSIZE, DYSIZE;
-extern int VXSIZE, VYSIZE;
-extern int EXSIZE, EYSIZE;
-extern int TILESIZE_VAR;
-
-extern int FADE_SX, FADE_SY;
-extern int FADE_SXSIZE, FADE_SYSIZE;
-
-extern int FX, FY;
-extern int ScrollStepSize;
-extern int ScreenMovDir, ScreenMovPos, ScreenGfxPos;
-extern int BorderElement;
-extern int MenuFrameDelay;
-extern int GameFrameDelay;
-extern int FfwdFrameDelay;
-extern int BX1, BY1;
-extern int BX2, BY2;
-extern int SBX_Left, SBX_Right;
-extern int SBY_Upper, SBY_Lower;
-
-extern int TimeFrames, TimePlayed, TimeLeft, TapeTime;
-
-extern boolean network_player_action_received;
-
-extern int graphics_action_mapping[];
-
-extern struct LevelInfo level, level_template;
-extern struct ScoreInfo scores, server_scores;
-extern struct TapeInfo tape;
-extern struct GlobalInfo global;
-extern struct BorderInfo border;
-extern struct ViewportInfo viewport;
-extern struct TitleFadingInfo fading;
-extern struct TitleFadingInfo fading_none;
-extern struct TitleFadingInfo title_initial_first_default;
-extern struct TitleFadingInfo title_initial_default;
-extern struct TitleFadingInfo title_first_default;
-extern struct TitleFadingInfo title_default;
-extern struct TitleMessageInfo titlescreen_initial_first_default;
-extern struct TitleMessageInfo titlescreen_initial_first[];
-extern struct TitleMessageInfo titlescreen_initial_default;
-extern struct TitleMessageInfo titlescreen_initial[];
-extern struct TitleMessageInfo titlescreen_first_default;
-extern struct TitleMessageInfo titlescreen_first[];
-extern struct TitleMessageInfo titlescreen_default;
-extern struct TitleMessageInfo titlescreen[];
-extern struct TitleMessageInfo titlemessage_initial_first_default;
-extern struct TitleMessageInfo titlemessage_initial_first[];
-extern struct TitleMessageInfo titlemessage_initial_default;
-extern struct TitleMessageInfo titlemessage_initial[];
-extern struct TitleMessageInfo titlemessage_first_default;
-extern struct TitleMessageInfo titlemessage_first[];
-extern struct TitleMessageInfo titlemessage_default;
-extern struct TitleMessageInfo titlemessage[];
-extern struct TitleMessageInfo readme;
-extern struct InitInfo init, init_last;
-extern struct MenuInfo menu;
-extern struct DoorInfo door_1, door_2;
-extern struct RequestInfo request;
-extern struct PreviewInfo preview;
-extern struct EditorInfo editor;
-extern struct ElementInfo element_info[];
-extern struct ElementNameInfo element_name_info[];
-extern struct ElementActionInfo element_action_info[];
-extern struct ElementDirectionInfo element_direction_info[];
-extern struct SpecialSuffixInfo special_suffix_info[];
-extern struct TokenIntPtrInfo image_config_vars[];
-extern struct FontInfo font_info[];
-extern struct GlobalAnimInfo global_anim_info[];
-extern struct GlobalAnimNameInfo global_anim_name_info[];
-extern struct GlobalAnimEventInfo global_anim_event_info;
-extern struct MusicPrefixInfo music_prefix_info[];
-extern struct GraphicInfo *graphic_info;
-extern struct SoundInfo *sound_info;
-extern struct MusicInfo *music_info;
-extern struct MusicFileInfo *music_file_info;
-extern struct HelpAnimInfo *helpanim_info;
-extern SetupFileHash *helptext_info;
-extern SetupFileHash *image_config_hash;
-extern SetupFileHash *element_token_hash;
-extern SetupFileHash *graphic_token_hash;
-extern SetupFileHash *font_token_hash;
-extern SetupFileHash *hide_setup_hash;
-extern SetupFileHash *anim_url_hash;
-extern struct ConfigTypeInfo image_config_suffix[];
-extern struct ConfigTypeInfo sound_config_suffix[];
-extern struct ConfigTypeInfo music_config_suffix[];
-extern struct ConfigInfo image_config[];
-extern struct ConfigInfo sound_config[];
-extern struct ConfigInfo music_config[];
-extern struct ConfigInfo helpanim_config[];
-extern struct ConfigInfo helptext_config[];
+extern Bitmap *bitmap_db_field;
+extern Bitmap *bitmap_db_door_1;
+extern Bitmap *bitmap_db_door_2;
+extern Bitmap *bitmap_db_store_1;
+extern Bitmap *bitmap_db_store_2;
+extern DrawBuffer *fieldbuffer;
+extern DrawBuffer *drawto_field;
+
+extern int game_status;
+extern int game_status_last_screen;
+extern boolean level_editor_test_game;
+extern boolean score_info_tape_play;
+extern boolean network_playing;
+
+extern int key_joystick_mapping;
+
+extern short Tile[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short Last[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short ChangeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short ChangePage[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short CustomValue[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short Back[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern boolean Pushed[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short ChangeCount[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short WasJustMoving[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short WasJustFalling[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short CheckCollision[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short CheckImpact[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short AmoebaCnt[MAX_NUM_AMOEBA];
+extern short AmoebaCnt2[MAX_NUM_AMOEBA];
+extern short ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short ExplodePhase[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short ExplodeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int RunnerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int PlayerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+
+extern int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int GfxRandomStatic[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int GfxElementEmpty[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int GfxDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int GfxRedraw[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+
+extern int ActiveElement[MAX_NUM_ELEMENTS];
+extern int ActiveButton[NUM_IMAGE_FILES];
+extern int ActiveFont[NUM_FONTS];
+
+extern int lev_fieldx, lev_fieldy;
+extern int scroll_x, scroll_y;
+
+extern int WIN_XSIZE, WIN_YSIZE;
+extern int SCR_FIELDX, SCR_FIELDY;
+extern int REAL_SX, REAL_SY;
+extern int SX, SY;
+extern int DX, DY;
+extern int VX, VY;
+extern int EX, EY;
+extern int dDX, dDY;
+extern int FULL_SXSIZE, FULL_SYSIZE;
+extern int SXSIZE, SYSIZE;
+extern int DXSIZE, DYSIZE;
+extern int VXSIZE, VYSIZE;
+extern int EXSIZE, EYSIZE;
+extern int TILESIZE_VAR;
+
+extern int FADE_SX, FADE_SY;
+extern int FADE_SXSIZE, FADE_SYSIZE;
+
+extern int FX, FY;
+extern int ScrollStepSize;
+extern int ScreenMovDir, ScreenMovPos, ScreenGfxPos;
+extern int BorderElement;
+extern int MenuFrameDelay;
+extern int GameFrameDelay;
+extern int FfwdFrameDelay;
+extern int BX1, BY1;
+extern int BX2, BY2;
+extern int SBX_Left, SBX_Right;
+extern int SBY_Upper, SBY_Lower;
+
+extern int TimeFrames, TimePlayed, TimeLeft;
+extern int TapeTimeFrames, TapeTime;
+
+extern boolean network_player_action_received;
+
+extern int graphics_action_mapping[];
+
+extern struct LevelInfo level, level_template;
+extern struct ScoreInfo scores, server_scores;
+extern struct TapeInfo tape;
+extern struct GlobalInfo global;
+extern struct BorderInfo border;
+extern struct ViewportInfo viewport;
+extern struct TitleFadingInfo fading;
+extern struct TitleFadingInfo fading_none;
+extern struct TitleFadingInfo title_initial_first_default;
+extern struct TitleFadingInfo title_initial_default;
+extern struct TitleFadingInfo title_first_default;
+extern struct TitleFadingInfo title_default;
+extern struct TitleMessageInfo titlescreen_initial_first_default;
+extern struct TitleMessageInfo titlescreen_initial_first[];
+extern struct TitleMessageInfo titlescreen_initial_default;
+extern struct TitleMessageInfo titlescreen_initial[];
+extern struct TitleMessageInfo titlescreen_first_default;
+extern struct TitleMessageInfo titlescreen_first[];
+extern struct TitleMessageInfo titlescreen_default;
+extern struct TitleMessageInfo titlescreen[];
+extern struct TitleMessageInfo titlemessage_initial_first_default;
+extern struct TitleMessageInfo titlemessage_initial_first[];
+extern struct TitleMessageInfo titlemessage_initial_default;
+extern struct TitleMessageInfo titlemessage_initial[];
+extern struct TitleMessageInfo titlemessage_first_default;
+extern struct TitleMessageInfo titlemessage_first[];
+extern struct TitleMessageInfo titlemessage_default;
+extern struct TitleMessageInfo titlemessage[];
+extern struct TitleMessageInfo readme;
+extern struct InitInfo init, init_last;
+extern struct MenuInfo menu;
+extern struct DoorInfo door_1, door_2;
+extern struct RequestInfo request;
+extern struct PreviewInfo preview;
+extern struct EditorInfo editor;
+extern struct ElementInfo element_info[];
+extern struct ElementNameInfo element_name_info[];
+extern struct ElementActionInfo element_action_info[];
+extern struct ElementDirectionInfo element_direction_info[];
+extern struct SpecialSuffixInfo special_suffix_info[];
+extern struct TokenIntPtrInfo image_config_vars[];
+extern struct TokenIntPtrInfo sound_config_vars[];
+extern struct FontInfo font_info[];
+extern struct GlobalAnimInfo global_anim_info[];
+extern struct GlobalAnimNameInfo global_anim_name_info[];
+extern struct GlobalAnimEventInfo global_anim_event_info;
+extern struct MusicPrefixInfo music_prefix_info[];
+extern struct GraphicInfo *graphic_info;
+extern struct SoundInfo *sound_info;
+extern struct MusicInfo *music_info;
+extern struct MusicFileInfo *music_file_info;
+extern struct HelpAnimInfo *helpanim_info;
+extern SetupFileHash *helptext_info;
+extern SetupFileHash *image_config_hash;
+extern SetupFileHash *sound_config_hash;
+extern SetupFileHash *element_token_hash;
+extern SetupFileHash *graphic_token_hash;
+extern SetupFileHash *font_token_hash;
+extern SetupFileHash *hide_setup_hash;
+extern SetupFileHash *anim_url_hash;
+extern struct ConfigTypeInfo image_config_suffix[];
+extern struct ConfigTypeInfo sound_config_suffix[];
+extern struct ConfigTypeInfo music_config_suffix[];
+extern struct ConfigInfo image_config[];
+extern struct ConfigInfo sound_config[];
+extern struct ConfigInfo music_config[];
+extern struct ConfigInfo helpanim_config[];
+extern struct ConfigInfo helptext_config[];