rnd-20020921-4-src
[rocksndiamonds.git] / src / main.c
index c56de02bbba17e4ce7f2a7f358c017d327b37f53..94fcc56e40e14e208e791218a6a68e1af7b02c36 100644 (file)
@@ -55,7 +55,7 @@ int           lev_fieldx,lev_fieldy, scroll_x,scroll_y;
 int            FX = SX, FY = SY, ScrollStepSize;
 int            ScreenMovDir = MV_NO_MOVING, ScreenMovPos = 0;
 int            ScreenGfxPos = 0;
-int            BorderElement = EL_BETON;
+int            BorderElement = EL_STEELWALL;
 int            GameFrameDelay = GAME_FRAME_DELAY;
 int            FfwdFrameDelay = FFWD_FRAME_DELAY;
 int            BX1 = 0, BY1 = 0, BX2 = SCR_FIELDX-1, BY2 = SCR_FIELDY-1;
@@ -143,16 +143,18 @@ int anim_action_mapping[] =
   0,           /* GFX_ACTION_DEFAULT           (1)  */
   0,           /* GFX_ACTION_WAITING           (2)  */
 
-  1,           /* GFX_ACTION_MOVING            (3)  */
-  2,           /* GFX_ACTION_DIGGING           (4)  */
-  3,           /* GFX_ACTION_COLLECTING        (5)  */
-  4,           /* GFX_ACTION_PUSHING           (6)  */
-
-  5,           /* GFX_ACTION_PASSING           (7)  */
-  5,           /* GFX_ACTION_IMPACT            (8)  */
-  5,           /* GFX_ACTION_ACTIVATING        (9)  */
-  5,           /* GFX_ACTION_BURNING           (10) */
-  5            /* GFX_ACTION_OTHER             (11) */
+  1,           /* GFX_ACTION_FALLING           (3)  */
+  2,           /* GFX_ACTION_MOVING            (4)  */
+  3,           /* GFX_ACTION_DIGGING           (5)  */
+  4,           /* GFX_ACTION_COLLECTING        (6)  */
+  5,           /* GFX_ACTION_PUSHING           (7)  */
+
+  6,           /* GFX_ACTION_PASSING           (8)  */
+  6,           /* GFX_ACTION_IMPACT            (9)  */
+  6,           /* GFX_ACTION_CRACKING          (10)  */
+  6,           /* GFX_ACTION_ACTIVATING        (11)  */
+  6,           /* GFX_ACTION_EATING            (12)  */
+  6            /* GFX_ACTION_OTHER             (13) */
 };
 
 struct ConfigInfo image_config_suffix[] =
@@ -160,6 +162,9 @@ struct ConfigInfo image_config_suffix[] =
   { ".xpos",                           "0"                     },
   { ".ypos",                           "0"                     },
   { ".frames",                         "1"                     },
+#if 0
+  { ".start_frame",                    "-1"                    },
+#endif
   { ".delay",                          "1"                     },
   { ".pingpong",                       "0"                     },
   { ".pingpong2",                      "0"                     },
@@ -196,14 +201,18 @@ struct ConfigInfo image_config[] =
   { "quicksand_empty.xpos",                    "2"                     },
   { "quicksand_empty.ypos",                    "0"                     },
   { "quicksand_empty.frames",                  "1"                     },
+  { "quicksand.filling",                       "RocksElements.pcx"     },
+  { "quicksand.filling.xpos",                  "3"                     },
+  { "quicksand.filling.ypos",                  "0"                     },
+  { "quicksand.filling.frames",                        "1"                     },
   { "quicksand_full",                          "RocksElements.pcx"     },
   { "quicksand_full.xpos",                     "3"                     },
   { "quicksand_full.ypos",                     "0"                     },
   { "quicksand_full.frames",                   "1"                     },
-  { "quicksand_slipping_through",              "RocksElements.pcx"     },
-  { "quicksand_slipping_through.xpos",         "3"                     },
-  { "quicksand_slipping_through.ypos",         "0"                     },
-  { "quicksand_slipping_through.frames",       "1"                     },
+  { "quicksand.emptying",                      "RocksElements.pcx"     },
+  { "quicksand.emptying.xpos",                 "3"                     },
+  { "quicksand.emptying.ypos",                 "0"                     },
+  { "quicksand.emptying.frames",               "1"                     },
 
   { "steelwall",                               "RocksElements.pcx"     },
   { "steelwall.xpos",                          "4"                     },
@@ -354,10 +363,10 @@ struct ConfigInfo image_config[] =
   { "dynamite.xpos",                           "0"                     },
   { "dynamite.ypos",                           "3"                     },
   { "dynamite.frames",                         "1"                     },
-  { "dynamite.burning",                                "RocksElements.pcx"     },
-  { "dynamite.burning.xpos",                   "1"                     },
-  { "dynamite.burning.ypos",                   "3"                     },
-  { "dynamite.burning.frames",                 "7"                     },
+  { "dynamite.active",                         "RocksElements.pcx"     },
+  { "dynamite.active.xpos",                    "1"                     },
+  { "dynamite.active.ypos",                    "3"                     },
+  { "dynamite.active.frames",                  "7"                     },
 
   { "spaceship_right",                         "RocksElements.pcx"     },
   { "spaceship_right.xpos",                    "8"                     },
@@ -449,33 +458,61 @@ struct ConfigInfo image_config[] =
   { "robot_wheel",                             "RocksElements.pcx"     },
   { "robot_wheel.xpos",                                "0"                     },
   { "robot_wheel.ypos",                                "6"                     },
-  { "robot_wheel.frames",                      "4"                     },
+  { "robot_wheel.frames",                      "1"                     },
+  { "robot_wheel.active",                      "RocksElements.pcx"     },
+  { "robot_wheel.active.xpos",                 "0"                     },
+  { "robot_wheel.active.ypos",                 "6"                     },
+  { "robot_wheel.active.frames",               "4"                     },
 
   { "amoeba_drop",                             "RocksElements.pcx"     },
   { "amoeba_drop.xpos",                                "5"                     },
   { "amoeba_drop.ypos",                                "6"                     },
   { "amoeba_drop.frames",                      "1"                     },
-  { "amoeba.growing",                          "RocksElements.pcx"     },
-  { "amoeba.growing.xpos",                     "5"                     },
-  { "amoeba.growing.ypos",                     "6"                     },
-  { "amoeba.growing.frames",                   "3"                     },
-  { "amoeba",                                  "RocksElements.pcx"     },
-  { "amoeba.xpos",                             "8"                     },
-  { "amoeba.ypos",                             "6"                     },
-  { "amoeba.frames",                           "4"                     },
-  { "amoeba_dead",                             "RocksElements.pcx"     },
-  { "amoeba_dead.xpos",                                "12"                    },
-  { "amoeba_dead.ypos",                                "6"                     },
-  { "amoeba_dead.frames",                      "4"                     },
-
-  { "lamp_off",                                        "RocksElements.pcx"     },
-  { "lamp_off.xpos",                           "0"                     },
-  { "lamp_off.ypos",                           "7"                     },
-  { "lamp_off.frames",                         "1"                     },
-  { "lamp_on",                                 "RocksElements.pcx"     },
-  { "lamp_on.xpos",                            "1"                     },
-  { "lamp_on.ypos",                            "7"                     },
-  { "lamp_on.frames",                          "1"                     },
+  { "amoeba.creating",                         "RocksElements.pcx"     },
+  { "amoeba.creating.xpos",                    "5"                     },
+  { "amoeba.creating.ypos",                    "6"                     },
+  { "amoeba.creating.frames",                  "3"                     },
+  { "amoeba.part1",                            "RocksElements.pcx"     },
+  { "amoeba.part1.xpos",                       "8"                     },
+  { "amoeba.part1.ypos",                       "6"                     },
+  { "amoeba.part1.frames",                     "1"                     },
+  { "amoeba.part2",                            "RocksElements.pcx"     },
+  { "amoeba.part2.xpos",                       "9"                     },
+  { "amoeba.part2.ypos",                       "6"                     },
+  { "amoeba.part2.frames",                     "1"                     },
+  { "amoeba.part3",                            "RocksElements.pcx"     },
+  { "amoeba.part3.xpos",                       "10"                    },
+  { "amoeba.part3.ypos",                       "6"                     },
+  { "amoeba.part3.frames",                     "1"                     },
+  { "amoeba.part4",                            "RocksElements.pcx"     },
+  { "amoeba.part4.xpos",                       "11"                    },
+  { "amoeba.part4.ypos",                       "6"                     },
+  { "amoeba.part4.frames",                     "1"                     },
+  { "amoeba_dead.part1",                       "RocksElements.pcx"     },
+  { "amoeba_dead.part1.xpos",                  "12"                    },
+  { "amoeba_dead.part1.ypos",                  "6"                     },
+  { "amoeba_dead.part1.frames",                        "1"                     },
+  { "amoeba_dead.part2",                       "RocksElements.pcx"     },
+  { "amoeba_dead.part2.xpos",                  "13"                    },
+  { "amoeba_dead.part2.ypos",                  "6"                     },
+  { "amoeba_dead.part2.frames",                        "1"                     },
+  { "amoeba_dead.part3",                       "RocksElements.pcx"     },
+  { "amoeba_dead.part3.xpos",                  "14"                    },
+  { "amoeba_dead.part3.ypos",                  "6"                     },
+  { "amoeba_dead.part3.frames",                        "1"                     },
+  { "amoeba_dead.part4",                       "RocksElements.pcx"     },
+  { "amoeba_dead.part4.xpos",                  "15"                    },
+  { "amoeba_dead.part4.ypos",                  "6"                     },
+  { "amoeba_dead.part4.frames",                        "1"                     },
+
+  { "lamp",                                    "RocksElements.pcx"     },
+  { "lamp.xpos",                               "0"                     },
+  { "lamp.ypos",                               "7"                     },
+  { "lamp.frames",                             "1"                     },
+  { "lamp.active",                             "RocksElements.pcx"     },
+  { "lamp.active.xpos",                                "1"                     },
+  { "lamp.active.ypos",                                "7"                     },
+  { "lamp.active.frames",                      "1"                     },
 
   { "time_orb_full",                           "RocksElements.pcx"     },
   { "time_orb_full.xpos",                      "2"                     },
@@ -490,6 +527,22 @@ struct ConfigInfo image_config[] =
   { "bd_amoeba.xpos",                          "8"                     },
   { "bd_amoeba.ypos",                          "7"                     },
   { "bd_amoeba.frames",                                "1"                     },
+  { "bd_amoeba.part1",                         "RocksElements.pcx"     },
+  { "bd_amoeba.part1.xpos",                    "8"                     },
+  { "bd_amoeba.part1.ypos",                    "6"                     },
+  { "bd_amoeba.part1.frames",                  "1"                     },
+  { "bd_amoeba.part2",                         "RocksElements.pcx"     },
+  { "bd_amoeba.part2.xpos",                    "9"                     },
+  { "bd_amoeba.part2.ypos",                    "6"                     },
+  { "bd_amoeba.part2.frames",                  "1"                     },
+  { "bd_amoeba.part3",                         "RocksElements.pcx"     },
+  { "bd_amoeba.part3.xpos",                    "10"                    },
+  { "bd_amoeba.part3.ypos",                    "6"                     },
+  { "bd_amoeba.part3.frames",                  "1"                     },
+  { "bd_amoeba.part4",                         "RocksElements.pcx"     },
+  { "bd_amoeba.part4.xpos",                    "11"                    },
+  { "bd_amoeba.part4.ypos",                    "6"                     },
+  { "bd_amoeba.part4.frames",                  "1"                     },
 
   { "sokoban_object",                          "RocksElements.pcx"     },
   { "sokoban_object.xpos",                     "9"                     },
@@ -508,19 +561,51 @@ struct ConfigInfo image_config[] =
   { "magic_wall.xpos",                         "0"                     },
   { "magic_wall.ypos",                         "8"                     },
   { "magic_wall.frames",                       "1"                     },
-  { "magic_wall.running",                      "RocksElements.pcx"     },
-  { "magic_wall.running.xpos",                 "0"                     },
-  { "magic_wall.running.ypos",                 "8"                     },
-  { "magic_wall.running.frames",               "4"                     },
+  { "magic_wall.active",                       "RocksElements.pcx"     },
+  { "magic_wall.active.xpos",                  "0"                     },
+  { "magic_wall.active.ypos",                  "8"                     },
+  { "magic_wall.active.frames",                        "4"                     },
+  { "magic_wall.filling",                      "RocksElements.pcx"     },
+  { "magic_wall.filling.xpos",                 "0"                     },
+  { "magic_wall.filling.ypos",                 "8"                     },
+  { "magic_wall.filling.frames",               "4"                     },
+  { "magic_wall.full",                         "RocksElements.pcx"     },
+  { "magic_wall.full.xpos",                    "0"                     },
+  { "magic_wall.full.ypos",                    "8"                     },
+  { "magic_wall.full.frames",                  "4"                     },
+  { "magic_wall.emptying",                     "RocksElements.pcx"     },
+  { "magic_wall.emptying.xpos",                        "0"                     },
+  { "magic_wall.emptying.ypos",                        "8"                     },
+  { "magic_wall.emptying.frames",              "4"                     },
+  { "magic_wall.dead",                         "RocksElements.pcx"     },
+  { "magic_wall.dead.xpos",                    "0"                     },
+  { "magic_wall.dead.ypos",                    "8"                     },
+  { "magic_wall.dead.frames",                  "1"                     },
 
   { "bd_magic_wall",                           "RocksElements.pcx"     },
   { "bd_magic_wall.xpos",                      "12"                    },
   { "bd_magic_wall.ypos",                      "10"                    },
   { "bd_magic_wall.frames",                    "1"                     },
-  { "bd_magic_wall.running",                   "RocksElements.pcx"     },
-  { "bd_magic_wall.running.xpos",              "12"                    },
-  { "bd_magic_wall.running.ypos",              "10"                    },
-  { "bd_magic_wall.running.frames",            "4"                     },
+  { "bd_magic_wall.active",                    "RocksElements.pcx"     },
+  { "bd_magic_wall.active.xpos",               "12"                    },
+  { "bd_magic_wall.active.ypos",               "10"                    },
+  { "bd_magic_wall.active.frames",             "4"                     },
+  { "bd_magic_wall.filling",                   "RocksElements.pcx"     },
+  { "bd_magic_wall.filling.xpos",              "12"                    },
+  { "bd_magic_wall.filling.ypos",              "10"                    },
+  { "bd_magic_wall.filling.frames",            "4"                     },
+  { "bd_magic_wall.full",                      "RocksElements.pcx"     },
+  { "bd_magic_wall.full.xpos",                 "12"                    },
+  { "bd_magic_wall.full.ypos",                 "10"                    },
+  { "bd_magic_wall.full.frames",               "4"                     },
+  { "bd_magic_wall.emptying",                  "RocksElements.pcx"     },
+  { "bd_magic_wall.emptying.xpos",             "12"                    },
+  { "bd_magic_wall.emptying.ypos",             "10"                    },
+  { "bd_magic_wall.emptying.frames",           "4"                     },
+  { "bd_magic_wall.dead",                      "RocksElements.pcx"     },
+  { "bd_magic_wall.dead.xpos",                 "12"                    },
+  { "bd_magic_wall.dead.ypos",                 "10"                    },
+  { "bd_magic_wall.dead.frames",               "1"                     },
 
   { "wall_emerald",                            "RocksElements.pcx"     },
   { "wall_emerald.xpos",                       "4"                     },
@@ -638,11 +723,11 @@ struct ConfigInfo image_config[] =
   { "dark_yamyam.frames",                      "4"                     },
   { "dark_yamyam.pingpong",                    "1"                     },
 
-  { "dynabomb.burning",                                "RocksElements.pcx"     },
-  { "dynabomb.burning.xpos",                   "12"                    },
-  { "dynabomb.burning.ypos",                   "11"                    },
-  { "dynabomb.burning.frames",                 "4"                     },
-  { "dynabomb.burning.pingpong",               "1"                     },
+  { "dynabomb.active",                         "RocksElements.pcx"     },
+  { "dynabomb.active.xpos",                    "12"                    },
+  { "dynabomb.active.ypos",                    "11"                    },
+  { "dynabomb.active.frames",                  "4"                     },
+  { "dynabomb.active.pingpong",                "1"                     },
   { "dynabomb_nr",                             "RocksElements.pcx"     },
   { "dynabomb_nr.xpos",                                "12"                    },
   { "dynabomb_nr.ypos",                                "11"                    },
@@ -652,23 +737,6 @@ struct ConfigInfo image_config[] =
   { "dynabomb_sz.ypos",                                "11"                    },
   { "dynabomb_sz.frames",                      "1"                     },
 
-  { "arrow_left",                              "RocksElements.pcx"     },
-  { "arrow_left.xpos",                         "0"                     },
-  { "arrow_left.ypos",                         "12"                    },
-  { "arrow_left.frames",                       "1"                     },
-  { "arrow_right",                             "RocksElements.pcx"     },
-  { "arrow_right.xpos",                                "1"                     },
-  { "arrow_right.ypos",                                "12"                    },
-  { "arrow_right.frames",                      "1"                     },
-  { "arrow_up",                                        "RocksElements.pcx"     },
-  { "arrow_up.xpos",                           "2"                     },
-  { "arrow_up.ypos",                           "12"                    },
-  { "arrow_up.frames",                         "1"                     },
-  { "arrow_down",                              "RocksElements.pcx"     },
-  { "arrow_down.xpos",                         "3"                     },
-  { "arrow_down.ypos",                         "12"                    },
-  { "arrow_down.frames",                       "1"                     },
-
   { "bd_butterfly",                            "RocksElements.pcx"     },
   { "bd_butterfly.xpos",                       "4"                     },
   { "bd_butterfly.ypos",                       "12"                    },
@@ -736,39 +804,51 @@ struct ConfigInfo image_config[] =
   { "steelwall_topright.ypos",                 "13"                    },
   { "steelwall_topright.frames",               "1"                     },
   { "steelwall_bottomleft",                    "RocksElements.pcx"     },
-  { "steelwall_bottomleft.xpos",               "1"                     },
+  { "steelwall_bottomleft.xpos",               "2"                     },
   { "steelwall_bottomleft.ypos",               "13"                    },
   { "steelwall_bottomleft.frames",             "1"                     },
   { "steelwall_bottomright",                   "RocksElements.pcx"     },
-  { "steelwall_bottomright.xpos",              "1"                     },
+  { "steelwall_bottomright.xpos",              "3"                     },
   { "steelwall_bottomright.ypos",              "13"                    },
   { "steelwall_bottomright.frames",            "1"                     },
   { "steelwall_horizontal",                    "RocksElements.pcx"     },
-  { "steelwall_horizontal.xpos",               "1"                     },
+  { "steelwall_horizontal.xpos",               "4"                     },
   { "steelwall_horizontal.ypos",               "13"                    },
   { "steelwall_horizontal.frames",             "1"                     },
+  { "steelwall_vertical",                      "RocksElements.pcx"     },
+  { "steelwall_vertical.xpos",                 "5"                     },
+  { "steelwall_vertical.ypos",                 "13"                    },
+  { "steelwall_vertical.frames",               "1"                     },
 
   { "invisible_steelwall_topleft",             "RocksElements.pcx"     },
-  { "invisible_steelwall_topleft.xpos",                "0"                     },
+  { "invisible_steelwall_topleft.xpos",                "6"                     },
   { "invisible_steelwall_topleft.ypos",                "13"                    },
   { "invisible_steelwall_topleft.frames",      "1"                     },
   { "invisible_steelwall_topright",            "RocksElements.pcx"     },
-  { "invisible_steelwall_topright.xpos",       "1"                     },
+  { "invisible_steelwall_topright.xpos",       "7"                     },
   { "invisible_steelwall_topright.ypos",       "13"                    },
   { "invisible_steelwall_topright.frames",     "1"                     },
   { "invisible_steelwall_bottomleft",          "RocksElements.pcx"     },
-  { "invisible_steelwall_bottomleft.xpos",     "1"                     },
+  { "invisible_steelwall_bottomleft.xpos",     "8"                     },
   { "invisible_steelwall_bottomleft.ypos",     "13"                    },
   { "invisible_steelwall_bottomleft.frames",   "1"                     },
   { "invisible_steelwall_bottomright",         "RocksElements.pcx"     },
-  { "invisible_steelwall_bottomright.xpos",    "1"                     },
+  { "invisible_steelwall_bottomright.xpos",    "9"                     },
   { "invisible_steelwall_bottomright.ypos",    "13"                    },
   { "invisible_steelwall_bottomright.frames",  "1"                     },
   { "invisible_steelwall_horizontal",          "RocksElements.pcx"     },
-  { "invisible_steelwall_horizontal.xpos",     "1                    },
+  { "invisible_steelwall_horizontal.xpos",     "10"                    },
   { "invisible_steelwall_horizontal.ypos",     "13"                    },
   { "invisible_steelwall_horizontal.frames",   "1"                     },
-
+  { "invisible_steelwall_vertical",            "RocksElements.pcx"     },
+  { "invisible_steelwall_vertical.xpos",       "11"                    },
+  { "invisible_steelwall_vertical.ypos",       "13"                    },
+  { "invisible_steelwall_vertical.frames",     "1"                     },
+
+  { "player1",                                 "RocksHeroes.pcx"       },
+  { "player1.xpos",                            "0"                     },
+  { "player1.ypos",                            "0"                     },
+  { "player1.frames",                          "1"                     },
   { "player1_down",                            "RocksHeroes.pcx"       },
   { "player1_down.xpos",                       "0"                     },
   { "player1_down.ypos",                       "0"                     },
@@ -826,6 +906,10 @@ struct ConfigInfo image_config[] =
   { "player1_right.pushing.ypos",              "2"                     },
   { "player1_right.pushing.frames",            "4"                     },
 
+  { "player2",                                 "RocksHeroes.pcx"       },
+  { "player2.xpos",                            "0"                     },
+  { "player2.ypos",                            "3"                     },
+  { "player2.frames",                          "1"                     },
   { "player2_down",                            "RocksHeroes.pcx"       },
   { "player2_down.xpos",                       "0"                     },
   { "player2_down.ypos",                       "3"                     },
@@ -883,6 +967,10 @@ struct ConfigInfo image_config[] =
   { "player2_right.pushing.ypos",              "5"                     },
   { "player2_right.pushing.frames",            "4"                     },
 
+  { "player3",                                 "RocksHeroes.pcx"       },
+  { "player3.xpos",                            "0"                     },
+  { "player3.ypos",                            "6"                     },
+  { "player3.frames",                          "1"                     },
   { "player3_down",                            "RocksHeroes.pcx"       },
   { "player3_down.xpos",                       "0"                     },
   { "player3_down.ypos",                       "6"                     },
@@ -940,6 +1028,10 @@ struct ConfigInfo image_config[] =
   { "player3_right.pushing.ypos",              "8"                     },
   { "player3_right.pushing.frames",            "4"                     },
 
+  { "player4",                                 "RocksHeroes.pcx"       },
+  { "player4.xpos",                            "0"                     },
+  { "player4.ypos",                            "9"                     },
+  { "player4.frames",                          "1"                     },
   { "player4_down",                            "RocksHeroes.pcx"       },
   { "player4_down.xpos",                       "0"                     },
   { "player4_down.ypos",                       "9"                     },
@@ -1006,16 +1098,16 @@ struct ConfigInfo image_config[] =
   { "wall.growing_up.ypos",                    "12"                    },
   { "wall.growing_up.frames",                  "3"                     },
 
-  { "shield_passive.activated",                        "RocksHeroes.pcx"       },
-  { "shield_passive.activated.xpos",           "1"                     },
-  { "shield_passive.activated.ypos",           "13"                    },
-  { "shield_passive.activated.frames",         "3"                     },
-  { "shield_passive.activated.pingpong",       "1"                     },
-  { "shield_active.activated",                 "RocksHeroes.pcx"       },
-  { "shield_active.activated.xpos",            "5"                     },
-  { "shield_active.activated.ypos",            "13"                    },
-  { "shield_active.activated.frames",          "3"                     },
-  { "shield_active.activated.pingpong",                "1"                     },
+  { "shield_normal.active",                    "RocksHeroes.pcx"       },
+  { "shield_normal.active.xpos",               "1"                     },
+  { "shield_normal.active.ypos",               "13"                    },
+  { "shield_normal.active.frames",             "3"                     },
+  { "shield_normal.active.pingpong",           "1"                     },
+  { "shield_deadly.active",                    "RocksHeroes.pcx"       },
+  { "shield_deadly.active.xpos",               "5"                     },
+  { "shield_deadly.active.ypos",               "13"                    },
+  { "shield_deadly.active.frames",             "3"                     },
+  { "shield_deadly.active.pingpong",           "1"                     },
 
   { "pig_down",                                        "RocksHeroes.pcx"       },
   { "pig_down.xpos",                           "8"                     },
@@ -1217,68 +1309,68 @@ struct ConfigInfo image_config[] =
   { "acid.splashing_right.ypos",               "10"                    },
   { "acid.splashing_right.frames",             "4"                     },
 
-  { "sparkling_blue",                          "RocksHeroes.pcx"       },
-  { "sparkling_blue.xpos",                     "8"                     },
-  { "sparkling_blue.ypos",                     "11"                    },
-  { "sparkling_blue.frames",                   "3"                     },
-  { "sparkling_blue.pingpong",                 "1"                     },
-  { "sparkling_white",                         "RocksHeroes.pcx"       },
-  { "sparkling_white.xpos",                    "8"                     },
-  { "sparkling_white.ypos",                    "11"                    },
-  { "sparkling_white.frames",                  "3"                     },
-  { "sparkling_white.pingpong",                        "1"                     },
-
-  { "flames_left1",                            "RocksHeroes.pcx"       },
-  { "flames_left1.xpos",                       "8"                     },
-  { "flames_left1.ypos",                       "12"                    },
-  { "flames_left1.frames",                     "2"                     },
-  { "flames_left2",                            "RocksHeroes.pcx"       },
-  { "flames_left2.xpos",                       "9"                     },
-  { "flames_left2.ypos",                       "12"                    },
-  { "flames_left2.frames",                     "2"                     },
-  { "flames_left3",                            "RocksHeroes.pcx"       },
-  { "flames_left3.xpos",                       "10"                    },
-  { "flames_left3.ypos",                       "12"                    },
-  { "flames_left3.frames",                     "2"                     },
-
-  { "flames_right1",                           "RocksHeroes.pcx"       },
-  { "flames_right1.xpos",                      "8"                     },
-  { "flames_right1.ypos",                      "13"                    },
-  { "flames_right1.frames",                    "2"                     },
-  { "flames_right2",                           "RocksHeroes.pcx"       },
-  { "flames_right2.xpos",                      "9"                     },
-  { "flames_right2.ypos",                      "13"                    },
-  { "flames_right2.frames",                    "2"                     },
-  { "flames_right3",                           "RocksHeroes.pcx"       },
-  { "flames_right3.xpos",                      "10"                    },
-  { "flames_right3.ypos",                      "13"                    },
-  { "flames_right3.frames",                    "2"                     },
-
-  { "flames_up1",                              "RocksHeroes.pcx"       },
-  { "flames_up1.xpos",                         "8"                     },
-  { "flames_up1.ypos",                         "14"                    },
-  { "flames_up1.frames",                       "2"                     },
-  { "flames_up2",                              "RocksHeroes.pcx"       },
-  { "flames_up2.xpos",                         "9"                     },
-  { "flames_up2.ypos",                         "14"                    },
-  { "flames_up2.frames",                       "2"                     },
-  { "flames_up3",                              "RocksHeroes.pcx"       },
-  { "flames_up3.xpos",                         "10"                    },
-  { "flames_up3.ypos",                         "14"                    },
-  { "flames_up3.frames",                       "2"                     },
-
-  { "flames_down1",                            "RocksHeroes.pcx"       },
-  { "flames_down1.xpos",                       "8"                     },
-  { "flames_down1.ypos",                       "15"                    },
-  { "flames_down1.frames",                     "2"                     },
-  { "flames_down2",                            "RocksHeroes.pcx"       },
-  { "flames_down2.xpos",                       "9"                     },
-  { "flames_down2.ypos",                       "15"                    },
-  { "flames_down2.frames",                     "2"                     },
-  { "flames_down3",                            "RocksHeroes.pcx"       },
-  { "flames_down3.xpos",                       "10"                    },
-  { "flames_down3.ypos",                       "15"                    },
-  { "flames_down3.frames",                     "2"                     },
+  { "twinkle_blue",                            "RocksHeroes.pcx"       },
+  { "twinkle_blue.xpos",                       "8"                     },
+  { "twinkle_blue.ypos",                       "11"                    },
+  { "twinkle_blue.frames",                     "3"                     },
+  { "twinkle_blue.pingpong",                   "1"                     },
+  { "twinkle_white",                           "RocksHeroes.pcx"       },
+  { "twinkle_white.xpos",                      "8"                     },
+  { "twinkle_white.ypos",                      "11"                    },
+  { "twinkle_white.frames",                    "3"                     },
+  { "twinkle_white.pingpong",                  "1"                     },
+
+  { "dragon_fire_left1",                       "RocksHeroes.pcx"       },
+  { "dragon_fire_left1.xpos",                  "8"                     },
+  { "dragon_fire_left1.ypos",                  "12"                    },
+  { "dragon_fire_left1.frames",                        "2"                     },
+  { "dragon_fire_left2",                       "RocksHeroes.pcx"       },
+  { "dragon_fire_left2.xpos",                  "9"                     },
+  { "dragon_fire_left2.ypos",                  "12"                    },
+  { "dragon_fire_left2.frames",                        "2"                     },
+  { "dragon_fire_left3",                       "RocksHeroes.pcx"       },
+  { "dragon_fire_left3.xpos",                  "10"                    },
+  { "dragon_fire_left3.ypos",                  "12"                    },
+  { "dragon_fire_left3.frames",                        "2"                     },
+
+  { "dragon_fire_right1",                      "RocksHeroes.pcx"       },
+  { "dragon_fire_right1.xpos",                 "8"                     },
+  { "dragon_fire_right1.ypos",                 "13"                    },
+  { "dragon_fire_right1.frames",               "2"                     },
+  { "dragon_fire_right2",                      "RocksHeroes.pcx"       },
+  { "dragon_fire_right2.xpos",                 "9"                     },
+  { "dragon_fire_right2.ypos",                 "13"                    },
+  { "dragon_fire_right2.frames",               "2"                     },
+  { "dragon_fire_right3",                      "RocksHeroes.pcx"       },
+  { "dragon_fire_right3.xpos",                 "10"                    },
+  { "dragon_fire_right3.ypos",                 "13"                    },
+  { "dragon_fire_right3.frames",               "2"                     },
+
+  { "dragon_fire_up1",                         "RocksHeroes.pcx"       },
+  { "dragon_fire_up1.xpos",                    "8"                     },
+  { "dragon_fire_up1.ypos",                    "14"                    },
+  { "dragon_fire_up1.frames",                  "2"                     },
+  { "dragon_fire_up2",                         "RocksHeroes.pcx"       },
+  { "dragon_fire_up2.xpos",                    "9"                     },
+  { "dragon_fire_up2.ypos",                    "14"                    },
+  { "dragon_fire_up2.frames",                  "2"                     },
+  { "dragon_fire_up3",                         "RocksHeroes.pcx"       },
+  { "dragon_fire_up3.xpos",                    "10"                    },
+  { "dragon_fire_up3.ypos",                    "14"                    },
+  { "dragon_fire_up3.frames",                  "2"                     },
+
+  { "dragon_fire_down1",                       "RocksHeroes.pcx"       },
+  { "dragon_fire_down1.xpos",                  "8"                     },
+  { "dragon_fire_down1.ypos",                  "15"                    },
+  { "dragon_fire_down1.frames",                        "2"                     },
+  { "dragon_fire_down2",                       "RocksHeroes.pcx"       },
+  { "dragon_fire_down2.xpos",                  "9"                     },
+  { "dragon_fire_down2.ypos",                  "15"                    },
+  { "dragon_fire_down2.frames",                        "2"                     },
+  { "dragon_fire_down3",                       "RocksHeroes.pcx"       },
+  { "dragon_fire_down3.xpos",                  "10"                    },
+  { "dragon_fire_down3.ypos",                  "15"                    },
+  { "dragon_fire_down3.frames",                        "2"                     },
 
   { "sp_empty_space",                          "RocksSP.pcx"           },
   { "sp_empty_space.xpos",                     "0"                     },
@@ -1549,19 +1641,19 @@ struct ConfigInfo image_config[] =
   { "sp_terminal.xpos",                                "8"                     },
   { "sp_terminal.ypos",                                "11"                    },
   { "sp_terminal.frames",                      "7"                     },
-  { "sp_terminal_active",                      "RocksSP.pcx"           },
-  { "sp_terminal_active.xpos",                 "8"                     },
-  { "sp_terminal_active.ypos",                 "12"                    },
-  { "sp_terminal_active.frames",               "7"                     },
+  { "sp_terminal.active",                      "RocksSP.pcx"           },
+  { "sp_terminal.active.xpos",                 "8"                     },
+  { "sp_terminal.active.ypos",                 "12"                    },
+  { "sp_terminal.active.frames",               "7"                     },
 
   { "sp_buggy_base",                           "RocksSP.pcx"           },
   { "sp_buggy_base.xpos",                      "1"                     },
   { "sp_buggy_base.ypos",                      "3"                     },
   { "sp_buggy_base.frames",                    "1"                     },
-  { "sp_buggy_base.activating",                        "RocksSP.pcx"           },
-  { "sp_buggy_base.activating.xpos",           "8"                     },
-  { "sp_buggy_base.activating.ypos",           "6"                     },
-  { "sp_buggy_base.activating.frames",         "4"                     },
+  { "sp_buggy_base.active",                    "RocksSP.pcx"           },
+  { "sp_buggy_base.active.xpos",               "8"                     },
+  { "sp_buggy_base.active.ypos",               "6"                     },
+  { "sp_buggy_base.active.frames",             "4"                     },
 
   { "sp_hard_base1",                           "RocksSP.pcx"           },
   { "sp_hard_base1.xpos",                      "4"                     },
@@ -1592,28 +1684,28 @@ struct ConfigInfo image_config[] =
   { "invisible_steelwall.xpos",                        "3"                     },
   { "invisible_steelwall.ypos",                        "5"                     },
   { "invisible_steelwall.frames",              "1"                     },
-  { "invisible_steelwall_on",                  "RocksSP.pcx"           },
-  { "invisible_steelwall_on.xpos",             "1"                     },
-  { "invisible_steelwall_on.ypos",             "5"                     },
-  { "invisible_steelwall_on.frames",           "1"                     },
+  { "invisible_steelwall.active",              "RocksSP.pcx"           },
+  { "invisible_steelwall.active.xpos",         "1"                     },
+  { "invisible_steelwall.active.ypos",         "5"                     },
+  { "invisible_steelwall.active.frames",       "1"                     },
 
   { "invisible_sand",                          "RocksSP.pcx"           },
   { "invisible_sand.xpos",                     "6"                     },
   { "invisible_sand.ypos",                     "5"                     },
   { "invisible_sand.frames",                   "1"                     },
-  { "invisible_sand_on",                       "RocksSP.pcx"           },
-  { "invisible_sand_on.xpos",                  "2"                     },
-  { "invisible_sand_on.ypos",                  "5"                     },
-  { "invisible_sand_on.frames",                        "1"                     },
+  { "invisible_sand.active",                   "RocksSP.pcx"           },
+  { "invisible_sand.active.xpos",              "2"                     },
+  { "invisible_sand.active.ypos",              "5"                     },
+  { "invisible_sand.active.frames",            "1"                     },
 
   { "invisible_wall",                          "RocksSP.pcx"           },
   { "invisible_wall.xpos",                     "7"                     },
   { "invisible_wall.ypos",                     "5"                     },
   { "invisible_wall.frames",                   "1"                     },
-  { "invisible_wall_on",                       "RocksSP.pcx"           },
-  { "invisible_wall_on.xpos",                  "5"                     },
-  { "invisible_wall_on.ypos",                  "5"                     },
-  { "invisible_wall_on.frames",                        "1"                     },
+  { "invisible_wall.active",                   "RocksSP.pcx"           },
+  { "invisible_wall.active.xpos",              "5"                     },
+  { "invisible_wall.active.ypos",              "5"                     },
+  { "invisible_wall.active.frames",            "1"                     },
 
   { "em_key1",                                 "RocksSP.pcx"           },
   { "em_key1.xpos",                            "4"                     },
@@ -1678,26 +1770,26 @@ struct ConfigInfo image_config[] =
   { "conveyor_belt1_middle.xpos",              "0"                     },
   { "conveyor_belt1_middle.ypos",              "0"                     },
   { "conveyor_belt1_middle.frames",            "1"                     },
-  { "conveyor_belt1_middle.running",           "RocksDC.pcx"           },
-  { "conveyor_belt1_middle.running.xpos",      "0"                     },
-  { "conveyor_belt1_middle.running.ypos",      "0"                     },
-  { "conveyor_belt1_middle.running.frames",    "8"                     },
+  { "conveyor_belt1_middle.active",            "RocksDC.pcx"           },
+  { "conveyor_belt1_middle.active.xpos",       "0"                     },
+  { "conveyor_belt1_middle.active.ypos",       "0"                     },
+  { "conveyor_belt1_middle.active.frames",     "8"                     },
   { "conveyor_belt1_left",                     "RocksDC.pcx"           },
   { "conveyor_belt1_left.xpos",                        "0"                     },
   { "conveyor_belt1_left.ypos",                        "1"                     },
   { "conveyor_belt1_left.frames",              "1"                     },
-  { "conveyor_belt1_left.running",             "RocksDC.pcx"           },
-  { "conveyor_belt1_left.running.xpos",                "0"                     },
-  { "conveyor_belt1_left.running.ypos",                "1"                     },
-  { "conveyor_belt1_left.running.frames",      "8"                     },
+  { "conveyor_belt1_left.active",              "RocksDC.pcx"           },
+  { "conveyor_belt1_left.active.xpos",         "0"                     },
+  { "conveyor_belt1_left.active.ypos",         "1"                     },
+  { "conveyor_belt1_left.active.frames",       "8"                     },
   { "conveyor_belt1_right",                    "RocksDC.pcx"           },
   { "conveyor_belt1_right.xpos",               "0"                     },
   { "conveyor_belt1_right.ypos",               "2"                     },
   { "conveyor_belt1_right.frames",             "1"                     },
-  { "conveyor_belt1_right.running",            "RocksDC.pcx"           },
-  { "conveyor_belt1_right.running.xpos",       "0"                     },
-  { "conveyor_belt1_right.running.ypos",       "2"                     },
-  { "conveyor_belt1_right.running.frames",     "8"                     },
+  { "conveyor_belt1_right.active",             "RocksDC.pcx"           },
+  { "conveyor_belt1_right.active.xpos",                "0"                     },
+  { "conveyor_belt1_right.active.ypos",                "2"                     },
+  { "conveyor_belt1_right.active.frames",      "8"                     },
   { "conveyor_belt1_switch_left",              "RocksDC.pcx"           },
   { "conveyor_belt1_switch_left.xpos",         "0"                     },
   { "conveyor_belt1_switch_left.ypos",         "12"                    },
@@ -1715,26 +1807,26 @@ struct ConfigInfo image_config[] =
   { "conveyor_belt2_middle.xpos",              "0"                     },
   { "conveyor_belt2_middle.ypos",              "3"                     },
   { "conveyor_belt2_middle.frames",            "1"                     },
-  { "conveyor_belt2_middle.running",           "RocksDC.pcx"           },
-  { "conveyor_belt2_middle.running.xpos",      "0"                     },
-  { "conveyor_belt2_middle.running.ypos",      "3"                     },
-  { "conveyor_belt2_middle.running.frames",    "8"                     },
+  { "conveyor_belt2_middle.active",            "RocksDC.pcx"           },
+  { "conveyor_belt2_middle.active.xpos",       "0"                     },
+  { "conveyor_belt2_middle.active.ypos",       "3"                     },
+  { "conveyor_belt2_middle.active.frames",     "8"                     },
   { "conveyor_belt2_left",                     "RocksDC.pcx"           },
   { "conveyor_belt2_left.xpos",                        "0"                     },
   { "conveyor_belt2_left.ypos",                        "4"                     },
   { "conveyor_belt2_left.frames",              "1"                     },
-  { "conveyor_belt2_left.running",             "RocksDC.pcx"           },
-  { "conveyor_belt2_left.running.xpos",                "0"                     },
-  { "conveyor_belt2_left.running.ypos",                "4"                     },
-  { "conveyor_belt2_left.running.frames",      "8"                     },
+  { "conveyor_belt2_left.active",              "RocksDC.pcx"           },
+  { "conveyor_belt2_left.active.xpos",         "0"                     },
+  { "conveyor_belt2_left.active.ypos",         "4"                     },
+  { "conveyor_belt2_left.active.frames",       "8"                     },
   { "conveyor_belt2_right",                    "RocksDC.pcx"           },
   { "conveyor_belt2_right.xpos",               "0"                     },
   { "conveyor_belt2_right.ypos",               "5"                     },
   { "conveyor_belt2_right.frames",             "1"                     },
-  { "conveyor_belt2_right.running",            "RocksDC.pcx"           },
-  { "conveyor_belt2_right.running.xpos",       "0"                     },
-  { "conveyor_belt2_right.running.ypos",       "5"                     },
-  { "conveyor_belt2_right.running.frames",     "8"                     },
+  { "conveyor_belt2_right.active",             "RocksDC.pcx"           },
+  { "conveyor_belt2_right.active.xpos",                "0"                     },
+  { "conveyor_belt2_right.active.ypos",                "5"                     },
+  { "conveyor_belt2_right.active.frames",      "8"                     },
   { "conveyor_belt2_switch_left",              "RocksDC.pcx"           },
   { "conveyor_belt2_switch_left.xpos",         "1"                     },
   { "conveyor_belt2_switch_left.ypos",         "12"                    },
@@ -1752,26 +1844,26 @@ struct ConfigInfo image_config[] =
   { "conveyor_belt3_middle.xpos",              "0"                     },
   { "conveyor_belt3_middle.ypos",              "6"                     },
   { "conveyor_belt3_middle.frames",            "1"                     },
-  { "conveyor_belt3_middle.running",           "RocksDC.pcx"           },
-  { "conveyor_belt3_middle.running.xpos",      "0"                     },
-  { "conveyor_belt3_middle.running.ypos",      "6"                     },
-  { "conveyor_belt3_middle.running.frames",    "8"                     },
+  { "conveyor_belt3_middle.active",            "RocksDC.pcx"           },
+  { "conveyor_belt3_middle.active.xpos",       "0"                     },
+  { "conveyor_belt3_middle.active.ypos",       "6"                     },
+  { "conveyor_belt3_middle.active.frames",     "8"                     },
   { "conveyor_belt3_left",                     "RocksDC.pcx"           },
   { "conveyor_belt3_left.xpos",                        "0"                     },
   { "conveyor_belt3_left.ypos",                        "7"                     },
   { "conveyor_belt3_left.frames",              "1"                     },
-  { "conveyor_belt3_left.running",             "RocksDC.pcx"           },
-  { "conveyor_belt3_left.running.xpos",                "0"                     },
-  { "conveyor_belt3_left.running.ypos",                "7"                     },
-  { "conveyor_belt3_left.running.frames",      "8"                     },
+  { "conveyor_belt3_left.active",              "RocksDC.pcx"           },
+  { "conveyor_belt3_left.active.xpos",         "0"                     },
+  { "conveyor_belt3_left.active.ypos",         "7"                     },
+  { "conveyor_belt3_left.active.frames",       "8"                     },
   { "conveyor_belt3_right",                    "RocksDC.pcx"           },
   { "conveyor_belt3_right.xpos",               "0"                     },
   { "conveyor_belt3_right.ypos",               "8"                     },
   { "conveyor_belt3_right.frames",             "1"                     },
-  { "conveyor_belt3_right.running",            "RocksDC.pcx"           },
-  { "conveyor_belt3_right.running.xpos",       "0"                     },
-  { "conveyor_belt3_right.running.ypos",       "8"                     },
-  { "conveyor_belt3_right.running.frames",     "8"                     },
+  { "conveyor_belt3_right.active",             "RocksDC.pcx"           },
+  { "conveyor_belt3_right.active.xpos",                "0"                     },
+  { "conveyor_belt3_right.active.ypos",                "8"                     },
+  { "conveyor_belt3_right.active.frames",      "8"                     },
   { "conveyor_belt3_switch_left",              "RocksDC.pcx"           },
   { "conveyor_belt3_switch_left.xpos",         "2"                     },
   { "conveyor_belt3_switch_left.ypos",         "12"                    },
@@ -1789,26 +1881,26 @@ struct ConfigInfo image_config[] =
   { "conveyor_belt4_middle.xpos",              "0"                     },
   { "conveyor_belt4_middle.ypos",              "9"                     },
   { "conveyor_belt4_middle.frames",            "1"                     },
-  { "conveyor_belt4_middle.running",           "RocksDC.pcx"           },
-  { "conveyor_belt4_middle.running.xpos",      "0"                     },
-  { "conveyor_belt4_middle.running.ypos",      "9"                     },
-  { "conveyor_belt4_middle.running.frames",    "8"                     },
+  { "conveyor_belt4_middle.active",            "RocksDC.pcx"           },
+  { "conveyor_belt4_middle.active.xpos",       "0"                     },
+  { "conveyor_belt4_middle.active.ypos",       "9"                     },
+  { "conveyor_belt4_middle.active.frames",     "8"                     },
   { "conveyor_belt4_left",                     "RocksDC.pcx"           },
   { "conveyor_belt4_left.xpos",                        "0"                     },
   { "conveyor_belt4_left.ypos",                        "10"                    },
   { "conveyor_belt4_left.frames",              "1"                     },
-  { "conveyor_belt4_left.running",             "RocksDC.pcx"           },
-  { "conveyor_belt4_left.running.xpos",                "0"                     },
-  { "conveyor_belt4_left.running.ypos",                "10"                    },
-  { "conveyor_belt4_left.running.frames",      "8"                     },
+  { "conveyor_belt4_left.active",              "RocksDC.pcx"           },
+  { "conveyor_belt4_left.active.xpos",         "0"                     },
+  { "conveyor_belt4_left.active.ypos",         "10"                    },
+  { "conveyor_belt4_left.active.frames",       "8"                     },
   { "conveyor_belt4_right",                    "RocksDC.pcx"           },
   { "conveyor_belt4_right.xpos",               "0"                     },
   { "conveyor_belt4_right.ypos",               "11"                    },
   { "conveyor_belt4_right.frames",             "1"                     },
-  { "conveyor_belt4_right.running",            "RocksDC.pcx"           },
-  { "conveyor_belt4_right.running.xpos",       "0"                     },
-  { "conveyor_belt4_right.running.ypos",       "11"                    },
-  { "conveyor_belt4_right.running.frames",     "8"                     },
+  { "conveyor_belt4_right.active",             "RocksDC.pcx"           },
+  { "conveyor_belt4_right.active.xpos",                "0"                     },
+  { "conveyor_belt4_right.active.ypos",                "11"                    },
+  { "conveyor_belt4_right.active.frames",      "8"                     },
   { "conveyor_belt4_switch_left",              "RocksDC.pcx"           },
   { "conveyor_belt4_switch_left.xpos",         "3"                     },
   { "conveyor_belt4_switch_left.ypos",         "12"                    },
@@ -1831,23 +1923,23 @@ struct ConfigInfo image_config[] =
   { "switchgate_switch_down.ypos",             "12"                    },
   { "switchgate_switch_down.frames",           "1"                     },
 
-  { "light_switch_off",                                "RocksDC.pcx"           },
-  { "light_switch_off.xpos",                   "6"                     },
-  { "light_switch_off.ypos",                   "12"                    },
-  { "light_switch_off.frames",                 "1"                     },
-  { "light_switch_on",                         "RocksDC.pcx"           },
-  { "light_switch_on.xpos",                    "7"                     },
-  { "light_switch_on.ypos",                    "12"                    },
-  { "light_switch_on.frames",                  "1"                     },
-
-  { "timegate_wheel",                          "RocksDC.pcx"           },
-  { "timegate_wheel.xpos",                     "0"                     },
-  { "timegate_wheel.ypos",                     "15"                    },
-  { "timegate_wheel.frames",                   "1"                     },
-  { "timegate_wheel.running",                  "RocksDC.pcx"           },
-  { "timegate_wheel.running.xpos",             "0"                     },
-  { "timegate_wheel.running.ypos",             "15"                    },
-  { "timegate_wheel.running.frames",           "4"                     },
+  { "light_switch",                            "RocksDC.pcx"           },
+  { "light_switch.xpos",                       "6"                     },
+  { "light_switch.ypos",                       "12"                    },
+  { "light_switch.frames",                     "1"                     },
+  { "light_switch.active",                     "RocksDC.pcx"           },
+  { "light_switch.active.xpos",                        "7"                     },
+  { "light_switch.active.ypos",                        "12"                    },
+  { "light_switch.active.frames",              "1"                     },
+
+  { "timegate_switch",                         "RocksDC.pcx"           },
+  { "timegate_switch.xpos",                    "0"                     },
+  { "timegate_switch.ypos",                    "15"                    },
+  { "timegate_switch.frames",                  "1"                     },
+  { "timegate_switch.active",                  "RocksDC.pcx"           },
+  { "timegate_switch.active.xpos",             "0"                     },
+  { "timegate_switch.active.ypos",             "15"                    },
+  { "timegate_switch.active.frames",           "4"                     },
 
   { "envelope",                                        "RocksDC.pcx"           },
   { "envelope.xpos",                           "4"                     },
@@ -1879,15 +1971,15 @@ struct ConfigInfo image_config[] =
   { "extra_time.ypos",                         "0"                     },
   { "extra_time.frames",                       "6"                     },
 
-  { "shield_active",                           "RocksDC.pcx"           },
-  { "shield_active.xpos",                      "8"                     },
-  { "shield_active.ypos",                      "1"                     },
-  { "shield_active.frames",                    "6"                     },
+  { "shield_deadly",                           "RocksDC.pcx"           },
+  { "shield_deadly.xpos",                      "8"                     },
+  { "shield_deadly.ypos",                      "1"                     },
+  { "shield_deadly.frames",                    "6"                     },
 
-  { "shield_passive",                          "RocksDC.pcx"           },
-  { "shield_passive.xpos",                     "8"                     },
-  { "shield_passive.ypos",                     "2"                     },
-  { "shield_passive.frames",                   "6"                     },
+  { "shield_normal",                           "RocksDC.pcx"           },
+  { "shield_normal.xpos",                      "8"                     },
+  { "shield_normal.ypos",                      "2"                     },
+  { "shield_normal.frames",                    "6"                     },
 
   { "switchgate_closed",                       "RocksDC.pcx"           },
   { "switchgate_closed.xpos",                  "8"                     },
@@ -1935,26 +2027,26 @@ struct ConfigInfo image_config[] =
   { "balloon.moving.frames",                   "4"                     },
   { "balloon.moving.pingpong",                 "1"                     },
 
-  { "balloon_windrose_left",                   "RocksDC.pcx"           },
-  { "balloon_windrose_left.xpos",              "8"                     },
-  { "balloon_windrose_left.ypos",              "7"                     },
-  { "balloon_windrose_left.frames",            "1"                     },
-  { "balloon_windrose_right",                  "RocksDC.pcx"           },
-  { "balloon_windrose_right.xpos",             "9"                     },
-  { "balloon_windrose_right.ypos",             "7"                     },
-  { "balloon_windrose_right.frames",           "1"                     },
-  { "balloon_windrose_up",                     "RocksDC.pcx"           },
-  { "balloon_windrose_up.xpos",                        "10"                    },
-  { "balloon_windrose_up.ypos",                        "7"                     },
-  { "balloon_windrose_up.frames",              "1"                     },
-  { "balloon_windrose_down",                   "RocksDC.pcx"           },
-  { "balloon_windrose_down.xpos",              "11"                    },
-  { "balloon_windrose_down.ypos",              "7"                     },
-  { "balloon_windrose_down.frames",            "1"                     },
-  { "balloon_windrose_all",                    "RocksDC.pcx"           },
-  { "balloon_windrose_all.xpos",               "7"                     },
-  { "balloon_windrose_all.ypos",               "0"                     },
-  { "balloon_windrose_all.frames",             "1"                     },
+  { "balloon_send_left",                       "RocksDC.pcx"           },
+  { "balloon_send_left.xpos",                  "8"                     },
+  { "balloon_send_left.ypos",                  "7"                     },
+  { "balloon_send_left.frames",                        "1"                     },
+  { "balloon_send_right",                      "RocksDC.pcx"           },
+  { "balloon_send_right.xpos",                 "9"                     },
+  { "balloon_send_right.ypos",                 "7"                     },
+  { "balloon_send_right.frames",               "1"                     },
+  { "balloon_send_up",                         "RocksDC.pcx"           },
+  { "balloon_send_up.xpos",                    "10"                    },
+  { "balloon_send_up.ypos",                    "7"                     },
+  { "balloon_send_up.frames",                  "1"                     },
+  { "balloon_send_down",                       "RocksDC.pcx"           },
+  { "balloon_send_down.xpos",                  "11"                    },
+  { "balloon_send_down.ypos",                  "7"                     },
+  { "balloon_send_down.frames",                        "1"                     },
+  { "balloon_send_any_direction",              "RocksDC.pcx"           },
+  { "balloon_send_any_direction.xpos",         "7"                     },
+  { "balloon_send_any_direction.ypos",         "0"                     },
+  { "balloon_send_any_direction.frames",       "1"                     },
 
   { "emc_steelwall1",                          "RocksDC.pcx"           },
   { "emc_steelwall1.xpos",                     "14"                    },
@@ -2142,18 +2234,14 @@ struct ConfigInfo image_config[] =
   { "tube_left_up.ypos",                       "7"                     },
   { "tube_left_up.frames",                     "1"                     },
 
-  { "trap_inactive",                           "RocksMore.pcx"         },
-  { "trap_inactive.xpos",                      "4"                     },
-  { "trap_inactive.ypos",                      "0"                     },
-  { "trap_inactive.frames",                    "1"                     },
-  { "trap_active",                             "RocksMore.pcx"         },
-  { "trap_active.xpos",                                "7"                     },
-  { "trap_active.ypos",                                "0"                     },
-  { "trap_active.frames",                      "1"                     },
-  { "trap.activating",                         "RocksMore.pcx"         },
-  { "trap.activating.xpos",                    "4"                     },
-  { "trap.activating.ypos",                    "0"                     },
-  { "trap.activating.frames",                  "4"                     },
+  { "trap",                                    "RocksMore.pcx"         },
+  { "trap.xpos",                               "4"                     },
+  { "trap.ypos",                               "0"                     },
+  { "trap.frames",                             "1"                     },
+  { "trap.active",                             "RocksMore.pcx"         },
+  { "trap.active.xpos",                                "4"                     },
+  { "trap.active.ypos",                                "0"                     },
+  { "trap.active.frames",                      "4"                     },
 
   { "bd_wall",                                 "RocksMore.pcx"         },
   { "bd_wall.xpos",                            "4"                     },
@@ -2173,10 +2261,10 @@ struct ConfigInfo image_config[] =
   { "bd_rock.pushing.ypos",                    "2"                     },
   { "bd_rock.pushing.frames",                  "4"                     },
 
-  { "dx_bomb",                                 "RocksMore.pcx"         },
-  { "dx_bomb.xpos",                            "7"                     },
-  { "dx_bomb.ypos",                            "1"                     },
-  { "dx_bomb.frames",                          "1"                     },
+  { "dx_supabomb",                             "RocksMore.pcx"         },
+  { "dx_supabomb.xpos",                                "7"                     },
+  { "dx_supabomb.ypos",                                "1"                     },
+  { "dx_supabomb.frames",                      "1"                     },
 
   { NULL,                                      NULL                    }
 };
@@ -2191,8 +2279,8 @@ struct ConfigInfo sound_config[] =
   { "bd_rock.pushing",                 "pusch.wav"             },
   { "bd_rock.impact",                  "klopf.wav"             },
   { "bd_magic_wall.activating",                "quirk.wav"             },
+  { "bd_magic_wall.active",            "miep.wav"              },
   { "bd_magic_wall.changing",          "quirk.wav"             },
-  { "bd_magic_wall.running",           "miep.wav"              },
   { "bd_amoeba.waiting",               SND_FILE_UNDEFINED      },
   { "bd_amoeba.creating",              "amoebe.wav"            },
   { "bd_amoeba.turning_to_gem",                "pling.wav"             },
@@ -2201,13 +2289,13 @@ struct ConfigInfo sound_config[] =
   { "bd_butterfly.waiting",            "klapper.wav"           },
   { "bd_firefly.moving",               "roehr.wav"             },
   { "bd_firefly.waiting",              "roehr.wav"             },
-  { "bd_exit.entering",                        "buing.wav"             },
+  { "bd_exit.passing",                 "buing.wav"             },
 
   /* sounds for Supaplex style elements and actions */
   { "sp_empty_space.digging",          "empty.wav"             },
   { "sp_base.digging",                 "base.wav"              },
   { "sp_buggy_base.digging",           "base.wav"              },
-  { "sp_buggy_base.activating",                "bug.wav"               },
+  { "sp_buggy_base.active",            "bug.wav"               },
   { "sp_infotron.collecting",          "infotron.wav"          },
   { "sp_infotron.impact",              "pling.wav"             },
   { "sp_zonk.pushing",                 "zonkpush.wav"          },
@@ -2216,18 +2304,20 @@ struct ConfigInfo sound_config[] =
   { "sp_disk_orange.pushing",          "zonkpush.wav"          },
   { "sp_disk_yellow.pushing",          "pusch.wav"             },
   { "sp_port.passing",                 "gate.wav"              },
-  { "sp_exit.entering",                        "exit.wav"              },
+  { "sp_exit.passing",                 "exit.wav"              },
+  { "sp_exit.opening",                 SND_FILE_UNDEFINED      },
   { "sp_element.exploding",            "booom.wav"             },
   { "sp_sniksnak.moving",              SND_FILE_UNDEFINED      },
   { "sp_sniksnak.waiting",             SND_FILE_UNDEFINED      },
   { "sp_electron.moving",              SND_FILE_UNDEFINED      },
   { "sp_electron.waiting",             SND_FILE_UNDEFINED      },
   { "sp_terminal.activating",          SND_FILE_UNDEFINED      },
+  { "sp_terminal.active",              SND_FILE_UNDEFINED      },
 
   /* sounds for Sokoban style elements and actions */
   { "sokoban_object.pushing",          "pusch.wav"             },
   { "sokoban_field.filling",           "deng.wav"              },
-  { "sokoban_field.clearing",          SND_FILE_UNDEFINED      },
+  { "sokoban_field.emptying",          SND_FILE_UNDEFINED      },
   { "sokoban_game.solving",            "buing.wav"             },
 
   /* sounds for Emerald Mine style elements and actions */
@@ -2245,8 +2335,8 @@ struct ConfigInfo sound_config[] =
   { "nut.cracking",                    "knack.wav"             },
   { "nut.impact",                      "klumpf.wav"            },
   { "dynamite.collecting",             "pong.wav"              },
-  { "dynamite.placing",                        "deng.wav"              },
-  { "dynamite.burning",                        "zisch.wav"             },
+  { "dynamite.dropping",               "deng.wav"              },
+  { "dynamite.active",                 "zisch.wav"             },
   { "key.collecting",                  "pong.wav"              },
   { "gate.passing",                    "gate.wav"              },
   { "bug.moving",                      "klapper.wav"           },
@@ -2255,23 +2345,23 @@ struct ConfigInfo sound_config[] =
   { "spaceship.waiting",               "roehr.wav"             },
   { "yamyam.moving",                   SND_FILE_UNDEFINED      },
   { "yamyam.waiting",                  "njam.wav"              },
-  { "yamyam.eating_diamond",           SND_FILE_UNDEFINED      },
+  { "yamyam.eating",                   SND_FILE_UNDEFINED      },
   { "robot.stepping",                  "schlurf.wav"           },
   { "robot.waiting",                   SND_FILE_UNDEFINED      },
   { "robot_wheel.activating",          "deng.wav"              },
-  { "robot_wheel.running",             "miep.wav"              },
+  { "robot_wheel.active",              "miep.wav"              },
   { "magic_wall.activating",           "quirk.wav"             },
+  { "magic_wall.active",               "miep.wav"              },
   { "magic_wall.changing",             "quirk.wav"             },
-  { "magic_wall.running",              "miep.wav"              },
   { "amoeba.waiting",                  SND_FILE_UNDEFINED      },
   { "amoeba.creating",                 "amoebe.wav"            },
-  { "amoeba.dropping",                 SND_FILE_UNDEFINED      },
+  { "amoeba_drop.creating",            SND_FILE_UNDEFINED      },
   { "acid.splashing",                  "blurb.wav"             },
   { "quicksand.filling",               SND_FILE_UNDEFINED      },
-  { "quicksand.slipping_through",      SND_FILE_UNDEFINED      },
+  { "quicksand.slipping",              SND_FILE_UNDEFINED      },
   { "quicksand.emptying",              SND_FILE_UNDEFINED      },
   { "exit.opening",                    "oeffnen.wav"           },
-  { "exit.entering",                   "buing.wav"             },
+  { "exit.passing",                    "buing.wav"             },
 
   /* sounds for Emerald Mine Club style elements and actions */
   { "balloon.moving",                  SND_FILE_UNDEFINED      },
@@ -2291,25 +2381,26 @@ struct ConfigInfo sound_config[] =
   { "crystal.impact",                  "pling.wav"             },
   { "envelope.collecting",             "pong.wav"              },
   { "sand_invisible.digging",          "schlurf.wav"           },
-  { "shield_passive.collecting",       "pong.wav"              },
-  { "shield_passive.activated",                SND_FILE_UNDEFINED      },
-  { "shield_active.collecting",                "pong.wav"              },
-  { "shield_active.activated",         SND_FILE_UNDEFINED      },
+  { "shield_normal.collecting",                "pong.wav"              },
+  { "shield_normal.active",            SND_FILE_UNDEFINED      },
+  { "shield_deadly.collecting",                "pong.wav"              },
+  { "shield_deadly.active",            SND_FILE_UNDEFINED      },
   { "extra_time.collecting",           "gong.wav"              },
   { "mole.moving",                     SND_FILE_UNDEFINED      },
   { "mole.waiting",                    SND_FILE_UNDEFINED      },
-  { "mole.eating_amoeba",              "blurb.wav"             },
+  { "mole.eating",                     "blurb.wav"             },
   { "switchgate_switch.activating",    SND_FILE_UNDEFINED      },
   { "switchgate.opening",              "oeffnen.wav"           },
   { "switchgate.closing",              "oeffnen.wav"           },
   { "switchgate.passing",              "gate.wav"              },
-  { "timegate_wheel.activating",       "deng.wav"              },
-  { "timegate_wheel.running",          "miep.wav"              },
+  { "timegate_switch.activating",      "deng.wav"              },
+  { "timegate_switch.active",          "miep.wav"              },
   { "timegate.opening",                        "oeffnen.wav"           },
   { "timegate.closing",                        "oeffnen.wav"           },
   { "timegate.passing",                        "gate.wav"              },
   { "conveyor_belt_switch.activating", SND_FILE_UNDEFINED      },
-  { "conveyor_belt.running",           SND_FILE_UNDEFINED      },
+  { "conveyor_belt_switch.deactivating",SND_FILE_UNDEFINED     },
+  { "conveyor_belt.active",            SND_FILE_UNDEFINED      },
   { "light_switch.activating",         SND_FILE_UNDEFINED      },
   { "light_switch.deactivating",       SND_FILE_UNDEFINED      },
 
@@ -2326,8 +2417,8 @@ struct ConfigInfo sound_config[] =
   { "dynabomb_nr.collecting",          "pong.wav"              },
   { "dynabomb_sz.collecting",          "pong.wav"              },
   { "dynabomb_xl.collecting",          "pong.wav"              },
-  { "dynabomb.placing",                        "deng.wav"              },
-  { "dynabomb.burning",                        "zisch.wav"             },
+  { "dynabomb.dropping",               "deng.wav"              },
+  { "dynabomb.active",                 "zisch.wav"             },
   { "satellite.moving",                        SND_FILE_UNDEFINED      },
   { "satellite.waiting",               SND_FILE_UNDEFINED      },
   { "satellite.pushing",               "pusch.wav"             },
@@ -2343,16 +2434,16 @@ struct ConfigInfo sound_config[] =
   { "biomaze.creating",                        "amoebe.wav"            },
   { "pacman.moving",                   SND_FILE_UNDEFINED      },
   { "pacman.waiting",                  SND_FILE_UNDEFINED      },
-  { "pacman.eating_amoeba",            SND_FILE_UNDEFINED      },
+  { "pacman.eating",                   SND_FILE_UNDEFINED      },
   { "dark_yamyam.moving",              SND_FILE_UNDEFINED      },
   { "dark_yamyam.waiting",             "njam.wav"              },
-  { "dark_yamyam.eating_any",          SND_FILE_UNDEFINED      },
+  { "dark_yamyam.eating",              SND_FILE_UNDEFINED      },
   { "penguin.moving",                  SND_FILE_UNDEFINED      },
   { "penguin.waiting",                 SND_FILE_UNDEFINED      },
-  { "penguin.entering_exit",           "buing.wav"             },
+  { "penguin.passing_exit",            "buing.wav"             },
   { "pig.moving",                      SND_FILE_UNDEFINED      },
   { "pig.waiting",                     SND_FILE_UNDEFINED      },
-  { "pig.eating_gem",                  SND_FILE_UNDEFINED      },
+  { "pig.eating",                      SND_FILE_UNDEFINED      },
   { "dragon.moving",                   SND_FILE_UNDEFINED      },
   { "dragon.waiting",                  SND_FILE_UNDEFINED      },
   { "dragon.attacking",                        SND_FILE_UNDEFINED      },
@@ -2671,7 +2762,7 @@ struct ElementInfo element_info[MAX_ELEMENTS] =
   { "gate",                    "white door"                    },    /* 260 */
   { "gate",                    "gray door (opened by white key)"},
   { "key",                     "white key"                     },
-  { "shield_passive",          "shield (passive)"              },
+  { "shield_normal",           "shield (normal)"               },
   { "extra_time",              "extra time"                    },
   { "switchgate",              "switch gate (open)"            },
   { "switchgate",              "switch gate (closed)"          },
@@ -2729,14 +2820,14 @@ struct ElementInfo element_info[MAX_ELEMENTS] =
   { NULL,                      "dx unknown 42"                 },
   { NULL,                      "-"                             },
   { NULL,                      "-"                             },    /* 320 */
-  { "shield_active",           "shield (active, kills enemies)"},
+  { "shield_deadly",           "shield (deadly, kills enemies)"},
   { "timegate",                        "time gate (open)"              },
   { "timegate",                        "time gate (closed)"            },
-  { "timegate_wheel",          "switch for time gate"          },
-  { "timegate_wheel",          "switch for time gate"          },
+  { "timegate_switch",         "switch for time gate"          },
+  { "timegate_switch",         "switch for time gate"          },
   { "balloon",                 "balloon"                       },
-  { "wall",                    "send balloon to the left"      },
-  { "wall",                    "send balloon to the right"     },
+  { "balloon_switch",          "send balloon to the left"      },
+  { "balloon_switch",          "send balloon to the right"     },
   { "balloon_switch",          "send balloon up"               },
   { "balloon_switch",          "send balloon down"             },    /* 330 */
   { "balloon_switch",          "send balloon in any direction" },