changed order of game elements in EM engine (no functional change)
[rocksndiamonds.git] / src / tools.c
index d3bfb74dd9385fde17716522aaf9555247ce42be..0d4f45d868086ccbcfc26e8c2ba7a15d5695960c 100644 (file)
 #define TOOL_CTRL_ID_PLAYER_2  4
 #define TOOL_CTRL_ID_PLAYER_3  5
 #define TOOL_CTRL_ID_PLAYER_4  6
+#define TOOL_CTRL_ID_TOUCH_YES 7
+#define TOOL_CTRL_ID_TOUCH_NO  8
+#define TOOL_CTRL_ID_TOUCH_CONFIRM 9
 
-#define NUM_TOOL_BUTTONS       7
+#define NUM_TOOL_BUTTONS       10
 
 // constants for number of doors and door parts
 #define NUM_DOORS              2
@@ -2846,7 +2849,7 @@ void ShowEnvelope(int envelope_nr)
   AnimateEnvelope(envelope_nr, main_anim_mode, ACTION_OPENING);
 
   if (tape.playing)
-    Delay(wait_delay_value);
+    Delay_WithScreenUpdates(wait_delay_value);
   else
     WaitForEventToContinue();
 
@@ -3133,10 +3136,13 @@ static void ShowEnvelopeRequest(char *text, unsigned int req_state, int action)
     {
       MapGadget(tool_gadget[TOOL_CTRL_ID_YES]);
       MapGadget(tool_gadget[TOOL_CTRL_ID_NO]);
+      MapGadget(tool_gadget[TOOL_CTRL_ID_TOUCH_YES]);
+      MapGadget(tool_gadget[TOOL_CTRL_ID_TOUCH_NO]);
     }
     else if (req_state & REQ_CONFIRM)
     {
       MapGadget(tool_gadget[TOOL_CTRL_ID_CONFIRM]);
+      MapGadget(tool_gadget[TOOL_CTRL_ID_TOUCH_CONFIRM]);
     }
     else if (req_state & REQ_PLAYER)
     {
@@ -4333,24 +4339,21 @@ static int RequestHandleEvents(unsigned int req_state)
                button_status = MB_RELEASED;
            }
 
-           if (HandleGlobalAnimClicks(mx, my, button_status, FALSE))
-           {
-             // do not handle this button event anymore
-             continue;         // force mouse event not to be handled at all
-           }
-
            // this sets 'request_gadget_id'
            HandleGadgets(mx, my, button_status);
 
            switch (request_gadget_id)
            {
              case TOOL_CTRL_ID_YES:
+             case TOOL_CTRL_ID_TOUCH_YES:
                result = TRUE;
                break;
              case TOOL_CTRL_ID_NO:
+             case TOOL_CTRL_ID_TOUCH_NO:
                result = FALSE;
                break;
              case TOOL_CTRL_ID_CONFIRM:
+             case TOOL_CTRL_ID_TOUCH_CONFIRM:
                result = TRUE | FALSE;
                break;
 
@@ -4368,6 +4371,8 @@ static int RequestHandleEvents(unsigned int req_state)
                break;
 
              default:
+               // only check clickable animations if no request gadget clicked
+               HandleGlobalAnimClicks(mx, my, button_status, FALSE);
                break;
            }
 
@@ -4680,10 +4685,13 @@ static boolean RequestDoor(char *text, unsigned int req_state)
   {
     MapGadget(tool_gadget[TOOL_CTRL_ID_YES]);
     MapGadget(tool_gadget[TOOL_CTRL_ID_NO]);
+    MapGadget(tool_gadget[TOOL_CTRL_ID_TOUCH_YES]);
+    MapGadget(tool_gadget[TOOL_CTRL_ID_TOUCH_NO]);
   }
   else if (req_state & REQ_CONFIRM)
   {
     MapGadget(tool_gadget[TOOL_CTRL_ID_CONFIRM]);
+    MapGadget(tool_gadget[TOOL_CTRL_ID_TOUCH_CONFIRM]);
   }
   else if (req_state & REQ_PLAYER)
   {
@@ -5555,36 +5563,49 @@ static struct
   int graphic;
   struct TextPosInfo *pos;
   int gadget_id;
+  boolean is_touch_button;
   char *infotext;
 } toolbutton_info[NUM_TOOL_BUTTONS] =
 {
   {
     IMG_GFX_REQUEST_BUTTON_YES,                &request.button.yes,
-    TOOL_CTRL_ID_YES,                  "yes"
+    TOOL_CTRL_ID_YES, FALSE,           "yes"
   },
   {
     IMG_GFX_REQUEST_BUTTON_NO,         &request.button.no,
-    TOOL_CTRL_ID_NO,                   "no"
+    TOOL_CTRL_ID_NO, FALSE,            "no"
   },
   {
     IMG_GFX_REQUEST_BUTTON_CONFIRM,    &request.button.confirm,
-    TOOL_CTRL_ID_CONFIRM,              "confirm"
+    TOOL_CTRL_ID_CONFIRM, FALSE,       "confirm"
   },
   {
     IMG_GFX_REQUEST_BUTTON_PLAYER_1,   &request.button.player_1,
-    TOOL_CTRL_ID_PLAYER_1,             "player 1"
+    TOOL_CTRL_ID_PLAYER_1, FALSE,      "player 1"
   },
   {
     IMG_GFX_REQUEST_BUTTON_PLAYER_2,   &request.button.player_2,
-    TOOL_CTRL_ID_PLAYER_2,             "player 2"
+    TOOL_CTRL_ID_PLAYER_2, FALSE,      "player 2"
   },
   {
     IMG_GFX_REQUEST_BUTTON_PLAYER_3,   &request.button.player_3,
-    TOOL_CTRL_ID_PLAYER_3,             "player 3"
+    TOOL_CTRL_ID_PLAYER_3, FALSE,      "player 3"
   },
   {
     IMG_GFX_REQUEST_BUTTON_PLAYER_4,   &request.button.player_4,
-    TOOL_CTRL_ID_PLAYER_4,             "player 4"
+    TOOL_CTRL_ID_PLAYER_4, FALSE,      "player 4"
+  },
+  {
+    IMG_GFX_REQUEST_BUTTON_TOUCH_YES,  &request.button.touch_yes,
+    TOOL_CTRL_ID_TOUCH_YES, TRUE,      "yes"
+  },
+  {
+    IMG_GFX_REQUEST_BUTTON_TOUCH_NO,   &request.button.touch_no,
+    TOOL_CTRL_ID_TOUCH_NO, TRUE,       "no"
+  },
+  {
+    IMG_GFX_REQUEST_BUTTON_TOUCH_CONFIRM, &request.button.touch_confirm,
+    TOOL_CTRL_ID_TOUCH_CONFIRM, TRUE,  "confirm"
   }
 };
 
@@ -5601,8 +5622,9 @@ void CreateToolButtons(void)
     Bitmap *deco_bitmap = None;
     int deco_x = 0, deco_y = 0, deco_xpos = 0, deco_ypos = 0;
     unsigned int event_mask = GD_EVENT_RELEASED;
-    int dx = DX;
-    int dy = DY;
+    boolean is_touch_button = toolbutton_info[i].is_touch_button;
+    int base_x = (is_touch_button ? 0 : DX);
+    int base_y = (is_touch_button ? 0 : DY);
     int gd_x = gfx->src_x;
     int gd_y = gfx->src_y;
     int gd_xp = gfx->src_x + gfx->pressed_xoffset;
@@ -5611,9 +5633,9 @@ void CreateToolButtons(void)
     int y = pos->y;
     int id = i;
 
-    if (global.use_envelope_request)
+    if (global.use_envelope_request && !is_touch_button)
     {
-      setRequestPosition(&dx, &dy, TRUE);
+      setRequestPosition(&base_x, &base_y, TRUE);
 
       // check if request buttons are outside of envelope and fix, if needed
       if (x < 0 || x + gfx->width  > request.width ||
@@ -5660,8 +5682,8 @@ void CreateToolButtons(void)
     gi = CreateGadget(GDI_CUSTOM_ID, id,
                      GDI_IMAGE_ID, graphic,
                      GDI_INFO_TEXT, toolbutton_info[i].infotext,
-                     GDI_X, dx + x,
-                     GDI_Y, dy + y,
+                     GDI_X, base_x + x,
+                     GDI_Y, base_y + y,
                      GDI_WIDTH, gfx->width,
                      GDI_HEIGHT, gfx->height,
                      GDI_TYPE, GD_TYPE_NORMAL_BUTTON,
@@ -5673,6 +5695,7 @@ void CreateToolButtons(void)
                      GDI_DECORATION_SIZE, pos->size, pos->size,
                      GDI_DECORATION_SHIFTING, 1, 1,
                      GDI_DIRECT_DRAW, FALSE,
+                     GDI_OVERLAY_TOUCH_BUTTON, is_touch_button,
                      GDI_EVENT_MASK, event_mask,
                      GDI_CALLBACK_ACTION, HandleToolButtons,
                      GDI_END);
@@ -5721,610 +5744,550 @@ em_object_mapping_list[] =
     Xblank,                            TRUE,   FALSE,
     EL_EMPTY,                          -1, -1
   },
+
   {
-    Yacid_splash_eB,                   FALSE,  FALSE,
+    Xacid_splash_e,                    FALSE,  FALSE,
     EL_ACID_SPLASH_RIGHT,              -1, -1
   },
   {
-    Yacid_splash_wB,                   FALSE,  FALSE,
+    Xacid_splash_w,                    FALSE,  FALSE,
     EL_ACID_SPLASH_LEFT,               -1, -1
   },
 
-#ifdef EM_ENGINE_BAD_ROLL
   {
-    Xstone_force_e,                    FALSE,  FALSE,
-    EL_ROCK,                           -1, MV_BIT_RIGHT
+    Xplant,                            TRUE,   FALSE,
+    EL_EMC_PLANT,                      -1, -1
   },
   {
-    Xstone_force_w,                    FALSE,  FALSE,
-    EL_ROCK,                           -1, MV_BIT_LEFT
+    Yplant,                            FALSE,  FALSE,
+    EL_EMC_PLANT,                      -1, -1
   },
+
   {
-    Xnut_force_e,                      FALSE,  FALSE,
-    EL_NUT,                            -1, MV_BIT_RIGHT
+    Xacid_1,                           TRUE,   FALSE,
+    EL_ACID,                           -1, -1
   },
   {
-    Xnut_force_w,                      FALSE,  FALSE,
-    EL_NUT,                            -1, MV_BIT_LEFT
+    Xacid_2,                           FALSE,  FALSE,
+    EL_ACID,                           -1, -1
   },
   {
-    Xspring_force_e,                   FALSE,  FALSE,
-    EL_SPRING,                         -1, MV_BIT_RIGHT
+    Xacid_3,                           FALSE,  FALSE,
+    EL_ACID,                           -1, -1
   },
   {
-    Xspring_force_w,                   FALSE,  FALSE,
-    EL_SPRING,                         -1, MV_BIT_LEFT
+    Xacid_4,                           FALSE,  FALSE,
+    EL_ACID,                           -1, -1
   },
   {
-    Xemerald_force_e,                  FALSE,  FALSE,
-    EL_EMERALD,                                -1, MV_BIT_RIGHT
+    Xacid_5,                           FALSE,  FALSE,
+    EL_ACID,                           -1, -1
   },
   {
-    Xemerald_force_w,                  FALSE,  FALSE,
-    EL_EMERALD,                                -1, MV_BIT_LEFT
+    Xacid_6,                           FALSE,  FALSE,
+    EL_ACID,                           -1, -1
   },
   {
-    Xdiamond_force_e,                  FALSE,  FALSE,
-    EL_DIAMOND,                                -1, MV_BIT_RIGHT
+    Xacid_7,                           FALSE,  FALSE,
+    EL_ACID,                           -1, -1
   },
   {
-    Xdiamond_force_w,                  FALSE,  FALSE,
-    EL_DIAMOND,                                -1, MV_BIT_LEFT
+    Xacid_8,                           FALSE,  FALSE,
+    EL_ACID,                           -1, -1
   },
+
   {
-    Xbomb_force_e,                     FALSE,  FALSE,
-    EL_BOMB,                           -1, MV_BIT_RIGHT
+    Xfake_acid_1,                      TRUE,   FALSE,
+    EL_EMC_FAKE_ACID,                  -1, -1
   },
   {
-    Xbomb_force_w,                     FALSE,  FALSE,
-    EL_BOMB,                           -1, MV_BIT_LEFT
+    Xfake_acid_2,                      FALSE,  FALSE,
+    EL_EMC_FAKE_ACID,                  -1, -1
   },
-#endif // EM_ENGINE_BAD_ROLL
-
   {
-    Xstone,                            TRUE,   FALSE,
-    EL_ROCK,                           -1, -1
+    Xfake_acid_3,                      FALSE,  FALSE,
+    EL_EMC_FAKE_ACID,                  -1, -1
   },
   {
-    Xstone_pause,                      FALSE,  FALSE,
-    EL_ROCK,                           -1, -1
+    Xfake_acid_4,                      FALSE,  FALSE,
+    EL_EMC_FAKE_ACID,                  -1, -1
   },
   {
-    Xstone_fall,                       FALSE,  FALSE,
-    EL_ROCK,                           -1, -1
+    Xfake_acid_5,                      FALSE,  FALSE,
+    EL_EMC_FAKE_ACID,                  -1, -1
   },
   {
-    Ystone_s,                          FALSE,  FALSE,
-    EL_ROCK,                           ACTION_FALLING, -1
+    Xfake_acid_6,                      FALSE,  FALSE,
+    EL_EMC_FAKE_ACID,                  -1, -1
   },
   {
-    Ystone_sB,                         FALSE,  TRUE,
-    EL_ROCK,                           ACTION_FALLING, -1
+    Xfake_acid_7,                      FALSE,  FALSE,
+    EL_EMC_FAKE_ACID,                  -1, -1
   },
   {
-    Ystone_e,                          FALSE,  FALSE,
-    EL_ROCK,                           ACTION_MOVING, MV_BIT_RIGHT
+    Xfake_acid_8,                      FALSE,  FALSE,
+    EL_EMC_FAKE_ACID,                  -1, -1
   },
+
   {
-    Ystone_eB,                         FALSE,  TRUE,
-    EL_ROCK,                           ACTION_MOVING, MV_BIT_RIGHT
+    Xgrass,                            TRUE,   FALSE,
+    EL_EMC_GRASS,                      -1, -1
   },
   {
-    Ystone_w,                          FALSE,  FALSE,
-    EL_ROCK,                           ACTION_MOVING, MV_BIT_LEFT
+    Ygrass_nB,                         FALSE,  FALSE,
+    EL_EMC_GRASS,                      ACTION_DIGGING, MV_BIT_UP
   },
   {
-    Ystone_wB,                         FALSE,  TRUE,
-    EL_ROCK,                           ACTION_MOVING, MV_BIT_LEFT
+    Ygrass_eB,                         FALSE,  FALSE,
+    EL_EMC_GRASS,                      ACTION_DIGGING, MV_BIT_RIGHT
   },
   {
-    Xnut,                              TRUE,   FALSE,
-    EL_NUT,                            -1, -1
+    Ygrass_sB,                         FALSE,  FALSE,
+    EL_EMC_GRASS,                      ACTION_DIGGING, MV_BIT_DOWN
   },
   {
-    Xnut_pause,                                FALSE,  FALSE,
-    EL_NUT,                            -1, -1
+    Ygrass_wB,                         FALSE,  FALSE,
+    EL_EMC_GRASS,                      ACTION_DIGGING, MV_BIT_LEFT
   },
+
   {
-    Xnut_fall,                         FALSE,  FALSE,
-    EL_NUT,                            -1, -1
+    Xdirt,                             TRUE,   FALSE,
+    EL_SAND,                           -1, -1
   },
   {
-    Ynut_s,                            FALSE,  FALSE,
-    EL_NUT,                            ACTION_FALLING, -1
+    Ydirt_nB,                          FALSE,  FALSE,
+    EL_SAND,                           ACTION_DIGGING, MV_BIT_UP
   },
   {
-    Ynut_sB,                           FALSE,  TRUE,
-    EL_NUT,                            ACTION_FALLING, -1
+    Ydirt_eB,                          FALSE,  FALSE,
+    EL_SAND,                           ACTION_DIGGING, MV_BIT_RIGHT
   },
   {
-    Ynut_e,                            FALSE,  FALSE,
-    EL_NUT,                            ACTION_MOVING, MV_BIT_RIGHT
+    Ydirt_sB,                          FALSE,  FALSE,
+    EL_SAND,                           ACTION_DIGGING, MV_BIT_DOWN
   },
   {
-    Ynut_eB,                           FALSE,  TRUE,
-    EL_NUT,                            ACTION_MOVING, MV_BIT_RIGHT
+    Ydirt_wB,                          FALSE,  FALSE,
+    EL_SAND,                           ACTION_DIGGING, MV_BIT_LEFT
   },
+
   {
-    Ynut_w,                            FALSE,  FALSE,
-    EL_NUT,                            ACTION_MOVING, MV_BIT_LEFT
+    Xandroid,                          TRUE,   FALSE,
+    EL_EMC_ANDROID,                    ACTION_ACTIVE, -1
   },
   {
-    Ynut_wB,                           FALSE,  TRUE,
-    EL_NUT,                            ACTION_MOVING, MV_BIT_LEFT
+    Xandroid_1_n,                      FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_UP
   },
   {
-    Xbug_n,                            TRUE,   FALSE,
-    EL_BUG_UP,                         -1, -1
+    Xandroid_2_n,                      FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_UP
   },
   {
-    Xbug_e,                            TRUE,   FALSE,
-    EL_BUG_RIGHT,                      -1, -1
+    Xandroid_1_e,                      FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_RIGHT
   },
   {
-    Xbug_s,                            TRUE,   FALSE,
-    EL_BUG_DOWN,                       -1, -1
+    Xandroid_2_e,                      FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_RIGHT
   },
   {
-    Xbug_w,                            TRUE,   FALSE,
-    EL_BUG_LEFT,                       -1, -1
+    Xandroid_1_w,                      FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_LEFT
   },
   {
-    Xbug_gon,                          FALSE,  FALSE,
-    EL_BUG_UP,                         -1, -1
+    Xandroid_2_w,                      FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_LEFT
   },
   {
-    Xbug_goe,                          FALSE,  FALSE,
-    EL_BUG_RIGHT,                      -1, -1
+    Xandroid_1_s,                      FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_DOWN
   },
   {
-    Xbug_gos,                          FALSE,  FALSE,
-    EL_BUG_DOWN,                       -1, -1
+    Xandroid_2_s,                      FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_DOWN
   },
   {
-    Xbug_gow,                          FALSE,  FALSE,
-    EL_BUG_LEFT,                       -1, -1
+    Yandroid_n,                                FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_UP
   },
   {
-    Ybug_n,                            FALSE,  FALSE,
-    EL_BUG,                            ACTION_MOVING, MV_BIT_UP
+    Yandroid_nB,                       FALSE,  TRUE,
+    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_UP
   },
   {
-    Ybug_nB,                           FALSE,  TRUE,
-    EL_BUG,                            ACTION_MOVING, MV_BIT_UP
+    Yandroid_ne,                       FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_GROWING, MV_BIT_UPRIGHT
   },
   {
-    Ybug_e,                            FALSE,  FALSE,
-    EL_BUG,                            ACTION_MOVING, MV_BIT_RIGHT
+    Yandroid_neB,                      FALSE,  TRUE,
+    EL_EMC_ANDROID,                    ACTION_SHRINKING, MV_BIT_UPRIGHT
   },
   {
-    Ybug_eB,                           FALSE,  TRUE,
-    EL_BUG,                            ACTION_MOVING, MV_BIT_RIGHT
+    Yandroid_e,                                FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Ybug_s,                            FALSE,  FALSE,
-    EL_BUG,                            ACTION_MOVING, MV_BIT_DOWN
+    Yandroid_eB,                       FALSE,  TRUE,
+    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Ybug_sB,                           FALSE,  TRUE,
-    EL_BUG,                            ACTION_MOVING, MV_BIT_DOWN
+    Yandroid_se,                       FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_GROWING, MV_BIT_DOWNRIGHT
   },
   {
-    Ybug_w,                            FALSE,  FALSE,
-    EL_BUG,                            ACTION_MOVING, MV_BIT_LEFT
+    Yandroid_seB,                      FALSE,  TRUE,
+    EL_EMC_ANDROID,                    ACTION_SHRINKING, MV_BIT_DOWNRIGHT
   },
   {
-    Ybug_wB,                           FALSE,  TRUE,
-    EL_BUG,                            ACTION_MOVING, MV_BIT_LEFT
+    Yandroid_s,                                FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Ybug_w_n,                          FALSE,  FALSE,
-    EL_BUG,                            ACTION_TURNING_FROM_LEFT, MV_BIT_UP
+    Yandroid_sB,                       FALSE,  TRUE,
+    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Ybug_n_e,                          FALSE,  FALSE,
-    EL_BUG,                            ACTION_TURNING_FROM_UP, MV_BIT_RIGHT
+    Yandroid_sw,                       FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_GROWING, MV_BIT_DOWNLEFT
   },
   {
-    Ybug_e_s,                          FALSE,  FALSE,
-    EL_BUG,                            ACTION_TURNING_FROM_RIGHT, MV_BIT_DOWN
+    Yandroid_swB,                      FALSE,  TRUE,
+    EL_EMC_ANDROID,                    ACTION_SHRINKING, MV_BIT_DOWNLEFT
   },
   {
-    Ybug_s_w,                          FALSE,  FALSE,
-    EL_BUG,                            ACTION_TURNING_FROM_DOWN, MV_BIT_LEFT
+    Yandroid_w,                                FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Ybug_e_n,                          FALSE,  FALSE,
-    EL_BUG,                            ACTION_TURNING_FROM_RIGHT, MV_BIT_UP
+    Yandroid_wB,                       FALSE,  TRUE,
+    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Ybug_s_e,                          FALSE,  FALSE,
-    EL_BUG,                            ACTION_TURNING_FROM_DOWN, MV_BIT_RIGHT
+    Yandroid_nw,                       FALSE,  FALSE,
+    EL_EMC_ANDROID,                    ACTION_GROWING, MV_BIT_UPLEFT
   },
   {
-    Ybug_w_s,                          FALSE,  FALSE,
-    EL_BUG,                            ACTION_TURNING_FROM_LEFT, MV_BIT_DOWN
+    Yandroid_nwB,                      FALSE,  TRUE,
+    EL_EMC_ANDROID,                    ACTION_SHRINKING, MV_BIT_UPLEFT
   },
+
   {
-    Ybug_n_w,                          FALSE,  FALSE,
-    EL_BUG,                            ACTION_TURNING_FROM_UP, MV_BIT_LEFT
+    Xeater_n,                          TRUE,   FALSE,
+    EL_YAMYAM_UP,                      -1, -1
   },
   {
-    Ybug_stone,                                FALSE,  FALSE,
-    EL_BUG,                            ACTION_SMASHED_BY_ROCK, -1
+    Xeater_e,                          TRUE,   FALSE,
+    EL_YAMYAM_RIGHT,                   -1, -1
   },
   {
-    Ybug_spring,                       FALSE,  FALSE,
-    EL_BUG,                            ACTION_SMASHED_BY_SPRING, -1
+    Xeater_w,                          TRUE,   FALSE,
+    EL_YAMYAM_LEFT,                    -1, -1
   },
   {
-    Xtank_n,                           TRUE,   FALSE,
-    EL_SPACESHIP_UP,                   -1, -1
+    Xeater_s,                          TRUE,   FALSE,
+    EL_YAMYAM_DOWN,                    -1, -1
   },
   {
-    Xtank_e,                           TRUE,   FALSE,
-    EL_SPACESHIP_RIGHT,                        -1, -1
+    Yeater_n,                          FALSE,  FALSE,
+    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_UP
   },
   {
-    Xtank_s,                           TRUE,   FALSE,
-    EL_SPACESHIP_DOWN,                 -1, -1
+    Yeater_nB,                         FALSE,  TRUE,
+    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_UP
   },
   {
-    Xtank_w,                           TRUE,   FALSE,
-    EL_SPACESHIP_LEFT,                 -1, -1
+    Yeater_e,                          FALSE,  FALSE,
+    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Xtank_gon,                         FALSE,  FALSE,
-    EL_SPACESHIP_UP,                   -1, -1
+    Yeater_eB,                         FALSE,  TRUE,
+    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Xtank_goe,                         FALSE,  FALSE,
-    EL_SPACESHIP_RIGHT,                        -1, -1
+    Yeater_s,                          FALSE,  FALSE,
+    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Xtank_gos,                         FALSE,  FALSE,
-    EL_SPACESHIP_DOWN,                 -1, -1
+    Yeater_sB,                         FALSE,  TRUE,
+    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Xtank_gow,                         FALSE,  FALSE,
-    EL_SPACESHIP_LEFT,                 -1, -1
+    Yeater_w,                          FALSE,  FALSE,
+    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Ytank_n,                           FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_UP
+    Yeater_wB,                         FALSE,  TRUE,
+    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Ytank_nB,                          FALSE,  TRUE,
-    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_UP
+    Yeater_stone,                      FALSE,  FALSE,
+    EL_YAMYAM,                         ACTION_SMASHED_BY_ROCK, -1
   },
   {
-    Ytank_e,                           FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_RIGHT
-  },
-  {
-    Ytank_eB,                          FALSE,  TRUE,
-    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_RIGHT
-  },
-  {
-    Ytank_s,                           FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_DOWN
-  },
-  {
-    Ytank_sB,                          FALSE,  TRUE,
-    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_DOWN
-  },
-  {
-    Ytank_w,                           FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_LEFT
-  },
-  {
-    Ytank_wB,                          FALSE,  TRUE,
-    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_LEFT
-  },
-  {
-    Ytank_w_n,                         FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_TURNING_FROM_LEFT, MV_BIT_UP
-  },
-  {
-    Ytank_n_e,                         FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_TURNING_FROM_UP, MV_BIT_RIGHT
-  },
-  {
-    Ytank_e_s,                         FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_TURNING_FROM_RIGHT, MV_BIT_DOWN
-  },
-  {
-    Ytank_s_w,                         FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_TURNING_FROM_DOWN, MV_BIT_LEFT
-  },
-  {
-    Ytank_e_n,                         FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_TURNING_FROM_RIGHT, MV_BIT_UP
-  },
-  {
-    Ytank_s_e,                         FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_TURNING_FROM_DOWN, MV_BIT_RIGHT
-  },
-  {
-    Ytank_w_s,                         FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_TURNING_FROM_LEFT, MV_BIT_DOWN
-  },
-  {
-    Ytank_n_w,                         FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_TURNING_FROM_UP, MV_BIT_LEFT
-  },
-  {
-    Ytank_stone,                       FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_SMASHED_BY_ROCK, -1
-  },
-  {
-    Ytank_spring,                      FALSE,  FALSE,
-    EL_SPACESHIP,                      ACTION_SMASHED_BY_SPRING, -1
-  },
-  {
-    Xandroid,                          TRUE,   FALSE,
-    EL_EMC_ANDROID,                    ACTION_ACTIVE, -1
-  },
-  {
-    Xandroid_1_n,                      FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_UP
+    Yeater_spring,                     FALSE,  FALSE,
+    EL_YAMYAM,                         ACTION_SMASHED_BY_SPRING, -1
   },
+
   {
-    Xandroid_2_n,                      FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_UP
+    Xalien,                            TRUE,   FALSE,
+    EL_ROBOT,                          -1, -1
   },
   {
-    Xandroid_1_e,                      FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_RIGHT
+    Xalien_pause,                      FALSE,  FALSE,
+    EL_ROBOT,                          -1, -1
   },
   {
-    Xandroid_2_e,                      FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_RIGHT
+    Yalien_n,                          FALSE,  FALSE,
+    EL_ROBOT,                          ACTION_MOVING, MV_BIT_UP
   },
   {
-    Xandroid_1_w,                      FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_LEFT
+    Yalien_nB,                         FALSE,  TRUE,
+    EL_ROBOT,                          ACTION_MOVING, MV_BIT_UP
   },
   {
-    Xandroid_2_w,                      FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_LEFT
+    Yalien_e,                          FALSE,  FALSE,
+    EL_ROBOT,                          ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Xandroid_1_s,                      FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_DOWN
+    Yalien_eB,                         FALSE,  TRUE,
+    EL_ROBOT,                          ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Xandroid_2_s,                      FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_ACTIVE, MV_BIT_DOWN
+    Yalien_s,                          FALSE,  FALSE,
+    EL_ROBOT,                          ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Yandroid_n,                                FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_UP
+    Yalien_sB,                         FALSE,  TRUE,
+    EL_ROBOT,                          ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Yandroid_nB,                       FALSE,  TRUE,
-    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_UP
+    Yalien_w,                          FALSE,  FALSE,
+    EL_ROBOT,                          ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Yandroid_ne,                       FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_GROWING, MV_BIT_UPRIGHT
+    Yalien_wB,                         FALSE,  TRUE,
+    EL_ROBOT,                          ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Yandroid_neB,                      FALSE,  TRUE,
-    EL_EMC_ANDROID,                    ACTION_SHRINKING, MV_BIT_UPRIGHT
+    Yalien_stone,                      FALSE,  FALSE,
+    EL_ROBOT,                          ACTION_SMASHED_BY_ROCK, -1
   },
   {
-    Yandroid_e,                                FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_RIGHT
+    Yalien_spring,                     FALSE,  FALSE,
+    EL_ROBOT,                          ACTION_SMASHED_BY_SPRING, -1
   },
+
   {
-    Yandroid_eB,                       FALSE,  TRUE,
-    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_RIGHT
+    Xbug_1_n,                          TRUE,   FALSE,
+    EL_BUG_UP,                         -1, -1
   },
   {
-    Yandroid_se,                       FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_GROWING, MV_BIT_DOWNRIGHT
+    Xbug_1_e,                          TRUE,   FALSE,
+    EL_BUG_RIGHT,                      -1, -1
   },
   {
-    Yandroid_seB,                      FALSE,  TRUE,
-    EL_EMC_ANDROID,                    ACTION_SHRINKING, MV_BIT_DOWNRIGHT
+    Xbug_1_s,                          TRUE,   FALSE,
+    EL_BUG_DOWN,                       -1, -1
   },
   {
-    Yandroid_s,                                FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_DOWN
+    Xbug_1_w,                          TRUE,   FALSE,
+    EL_BUG_LEFT,                       -1, -1
   },
   {
-    Yandroid_sB,                       FALSE,  TRUE,
-    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_DOWN
+    Xbug_2_n,                          FALSE,  FALSE,
+    EL_BUG_UP,                         -1, -1
   },
   {
-    Yandroid_sw,                       FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_GROWING, MV_BIT_DOWNLEFT
+    Xbug_2_e,                          FALSE,  FALSE,
+    EL_BUG_RIGHT,                      -1, -1
   },
   {
-    Yandroid_swB,                      FALSE,  TRUE,
-    EL_EMC_ANDROID,                    ACTION_SHRINKING, MV_BIT_DOWNLEFT
+    Xbug_2_s,                          FALSE,  FALSE,
+    EL_BUG_DOWN,                       -1, -1
   },
   {
-    Yandroid_w,                                FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_LEFT
+    Xbug_2_w,                          FALSE,  FALSE,
+    EL_BUG_LEFT,                       -1, -1
   },
   {
-    Yandroid_wB,                       FALSE,  TRUE,
-    EL_EMC_ANDROID,                    ACTION_MOVING, MV_BIT_LEFT
+    Ybug_n,                            FALSE,  FALSE,
+    EL_BUG,                            ACTION_MOVING, MV_BIT_UP
   },
   {
-    Yandroid_nw,                       FALSE,  FALSE,
-    EL_EMC_ANDROID,                    ACTION_GROWING, MV_BIT_UPLEFT
+    Ybug_nB,                           FALSE,  TRUE,
+    EL_BUG,                            ACTION_MOVING, MV_BIT_UP
   },
   {
-    Yandroid_nwB,                      FALSE,  TRUE,
-    EL_EMC_ANDROID,                    ACTION_SHRINKING, MV_BIT_UPLEFT
+    Ybug_e,                            FALSE,  FALSE,
+    EL_BUG,                            ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Xspring,                           TRUE,   FALSE,
-    EL_SPRING,                         -1, -1
+    Ybug_eB,                           FALSE,  TRUE,
+    EL_BUG,                            ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Xspring_pause,                     FALSE,  FALSE,
-    EL_SPRING,                         -1, -1
+    Ybug_s,                            FALSE,  FALSE,
+    EL_BUG,                            ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Xspring_e,                         FALSE,  FALSE,
-    EL_SPRING,                         -1, -1
+    Ybug_sB,                           FALSE,  TRUE,
+    EL_BUG,                            ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Xspring_w,                         FALSE,  FALSE,
-    EL_SPRING,                         -1, -1
+    Ybug_w,                            FALSE,  FALSE,
+    EL_BUG,                            ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Xspring_fall,                      FALSE,  FALSE,
-    EL_SPRING,                         -1, -1
+    Ybug_wB,                           FALSE,  TRUE,
+    EL_BUG,                            ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Yspring_s,                         FALSE,  FALSE,
-    EL_SPRING,                         ACTION_FALLING, -1
+    Ybug_w_n,                          FALSE,  FALSE,
+    EL_BUG,                            ACTION_TURNING_FROM_LEFT, MV_BIT_UP
   },
   {
-    Yspring_sB,                                FALSE,  TRUE,
-    EL_SPRING,                         ACTION_FALLING, -1
+    Ybug_n_e,                          FALSE,  FALSE,
+    EL_BUG,                            ACTION_TURNING_FROM_UP, MV_BIT_RIGHT
   },
   {
-    Yspring_e,                         FALSE,  FALSE,
-    EL_SPRING,                         ACTION_MOVING, MV_BIT_RIGHT
+    Ybug_e_s,                          FALSE,  FALSE,
+    EL_BUG,                            ACTION_TURNING_FROM_RIGHT, MV_BIT_DOWN
   },
   {
-    Yspring_eB,                                FALSE,  TRUE,
-    EL_SPRING,                         ACTION_MOVING, MV_BIT_RIGHT
+    Ybug_s_w,                          FALSE,  FALSE,
+    EL_BUG,                            ACTION_TURNING_FROM_DOWN, MV_BIT_LEFT
   },
   {
-    Yspring_w,                         FALSE,  FALSE,
-    EL_SPRING,                         ACTION_MOVING, MV_BIT_LEFT
+    Ybug_e_n,                          FALSE,  FALSE,
+    EL_BUG,                            ACTION_TURNING_FROM_RIGHT, MV_BIT_UP
   },
   {
-    Yspring_wB,                                FALSE,  TRUE,
-    EL_SPRING,                         ACTION_MOVING, MV_BIT_LEFT
+    Ybug_s_e,                          FALSE,  FALSE,
+    EL_BUG,                            ACTION_TURNING_FROM_DOWN, MV_BIT_RIGHT
   },
   {
-    Yspring_kill_e,                    FALSE,  FALSE,
-    EL_SPRING,                         ACTION_EATING, MV_BIT_RIGHT
+    Ybug_w_s,                          FALSE,  FALSE,
+    EL_BUG,                            ACTION_TURNING_FROM_LEFT, MV_BIT_DOWN
   },
   {
-    Yspring_kill_eB,                   FALSE,  TRUE,
-    EL_SPRING,                         ACTION_EATING, MV_BIT_RIGHT
+    Ybug_n_w,                          FALSE,  FALSE,
+    EL_BUG,                            ACTION_TURNING_FROM_UP, MV_BIT_LEFT
   },
   {
-    Yspring_kill_w,                    FALSE,  FALSE,
-    EL_SPRING,                         ACTION_EATING, MV_BIT_LEFT
+    Ybug_stone,                                FALSE,  FALSE,
+    EL_BUG,                            ACTION_SMASHED_BY_ROCK, -1
   },
   {
-    Yspring_kill_wB,                   FALSE,  TRUE,
-    EL_SPRING,                         ACTION_EATING, MV_BIT_LEFT
+    Ybug_spring,                       FALSE,  FALSE,
+    EL_BUG,                            ACTION_SMASHED_BY_SPRING, -1
   },
+
   {
-    Xeater_n,                          TRUE,   FALSE,
-    EL_YAMYAM_UP,                      -1, -1
+    Xtank_1_n,                         TRUE,   FALSE,
+    EL_SPACESHIP_UP,                   -1, -1
   },
   {
-    Xeater_e,                          TRUE,   FALSE,
-    EL_YAMYAM_RIGHT,                   -1, -1
+    Xtank_1_e,                         TRUE,   FALSE,
+    EL_SPACESHIP_RIGHT,                        -1, -1
   },
   {
-    Xeater_w,                          TRUE,   FALSE,
-    EL_YAMYAM_LEFT,                    -1, -1
+    Xtank_1_s,                         TRUE,   FALSE,
+    EL_SPACESHIP_DOWN,                 -1, -1
   },
   {
-    Xeater_s,                          TRUE,   FALSE,
-    EL_YAMYAM_DOWN,                    -1, -1
+    Xtank_1_w,                         TRUE,   FALSE,
+    EL_SPACESHIP_LEFT,                 -1, -1
   },
   {
-    Yeater_n,                          FALSE,  FALSE,
-    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_UP
+    Xtank_2_n,                         FALSE,  FALSE,
+    EL_SPACESHIP_UP,                   -1, -1
   },
   {
-    Yeater_nB,                         FALSE,  TRUE,
-    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_UP
+    Xtank_2_e,                         FALSE,  FALSE,
+    EL_SPACESHIP_RIGHT,                        -1, -1
   },
   {
-    Yeater_e,                          FALSE,  FALSE,
-    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_RIGHT
+    Xtank_2_s,                         FALSE,  FALSE,
+    EL_SPACESHIP_DOWN,                 -1, -1
   },
   {
-    Yeater_eB,                         FALSE,  TRUE,
-    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_RIGHT
+    Xtank_2_w,                         FALSE,  FALSE,
+    EL_SPACESHIP_LEFT,                 -1, -1
   },
   {
-    Yeater_s,                          FALSE,  FALSE,
-    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_DOWN
+    Ytank_n,                           FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_UP
   },
   {
-    Yeater_sB,                         FALSE,  TRUE,
-    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_DOWN
+    Ytank_nB,                          FALSE,  TRUE,
+    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_UP
   },
   {
-    Yeater_w,                          FALSE,  FALSE,
-    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_LEFT
+    Ytank_e,                           FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Yeater_wB,                         FALSE,  TRUE,
-    EL_YAMYAM,                         ACTION_MOVING, MV_BIT_LEFT
+    Ytank_eB,                          FALSE,  TRUE,
+    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Yeater_stone,                      FALSE,  FALSE,
-    EL_YAMYAM,                         ACTION_SMASHED_BY_ROCK, -1
+    Ytank_s,                           FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Yeater_spring,                     FALSE,  FALSE,
-    EL_YAMYAM,                         ACTION_SMASHED_BY_SPRING, -1
+    Ytank_sB,                          FALSE,  TRUE,
+    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Xalien,                            TRUE,   FALSE,
-    EL_ROBOT,                          -1, -1
+    Ytank_w,                           FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Xalien_pause,                      FALSE,  FALSE,
-    EL_ROBOT,                          -1, -1
+    Ytank_wB,                          FALSE,  TRUE,
+    EL_SPACESHIP,                      ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Yalien_n,                          FALSE,  FALSE,
-    EL_ROBOT,                          ACTION_MOVING, MV_BIT_UP
+    Ytank_w_n,                         FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_TURNING_FROM_LEFT, MV_BIT_UP
   },
   {
-    Yalien_nB,                         FALSE,  TRUE,
-    EL_ROBOT,                          ACTION_MOVING, MV_BIT_UP
+    Ytank_n_e,                         FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_TURNING_FROM_UP, MV_BIT_RIGHT
   },
   {
-    Yalien_e,                          FALSE,  FALSE,
-    EL_ROBOT,                          ACTION_MOVING, MV_BIT_RIGHT
+    Ytank_e_s,                         FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_TURNING_FROM_RIGHT, MV_BIT_DOWN
   },
   {
-    Yalien_eB,                         FALSE,  TRUE,
-    EL_ROBOT,                          ACTION_MOVING, MV_BIT_RIGHT
+    Ytank_s_w,                         FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_TURNING_FROM_DOWN, MV_BIT_LEFT
   },
   {
-    Yalien_s,                          FALSE,  FALSE,
-    EL_ROBOT,                          ACTION_MOVING, MV_BIT_DOWN
+    Ytank_e_n,                         FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_TURNING_FROM_RIGHT, MV_BIT_UP
   },
   {
-    Yalien_sB,                         FALSE,  TRUE,
-    EL_ROBOT,                          ACTION_MOVING, MV_BIT_DOWN
+    Ytank_s_e,                         FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_TURNING_FROM_DOWN, MV_BIT_RIGHT
   },
   {
-    Yalien_w,                          FALSE,  FALSE,
-    EL_ROBOT,                          ACTION_MOVING, MV_BIT_LEFT
+    Ytank_w_s,                         FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_TURNING_FROM_LEFT, MV_BIT_DOWN
   },
   {
-    Yalien_wB,                         FALSE,  TRUE,
-    EL_ROBOT,                          ACTION_MOVING, MV_BIT_LEFT
+    Ytank_n_w,                         FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_TURNING_FROM_UP, MV_BIT_LEFT
   },
   {
-    Yalien_stone,                      FALSE,  FALSE,
-    EL_ROBOT,                          ACTION_SMASHED_BY_ROCK, -1
+    Ytank_stone,                       FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_SMASHED_BY_ROCK, -1
   },
   {
-    Yalien_spring,                     FALSE,  FALSE,
-    EL_ROBOT,                          ACTION_SMASHED_BY_SPRING, -1
+    Ytank_spring,                      FALSE,  FALSE,
+    EL_SPACESHIP,                      ACTION_SMASHED_BY_SPRING, -1
   },
+
   {
     Xemerald,                          TRUE,   FALSE,
     EL_EMERALD,                                -1, -1
@@ -6366,13 +6329,10 @@ em_object_mapping_list[] =
     EL_EMERALD,                                ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Yemerald_eat,                      FALSE,  FALSE,
+    Yemerald_blank,                    FALSE,  FALSE,
     EL_EMERALD,                                ACTION_COLLECTING, -1
   },
-  {
-    Yemerald_stone,                    FALSE,  FALSE,
-    EL_NUT,                            ACTION_BREAKING, -1
-  },
+
   {
     Xdiamond,                          TRUE,   FALSE,
     EL_DIAMOND,                                -1, -1
@@ -6414,45 +6374,51 @@ em_object_mapping_list[] =
     EL_DIAMOND,                                ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Ydiamond_eat,                      FALSE,  FALSE,
+    Ydiamond_blank,                    FALSE,  FALSE,
     EL_DIAMOND,                                ACTION_COLLECTING, -1
   },
   {
     Ydiamond_stone,                    FALSE,  FALSE,
     EL_DIAMOND,                                ACTION_SMASHED_BY_ROCK, -1
   },
+
   {
-    Xdrip_fall,                                TRUE,   FALSE,
-    EL_AMOEBA_DROP,                    -1, -1
+    Xstone,                            TRUE,   FALSE,
+    EL_ROCK,                           -1, -1
   },
   {
-    Xdrip_stretch,                     FALSE,  FALSE,
-    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+    Xstone_pause,                      FALSE,  FALSE,
+    EL_ROCK,                           -1, -1
   },
   {
-    Xdrip_stretchB,                    FALSE,  TRUE,
-    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+    Xstone_fall,                       FALSE,  FALSE,
+    EL_ROCK,                           -1, -1
   },
   {
-    Xdrip_eat,                         FALSE,  FALSE,
-    EL_AMOEBA_DROP,                    ACTION_GROWING, -1
+    Ystone_s,                          FALSE,  FALSE,
+    EL_ROCK,                           ACTION_FALLING, -1
   },
   {
-    Ydrip_s1,                          FALSE,  FALSE,
-    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+    Ystone_sB,                         FALSE,  TRUE,
+    EL_ROCK,                           ACTION_FALLING, -1
   },
   {
-    Ydrip_s1B,                         FALSE,  TRUE,
-    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+    Ystone_e,                          FALSE,  FALSE,
+    EL_ROCK,                           ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Ydrip_s2,                          FALSE,  FALSE,
-    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+    Ystone_eB,                         FALSE,  TRUE,
+    EL_ROCK,                           ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Ydrip_s2B,                         FALSE,  TRUE,
-    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+    Ystone_w,                          FALSE,  FALSE,
+    EL_ROCK,                           ACTION_MOVING, MV_BIT_LEFT
+  },
+  {
+    Ystone_wB,                         FALSE,  TRUE,
+    EL_ROCK,                           ACTION_MOVING, MV_BIT_LEFT
   },
+
   {
     Xbomb,                             TRUE,   FALSE,
     EL_BOMB,                           -1, -1
@@ -6490,261 +6456,219 @@ em_object_mapping_list[] =
     EL_BOMB,                           ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Ybomb_eat,                         FALSE,  FALSE,
+    Ybomb_blank,                       FALSE,  FALSE,
     EL_BOMB,                           ACTION_ACTIVATING, -1
   },
+
   {
-    Xballoon,                          TRUE,   FALSE,
-    EL_BALLOON,                                -1, -1
-  },
-  {
-    Yballoon_n,                                FALSE,  FALSE,
-    EL_BALLOON,                                ACTION_MOVING, MV_BIT_UP
-  },
-  {
-    Yballoon_nB,                       FALSE,  TRUE,
-    EL_BALLOON,                                ACTION_MOVING, MV_BIT_UP
-  },
-  {
-    Yballoon_e,                                FALSE,  FALSE,
-    EL_BALLOON,                                ACTION_MOVING, MV_BIT_RIGHT
-  },
-  {
-    Yballoon_eB,                       FALSE,  TRUE,
-    EL_BALLOON,                                ACTION_MOVING, MV_BIT_RIGHT
-  },
-  {
-    Yballoon_s,                                FALSE,  FALSE,
-    EL_BALLOON,                                ACTION_MOVING, MV_BIT_DOWN
-  },
-  {
-    Yballoon_sB,                       FALSE,  TRUE,
-    EL_BALLOON,                                ACTION_MOVING, MV_BIT_DOWN
-  },
-  {
-    Yballoon_w,                                FALSE,  FALSE,
-    EL_BALLOON,                                ACTION_MOVING, MV_BIT_LEFT
-  },
-  {
-    Yballoon_wB,                       FALSE,  TRUE,
-    EL_BALLOON,                                ACTION_MOVING, MV_BIT_LEFT
-  },
-  {
-    Xgrass,                            TRUE,   FALSE,
-    EL_EMC_GRASS,                      -1, -1
-  },
-  {
-    Ygrass_nB,                         FALSE,  FALSE,
-    EL_EMC_GRASS,                      ACTION_DIGGING, MV_BIT_UP
-  },
-  {
-    Ygrass_eB,                         FALSE,  FALSE,
-    EL_EMC_GRASS,                      ACTION_DIGGING, MV_BIT_RIGHT
-  },
-  {
-    Ygrass_sB,                         FALSE,  FALSE,
-    EL_EMC_GRASS,                      ACTION_DIGGING, MV_BIT_DOWN
+    Xnut,                              TRUE,   FALSE,
+    EL_NUT,                            -1, -1
   },
   {
-    Ygrass_wB,                         FALSE,  FALSE,
-    EL_EMC_GRASS,                      ACTION_DIGGING, MV_BIT_LEFT
+    Xnut_pause,                                FALSE,  FALSE,
+    EL_NUT,                            -1, -1
   },
   {
-    Xdirt,                             TRUE,   FALSE,
-    EL_SAND,                           -1, -1
+    Xnut_fall,                         FALSE,  FALSE,
+    EL_NUT,                            -1, -1
   },
   {
-    Ydirt_nB,                          FALSE,  FALSE,
-    EL_SAND,                           ACTION_DIGGING, MV_BIT_UP
+    Ynut_s,                            FALSE,  FALSE,
+    EL_NUT,                            ACTION_FALLING, -1
   },
   {
-    Ydirt_eB,                          FALSE,  FALSE,
-    EL_SAND,                           ACTION_DIGGING, MV_BIT_RIGHT
+    Ynut_sB,                           FALSE,  TRUE,
+    EL_NUT,                            ACTION_FALLING, -1
   },
   {
-    Ydirt_sB,                          FALSE,  FALSE,
-    EL_SAND,                           ACTION_DIGGING, MV_BIT_DOWN
+    Ynut_e,                            FALSE,  FALSE,
+    EL_NUT,                            ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Ydirt_wB,                          FALSE,  FALSE,
-    EL_SAND,                           ACTION_DIGGING, MV_BIT_LEFT
+    Ynut_eB,                           FALSE,  TRUE,
+    EL_NUT,                            ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Xacid_ne,                          TRUE,   FALSE,
-    EL_ACID_POOL_TOPRIGHT,             -1, -1
+    Ynut_w,                            FALSE,  FALSE,
+    EL_NUT,                            ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Xacid_se,                          TRUE,   FALSE,
-    EL_ACID_POOL_BOTTOMRIGHT,          -1, -1
+    Ynut_wB,                           FALSE,  TRUE,
+    EL_NUT,                            ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Xacid_s,                           TRUE,   FALSE,
-    EL_ACID_POOL_BOTTOM,               -1, -1
+    Ynut_stone,                                FALSE,  FALSE,
+    EL_NUT,                            ACTION_BREAKING, -1
   },
+
   {
-    Xacid_sw,                          TRUE,   FALSE,
-    EL_ACID_POOL_BOTTOMLEFT,           -1, -1
+    Xspring,                           TRUE,   FALSE,
+    EL_SPRING,                         -1, -1
   },
   {
-    Xacid_nw,                          TRUE,   FALSE,
-    EL_ACID_POOL_TOPLEFT,              -1, -1
+    Xspring_pause,                     FALSE,  FALSE,
+    EL_SPRING,                         -1, -1
   },
   {
-    Xacid_1,                           TRUE,   FALSE,
-    EL_ACID,                           -1, -1
+    Xspring_e,                         FALSE,  FALSE,
+    EL_SPRING,                         -1, -1
   },
   {
-    Xacid_2,                           FALSE,  FALSE,
-    EL_ACID,                           -1, -1
+    Xspring_w,                         FALSE,  FALSE,
+    EL_SPRING,                         -1, -1
   },
   {
-    Xacid_3,                           FALSE,  FALSE,
-    EL_ACID,                           -1, -1
+    Xspring_fall,                      FALSE,  FALSE,
+    EL_SPRING,                         -1, -1
   },
   {
-    Xacid_4,                           FALSE,  FALSE,
-    EL_ACID,                           -1, -1
+    Yspring_s,                         FALSE,  FALSE,
+    EL_SPRING,                         ACTION_FALLING, -1
   },
   {
-    Xacid_5,                           FALSE,  FALSE,
-    EL_ACID,                           -1, -1
+    Yspring_sB,                                FALSE,  TRUE,
+    EL_SPRING,                         ACTION_FALLING, -1
   },
   {
-    Xacid_6,                           FALSE,  FALSE,
-    EL_ACID,                           -1, -1
+    Yspring_e,                         FALSE,  FALSE,
+    EL_SPRING,                         ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Xacid_7,                           FALSE,  FALSE,
-    EL_ACID,                           -1, -1
+    Yspring_eB,                                FALSE,  TRUE,
+    EL_SPRING,                         ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Xacid_8,                           FALSE,  FALSE,
-    EL_ACID,                           -1, -1
+    Yspring_w,                         FALSE,  FALSE,
+    EL_SPRING,                         ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Xball_1,                           TRUE,   FALSE,
-    EL_EMC_MAGIC_BALL,                 -1, -1
+    Yspring_wB,                                FALSE,  TRUE,
+    EL_SPRING,                         ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Xball_1B,                          FALSE,  FALSE,
-    EL_EMC_MAGIC_BALL,                 ACTION_ACTIVE, -1
+    Yspring_alien_e,                   FALSE,  FALSE,
+    EL_SPRING,                         ACTION_EATING, MV_BIT_RIGHT
   },
   {
-    Xball_2,                           FALSE,  FALSE,
-    EL_EMC_MAGIC_BALL,                 ACTION_ACTIVE, -1
+    Yspring_alien_eB,                  FALSE,  TRUE,
+    EL_SPRING,                         ACTION_EATING, MV_BIT_RIGHT
   },
   {
-    Xball_2B,                          FALSE,  FALSE,
-    EL_EMC_MAGIC_BALL,                 ACTION_ACTIVE, -1
+    Yspring_alien_w,                   FALSE,  FALSE,
+    EL_SPRING,                         ACTION_EATING, MV_BIT_LEFT
   },
   {
-    Yball_eat,                         FALSE,  FALSE,
-    EL_EMC_MAGIC_BALL,                 ACTION_DROPPING, -1
+    Yspring_alien_wB,                  FALSE,  TRUE,
+    EL_SPRING,                         ACTION_EATING, MV_BIT_LEFT
   },
+
   {
-    Ykey_1_eat,                                FALSE,  FALSE,
-    EL_EM_KEY_1,                       ACTION_COLLECTING, -1
+    Xpush_emerald_e,                   FALSE,  FALSE,
+    EL_EMERALD,                                -1, MV_BIT_RIGHT
   },
   {
-    Ykey_2_eat,                                FALSE,  FALSE,
-    EL_EM_KEY_2,                       ACTION_COLLECTING, -1
+    Xpush_emerald_w,                   FALSE,  FALSE,
+    EL_EMERALD,                                -1, MV_BIT_LEFT
   },
   {
-    Ykey_3_eat,                                FALSE,  FALSE,
-    EL_EM_KEY_3,                       ACTION_COLLECTING, -1
+    Xpush_diamond_e,                   FALSE,  FALSE,
+    EL_DIAMOND,                                -1, MV_BIT_RIGHT
   },
   {
-    Ykey_4_eat,                                FALSE,  FALSE,
-    EL_EM_KEY_4,                       ACTION_COLLECTING, -1
+    Xpush_diamond_w,                   FALSE,  FALSE,
+    EL_DIAMOND,                                -1, MV_BIT_LEFT
   },
   {
-    Ykey_5_eat,                                FALSE,  FALSE,
-    EL_EMC_KEY_5,                      ACTION_COLLECTING, -1
+    Xpush_stone_e,                     FALSE,  FALSE,
+    EL_ROCK,                           -1, MV_BIT_RIGHT
   },
   {
-    Ykey_6_eat,                                FALSE,  FALSE,
-    EL_EMC_KEY_6,                      ACTION_COLLECTING, -1
+    Xpush_stone_w,                     FALSE,  FALSE,
+    EL_ROCK,                           -1, MV_BIT_LEFT
   },
   {
-    Ykey_7_eat,                                FALSE,  FALSE,
-    EL_EMC_KEY_7,                      ACTION_COLLECTING, -1
+    Xpush_bomb_e,                      FALSE,  FALSE,
+    EL_BOMB,                           -1, MV_BIT_RIGHT
   },
   {
-    Ykey_8_eat,                                FALSE,  FALSE,
-    EL_EMC_KEY_8,                      ACTION_COLLECTING, -1
+    Xpush_bomb_w,                      FALSE,  FALSE,
+    EL_BOMB,                           -1, MV_BIT_LEFT
   },
   {
-    Ylenses_eat,                       FALSE,  FALSE,
-    EL_EMC_LENSES,                     ACTION_COLLECTING, -1
+    Xpush_nut_e,                       FALSE,  FALSE,
+    EL_NUT,                            -1, MV_BIT_RIGHT
   },
   {
-    Ymagnify_eat,                      FALSE,  FALSE,
-    EL_EMC_MAGNIFIER,                  ACTION_COLLECTING, -1
+    Xpush_nut_w,                       FALSE,  FALSE,
+    EL_NUT,                            -1, MV_BIT_LEFT
   },
   {
-    Ygrass_eat,                                FALSE,  FALSE,
-    EL_EMC_GRASS,                      ACTION_SNAPPING, -1
+    Xpush_spring_e,                    FALSE,  FALSE,
+    EL_SPRING,                         -1, MV_BIT_RIGHT
   },
   {
-    Ydirt_eat,                         FALSE,  FALSE,
-    EL_SAND,                           ACTION_SNAPPING, -1
+    Xpush_spring_w,                    FALSE,  FALSE,
+    EL_SPRING,                         -1, MV_BIT_LEFT
   },
+
   {
-    Xgrow_ns,                          TRUE,   FALSE,
-    EL_EXPANDABLE_WALL_VERTICAL,       -1, -1
+    Xdynamite,                         TRUE,   FALSE,
+    EL_EM_DYNAMITE,                    -1, -1
   },
   {
-    Ygrow_ns_eat,                      FALSE,  FALSE,
-    EL_EXPANDABLE_WALL_VERTICAL,       ACTION_GROWING, -1
+    Ydynamite_blank,                   FALSE,  FALSE,
+    EL_EM_DYNAMITE,                    ACTION_COLLECTING, -1
   },
   {
-    Xgrow_ew,                          TRUE,   FALSE,
-    EL_EXPANDABLE_WALL_HORIZONTAL,     -1, -1
+    Xdynamite_1,                       TRUE,   FALSE,
+    EL_EM_DYNAMITE_ACTIVE,             -1, -1
   },
   {
-    Ygrow_ew_eat,                      FALSE,  FALSE,
-    EL_EXPANDABLE_WALL_HORIZONTAL,     ACTION_GROWING, -1
+    Xdynamite_2,                       FALSE,  FALSE,
+    EL_EM_DYNAMITE_ACTIVE,             -1, -1
   },
   {
-    Xwonderwall,                       TRUE,   FALSE,
-    EL_MAGIC_WALL,                     -1, -1
+    Xdynamite_3,                       FALSE,  FALSE,
+    EL_EM_DYNAMITE_ACTIVE,             -1, -1
   },
   {
-    XwonderwallB,                      FALSE,  FALSE,
-    EL_MAGIC_WALL,                     ACTION_ACTIVE, -1
+    Xdynamite_4,                       FALSE,  FALSE,
+    EL_EM_DYNAMITE_ACTIVE,             -1, -1
   },
+
   {
-    Xamoeba_1,                         TRUE,   FALSE,
-    EL_AMOEBA_DRY,                     ACTION_OTHER, -1
+    Xkey_1,                            TRUE,   FALSE,
+    EL_EM_KEY_1,                       -1, -1
   },
   {
-    Xamoeba_2,                         FALSE,  FALSE,
-    EL_AMOEBA_DRY,                     ACTION_OTHER, -1
+    Xkey_2,                            TRUE,   FALSE,
+    EL_EM_KEY_2,                       -1, -1
   },
   {
-    Xamoeba_3,                         FALSE,  FALSE,
-    EL_AMOEBA_DRY,                     ACTION_OTHER, -1
+    Xkey_3,                            TRUE,   FALSE,
+    EL_EM_KEY_3,                       -1, -1
   },
   {
-    Xamoeba_4,                         FALSE,  FALSE,
-    EL_AMOEBA_DRY,                     ACTION_OTHER, -1
+    Xkey_4,                            TRUE,   FALSE,
+    EL_EM_KEY_4,                       -1, -1
   },
   {
-    Xamoeba_5,                         TRUE,   FALSE,
-    EL_AMOEBA_WET,                     ACTION_OTHER, -1
+    Xkey_5,                            TRUE,   FALSE,
+    EL_EMC_KEY_5,                      -1, -1
   },
   {
-    Xamoeba_6,                         FALSE,  FALSE,
-    EL_AMOEBA_WET,                     ACTION_OTHER, -1
+    Xkey_6,                            TRUE,   FALSE,
+    EL_EMC_KEY_6,                      -1, -1
   },
   {
-    Xamoeba_7,                         FALSE,  FALSE,
-    EL_AMOEBA_WET,                     ACTION_OTHER, -1
+    Xkey_7,                            TRUE,   FALSE,
+    EL_EMC_KEY_7,                      -1, -1
   },
   {
-    Xamoeba_8,                         FALSE,  FALSE,
-    EL_AMOEBA_WET,                     ACTION_OTHER, -1
+    Xkey_8,                            TRUE,   FALSE,
+    EL_EMC_KEY_8,                      -1, -1
   },
+
   {
     Xdoor_1,                           TRUE,   FALSE,
     EL_EM_GATE_1,                      -1, -1
@@ -6777,110 +6701,173 @@ em_object_mapping_list[] =
     Xdoor_8,                           TRUE,   FALSE,
     EL_EMC_GATE_8,                     -1, -1
   },
+
   {
-    Xkey_1,                            TRUE,   FALSE,
-    EL_EM_KEY_1,                       -1, -1
+    Xfake_door_1,                      TRUE,   FALSE,
+    EL_EM_GATE_1_GRAY,                 -1, -1
   },
   {
-    Xkey_2,                            TRUE,   FALSE,
-    EL_EM_KEY_2,                       -1, -1
+    Xfake_door_2,                      TRUE,   FALSE,
+    EL_EM_GATE_2_GRAY,                 -1, -1
   },
   {
-    Xkey_3,                            TRUE,   FALSE,
-    EL_EM_KEY_3,                       -1, -1
+    Xfake_door_3,                      TRUE,   FALSE,
+    EL_EM_GATE_3_GRAY,                 -1, -1
   },
   {
-    Xkey_4,                            TRUE,   FALSE,
-    EL_EM_KEY_4,                       -1, -1
+    Xfake_door_4,                      TRUE,   FALSE,
+    EL_EM_GATE_4_GRAY,                 -1, -1
   },
   {
-    Xkey_5,                            TRUE,   FALSE,
-    EL_EMC_KEY_5,                      -1, -1
+    Xfake_door_5,                      TRUE,   FALSE,
+    EL_EMC_GATE_5_GRAY,                        -1, -1
   },
   {
-    Xkey_6,                            TRUE,   FALSE,
-    EL_EMC_KEY_6,                      -1, -1
+    Xfake_door_6,                      TRUE,   FALSE,
+    EL_EMC_GATE_6_GRAY,                        -1, -1
   },
   {
-    Xkey_7,                            TRUE,   FALSE,
-    EL_EMC_KEY_7,                      -1, -1
+    Xfake_door_7,                      TRUE,   FALSE,
+    EL_EMC_GATE_7_GRAY,                        -1, -1
   },
   {
-    Xkey_8,                            TRUE,   FALSE,
-    EL_EMC_KEY_8,                      -1, -1
+    Xfake_door_8,                      TRUE,   FALSE,
+    EL_EMC_GATE_8_GRAY,                        -1, -1
   },
+
   {
-    Xwind_n,                           TRUE,   FALSE,
-    EL_BALLOON_SWITCH_UP,              -1, -1
+    Xballoon,                          TRUE,   FALSE,
+    EL_BALLOON,                                -1, -1
   },
   {
-    Xwind_e,                           TRUE,   FALSE,
-    EL_BALLOON_SWITCH_RIGHT,           -1, -1
+    Yballoon_n,                                FALSE,  FALSE,
+    EL_BALLOON,                                ACTION_MOVING, MV_BIT_UP
   },
   {
-    Xwind_s,                           TRUE,   FALSE,
-    EL_BALLOON_SWITCH_DOWN,            -1, -1
+    Yballoon_nB,                       FALSE,  TRUE,
+    EL_BALLOON,                                ACTION_MOVING, MV_BIT_UP
   },
   {
-    Xwind_w,                           TRUE,   FALSE,
-    EL_BALLOON_SWITCH_LEFT,            -1, -1
+    Yballoon_e,                                FALSE,  FALSE,
+    EL_BALLOON,                                ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Xwind_nesw,                                TRUE,   FALSE,
-    EL_BALLOON_SWITCH_ANY,             -1, -1
+    Yballoon_eB,                       FALSE,  TRUE,
+    EL_BALLOON,                                ACTION_MOVING, MV_BIT_RIGHT
   },
   {
-    Xwind_stop,                                TRUE,   FALSE,
-    EL_BALLOON_SWITCH_NONE,            -1, -1
+    Yballoon_s,                                FALSE,  FALSE,
+    EL_BALLOON,                                ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Xexit,                             TRUE,   FALSE,
-    EL_EM_EXIT_CLOSED,                 -1, -1
+    Yballoon_sB,                       FALSE,  TRUE,
+    EL_BALLOON,                                ACTION_MOVING, MV_BIT_DOWN
   },
   {
-    Xexit_1,                           TRUE,   FALSE,
-    EL_EM_EXIT_OPEN,                   -1, -1
+    Yballoon_w,                                FALSE,  FALSE,
+    EL_BALLOON,                                ACTION_MOVING, MV_BIT_LEFT
   },
   {
-    Xexit_2,                           FALSE,  FALSE,
-    EL_EM_EXIT_OPEN,                   -1, -1
+    Yballoon_wB,                       FALSE,  TRUE,
+    EL_BALLOON,                                ACTION_MOVING, MV_BIT_LEFT
   },
+
   {
-    Xexit_3,                           FALSE,  FALSE,
-    EL_EM_EXIT_OPEN,                   -1, -1
+    Xball_1,                           TRUE,   FALSE,
+    EL_EMC_MAGIC_BALL,                 -1, -1
   },
   {
-    Xdynamite,                         TRUE,   FALSE,
-    EL_EM_DYNAMITE,                    -1, -1
+    Yball_1,                           FALSE,  FALSE,
+    EL_EMC_MAGIC_BALL,                 ACTION_ACTIVE, -1
   },
   {
-    Ydynamite_eat,                     FALSE,  FALSE,
-    EL_EM_DYNAMITE,                    ACTION_COLLECTING, -1
+    Xball_2,                           FALSE,  FALSE,
+    EL_EMC_MAGIC_BALL,                 ACTION_ACTIVE, -1
   },
   {
-    Xdynamite_1,                       TRUE,   FALSE,
-    EL_EM_DYNAMITE_ACTIVE,             -1, -1
+    Yball_2,                           FALSE,  FALSE,
+    EL_EMC_MAGIC_BALL,                 ACTION_ACTIVE, -1
   },
   {
-    Xdynamite_2,                       FALSE,  FALSE,
-    EL_EM_DYNAMITE_ACTIVE,             -1, -1
+    Yball_blank,                       FALSE,  FALSE,
+    EL_EMC_MAGIC_BALL,                 ACTION_DROPPING, -1
   },
+
   {
-    Xdynamite_3,                       FALSE,  FALSE,
-    EL_EM_DYNAMITE_ACTIVE,             -1, -1
+    Xamoeba_1,                         TRUE,   FALSE,
+    EL_AMOEBA_DRY,                     ACTION_OTHER, -1
   },
   {
-    Xdynamite_4,                       FALSE,  FALSE,
-    EL_EM_DYNAMITE_ACTIVE,             -1, -1
+    Xamoeba_2,                         FALSE,  FALSE,
+    EL_AMOEBA_DRY,                     ACTION_OTHER, -1
   },
   {
-    Xbumper,                           TRUE,   FALSE,
-    EL_EMC_SPRING_BUMPER,              -1, -1
+    Xamoeba_3,                         FALSE,  FALSE,
+    EL_AMOEBA_DRY,                     ACTION_OTHER, -1
   },
   {
-    XbumperB,                          FALSE,  FALSE,
-    EL_EMC_SPRING_BUMPER,              ACTION_ACTIVE, -1
+    Xamoeba_4,                         FALSE,  FALSE,
+    EL_AMOEBA_DRY,                     ACTION_OTHER, -1
+  },
+  {
+    Xamoeba_5,                         TRUE,   FALSE,
+    EL_AMOEBA_WET,                     ACTION_OTHER, -1
+  },
+  {
+    Xamoeba_6,                         FALSE,  FALSE,
+    EL_AMOEBA_WET,                     ACTION_OTHER, -1
+  },
+  {
+    Xamoeba_7,                         FALSE,  FALSE,
+    EL_AMOEBA_WET,                     ACTION_OTHER, -1
+  },
+  {
+    Xamoeba_8,                         FALSE,  FALSE,
+    EL_AMOEBA_WET,                     ACTION_OTHER, -1
+  },
+
+  {
+    Xdrip,                             FALSE,  FALSE,
+    EL_AMOEBA_DROP,                    ACTION_GROWING, -1
+  },
+  {
+    Xdrip_fall,                                TRUE,   FALSE,
+    EL_AMOEBA_DROP,                    -1, -1
+  },
+  {
+    Xdrip_stretch,                     FALSE,  FALSE,
+    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+  },
+  {
+    Xdrip_stretchB,                    FALSE,  TRUE,
+    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+  },
+  {
+    Ydrip_1_s,                         FALSE,  FALSE,
+    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+  },
+  {
+    Ydrip_1_sB,                                FALSE,  TRUE,
+    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+  },
+  {
+    Ydrip_2_s,                         FALSE,  FALSE,
+    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+  },
+  {
+    Ydrip_2_sB,                                FALSE,  TRUE,
+    EL_AMOEBA_DROP,                    ACTION_FALLING, -1
+  },
+
+  {
+    Xwonderwall,                       TRUE,   FALSE,
+    EL_MAGIC_WALL,                     -1, -1
+  },
+  {
+    XwonderwallB,                      FALSE,  FALSE,
+    EL_MAGIC_WALL,                     ACTION_ACTIVE, -1
   },
+
   {
     Xwheel,                            TRUE,   FALSE,
     EL_ROBOT_WHEEL,                    -1, -1
@@ -6889,6 +6876,7 @@ em_object_mapping_list[] =
     XwheelB,                           FALSE,  FALSE,
     EL_ROBOT_WHEEL,                    ACTION_ACTIVE, -1
   },
+
   {
     Xswitch,                           TRUE,   FALSE,
     EL_EMC_MAGIC_BALL_SWITCH,          -1, -1
@@ -6897,198 +6885,206 @@ em_object_mapping_list[] =
     XswitchB,                          FALSE,  FALSE,
     EL_EMC_MAGIC_BALL_SWITCH,          ACTION_ACTIVE, -1
   },
+
   {
-    Xsand,                             TRUE,   FALSE,
-    EL_QUICKSAND_EMPTY,                        -1, -1
-  },
-  {
-    Xsand_stone,                       TRUE,   FALSE,
-    EL_QUICKSAND_FULL,                 -1, -1
+    Xbumper,                           TRUE,   FALSE,
+    EL_EMC_SPRING_BUMPER,              -1, -1
   },
   {
-    Xsand_stonein_1,                   FALSE,  TRUE,
-    EL_ROCK,                           ACTION_FILLING, -1
+    XbumperB,                          FALSE,  FALSE,
+    EL_EMC_SPRING_BUMPER,              ACTION_ACTIVE, -1
   },
+
   {
-    Xsand_stonein_2,                   FALSE,  TRUE,
-    EL_ROCK,                           ACTION_FILLING, -1
+    Xacid_nw,                          TRUE,   FALSE,
+    EL_ACID_POOL_TOPLEFT,              -1, -1
   },
   {
-    Xsand_stonein_3,                   FALSE,  TRUE,
-    EL_ROCK,                           ACTION_FILLING, -1
+    Xacid_ne,                          TRUE,   FALSE,
+    EL_ACID_POOL_TOPRIGHT,             -1, -1
   },
   {
-    Xsand_stonein_4,                   FALSE,  TRUE,
-    EL_ROCK,                           ACTION_FILLING, -1
+    Xacid_sw,                          TRUE,   FALSE,
+    EL_ACID_POOL_BOTTOMLEFT,           -1, -1
   },
   {
-    Xsand_stonesand_1,                 FALSE,  FALSE,
-    EL_QUICKSAND_EMPTYING,             -1, -1
+    Xacid_s,                           TRUE,   FALSE,
+    EL_ACID_POOL_BOTTOM,               -1, -1
   },
   {
-    Xsand_stonesand_2,                 FALSE,  FALSE,
-    EL_QUICKSAND_EMPTYING,             -1, -1
+    Xacid_se,                          TRUE,   FALSE,
+    EL_ACID_POOL_BOTTOMRIGHT,          -1, -1
   },
+
   {
-    Xsand_stonesand_3,                 FALSE,  FALSE,
-    EL_QUICKSAND_EMPTYING,             -1, -1
+    Xfake_blank,                       TRUE,   FALSE,
+    EL_INVISIBLE_WALL,                 -1, -1
   },
   {
-    Xsand_stonesand_4,                 FALSE,  FALSE,
-    EL_QUICKSAND_EMPTYING,             -1, -1
+    Xfake_blankB,                      FALSE,  FALSE,
+    EL_INVISIBLE_WALL,                 ACTION_ACTIVE, -1
   },
+
   {
-    Xsand_stonesand_quickout_1,                FALSE,  FALSE,
-    EL_QUICKSAND_EMPTYING,             -1, -1
+    Xfake_grass,                       TRUE,   FALSE,
+    EL_EMC_FAKE_GRASS,                 -1, -1
   },
   {
-    Xsand_stonesand_quickout_2,                FALSE,  FALSE,
-    EL_QUICKSAND_EMPTYING,             -1, -1
+    Xfake_grassB,                      FALSE,  FALSE,
+    EL_EMC_FAKE_GRASS,                 ACTION_ACTIVE, -1
   },
+
   {
-    Xsand_stoneout_1,                  FALSE,  FALSE,
-    EL_ROCK,                           ACTION_EMPTYING, -1
+    Xfake_amoeba,                      TRUE,   FALSE,
+    EL_EMC_DRIPPER,                    -1, -1
   },
   {
-    Xsand_stoneout_2,                  FALSE,  FALSE,
-    EL_ROCK,                           ACTION_EMPTYING, -1
+    Xfake_amoebaB,                     FALSE,  FALSE,
+    EL_EMC_DRIPPER,                    ACTION_ACTIVE, -1
   },
+
   {
-    Xsand_sandstone_1,                 FALSE,  FALSE,
-    EL_QUICKSAND_FILLING,              -1, -1
+    Xlenses,                           TRUE,   FALSE,
+    EL_EMC_LENSES,                     -1, -1
   },
+
   {
-    Xsand_sandstone_2,                 FALSE,  FALSE,
-    EL_QUICKSAND_FILLING,              -1, -1
+    Xmagnify,                          TRUE,   FALSE,
+    EL_EMC_MAGNIFIER,                  -1, -1
   },
+
   {
-    Xsand_sandstone_3,                 FALSE,  FALSE,
-    EL_QUICKSAND_FILLING,              -1, -1
+    Xsand,                             TRUE,   FALSE,
+    EL_QUICKSAND_EMPTY,                        -1, -1
   },
   {
-    Xsand_sandstone_4,                 FALSE,  FALSE,
-    EL_QUICKSAND_FILLING,              -1, -1
+    Xsand_stone,                       TRUE,   FALSE,
+    EL_QUICKSAND_FULL,                 -1, -1
   },
   {
-    Xplant,                            TRUE,   FALSE,
-    EL_EMC_PLANT,                      -1, -1
+    Xsand_stonein_1,                   FALSE,  TRUE,
+    EL_ROCK,                           ACTION_FILLING, -1
   },
   {
-    Yplant,                            FALSE,  FALSE,
-    EL_EMC_PLANT,                      -1, -1
+    Xsand_stonein_2,                   FALSE,  TRUE,
+    EL_ROCK,                           ACTION_FILLING, -1
   },
   {
-    Xlenses,                           TRUE,   FALSE,
-    EL_EMC_LENSES,                     -1, -1
+    Xsand_stonein_3,                   FALSE,  TRUE,
+    EL_ROCK,                           ACTION_FILLING, -1
   },
   {
-    Xmagnify,                          TRUE,   FALSE,
-    EL_EMC_MAGNIFIER,                  -1, -1
+    Xsand_stonein_4,                   FALSE,  TRUE,
+    EL_ROCK,                           ACTION_FILLING, -1
   },
   {
-    Xdripper,                          TRUE,   FALSE,
-    EL_EMC_DRIPPER,                    -1, -1
+    Xsand_sandstone_1,                 FALSE,  FALSE,
+    EL_QUICKSAND_FILLING,              -1, -1
   },
   {
-    XdripperB,                         FALSE,  FALSE,
-    EL_EMC_DRIPPER,                    ACTION_ACTIVE, -1
+    Xsand_sandstone_2,                 FALSE,  FALSE,
+    EL_QUICKSAND_FILLING,              -1, -1
   },
   {
-    Xfake_blank,                       TRUE,   FALSE,
-    EL_INVISIBLE_WALL,                 -1, -1
+    Xsand_sandstone_3,                 FALSE,  FALSE,
+    EL_QUICKSAND_FILLING,              -1, -1
   },
   {
-    Xfake_blankB,                      FALSE,  FALSE,
-    EL_INVISIBLE_WALL,                 ACTION_ACTIVE, -1
+    Xsand_sandstone_4,                 FALSE,  FALSE,
+    EL_QUICKSAND_FILLING,              -1, -1
   },
   {
-    Xfake_grass,                       TRUE,   FALSE,
-    EL_EMC_FAKE_GRASS,                 -1, -1
+    Xsand_stonesand_1,                 FALSE,  FALSE,
+    EL_QUICKSAND_EMPTYING,             -1, -1
   },
   {
-    Xfake_grassB,                      FALSE,  FALSE,
-    EL_EMC_FAKE_GRASS,                 ACTION_ACTIVE, -1
+    Xsand_stonesand_2,                 FALSE,  FALSE,
+    EL_QUICKSAND_EMPTYING,             -1, -1
   },
   {
-    Xfake_door_1,                      TRUE,   FALSE,
-    EL_EM_GATE_1_GRAY,                 -1, -1
+    Xsand_stonesand_3,                 FALSE,  FALSE,
+    EL_QUICKSAND_EMPTYING,             -1, -1
   },
   {
-    Xfake_door_2,                      TRUE,   FALSE,
-    EL_EM_GATE_2_GRAY,                 -1, -1
+    Xsand_stonesand_4,                 FALSE,  FALSE,
+    EL_QUICKSAND_EMPTYING,             -1, -1
   },
   {
-    Xfake_door_3,                      TRUE,   FALSE,
-    EL_EM_GATE_3_GRAY,                 -1, -1
+    Xsand_stoneout_1,                  FALSE,  FALSE,
+    EL_ROCK,                           ACTION_EMPTYING, -1
   },
   {
-    Xfake_door_4,                      TRUE,   FALSE,
-    EL_EM_GATE_4_GRAY,                 -1, -1
+    Xsand_stoneout_2,                  FALSE,  FALSE,
+    EL_ROCK,                           ACTION_EMPTYING, -1
   },
   {
-    Xfake_door_5,                      TRUE,   FALSE,
-    EL_EMC_GATE_5_GRAY,                        -1, -1
+    Xsand_stonesand_quickout_1,                FALSE,  FALSE,
+    EL_QUICKSAND_EMPTYING,             -1, -1
   },
   {
-    Xfake_door_6,                      TRUE,   FALSE,
-    EL_EMC_GATE_6_GRAY,                        -1, -1
+    Xsand_stonesand_quickout_2,                FALSE,  FALSE,
+    EL_QUICKSAND_EMPTYING,             -1, -1
   },
+
   {
-    Xfake_door_7,                      TRUE,   FALSE,
-    EL_EMC_GATE_7_GRAY,                        -1, -1
+    Xslidewall_ns,                     TRUE,   FALSE,
+    EL_EXPANDABLE_WALL_VERTICAL,       -1, -1
   },
   {
-    Xfake_door_8,                      TRUE,   FALSE,
-    EL_EMC_GATE_8_GRAY,                        -1, -1
+    Yslidewall_ns_blank,               FALSE,  FALSE,
+    EL_EXPANDABLE_WALL_VERTICAL,       ACTION_GROWING, -1
   },
   {
-    Xfake_acid_1,                      TRUE,   FALSE,
-    EL_EMC_FAKE_ACID,                  -1, -1
+    Xslidewall_ew,                     TRUE,   FALSE,
+    EL_EXPANDABLE_WALL_HORIZONTAL,     -1, -1
   },
   {
-    Xfake_acid_2,                      FALSE,  FALSE,
-    EL_EMC_FAKE_ACID,                  -1, -1
+    Yslidewall_ew_blank,               FALSE,  FALSE,
+    EL_EXPANDABLE_WALL_HORIZONTAL,     ACTION_GROWING, -1
   },
+
   {
-    Xfake_acid_3,                      FALSE,  FALSE,
-    EL_EMC_FAKE_ACID,                  -1, -1
+    Xwind_n,                           TRUE,   FALSE,
+    EL_BALLOON_SWITCH_UP,              -1, -1
   },
   {
-    Xfake_acid_4,                      FALSE,  FALSE,
-    EL_EMC_FAKE_ACID,                  -1, -1
+    Xwind_e,                           TRUE,   FALSE,
+    EL_BALLOON_SWITCH_RIGHT,           -1, -1
   },
   {
-    Xfake_acid_5,                      FALSE,  FALSE,
-    EL_EMC_FAKE_ACID,                  -1, -1
+    Xwind_s,                           TRUE,   FALSE,
+    EL_BALLOON_SWITCH_DOWN,            -1, -1
   },
   {
-    Xfake_acid_6,                      FALSE,  FALSE,
-    EL_EMC_FAKE_ACID,                  -1, -1
+    Xwind_w,                           TRUE,   FALSE,
+    EL_BALLOON_SWITCH_LEFT,            -1, -1
   },
   {
-    Xfake_acid_7,                      FALSE,  FALSE,
-    EL_EMC_FAKE_ACID,                  -1, -1
+    Xwind_any,                         TRUE,   FALSE,
+    EL_BALLOON_SWITCH_ANY,             -1, -1
   },
   {
-    Xfake_acid_8,                      FALSE,  FALSE,
-    EL_EMC_FAKE_ACID,                  -1, -1
+    Xwind_stop,                                TRUE,   FALSE,
+    EL_BALLOON_SWITCH_NONE,            -1, -1
   },
+
   {
-    Xsteel_1,                          TRUE,   FALSE,
-    EL_STEELWALL,                      -1, -1
+    Xexit,                             TRUE,   FALSE,
+    EL_EM_EXIT_CLOSED,                 -1, -1
   },
   {
-    Xsteel_2,                          TRUE,   FALSE,
-    EL_EMC_STEELWALL_2,                        -1, -1
+    Xexit_1,                           TRUE,   FALSE,
+    EL_EM_EXIT_OPEN,                   -1, -1
   },
   {
-    Xsteel_3,                          TRUE,   FALSE,
-    EL_EMC_STEELWALL_3,                        -1, -1
+    Xexit_2,                           FALSE,  FALSE,
+    EL_EM_EXIT_OPEN,                   -1, -1
   },
   {
-    Xsteel_4,                          TRUE,   FALSE,
-    EL_EMC_STEELWALL_4,                        -1, -1
+    Xexit_3,                           FALSE,  FALSE,
+    EL_EM_EXIT_OPEN,                   -1, -1
   },
+
   {
     Xwall_1,                           TRUE,   FALSE,
     EL_WALL,                           -1, -1
@@ -7105,22 +7101,41 @@ em_object_mapping_list[] =
     Xwall_4,                           TRUE,   FALSE,
     EL_EMC_WALL_16,                    -1, -1
   },
+
   {
-    Xround_wall_1,                     TRUE,   FALSE,
+    Xroundwall_1,                      TRUE,   FALSE,
     EL_WALL_SLIPPERY,                  -1, -1
   },
   {
-    Xround_wall_2,                     TRUE,   FALSE,
+    Xroundwall_2,                      TRUE,   FALSE,
     EL_EMC_WALL_SLIPPERY_2,            -1, -1
   },
   {
-    Xround_wall_3,                     TRUE,   FALSE,
+    Xroundwall_3,                      TRUE,   FALSE,
     EL_EMC_WALL_SLIPPERY_3,            -1, -1
   },
   {
-    Xround_wall_4,                     TRUE,   FALSE,
+    Xroundwall_4,                      TRUE,   FALSE,
     EL_EMC_WALL_SLIPPERY_4,            -1, -1
   },
+
+  {
+    Xsteel_1,                          TRUE,   FALSE,
+    EL_STEELWALL,                      -1, -1
+  },
+  {
+    Xsteel_2,                          TRUE,   FALSE,
+    EL_EMC_STEELWALL_2,                        -1, -1
+  },
+  {
+    Xsteel_3,                          TRUE,   FALSE,
+    EL_EMC_STEELWALL_3,                        -1, -1
+  },
+  {
+    Xsteel_4,                          TRUE,   FALSE,
+    EL_EMC_STEELWALL_4,                        -1, -1
+  },
+
   {
     Xdecor_1,                          TRUE,   FALSE,
     EL_EMC_WALL_8,                     -1, -1
@@ -7169,6 +7184,7 @@ em_object_mapping_list[] =
     Xdecor_12,                         TRUE,   FALSE,
     EL_EMC_WALL_12,                    -1, -1
   },
+
   {
     Xalpha_0,                          TRUE,   FALSE,
     EL_CHAR('0'),                      -1, -1
@@ -7354,6 +7370,55 @@ em_object_mapping_list[] =
     EL_CHAR(CHAR_BYTE_COPYRIGHT),      -1, -1
   },
 
+  {
+    Ykey_1_blank,                      FALSE,  FALSE,
+    EL_EM_KEY_1,                       ACTION_COLLECTING, -1
+  },
+  {
+    Ykey_2_blank,                      FALSE,  FALSE,
+    EL_EM_KEY_2,                       ACTION_COLLECTING, -1
+  },
+  {
+    Ykey_3_blank,                      FALSE,  FALSE,
+    EL_EM_KEY_3,                       ACTION_COLLECTING, -1
+  },
+  {
+    Ykey_4_blank,                      FALSE,  FALSE,
+    EL_EM_KEY_4,                       ACTION_COLLECTING, -1
+  },
+  {
+    Ykey_5_blank,                      FALSE,  FALSE,
+    EL_EMC_KEY_5,                      ACTION_COLLECTING, -1
+  },
+  {
+    Ykey_6_blank,                      FALSE,  FALSE,
+    EL_EMC_KEY_6,                      ACTION_COLLECTING, -1
+  },
+  {
+    Ykey_7_blank,                      FALSE,  FALSE,
+    EL_EMC_KEY_7,                      ACTION_COLLECTING, -1
+  },
+  {
+    Ykey_8_blank,                      FALSE,  FALSE,
+    EL_EMC_KEY_8,                      ACTION_COLLECTING, -1
+  },
+  {
+    Ylenses_blank,                     FALSE,  FALSE,
+    EL_EMC_LENSES,                     ACTION_COLLECTING, -1
+  },
+  {
+    Ymagnify_blank,                    FALSE,  FALSE,
+    EL_EMC_MAGNIFIER,                  ACTION_COLLECTING, -1
+  },
+  {
+    Ygrass_blank,                      FALSE,  FALSE,
+    EL_EMC_GRASS,                      ACTION_SNAPPING, -1
+  },
+  {
+    Ydirt_blank,                       FALSE,  FALSE,
+    EL_SAND,                           ACTION_SNAPPING, -1
+  },
+
   {
     Xboom_bug,                         FALSE,  FALSE,
     EL_BUG,                            ACTION_EXPLODING, -1
@@ -7387,7 +7452,7 @@ em_object_mapping_list[] =
     EL_EMPTY,                          -1, -1
   },
   {
-    ZBORDER,                           FALSE,  FALSE,
+    Zborder,                           FALSE,  FALSE,
     EL_EMPTY,                          -1, -1
   },
 
@@ -7409,211 +7474,211 @@ static struct Mapping_EM_to_RND_player
 em_player_mapping_list[] =
 {
   {
-    SPR_walk + 0,                      0,
+    PLY_walk_n,                                0,
     EL_PLAYER_1,                       ACTION_MOVING, MV_BIT_UP,
   },
   {
-    SPR_walk + 1,                      0,
+    PLY_walk_e,                                0,
     EL_PLAYER_1,                       ACTION_MOVING, MV_BIT_RIGHT,
   },
   {
-    SPR_walk + 2,                      0,
+    PLY_walk_s,                                0,
     EL_PLAYER_1,                       ACTION_MOVING, MV_BIT_DOWN,
   },
   {
-    SPR_walk + 3,                      0,
+    PLY_walk_w,                                0,
     EL_PLAYER_1,                       ACTION_MOVING, MV_BIT_LEFT,
   },
   {
-    SPR_push + 0,                      0,
+    PLY_push_n,                                0,
     EL_PLAYER_1,                       ACTION_PUSHING, MV_BIT_UP,
   },
   {
-    SPR_push + 1,                      0,
+    PLY_push_e,                                0,
     EL_PLAYER_1,                       ACTION_PUSHING, MV_BIT_RIGHT,
   },
   {
-    SPR_push + 2,                      0,
+    PLY_push_s,                                0,
     EL_PLAYER_1,                       ACTION_PUSHING, MV_BIT_DOWN,
   },
   {
-    SPR_push + 3,                      0,
+    PLY_push_w,                                0,
     EL_PLAYER_1,                       ACTION_PUSHING, MV_BIT_LEFT,
   },
   {
-    SPR_spray + 0,                     0,
+    PLY_shoot_n,                       0,
     EL_PLAYER_1,                       ACTION_SNAPPING, MV_BIT_UP,
   },
   {
-    SPR_spray + 1,                     0,
+    PLY_shoot_e,                       0,
     EL_PLAYER_1,                       ACTION_SNAPPING, MV_BIT_RIGHT,
   },
   {
-    SPR_spray + 2,                     0,
+    PLY_shoot_s,                       0,
     EL_PLAYER_1,                       ACTION_SNAPPING, MV_BIT_DOWN,
   },
   {
-    SPR_spray + 3,                     0,
+    PLY_shoot_w,                       0,
     EL_PLAYER_1,                       ACTION_SNAPPING, MV_BIT_LEFT,
   },
   {
-    SPR_walk + 0,                      1,
+    PLY_walk_n,                                1,
     EL_PLAYER_2,                       ACTION_MOVING, MV_BIT_UP,
   },
   {
-    SPR_walk + 1,                      1,
+    PLY_walk_e,                                1,
     EL_PLAYER_2,                       ACTION_MOVING, MV_BIT_RIGHT,
   },
   {
-    SPR_walk + 2,                      1,
+    PLY_walk_s,                                1,
     EL_PLAYER_2,                       ACTION_MOVING, MV_BIT_DOWN,
   },
   {
-    SPR_walk + 3,                      1,
+    PLY_walk_w,                                1,
     EL_PLAYER_2,                       ACTION_MOVING, MV_BIT_LEFT,
   },
   {
-    SPR_push + 0,                      1,
+    PLY_push_n,                                1,
     EL_PLAYER_2,                       ACTION_PUSHING, MV_BIT_UP,
   },
   {
-    SPR_push + 1,                      1,
+    PLY_push_e,                                1,
     EL_PLAYER_2,                       ACTION_PUSHING, MV_BIT_RIGHT,
   },
   {
-    SPR_push + 2,                      1,
+    PLY_push_s,                                1,
     EL_PLAYER_2,                       ACTION_PUSHING, MV_BIT_DOWN,
   },
   {
-    SPR_push + 3,                      1,
+    PLY_push_w,                                1,
     EL_PLAYER_2,                       ACTION_PUSHING, MV_BIT_LEFT,
   },
   {
-    SPR_spray + 0,                     1,
+    PLY_shoot_n,                       1,
     EL_PLAYER_2,                       ACTION_SNAPPING, MV_BIT_UP,
   },
   {
-    SPR_spray + 1,                     1,
+    PLY_shoot_e,                       1,
     EL_PLAYER_2,                       ACTION_SNAPPING, MV_BIT_RIGHT,
   },
   {
-    SPR_spray + 2,                     1,
+    PLY_shoot_s,                       1,
     EL_PLAYER_2,                       ACTION_SNAPPING, MV_BIT_DOWN,
   },
   {
-    SPR_spray + 3,                     1,
+    PLY_shoot_w,                       1,
     EL_PLAYER_2,                       ACTION_SNAPPING, MV_BIT_LEFT,
   },
   {
-    SPR_still,                         0,
+    PLY_still,                         0,
     EL_PLAYER_1,                       ACTION_DEFAULT, -1,
   },
   {
-    SPR_still,                         1,
+    PLY_still,                         1,
     EL_PLAYER_2,                       ACTION_DEFAULT, -1,
   },
   {
-    SPR_walk + 0,                      2,
+    PLY_walk_n,                                2,
     EL_PLAYER_3,                       ACTION_MOVING, MV_BIT_UP,
   },
   {
-    SPR_walk + 1,                      2,
+    PLY_walk_e,                                2,
     EL_PLAYER_3,                       ACTION_MOVING, MV_BIT_RIGHT,
   },
   {
-    SPR_walk + 2,                      2,
+    PLY_walk_s,                                2,
     EL_PLAYER_3,                       ACTION_MOVING, MV_BIT_DOWN,
   },
   {
-    SPR_walk + 3,                      2,
+    PLY_walk_w,                                2,
     EL_PLAYER_3,                       ACTION_MOVING, MV_BIT_LEFT,
   },
   {
-    SPR_push + 0,                      2,
+    PLY_push_n,                                2,
     EL_PLAYER_3,                       ACTION_PUSHING, MV_BIT_UP,
   },
   {
-    SPR_push + 1,                      2,
+    PLY_push_e,                                2,
     EL_PLAYER_3,                       ACTION_PUSHING, MV_BIT_RIGHT,
   },
   {
-    SPR_push + 2,                      2,
+    PLY_push_s,                                2,
     EL_PLAYER_3,                       ACTION_PUSHING, MV_BIT_DOWN,
   },
   {
-    SPR_push + 3,                      2,
+    PLY_push_w,                                2,
     EL_PLAYER_3,                       ACTION_PUSHING, MV_BIT_LEFT,
   },
   {
-    SPR_spray + 0,                     2,
+    PLY_shoot_n,                       2,
     EL_PLAYER_3,                       ACTION_SNAPPING, MV_BIT_UP,
   },
   {
-    SPR_spray + 1,                     2,
+    PLY_shoot_e,                       2,
     EL_PLAYER_3,                       ACTION_SNAPPING, MV_BIT_RIGHT,
   },
   {
-    SPR_spray + 2,                     2,
+    PLY_shoot_s,                       2,
     EL_PLAYER_3,                       ACTION_SNAPPING, MV_BIT_DOWN,
   },
   {
-    SPR_spray + 3,                     2,
+    PLY_shoot_w,                       2,
     EL_PLAYER_3,                       ACTION_SNAPPING, MV_BIT_LEFT,
   },
   {
-    SPR_walk + 0,                      3,
+    PLY_walk_n,                                3,
     EL_PLAYER_4,                       ACTION_MOVING, MV_BIT_UP,
   },
   {
-    SPR_walk + 1,                      3,
+    PLY_walk_e,                                3,
     EL_PLAYER_4,                       ACTION_MOVING, MV_BIT_RIGHT,
   },
   {
-    SPR_walk + 2,                      3,
+    PLY_walk_s,                                3,
     EL_PLAYER_4,                       ACTION_MOVING, MV_BIT_DOWN,
   },
   {
-    SPR_walk + 3,                      3,
+    PLY_walk_w,                                3,
     EL_PLAYER_4,                       ACTION_MOVING, MV_BIT_LEFT,
   },
   {
-    SPR_push + 0,                      3,
+    PLY_push_n,                                3,
     EL_PLAYER_4,                       ACTION_PUSHING, MV_BIT_UP,
   },
   {
-    SPR_push + 1,                      3,
+    PLY_push_e,                                3,
     EL_PLAYER_4,                       ACTION_PUSHING, MV_BIT_RIGHT,
   },
   {
-    SPR_push + 2,                      3,
+    PLY_push_s,                                3,
     EL_PLAYER_4,                       ACTION_PUSHING, MV_BIT_DOWN,
   },
   {
-    SPR_push + 3,                      3,
+    PLY_push_w,                                3,
     EL_PLAYER_4,                       ACTION_PUSHING, MV_BIT_LEFT,
   },
   {
-    SPR_spray + 0,                     3,
+    PLY_shoot_n,                       3,
     EL_PLAYER_4,                       ACTION_SNAPPING, MV_BIT_UP,
   },
   {
-    SPR_spray + 1,                     3,
+    PLY_shoot_e,                       3,
     EL_PLAYER_4,                       ACTION_SNAPPING, MV_BIT_RIGHT,
   },
   {
-    SPR_spray + 2,                     3,
+    PLY_shoot_s,                       3,
     EL_PLAYER_4,                       ACTION_SNAPPING, MV_BIT_DOWN,
   },
   {
-    SPR_spray + 3,                     3,
+    PLY_shoot_w,                       3,
     EL_PLAYER_4,                       ACTION_SNAPPING, MV_BIT_LEFT,
   },
   {
-    SPR_still,                         2,
+    PLY_still,                         2,
     EL_PLAYER_3,                       ACTION_DEFAULT, -1,
   },
   {
-    SPR_still,                         3,
+    PLY_still,                         3,
     EL_PLAYER_4,                       ACTION_DEFAULT, -1,
   },
 
@@ -8179,7 +8244,7 @@ unsigned int InitRND(int seed)
 }
 
 static struct Mapping_EM_to_RND_object object_mapping[TILE_MAX];
-static struct Mapping_EM_to_RND_player player_mapping[MAX_PLAYERS][SPR_MAX];
+static struct Mapping_EM_to_RND_player player_mapping[MAX_PLAYERS][PLY_MAX];
 
 static int get_effective_element_EM(int tile, int frame_em)
 {
@@ -8194,8 +8259,8 @@ static int get_effective_element_EM(int tile, int frame_em)
   {
     switch (tile)
     {
-      case Yacid_splash_eB:
-      case Yacid_splash_wB:
+      case Xacid_splash_e:
+      case Xacid_splash_w:
        return (frame_em > 5 ? EL_EMPTY : element);
 
       default:
@@ -8206,11 +8271,11 @@ static int get_effective_element_EM(int tile, int frame_em)
   {
     switch (tile)
     {
-      case Yacid_splash_eB:
-      case Yacid_splash_wB:
+      case Xacid_splash_e:
+      case Xacid_splash_w:
        return EL_EMPTY;
 
-      case Yemerald_stone:
+      case Ynut_stone:
        return EL_EMERALD;
 
       case Ydiamond_stone:
@@ -8218,24 +8283,24 @@ static int get_effective_element_EM(int tile, int frame_em)
 
       case Xdrip_stretch:
       case Xdrip_stretchB:
-      case Ydrip_s1:
-      case Ydrip_s1B:
-      case Xball_1B:
+      case Ydrip_1_s:
+      case Ydrip_1_sB:
+      case Yball_1:
       case Xball_2:
-      case Xball_2B:
-      case Yball_eat:
-      case Ykey_1_eat:
-      case Ykey_2_eat:
-      case Ykey_3_eat:
-      case Ykey_4_eat:
-      case Ykey_5_eat:
-      case Ykey_6_eat:
-      case Ykey_7_eat:
-      case Ykey_8_eat:
-      case Ylenses_eat:
-      case Ymagnify_eat:
-      case Ygrass_eat:
-      case Ydirt_eat:
+      case Yball_2:
+      case Yball_blank:
+      case Ykey_1_blank:
+      case Ykey_2_blank:
+      case Ykey_3_blank:
+      case Ykey_4_blank:
+      case Ykey_5_blank:
+      case Ykey_6_blank:
+      case Ykey_7_blank:
+      case Ykey_8_blank:
+      case Ylenses_blank:
+      case Ymagnify_blank:
+      case Ygrass_blank:
+      case Ydirt_blank:
       case Xsand_stonein_1:
       case Xsand_stonein_2:
       case Xsand_stonein_3:
@@ -8275,9 +8340,9 @@ static boolean check_linear_animation_EM(int tile)
     case Ytank_s_e:
     case Ytank_w_s:
     case Ytank_n_w:
-    case Yacid_splash_eB:
-    case Yacid_splash_wB:
-    case Yemerald_stone:
+    case Xacid_splash_e:
+    case Xacid_splash_w:
+    case Ynut_stone:
       return TRUE;
   }
 
@@ -8548,7 +8613,7 @@ void InitGraphicInfo_EM(void)
   // always start with reliable default values
   for (p = 0; p < MAX_PLAYERS; p++)
   {
-    for (i = 0; i < SPR_MAX; i++)
+    for (i = 0; i < PLY_MAX; i++)
     {
       player_mapping[p][i].element_rnd = EL_UNKNOWN;
       player_mapping[p][i].action = ACTION_DEFAULT;
@@ -8605,24 +8670,24 @@ void InitGraphicInfo_EM(void)
       int effective_action = (j < 7 ? action :
                              i == Xdrip_stretch ? action :
                              i == Xdrip_stretchB ? action :
-                             i == Ydrip_s1 ? action :
-                             i == Ydrip_s1B ? action :
-                             i == Xball_1B ? action :
+                             i == Ydrip_1_s ? action :
+                             i == Ydrip_1_sB ? action :
+                             i == Yball_1 ? action :
                              i == Xball_2 ? action :
-                             i == Xball_2B ? action :
-                             i == Yball_eat ? action :
-                             i == Ykey_1_eat ? action :
-                             i == Ykey_2_eat ? action :
-                             i == Ykey_3_eat ? action :
-                             i == Ykey_4_eat ? action :
-                             i == Ykey_5_eat ? action :
-                             i == Ykey_6_eat ? action :
-                             i == Ykey_7_eat ? action :
-                             i == Ykey_8_eat ? action :
-                             i == Ylenses_eat ? action :
-                             i == Ymagnify_eat ? action :
-                             i == Ygrass_eat ? action :
-                             i == Ydirt_eat ? action :
+                             i == Yball_2 ? action :
+                             i == Yball_blank ? action :
+                             i == Ykey_1_blank ? action :
+                             i == Ykey_2_blank ? action :
+                             i == Ykey_3_blank ? action :
+                             i == Ykey_4_blank ? action :
+                             i == Ykey_5_blank ? action :
+                             i == Ykey_6_blank ? action :
+                             i == Ykey_7_blank ? action :
+                             i == Ykey_8_blank ? action :
+                             i == Ylenses_blank ? action :
+                             i == Ymagnify_blank ? action :
+                             i == Ygrass_blank ? action :
+                             i == Ydirt_blank ? action :
                              i == Xsand_stonein_1 ? action :
                              i == Xsand_stonein_2 ? action :
                              i == Xsand_stonein_3 ? action :
@@ -8653,8 +8718,8 @@ void InitGraphicInfo_EM(void)
                                   g->anim_mode & ANIM_LINEAR);
       int sync_frame = (i == Xdrip_stretch ? 7 :
                        i == Xdrip_stretchB ? 7 :
-                       i == Ydrip_s2 ? j + 8 :
-                       i == Ydrip_s2B ? j + 8 :
+                       i == Ydrip_2_s ? j + 8 :
+                       i == Ydrip_2_sB ? j + 8 :
                        i == Xacid_1 ? 0 :
                        i == Xacid_2 ? 10 :
                        i == Xacid_3 ? 20 :
@@ -8672,20 +8737,20 @@ void InitGraphicInfo_EM(void)
                        i == Xfake_acid_7 ? 60 :
                        i == Xfake_acid_8 ? 70 :
                        i == Xball_2 ? 7 :
-                       i == Xball_2B ? j + 8 :
-                       i == Yball_eat ? j + 1 :
-                       i == Ykey_1_eat ? j + 1 :
-                       i == Ykey_2_eat ? j + 1 :
-                       i == Ykey_3_eat ? j + 1 :
-                       i == Ykey_4_eat ? j + 1 :
-                       i == Ykey_5_eat ? j + 1 :
-                       i == Ykey_6_eat ? j + 1 :
-                       i == Ykey_7_eat ? j + 1 :
-                       i == Ykey_8_eat ? j + 1 :
-                       i == Ylenses_eat ? j + 1 :
-                       i == Ymagnify_eat ? j + 1 :
-                       i == Ygrass_eat ? j + 1 :
-                       i == Ydirt_eat ? j + 1 :
+                       i == Yball_2 ? j + 8 :
+                       i == Yball_blank ? j + 1 :
+                       i == Ykey_1_blank ? j + 1 :
+                       i == Ykey_2_blank ? j + 1 :
+                       i == Ykey_3_blank ? j + 1 :
+                       i == Ykey_4_blank ? j + 1 :
+                       i == Ykey_5_blank ? j + 1 :
+                       i == Ykey_6_blank ? j + 1 :
+                       i == Ykey_7_blank ? j + 1 :
+                       i == Ykey_8_blank ? j + 1 :
+                       i == Ylenses_blank ? j + 1 :
+                       i == Ymagnify_blank ? j + 1 :
+                       i == Ygrass_blank ? j + 1 :
+                       i == Ydirt_blank ? j + 1 :
                        i == Xamoeba_1 ? 0 :
                        i == Xamoeba_2 ? 1 :
                        i == Xamoeba_3 ? 2 :
@@ -8797,10 +8862,10 @@ void InitGraphicInfo_EM(void)
           effective_action == ACTION_EMPTYING ? MV_DOWN : direction);
        int dx = (move_dir == MV_LEFT ? -1 : move_dir == MV_RIGHT ? 1 : 0);
        int dy = (move_dir == MV_UP   ? -1 : move_dir == MV_DOWN  ? 1 : 0);
-       int num_steps = (i == Ydrip_s1  ? 16 :
-                        i == Ydrip_s1B ? 16 :
-                        i == Ydrip_s2  ? 16 :
-                        i == Ydrip_s2B ? 16 :
+       int num_steps = (i == Ydrip_1_s  ? 16 :
+                        i == Ydrip_1_sB ? 16 :
+                        i == Ydrip_2_s  ? 16 :
+                        i == Ydrip_2_sB ? 16 :
                         i == Xsand_stonein_1 ? 32 :
                         i == Xsand_stonein_2 ? 32 :
                         i == Xsand_stonein_3 ? 32 :
@@ -8809,8 +8874,8 @@ void InitGraphicInfo_EM(void)
                         i == Xsand_stoneout_2 ? 16 : 8);
        int cx = ABS(dx) * (TILEX / num_steps);
        int cy = ABS(dy) * (TILEY / num_steps);
-       int step_frame = (i == Ydrip_s2         ? j + 8 :
-                         i == Ydrip_s2B        ? j + 8 :
+       int step_frame = (i == Ydrip_2_s        ? j + 8 :
+                         i == Ydrip_2_sB       ? j + 8 :
                          i == Xsand_stonein_2  ? j + 8 :
                          i == Xsand_stonein_3  ? j + 16 :
                          i == Xsand_stonein_4  ? j + 24 :
@@ -8971,7 +9036,7 @@ void InitGraphicInfo_EM(void)
 
   for (p = 0; p < MAX_PLAYERS; p++)
   {
-    for (i = 0; i < SPR_MAX; i++)
+    for (i = 0; i < PLY_MAX; i++)
     {
       int element = player_mapping[p][i].element_rnd;
       int action = player_mapping[p][i].action;