X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=366303b22e49d5236b65e5ebe2b04186a6cd8f8e;hb=9e54f3f605e0999f4f2d866107449c247493e957;hp=47c4b4f8536a52c4a6d10a51bdcc95a6e62cb4a4;hpb=c398ca9a4ced4876db53ac5543c936380b762ddd;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 47c4b4f8..366303b2 100644 --- a/src/tools.c +++ b/src/tools.c @@ -23,8 +23,6 @@ #include "screens.h" -// select level set with EMC X11 graphics before activating EM GFX debugging -#define DEBUG_EM_GFX FALSE #define DEBUG_FRAME_TIME FALSE // tool button identifiers @@ -35,8 +33,11 @@ #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 @@ -296,7 +297,7 @@ static int getLevelFromScreenY_RND(int sy) static int getLevelFromScreenX_EM(int sx) { - int level_xsize = level.native_em_level->lev->width; + int level_xsize = level.native_em_level->cav->width; int full_xsize = level_xsize * TILESIZE_VAR; sx -= (full_xsize < SXSIZE ? (SXSIZE - full_xsize) / 2 : 0); @@ -313,7 +314,7 @@ static int getLevelFromScreenX_EM(int sx) static int getLevelFromScreenY_EM(int sy) { - int level_ysize = level.native_em_level->lev->height; + int level_ysize = level.native_em_level->cav->height; int full_ysize = level_ysize * TILESIZE_VAR; sy -= (full_ysize < SYSIZE ? (SYSIZE - full_ysize) / 2 : 0); @@ -1064,7 +1065,8 @@ void FadeIn(int fade_mask) void FadeOut(int fade_mask) { // update screen if areas covered by "fade_mask" and "redraw_mask" differ - if (!equalRedrawMasks(fade_mask, redraw_mask)) + if (!equalRedrawMasks(fade_mask, redraw_mask) && + fade_type_skip != FADE_MODE_SKIP_FADE_OUT) BackToFront(); SetScreenStates_BeforeFadingOut(); @@ -2845,7 +2847,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(); @@ -3132,10 +3134,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) { @@ -4338,12 +4343,15 @@ static int RequestHandleEvents(unsigned int req_state) 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; @@ -4361,6 +4369,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; } @@ -4673,10 +4683,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) { @@ -5548,36 +5561,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" } }; @@ -5594,8 +5620,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; @@ -5604,9 +5631,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 || @@ -5653,8 +5680,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, @@ -5666,6 +5693,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); @@ -5711,613 +5739,600 @@ static struct Mapping_EM_to_RND_object em_object_mapping_list[] = { { - Xblank, TRUE, FALSE, + Zborder, FALSE, FALSE, EL_EMPTY, -1, -1 }, { - Yacid_splash_eB, FALSE, FALSE, - EL_ACID_SPLASH_RIGHT, -1, -1 - }, - { - Yacid_splash_wB, FALSE, FALSE, - EL_ACID_SPLASH_LEFT, -1, -1 + Zplayer, FALSE, FALSE, + EL_EMPTY, -1, -1 }, -#ifdef EM_ENGINE_BAD_ROLL { - Xstone_force_e, FALSE, FALSE, - EL_ROCK, -1, MV_BIT_RIGHT + Zbug, FALSE, FALSE, + EL_EMPTY, -1, -1 }, { - Xstone_force_w, FALSE, FALSE, - EL_ROCK, -1, MV_BIT_LEFT + Ztank, FALSE, FALSE, + EL_EMPTY, -1, -1 }, { - Xnut_force_e, FALSE, FALSE, - EL_NUT, -1, MV_BIT_RIGHT + Zeater, FALSE, FALSE, + EL_EMPTY, -1, -1 }, { - Xnut_force_w, FALSE, FALSE, - EL_NUT, -1, MV_BIT_LEFT + Zdynamite, FALSE, FALSE, + EL_EMPTY, -1, -1 }, + { - Xspring_force_e, FALSE, FALSE, - EL_SPRING, -1, MV_BIT_RIGHT + Xboom_bug, FALSE, FALSE, + EL_BUG, ACTION_EXPLODING, -1 }, { - Xspring_force_w, FALSE, FALSE, - EL_SPRING, -1, MV_BIT_LEFT + Xboom_tank, FALSE, FALSE, + EL_SPACESHIP, ACTION_EXPLODING, -1 }, { - Xemerald_force_e, FALSE, FALSE, - EL_EMERALD, -1, MV_BIT_RIGHT + Xboom_android, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_OTHER, -1 }, { - Xemerald_force_w, FALSE, FALSE, - EL_EMERALD, -1, MV_BIT_LEFT + Xboom_1, FALSE, FALSE, + EL_DEFAULT, ACTION_EXPLODING, -1 }, { - Xdiamond_force_e, FALSE, FALSE, - EL_DIAMOND, -1, MV_BIT_RIGHT + Xboom_2, FALSE, FALSE, + EL_DEFAULT, ACTION_EXPLODING, -1 }, + { - Xdiamond_force_w, FALSE, FALSE, - EL_DIAMOND, -1, MV_BIT_LEFT + Xblank, TRUE, FALSE, + EL_EMPTY, -1, -1 }, + { - Xbomb_force_e, FALSE, FALSE, - EL_BOMB, -1, MV_BIT_RIGHT + Xsplash_e, FALSE, FALSE, + EL_ACID_SPLASH_RIGHT, -1, -1 }, { - Xbomb_force_w, FALSE, FALSE, - EL_BOMB, -1, MV_BIT_LEFT + Xsplash_w, FALSE, FALSE, + EL_ACID_SPLASH_LEFT, -1, -1 }, -#endif // EM_ENGINE_BAD_ROLL { - Xstone, TRUE, FALSE, - EL_ROCK, -1, -1 + Xplant, TRUE, FALSE, + EL_EMC_PLANT, -1, -1 }, { - Xstone_pause, FALSE, FALSE, - EL_ROCK, -1, -1 + Yplant, FALSE, FALSE, + EL_EMC_PLANT, -1, -1 }, + { - Xstone_fall, FALSE, FALSE, - EL_ROCK, -1, -1 + Xacid_1, TRUE, FALSE, + EL_ACID, -1, -1 }, { - Ystone_s, FALSE, FALSE, - EL_ROCK, ACTION_FALLING, -1 + Xacid_2, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Ystone_sB, FALSE, TRUE, - EL_ROCK, ACTION_FALLING, -1 + Xacid_3, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Ystone_e, FALSE, FALSE, - EL_ROCK, ACTION_MOVING, MV_BIT_RIGHT + Xacid_4, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Ystone_eB, FALSE, TRUE, - EL_ROCK, ACTION_MOVING, MV_BIT_RIGHT + Xacid_5, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Ystone_w, FALSE, FALSE, - EL_ROCK, ACTION_MOVING, MV_BIT_LEFT + Xacid_6, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Ystone_wB, FALSE, TRUE, - EL_ROCK, ACTION_MOVING, MV_BIT_LEFT + Xacid_7, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Xnut, TRUE, FALSE, - EL_NUT, -1, -1 + Xacid_8, FALSE, FALSE, + EL_ACID, -1, -1 }, + { - Xnut_pause, FALSE, FALSE, - EL_NUT, -1, -1 + Xfake_acid_1, TRUE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Xnut_fall, FALSE, FALSE, - EL_NUT, -1, -1 + Xfake_acid_2, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ynut_s, FALSE, FALSE, - EL_NUT, ACTION_FALLING, -1 + Xfake_acid_3, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ynut_sB, FALSE, TRUE, - EL_NUT, ACTION_FALLING, -1 + Xfake_acid_4, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ynut_e, FALSE, FALSE, - EL_NUT, ACTION_MOVING, MV_BIT_RIGHT + Xfake_acid_5, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ynut_eB, FALSE, TRUE, - EL_NUT, ACTION_MOVING, MV_BIT_RIGHT + Xfake_acid_6, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ynut_w, FALSE, FALSE, - EL_NUT, ACTION_MOVING, MV_BIT_LEFT + Xfake_acid_7, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ynut_wB, FALSE, TRUE, - EL_NUT, ACTION_MOVING, MV_BIT_LEFT + Xfake_acid_8, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, + { - Xbug_n, TRUE, FALSE, - EL_BUG_UP, -1, -1 + Xgrass, TRUE, FALSE, + EL_EMC_GRASS, -1, -1 }, { - Xbug_e, TRUE, FALSE, - EL_BUG_RIGHT, -1, -1 + Ygrass_nB, FALSE, FALSE, + EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_UP }, { - Xbug_s, TRUE, FALSE, - EL_BUG_DOWN, -1, -1 + Ygrass_eB, FALSE, FALSE, + EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_RIGHT }, { - Xbug_w, TRUE, FALSE, - EL_BUG_LEFT, -1, -1 + Ygrass_sB, FALSE, FALSE, + EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_DOWN }, { - Xbug_gon, FALSE, FALSE, - EL_BUG_UP, -1, -1 + Ygrass_wB, FALSE, FALSE, + EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_LEFT }, + { - Xbug_goe, FALSE, FALSE, - EL_BUG_RIGHT, -1, -1 + Xdirt, TRUE, FALSE, + EL_SAND, -1, -1 }, { - Xbug_gos, FALSE, FALSE, - EL_BUG_DOWN, -1, -1 + Ydirt_nB, FALSE, FALSE, + EL_SAND, ACTION_DIGGING, MV_BIT_UP }, { - Xbug_gow, FALSE, FALSE, - EL_BUG_LEFT, -1, -1 + Ydirt_eB, FALSE, FALSE, + EL_SAND, ACTION_DIGGING, MV_BIT_RIGHT }, { - Ybug_n, FALSE, FALSE, - EL_BUG, ACTION_MOVING, MV_BIT_UP + Ydirt_sB, FALSE, FALSE, + EL_SAND, ACTION_DIGGING, MV_BIT_DOWN }, { - Ybug_nB, FALSE, TRUE, - EL_BUG, ACTION_MOVING, MV_BIT_UP + Ydirt_wB, FALSE, FALSE, + EL_SAND, ACTION_DIGGING, MV_BIT_LEFT }, + { - Ybug_e, FALSE, FALSE, - EL_BUG, ACTION_MOVING, MV_BIT_RIGHT + Xandroid, TRUE, FALSE, + EL_EMC_ANDROID, ACTION_ACTIVE, -1 }, { - Ybug_eB, FALSE, TRUE, - EL_BUG, ACTION_MOVING, MV_BIT_RIGHT + Xandroid_1_n, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_ACTIVE, MV_BIT_UP }, { - Ybug_s, FALSE, FALSE, - EL_BUG, ACTION_MOVING, MV_BIT_DOWN + Xandroid_2_n, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_ACTIVE, MV_BIT_UP }, { - Ybug_sB, FALSE, TRUE, - EL_BUG, ACTION_MOVING, MV_BIT_DOWN + Xandroid_1_e, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_ACTIVE, MV_BIT_RIGHT }, { - Ybug_w, FALSE, FALSE, - EL_BUG, ACTION_MOVING, MV_BIT_LEFT + Xandroid_2_e, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_ACTIVE, MV_BIT_RIGHT }, { - Ybug_wB, FALSE, TRUE, - EL_BUG, ACTION_MOVING, MV_BIT_LEFT + Xandroid_1_w, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_ACTIVE, MV_BIT_LEFT }, { - Ybug_w_n, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_LEFT, MV_BIT_UP + Xandroid_2_w, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_ACTIVE, MV_BIT_LEFT }, { - Ybug_n_e, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_UP, MV_BIT_RIGHT + Xandroid_1_s, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_ACTIVE, MV_BIT_DOWN }, { - Ybug_e_s, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_RIGHT, MV_BIT_DOWN + Xandroid_2_s, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_ACTIVE, MV_BIT_DOWN }, { - Ybug_s_w, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_DOWN, MV_BIT_LEFT + Yandroid_n, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_UP }, { - Ybug_e_n, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_RIGHT, MV_BIT_UP + Yandroid_nB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_UP }, { - Ybug_s_e, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_DOWN, MV_BIT_RIGHT + Yandroid_ne, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_GROWING, MV_BIT_UPRIGHT }, { - Ybug_w_s, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_LEFT, MV_BIT_DOWN + Yandroid_neB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_SHRINKING, MV_BIT_UPRIGHT }, { - Ybug_n_w, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_UP, MV_BIT_LEFT + Yandroid_e, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_RIGHT }, { - Ybug_stone, FALSE, FALSE, - EL_BUG, ACTION_SMASHED_BY_ROCK, -1 + Yandroid_eB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_RIGHT }, { - Ybug_spring, FALSE, FALSE, - EL_BUG, ACTION_SMASHED_BY_SPRING, -1 + Yandroid_se, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_GROWING, MV_BIT_DOWNRIGHT }, { - Xtank_n, TRUE, FALSE, - EL_SPACESHIP_UP, -1, -1 + Yandroid_seB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_SHRINKING, MV_BIT_DOWNRIGHT }, { - Xtank_e, TRUE, FALSE, - EL_SPACESHIP_RIGHT, -1, -1 + Yandroid_s, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_DOWN }, { - Xtank_s, TRUE, FALSE, - EL_SPACESHIP_DOWN, -1, -1 + Yandroid_sB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_DOWN }, { - Xtank_w, TRUE, FALSE, - EL_SPACESHIP_LEFT, -1, -1 + Yandroid_sw, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_GROWING, MV_BIT_DOWNLEFT }, { - Xtank_gon, FALSE, FALSE, - EL_SPACESHIP_UP, -1, -1 + Yandroid_swB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_SHRINKING, MV_BIT_DOWNLEFT }, { - Xtank_goe, FALSE, FALSE, - EL_SPACESHIP_RIGHT, -1, -1 + Yandroid_w, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_LEFT }, { - Xtank_gos, FALSE, FALSE, - EL_SPACESHIP_DOWN, -1, -1 + Yandroid_wB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_LEFT }, { - Xtank_gow, FALSE, FALSE, - EL_SPACESHIP_LEFT, -1, -1 + Yandroid_nw, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_GROWING, MV_BIT_UPLEFT }, { - Ytank_n, FALSE, FALSE, - EL_SPACESHIP, ACTION_MOVING, MV_BIT_UP + Yandroid_nwB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_SHRINKING, MV_BIT_UPLEFT }, + { - Ytank_nB, FALSE, TRUE, - EL_SPACESHIP, ACTION_MOVING, MV_BIT_UP + Xeater_n, TRUE, FALSE, + EL_YAMYAM_UP, -1, -1 }, { - Ytank_e, FALSE, FALSE, - EL_SPACESHIP, ACTION_MOVING, MV_BIT_RIGHT + Xeater_e, TRUE, FALSE, + EL_YAMYAM_RIGHT, -1, -1 }, { - 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 + Xeater_w, TRUE, FALSE, + EL_YAMYAM_LEFT, -1, -1 }, { - Ytank_n_e, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_UP, MV_BIT_RIGHT + Xeater_s, TRUE, FALSE, + EL_YAMYAM_DOWN, -1, -1 }, { - Ytank_e_s, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_RIGHT, MV_BIT_DOWN + Yeater_n, FALSE, FALSE, + EL_YAMYAM, ACTION_MOVING, MV_BIT_UP }, { - Ytank_s_w, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_DOWN, MV_BIT_LEFT + Yeater_nB, FALSE, TRUE, + EL_YAMYAM, ACTION_MOVING, MV_BIT_UP }, { - Ytank_e_n, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_RIGHT, MV_BIT_UP + Yeater_e, FALSE, FALSE, + EL_YAMYAM, ACTION_MOVING, MV_BIT_RIGHT }, { - Ytank_s_e, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_DOWN, MV_BIT_RIGHT + Yeater_eB, FALSE, TRUE, + EL_YAMYAM, ACTION_MOVING, MV_BIT_RIGHT }, { - Ytank_w_s, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_LEFT, MV_BIT_DOWN + Yeater_s, FALSE, FALSE, + EL_YAMYAM, ACTION_MOVING, MV_BIT_DOWN }, { - Ytank_n_w, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_UP, MV_BIT_LEFT + Yeater_sB, FALSE, TRUE, + EL_YAMYAM, ACTION_MOVING, MV_BIT_DOWN }, { - Ytank_stone, FALSE, FALSE, - EL_SPACESHIP, ACTION_SMASHED_BY_ROCK, -1 + Yeater_w, FALSE, FALSE, + EL_YAMYAM, ACTION_MOVING, MV_BIT_LEFT }, { - Ytank_spring, FALSE, FALSE, - EL_SPACESHIP, ACTION_SMASHED_BY_SPRING, -1 + Yeater_wB, FALSE, TRUE, + EL_YAMYAM, ACTION_MOVING, MV_BIT_LEFT }, { - Xandroid, TRUE, FALSE, - EL_EMC_ANDROID, ACTION_ACTIVE, -1 + Yeater_stone, FALSE, FALSE, + EL_YAMYAM, ACTION_SMASHED_BY_ROCK, -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 @@ -6359,13 +6374,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 @@ -6407,45 +6419,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 @@ -6483,229 +6501,343 @@ 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 + Xnut, TRUE, FALSE, + EL_NUT, -1, -1 }, { - Yballoon_n, FALSE, FALSE, - EL_BALLOON, ACTION_MOVING, MV_BIT_UP + Xnut_pause, FALSE, FALSE, + EL_NUT, -1, -1 }, { - Yballoon_nB, FALSE, TRUE, - EL_BALLOON, ACTION_MOVING, MV_BIT_UP + Xnut_fall, FALSE, FALSE, + EL_NUT, -1, -1 }, { - Yballoon_e, FALSE, FALSE, - EL_BALLOON, ACTION_MOVING, MV_BIT_RIGHT + Ynut_s, FALSE, FALSE, + EL_NUT, ACTION_FALLING, -1 }, { - Yballoon_eB, FALSE, TRUE, - EL_BALLOON, ACTION_MOVING, MV_BIT_RIGHT + Ynut_sB, FALSE, TRUE, + EL_NUT, ACTION_FALLING, -1 }, { - Yballoon_s, FALSE, FALSE, - EL_BALLOON, ACTION_MOVING, MV_BIT_DOWN + Ynut_e, FALSE, FALSE, + EL_NUT, ACTION_MOVING, MV_BIT_RIGHT }, { - Yballoon_sB, FALSE, TRUE, - EL_BALLOON, ACTION_MOVING, MV_BIT_DOWN + Ynut_eB, FALSE, TRUE, + EL_NUT, ACTION_MOVING, MV_BIT_RIGHT }, { - Yballoon_w, FALSE, FALSE, - EL_BALLOON, ACTION_MOVING, MV_BIT_LEFT + Ynut_w, FALSE, FALSE, + EL_NUT, ACTION_MOVING, MV_BIT_LEFT }, { - Yballoon_wB, FALSE, TRUE, - EL_BALLOON, ACTION_MOVING, MV_BIT_LEFT + Ynut_wB, FALSE, TRUE, + EL_NUT, ACTION_MOVING, MV_BIT_LEFT }, { - Xgrass, TRUE, FALSE, - EL_EMC_GRASS, -1, -1 + Ynut_stone, FALSE, FALSE, + EL_NUT, ACTION_BREAKING, -1 }, + { - Ygrass_nB, FALSE, FALSE, - EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_UP + Xspring, TRUE, FALSE, + EL_SPRING, -1, -1 }, { - Ygrass_eB, FALSE, FALSE, - EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_RIGHT + Xspring_pause, FALSE, FALSE, + EL_SPRING, -1, -1 }, { - Ygrass_sB, FALSE, FALSE, - EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_DOWN + Xspring_e, FALSE, FALSE, + EL_SPRING, -1, -1 }, { - Ygrass_wB, FALSE, FALSE, - EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_LEFT + Xspring_w, FALSE, FALSE, + EL_SPRING, -1, -1 }, { - Xdirt, TRUE, FALSE, - EL_SAND, -1, -1 + Xspring_fall, FALSE, FALSE, + EL_SPRING, -1, -1 }, { - Ydirt_nB, FALSE, FALSE, - EL_SAND, ACTION_DIGGING, MV_BIT_UP + Yspring_s, FALSE, FALSE, + EL_SPRING, ACTION_FALLING, -1 }, { - Ydirt_eB, FALSE, FALSE, - EL_SAND, ACTION_DIGGING, MV_BIT_RIGHT + Yspring_sB, FALSE, TRUE, + EL_SPRING, ACTION_FALLING, -1 }, { - Ydirt_sB, FALSE, FALSE, - EL_SAND, ACTION_DIGGING, MV_BIT_DOWN + Yspring_e, FALSE, FALSE, + EL_SPRING, ACTION_MOVING, MV_BIT_RIGHT }, { - Ydirt_wB, FALSE, FALSE, - EL_SAND, ACTION_DIGGING, MV_BIT_LEFT + Yspring_eB, FALSE, TRUE, + EL_SPRING, ACTION_MOVING, MV_BIT_RIGHT }, { - Xacid_ne, TRUE, FALSE, - EL_ACID_POOL_TOPRIGHT, -1, -1 + Yspring_w, FALSE, FALSE, + EL_SPRING, ACTION_MOVING, MV_BIT_LEFT }, { - Xacid_se, TRUE, FALSE, - EL_ACID_POOL_BOTTOMRIGHT, -1, -1 + Yspring_wB, FALSE, TRUE, + EL_SPRING, ACTION_MOVING, MV_BIT_LEFT }, { - Xacid_s, TRUE, FALSE, - EL_ACID_POOL_BOTTOM, -1, -1 + Yspring_alien_e, FALSE, FALSE, + EL_SPRING, ACTION_EATING, MV_BIT_RIGHT + }, + { + Yspring_alien_eB, FALSE, TRUE, + EL_SPRING, ACTION_EATING, MV_BIT_RIGHT + }, + { + Yspring_alien_w, FALSE, FALSE, + EL_SPRING, ACTION_EATING, MV_BIT_LEFT + }, + { + Yspring_alien_wB, FALSE, TRUE, + EL_SPRING, ACTION_EATING, MV_BIT_LEFT + }, + + { + Xpush_emerald_e, FALSE, FALSE, + EL_EMERALD, -1, MV_BIT_RIGHT + }, + { + Xpush_emerald_w, FALSE, FALSE, + EL_EMERALD, -1, MV_BIT_LEFT + }, + { + Xpush_diamond_e, FALSE, FALSE, + EL_DIAMOND, -1, MV_BIT_RIGHT + }, + { + Xpush_diamond_w, FALSE, FALSE, + EL_DIAMOND, -1, MV_BIT_LEFT + }, + { + Xpush_stone_e, FALSE, FALSE, + EL_ROCK, -1, MV_BIT_RIGHT + }, + { + Xpush_stone_w, FALSE, FALSE, + EL_ROCK, -1, MV_BIT_LEFT + }, + { + Xpush_bomb_e, FALSE, FALSE, + EL_BOMB, -1, MV_BIT_RIGHT + }, + { + Xpush_bomb_w, FALSE, FALSE, + EL_BOMB, -1, MV_BIT_LEFT + }, + { + Xpush_nut_e, FALSE, FALSE, + EL_NUT, -1, MV_BIT_RIGHT + }, + { + Xpush_nut_w, FALSE, FALSE, + EL_NUT, -1, MV_BIT_LEFT + }, + { + Xpush_spring_e, FALSE, FALSE, + EL_SPRING, -1, MV_BIT_RIGHT + }, + { + Xpush_spring_w, FALSE, FALSE, + EL_SPRING, -1, MV_BIT_LEFT + }, + + { + Xdynamite, TRUE, FALSE, + EL_EM_DYNAMITE, -1, -1 + }, + { + Ydynamite_blank, FALSE, FALSE, + EL_EM_DYNAMITE, ACTION_COLLECTING, -1 + }, + { + Xdynamite_1, TRUE, FALSE, + EL_EM_DYNAMITE_ACTIVE, -1, -1 + }, + { + Xdynamite_2, FALSE, FALSE, + EL_EM_DYNAMITE_ACTIVE, -1, -1 + }, + { + Xdynamite_3, FALSE, FALSE, + EL_EM_DYNAMITE_ACTIVE, -1, -1 + }, + { + Xdynamite_4, FALSE, FALSE, + EL_EM_DYNAMITE_ACTIVE, -1, -1 + }, + + { + Xkey_1, TRUE, FALSE, + EL_EM_KEY_1, -1, -1 + }, + { + Xkey_2, TRUE, FALSE, + EL_EM_KEY_2, -1, -1 + }, + { + Xkey_3, TRUE, FALSE, + EL_EM_KEY_3, -1, -1 + }, + { + Xkey_4, TRUE, FALSE, + EL_EM_KEY_4, -1, -1 + }, + { + Xkey_5, TRUE, FALSE, + EL_EMC_KEY_5, -1, -1 }, { - Xacid_sw, TRUE, FALSE, - EL_ACID_POOL_BOTTOMLEFT, -1, -1 + Xkey_6, TRUE, FALSE, + EL_EMC_KEY_6, -1, -1 }, { - Xacid_nw, TRUE, FALSE, - EL_ACID_POOL_TOPLEFT, -1, -1 + Xkey_7, TRUE, FALSE, + EL_EMC_KEY_7, -1, -1 }, { - Xacid_1, TRUE, FALSE, - EL_ACID, -1, -1 + Xkey_8, TRUE, FALSE, + EL_EMC_KEY_8, -1, -1 }, + { - Xacid_2, FALSE, FALSE, - EL_ACID, -1, -1 + Xdoor_1, TRUE, FALSE, + EL_EM_GATE_1, -1, -1 }, { - Xacid_3, FALSE, FALSE, - EL_ACID, -1, -1 + Xdoor_2, TRUE, FALSE, + EL_EM_GATE_2, -1, -1 }, { - Xacid_4, FALSE, FALSE, - EL_ACID, -1, -1 + Xdoor_3, TRUE, FALSE, + EL_EM_GATE_3, -1, -1 }, { - Xacid_5, FALSE, FALSE, - EL_ACID, -1, -1 + Xdoor_4, TRUE, FALSE, + EL_EM_GATE_4, -1, -1 }, { - Xacid_6, FALSE, FALSE, - EL_ACID, -1, -1 + Xdoor_5, TRUE, FALSE, + EL_EMC_GATE_5, -1, -1 }, { - Xacid_7, FALSE, FALSE, - EL_ACID, -1, -1 + Xdoor_6, TRUE, FALSE, + EL_EMC_GATE_6, -1, -1 }, { - Xacid_8, FALSE, FALSE, - EL_ACID, -1, -1 + Xdoor_7, TRUE, FALSE, + EL_EMC_GATE_7, -1, -1 }, { - Xball_1, TRUE, FALSE, - EL_EMC_MAGIC_BALL, -1, -1 + Xdoor_8, TRUE, FALSE, + EL_EMC_GATE_8, -1, -1 }, + { - Xball_1B, FALSE, FALSE, - EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 + Xfake_door_1, TRUE, FALSE, + EL_EM_GATE_1_GRAY, -1, -1 }, { - Xball_2, FALSE, FALSE, - EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 + Xfake_door_2, TRUE, FALSE, + EL_EM_GATE_2_GRAY, -1, -1 }, { - Xball_2B, FALSE, FALSE, - EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 + Xfake_door_3, TRUE, FALSE, + EL_EM_GATE_3_GRAY, -1, -1 }, { - Yball_eat, FALSE, FALSE, - EL_EMC_MAGIC_BALL, ACTION_DROPPING, -1 + Xfake_door_4, TRUE, FALSE, + EL_EM_GATE_4_GRAY, -1, -1 }, { - Ykey_1_eat, FALSE, FALSE, - EL_EM_KEY_1, ACTION_COLLECTING, -1 + Xfake_door_5, TRUE, FALSE, + EL_EMC_GATE_5_GRAY, -1, -1 }, { - Ykey_2_eat, FALSE, FALSE, - EL_EM_KEY_2, ACTION_COLLECTING, -1 + Xfake_door_6, TRUE, FALSE, + EL_EMC_GATE_6_GRAY, -1, -1 }, { - Ykey_3_eat, FALSE, FALSE, - EL_EM_KEY_3, ACTION_COLLECTING, -1 + Xfake_door_7, TRUE, FALSE, + EL_EMC_GATE_7_GRAY, -1, -1 }, { - Ykey_4_eat, FALSE, FALSE, - EL_EM_KEY_4, ACTION_COLLECTING, -1 + Xfake_door_8, TRUE, FALSE, + EL_EMC_GATE_8_GRAY, -1, -1 }, + { - Ykey_5_eat, FALSE, FALSE, - EL_EMC_KEY_5, ACTION_COLLECTING, -1 + Xballoon, TRUE, FALSE, + EL_BALLOON, -1, -1 }, { - Ykey_6_eat, FALSE, FALSE, - EL_EMC_KEY_6, ACTION_COLLECTING, -1 + Yballoon_n, FALSE, FALSE, + EL_BALLOON, ACTION_MOVING, MV_BIT_UP }, { - Ykey_7_eat, FALSE, FALSE, - EL_EMC_KEY_7, ACTION_COLLECTING, -1 + Yballoon_nB, FALSE, TRUE, + EL_BALLOON, ACTION_MOVING, MV_BIT_UP }, { - Ykey_8_eat, FALSE, FALSE, - EL_EMC_KEY_8, ACTION_COLLECTING, -1 + Yballoon_e, FALSE, FALSE, + EL_BALLOON, ACTION_MOVING, MV_BIT_RIGHT }, { - Ylenses_eat, FALSE, FALSE, - EL_EMC_LENSES, ACTION_COLLECTING, -1 + Yballoon_eB, FALSE, TRUE, + EL_BALLOON, ACTION_MOVING, MV_BIT_RIGHT }, { - Ymagnify_eat, FALSE, FALSE, - EL_EMC_MAGNIFIER, ACTION_COLLECTING, -1 + Yballoon_s, FALSE, FALSE, + EL_BALLOON, ACTION_MOVING, MV_BIT_DOWN }, { - Ygrass_eat, FALSE, FALSE, - EL_EMC_GRASS, ACTION_SNAPPING, -1 + Yballoon_sB, FALSE, TRUE, + EL_BALLOON, ACTION_MOVING, MV_BIT_DOWN }, { - Ydirt_eat, FALSE, FALSE, - EL_SAND, ACTION_SNAPPING, -1 + Yballoon_w, FALSE, FALSE, + EL_BALLOON, ACTION_MOVING, MV_BIT_LEFT }, { - Xgrow_ns, TRUE, FALSE, - EL_EXPANDABLE_WALL_VERTICAL, -1, -1 + Yballoon_wB, FALSE, TRUE, + EL_BALLOON, ACTION_MOVING, MV_BIT_LEFT }, + { - Ygrow_ns_eat, FALSE, FALSE, - EL_EXPANDABLE_WALL_VERTICAL, ACTION_GROWING, -1 + Xball_1, TRUE, FALSE, + EL_EMC_MAGIC_BALL, -1, -1 }, { - Xgrow_ew, TRUE, FALSE, - EL_EXPANDABLE_WALL_HORIZONTAL, -1, -1 + Yball_1, FALSE, FALSE, + EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 }, { - Ygrow_ew_eat, FALSE, FALSE, - EL_EXPANDABLE_WALL_HORIZONTAL, ACTION_GROWING, -1 + Xball_2, FALSE, FALSE, + EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 }, { - Xwonderwall, TRUE, FALSE, - EL_MAGIC_WALL, -1, -1 + Yball_2, FALSE, FALSE, + EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 }, { - XwonderwallB, FALSE, FALSE, - EL_MAGIC_WALL, ACTION_ACTIVE, -1 + Yball_blank, FALSE, FALSE, + EL_EMC_MAGIC_BALL, ACTION_DROPPING, -1 }, + { Xamoeba_1, TRUE, FALSE, EL_AMOEBA_DRY, ACTION_OTHER, -1 @@ -6738,158 +6870,134 @@ em_object_mapping_list[] = Xamoeba_8, FALSE, FALSE, EL_AMOEBA_WET, ACTION_OTHER, -1 }, + { - Xdoor_1, TRUE, FALSE, - EL_EM_GATE_1, -1, -1 - }, - { - Xdoor_2, TRUE, FALSE, - EL_EM_GATE_2, -1, -1 - }, - { - Xdoor_3, TRUE, FALSE, - EL_EM_GATE_3, -1, -1 - }, - { - Xdoor_4, TRUE, FALSE, - EL_EM_GATE_4, -1, -1 - }, - { - Xdoor_5, TRUE, FALSE, - EL_EMC_GATE_5, -1, -1 - }, - { - Xdoor_6, TRUE, FALSE, - EL_EMC_GATE_6, -1, -1 - }, - { - Xdoor_7, TRUE, FALSE, - EL_EMC_GATE_7, -1, -1 - }, - { - Xdoor_8, TRUE, FALSE, - EL_EMC_GATE_8, -1, -1 - }, - { - Xkey_1, TRUE, FALSE, - EL_EM_KEY_1, -1, -1 - }, - { - Xkey_2, TRUE, FALSE, - EL_EM_KEY_2, -1, -1 + Xdrip, FALSE, FALSE, + EL_AMOEBA_DROP, ACTION_GROWING, -1 }, { - Xkey_3, TRUE, FALSE, - EL_EM_KEY_3, -1, -1 + Xdrip_fall, TRUE, FALSE, + EL_AMOEBA_DROP, -1, -1 }, { - Xkey_4, TRUE, FALSE, - EL_EM_KEY_4, -1, -1 + Xdrip_stretch, FALSE, FALSE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, { - Xkey_5, TRUE, FALSE, - EL_EMC_KEY_5, -1, -1 + Xdrip_stretchB, FALSE, TRUE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, { - Xkey_6, TRUE, FALSE, - EL_EMC_KEY_6, -1, -1 + Ydrip_1_s, FALSE, FALSE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, { - Xkey_7, TRUE, FALSE, - EL_EMC_KEY_7, -1, -1 + Ydrip_1_sB, FALSE, TRUE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, { - Xkey_8, TRUE, FALSE, - EL_EMC_KEY_8, -1, -1 + Ydrip_2_s, FALSE, FALSE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, { - Xwind_n, TRUE, FALSE, - EL_BALLOON_SWITCH_UP, -1, -1 + Ydrip_2_sB, FALSE, TRUE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, + { - Xwind_e, TRUE, FALSE, - EL_BALLOON_SWITCH_RIGHT, -1, -1 + Xwonderwall, TRUE, FALSE, + EL_MAGIC_WALL, -1, -1 }, { - Xwind_s, TRUE, FALSE, - EL_BALLOON_SWITCH_DOWN, -1, -1 + Ywonderwall, FALSE, FALSE, + EL_MAGIC_WALL, ACTION_ACTIVE, -1 }, + { - Xwind_w, TRUE, FALSE, - EL_BALLOON_SWITCH_LEFT, -1, -1 + Xwheel, TRUE, FALSE, + EL_ROBOT_WHEEL, -1, -1 }, { - Xwind_nesw, TRUE, FALSE, - EL_BALLOON_SWITCH_ANY, -1, -1 + Ywheel, FALSE, FALSE, + EL_ROBOT_WHEEL, ACTION_ACTIVE, -1 }, + { - Xwind_stop, TRUE, FALSE, - EL_BALLOON_SWITCH_NONE, -1, -1 + Xswitch, TRUE, FALSE, + EL_EMC_MAGIC_BALL_SWITCH, -1, -1 }, { - Xexit, TRUE, FALSE, - EL_EM_EXIT_CLOSED, -1, -1 + Yswitch, FALSE, FALSE, + EL_EMC_MAGIC_BALL_SWITCH, ACTION_ACTIVE, -1 }, + { - Xexit_1, TRUE, FALSE, - EL_EM_EXIT_OPEN, -1, -1 + Xbumper, TRUE, FALSE, + EL_EMC_SPRING_BUMPER, -1, -1 }, { - Xexit_2, FALSE, FALSE, - EL_EM_EXIT_OPEN, -1, -1 + Ybumper, FALSE, FALSE, + EL_EMC_SPRING_BUMPER, ACTION_ACTIVE, -1 }, + { - Xexit_3, FALSE, FALSE, - EL_EM_EXIT_OPEN, -1, -1 + Xacid_nw, TRUE, FALSE, + EL_ACID_POOL_TOPLEFT, -1, -1 }, { - Xdynamite, TRUE, FALSE, - EL_EM_DYNAMITE, -1, -1 + Xacid_ne, TRUE, FALSE, + EL_ACID_POOL_TOPRIGHT, -1, -1 }, { - Ydynamite_eat, FALSE, FALSE, - EL_EM_DYNAMITE, ACTION_COLLECTING, -1 + Xacid_sw, TRUE, FALSE, + EL_ACID_POOL_BOTTOMLEFT, -1, -1 }, { - Xdynamite_1, TRUE, FALSE, - EL_EM_DYNAMITE_ACTIVE, -1, -1 + Xacid_s, TRUE, FALSE, + EL_ACID_POOL_BOTTOM, -1, -1 }, { - Xdynamite_2, FALSE, FALSE, - EL_EM_DYNAMITE_ACTIVE, -1, -1 + Xacid_se, TRUE, FALSE, + EL_ACID_POOL_BOTTOMRIGHT, -1, -1 }, + { - Xdynamite_3, FALSE, FALSE, - EL_EM_DYNAMITE_ACTIVE, -1, -1 + Xfake_blank, TRUE, FALSE, + EL_INVISIBLE_WALL, -1, -1 }, { - Xdynamite_4, FALSE, FALSE, - EL_EM_DYNAMITE_ACTIVE, -1, -1 + Yfake_blank, FALSE, FALSE, + EL_INVISIBLE_WALL, ACTION_ACTIVE, -1 }, + { - Xbumper, TRUE, FALSE, - EL_EMC_SPRING_BUMPER, -1, -1 + Xfake_grass, TRUE, FALSE, + EL_EMC_FAKE_GRASS, -1, -1 }, { - XbumperB, FALSE, FALSE, - EL_EMC_SPRING_BUMPER, ACTION_ACTIVE, -1 + Yfake_grass, FALSE, FALSE, + EL_EMC_FAKE_GRASS, ACTION_ACTIVE, -1 }, + { - Xwheel, TRUE, FALSE, - EL_ROBOT_WHEEL, -1, -1 + Xfake_amoeba, TRUE, FALSE, + EL_EMC_DRIPPER, -1, -1 }, { - XwheelB, FALSE, FALSE, - EL_ROBOT_WHEEL, ACTION_ACTIVE, -1 + Yfake_amoeba, FALSE, FALSE, + EL_EMC_DRIPPER, ACTION_ACTIVE, -1 }, + { - Xswitch, TRUE, FALSE, - EL_EMC_MAGIC_BALL_SWITCH, -1, -1 + Xlenses, TRUE, FALSE, + EL_EMC_LENSES, -1, -1 }, + { - XswitchB, FALSE, FALSE, - EL_EMC_MAGIC_BALL_SWITCH, ACTION_ACTIVE, -1 + Xmagnify, TRUE, FALSE, + EL_EMC_MAGNIFIER, -1, -1 }, + { Xsand, TRUE, FALSE, EL_QUICKSAND_EMPTY, -1, -1 @@ -6914,38 +7022,6 @@ em_object_mapping_list[] = Xsand_stonein_4, FALSE, TRUE, EL_ROCK, ACTION_FILLING, -1 }, - { - Xsand_stonesand_1, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 - }, - { - Xsand_stonesand_2, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 - }, - { - Xsand_stonesand_3, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 - }, - { - Xsand_stonesand_4, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 - }, - { - Xsand_stonesand_quickout_1, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 - }, - { - Xsand_stonesand_quickout_2, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 - }, - { - Xsand_stoneout_1, FALSE, FALSE, - EL_ROCK, ACTION_EMPTYING, -1 - }, - { - Xsand_stoneout_2, FALSE, FALSE, - EL_ROCK, ACTION_EMPTYING, -1 - }, { Xsand_sandstone_1, FALSE, FALSE, EL_QUICKSAND_FILLING, -1, -1 @@ -6963,125 +7039,102 @@ em_object_mapping_list[] = EL_QUICKSAND_FILLING, -1, -1 }, { - Xplant, TRUE, FALSE, - EL_EMC_PLANT, -1, -1 - }, - { - Yplant, FALSE, FALSE, - EL_EMC_PLANT, -1, -1 - }, - { - Xlenses, TRUE, FALSE, - EL_EMC_LENSES, -1, -1 - }, - { - Xmagnify, TRUE, FALSE, - EL_EMC_MAGNIFIER, -1, -1 - }, - { - Xdripper, TRUE, FALSE, - EL_EMC_DRIPPER, -1, -1 - }, - { - XdripperB, FALSE, FALSE, - EL_EMC_DRIPPER, ACTION_ACTIVE, -1 - }, - { - Xfake_blank, TRUE, FALSE, - EL_INVISIBLE_WALL, -1, -1 - }, - { - Xfake_blankB, FALSE, FALSE, - EL_INVISIBLE_WALL, ACTION_ACTIVE, -1 + Xsand_stonesand_1, FALSE, FALSE, + EL_QUICKSAND_EMPTYING, -1, -1 }, { - Xfake_grass, TRUE, FALSE, - EL_EMC_FAKE_GRASS, -1, -1 + Xsand_stonesand_2, FALSE, FALSE, + EL_QUICKSAND_EMPTYING, -1, -1 }, { - Xfake_grassB, FALSE, FALSE, - EL_EMC_FAKE_GRASS, ACTION_ACTIVE, -1 + Xsand_stonesand_3, FALSE, FALSE, + EL_QUICKSAND_EMPTYING, -1, -1 }, { - Xfake_door_1, TRUE, FALSE, - EL_EM_GATE_1_GRAY, -1, -1 + Xsand_stonesand_4, FALSE, FALSE, + EL_QUICKSAND_EMPTYING, -1, -1 }, { - Xfake_door_2, TRUE, FALSE, - EL_EM_GATE_2_GRAY, -1, -1 + Xsand_stoneout_1, FALSE, FALSE, + EL_ROCK, ACTION_EMPTYING, -1 }, { - Xfake_door_3, TRUE, FALSE, - EL_EM_GATE_3_GRAY, -1, -1 + Xsand_stoneout_2, FALSE, FALSE, + EL_ROCK, ACTION_EMPTYING, -1 }, { - Xfake_door_4, TRUE, FALSE, - EL_EM_GATE_4_GRAY, -1, -1 + Xsand_stonesand_quickout_1, FALSE, FALSE, + EL_QUICKSAND_EMPTYING, -1, -1 }, { - Xfake_door_5, TRUE, FALSE, - EL_EMC_GATE_5_GRAY, -1, -1 + Xsand_stonesand_quickout_2, FALSE, FALSE, + EL_QUICKSAND_EMPTYING, -1, -1 }, + { - Xfake_door_6, TRUE, FALSE, - EL_EMC_GATE_6_GRAY, -1, -1 + Xslide_ns, TRUE, FALSE, + EL_EXPANDABLE_WALL_VERTICAL, -1, -1 }, { - Xfake_door_7, TRUE, FALSE, - EL_EMC_GATE_7_GRAY, -1, -1 + Yslide_ns_blank, FALSE, FALSE, + EL_EXPANDABLE_WALL_VERTICAL, ACTION_GROWING, -1 }, { - Xfake_door_8, TRUE, FALSE, - EL_EMC_GATE_8_GRAY, -1, -1 + Xslide_ew, TRUE, FALSE, + EL_EXPANDABLE_WALL_HORIZONTAL, -1, -1 }, { - Xfake_acid_1, TRUE, FALSE, - EL_EMC_FAKE_ACID, -1, -1 + Yslide_ew_blank, FALSE, FALSE, + EL_EXPANDABLE_WALL_HORIZONTAL, ACTION_GROWING, -1 }, + { - Xfake_acid_2, FALSE, FALSE, - EL_EMC_FAKE_ACID, -1, -1 + Xwind_n, TRUE, FALSE, + EL_BALLOON_SWITCH_UP, -1, -1 }, { - Xfake_acid_3, FALSE, FALSE, - EL_EMC_FAKE_ACID, -1, -1 + Xwind_e, TRUE, FALSE, + EL_BALLOON_SWITCH_RIGHT, -1, -1 }, { - Xfake_acid_4, FALSE, FALSE, - EL_EMC_FAKE_ACID, -1, -1 + Xwind_s, TRUE, FALSE, + EL_BALLOON_SWITCH_DOWN, -1, -1 }, { - Xfake_acid_5, FALSE, FALSE, - EL_EMC_FAKE_ACID, -1, -1 + Xwind_w, TRUE, FALSE, + EL_BALLOON_SWITCH_LEFT, -1, -1 }, { - Xfake_acid_6, FALSE, FALSE, - EL_EMC_FAKE_ACID, -1, -1 + Xwind_any, TRUE, FALSE, + EL_BALLOON_SWITCH_ANY, -1, -1 }, { - Xfake_acid_7, FALSE, FALSE, - EL_EMC_FAKE_ACID, -1, -1 + Xwind_stop, TRUE, FALSE, + EL_BALLOON_SWITCH_NONE, -1, -1 }, + { - Xfake_acid_8, FALSE, FALSE, - EL_EMC_FAKE_ACID, -1, -1 + Xexit, TRUE, FALSE, + EL_EM_EXIT_CLOSED, -1, -1 }, { - Xsteel_1, TRUE, FALSE, - EL_STEELWALL, -1, -1 + Xexit_1, TRUE, FALSE, + EL_EM_EXIT_OPEN, -1, -1 }, { - Xsteel_2, TRUE, FALSE, - EL_EMC_STEELWALL_2, -1, -1 + Xexit_2, FALSE, FALSE, + EL_EM_EXIT_OPEN, -1, -1 }, { - Xsteel_3, TRUE, FALSE, - EL_EMC_STEELWALL_3, -1, -1 + Xexit_3, FALSE, FALSE, + EL_EM_EXIT_OPEN, -1, -1 }, + { - Xsteel_4, TRUE, FALSE, - EL_EMC_STEELWALL_4, -1, -1 + Xpause, FALSE, FALSE, + EL_EMPTY, -1, -1 }, + { Xwall_1, TRUE, FALSE, EL_WALL, -1, -1 @@ -7098,22 +7151,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 @@ -7162,6 +7234,7 @@ em_object_mapping_list[] = Xdecor_12, TRUE, FALSE, EL_EMC_WALL_12, -1, -1 }, + { Xalpha_0, TRUE, FALSE, EL_CHAR('0'), -1, -1 @@ -7348,40 +7421,52 @@ em_object_mapping_list[] = }, { - Xboom_bug, FALSE, FALSE, - EL_BUG, ACTION_EXPLODING, -1 + Ykey_1_blank, FALSE, FALSE, + EL_EM_KEY_1, ACTION_COLLECTING, -1 }, { - Xboom_bomb, FALSE, FALSE, - EL_BOMB, ACTION_EXPLODING, -1 + Ykey_2_blank, FALSE, FALSE, + EL_EM_KEY_2, ACTION_COLLECTING, -1 }, { - Xboom_android, FALSE, FALSE, - EL_EMC_ANDROID, ACTION_OTHER, -1 + Ykey_3_blank, FALSE, FALSE, + EL_EM_KEY_3, ACTION_COLLECTING, -1 }, { - Xboom_1, FALSE, FALSE, - EL_DEFAULT, ACTION_EXPLODING, -1 + Ykey_4_blank, FALSE, FALSE, + EL_EM_KEY_4, ACTION_COLLECTING, -1 }, { - Xboom_2, FALSE, FALSE, - EL_DEFAULT, ACTION_EXPLODING, -1 + Ykey_5_blank, FALSE, FALSE, + EL_EMC_KEY_5, ACTION_COLLECTING, -1 }, { - Znormal, FALSE, FALSE, - EL_EMPTY, -1, -1 + Ykey_6_blank, FALSE, FALSE, + EL_EMC_KEY_6, ACTION_COLLECTING, -1 }, { - Zdynamite, FALSE, FALSE, - EL_EMPTY, -1, -1 + Ykey_7_blank, FALSE, FALSE, + EL_EMC_KEY_7, ACTION_COLLECTING, -1 }, { - Zplayer, FALSE, FALSE, - EL_EMPTY, -1, -1 + Ykey_8_blank, FALSE, FALSE, + EL_EMC_KEY_8, ACTION_COLLECTING, -1 }, { - ZBORDER, FALSE, FALSE, - EL_EMPTY, -1, -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 }, { @@ -7402,211 +7487,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, }, @@ -7676,11 +7761,11 @@ int map_element_EM_to_RND(int element_em) void map_android_clone_elements_RND_to_EM(struct LevelInfo *level) { struct LevelInfo_EM *level_em = level->native_em_level; - struct LEVEL *lev = level_em->lev; + struct CAVE *cav = level_em->cav; int i, j; for (i = 0; i < TILE_MAX; i++) - lev->android_array[i] = Xblank; + cav->android_array[i] = Xblank; for (i = 0; i < level->num_android_clone_elements; i++) { @@ -7689,21 +7774,21 @@ void map_android_clone_elements_RND_to_EM(struct LevelInfo *level) for (j = 0; em_object_mapping_list[j].element_em != -1; j++) if (em_object_mapping_list[j].element_rnd == element_rnd) - lev->android_array[em_object_mapping_list[j].element_em] = element_em; + cav->android_array[em_object_mapping_list[j].element_em] = element_em; } } void map_android_clone_elements_EM_to_RND(struct LevelInfo *level) { struct LevelInfo_EM *level_em = level->native_em_level; - struct LEVEL *lev = level_em->lev; + struct CAVE *cav = level_em->cav; int i, j; level->num_android_clone_elements = 0; for (i = 0; i < TILE_MAX; i++) { - int element_em = lev->android_array[i]; + int element_em = cav->android_array[i]; int element_rnd; boolean element_found = FALSE; @@ -8144,21 +8229,6 @@ boolean getTeamMode_EM(void) return game.team_mode || network_playing; } -int getGameFrameDelay_EM(int native_em_game_frame_delay) -{ - int game_frame_delay_value; - - game_frame_delay_value = - (tape.playing && tape.fast_forward ? FfwdFrameDelay : - GameFrameDelay == GAME_FRAME_DELAY ? native_em_game_frame_delay : - GameFrameDelay); - - if (tape.playing && tape.warp_forward && !tape.pausing) - game_frame_delay_value = 0; - - return game_frame_delay_value; -} - unsigned int InitRND(int seed) { if (level.game_engine_type == GAME_ENGINE_TYPE_EM) @@ -8172,7 +8242,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) { @@ -8187,8 +8257,8 @@ static int get_effective_element_EM(int tile, int frame_em) { switch (tile) { - case Yacid_splash_eB: - case Yacid_splash_wB: + case Xsplash_e: + case Xsplash_w: return (frame_em > 5 ? EL_EMPTY : element); default: @@ -8199,11 +8269,11 @@ static int get_effective_element_EM(int tile, int frame_em) { switch (tile) { - case Yacid_splash_eB: - case Yacid_splash_wB: + case Xsplash_e: + case Xsplash_w: return EL_EMPTY; - case Yemerald_stone: + case Ynut_stone: return EL_EMERALD; case Ydiamond_stone: @@ -8211,24 +8281,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: @@ -8268,9 +8338,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 Xsplash_e: + case Xsplash_w: + case Ynut_stone: return TRUE; } @@ -8516,19 +8586,6 @@ void InitGraphicInfo_EM(void) { int i, j, p; -#if DEBUG_EM_GFX - int num_em_gfx_errors = 0; - - if (graphic_info_em_object[0][0].bitmap == NULL) - { - // EM graphics not yet initialized in em_open_all() - - return; - } - - printf("::: [4 errors can be ignored (1 x 'bomb', 3 x 'em_dynamite']\n"); -#endif - // always start with reliable default values for (i = 0; i < TILE_MAX; i++) { @@ -8541,7 +8598,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; @@ -8598,24 +8655,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 : @@ -8646,8 +8703,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 : @@ -8665,20 +8722,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 : @@ -8720,13 +8777,13 @@ void InitGraphicInfo_EM(void) i == Xboom_bug && j == 5 ? 2 : i == Xboom_bug && j == 6 ? 2 : i == Xboom_bug && j == 7 ? 0 : - i == Xboom_bomb && j == 1 ? 2 : - i == Xboom_bomb && j == 2 ? 2 : - i == Xboom_bomb && j == 3 ? 4 : - i == Xboom_bomb && j == 4 ? 4 : - i == Xboom_bomb && j == 5 ? 2 : - i == Xboom_bomb && j == 6 ? 2 : - i == Xboom_bomb && j == 7 ? 0 : + i == Xboom_tank && j == 1 ? 2 : + i == Xboom_tank && j == 2 ? 2 : + i == Xboom_tank && j == 3 ? 4 : + i == Xboom_tank && j == 4 ? 4 : + i == Xboom_tank && j == 5 ? 2 : + i == Xboom_tank && j == 6 ? 2 : + i == Xboom_tank && j == 7 ? 0 : i == Xboom_android && j == 7 ? 6 : i == Xboom_1 && j == 1 ? 2 : i == Xboom_1 && j == 2 ? 2 : @@ -8746,13 +8803,6 @@ void InitGraphicInfo_EM(void) special_animation && j == 4 ? 3 : effective_action != action ? 0 : j); - -#if DEBUG_EM_GFX - Bitmap *debug_bitmap = g_em->bitmap; - int debug_src_x = g_em->src_x; - int debug_src_y = g_em->src_y; -#endif - int frame = getAnimationFrame(g->anim_frames, g->anim_delay, g->anim_mode, @@ -8790,10 +8840,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 : @@ -8802,8 +8852,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 : @@ -8848,74 +8898,6 @@ void InitGraphicInfo_EM(void) bit 5 - 0 ( 6 bit): graphic height */ g_em->unique_identifier = (graphic << 16) | (frame << 12) | (g_em->width << 6) | g_em->height; - -#if DEBUG_EM_GFX - - // skip check for EMC elements not contained in original EMC artwork - if (element == EL_EMC_FAKE_ACID) - continue; - - if (g_em->bitmap != debug_bitmap || - g_em->src_x != debug_src_x || - g_em->src_y != debug_src_y || - g_em->src_offset_x != 0 || - g_em->src_offset_y != 0 || - g_em->dst_offset_x != 0 || - g_em->dst_offset_y != 0 || - g_em->width != TILEX || - g_em->height != TILEY) - { - static int last_i = -1; - - if (i != last_i) - { - printf("\n"); - last_i = i; - } - - printf("::: EMC GFX ERROR for element %d -> %d ('%s', '%s', %d)", - i, element, element_info[element].token_name, - element_action_info[effective_action].suffix, direction); - - if (element != effective_element) - printf(" [%d ('%s')]", - effective_element, - element_info[effective_element].token_name); - - printf("\n"); - - if (g_em->bitmap != debug_bitmap) - printf(" %d (%d): different bitmap! (0x%08x != 0x%08x)\n", - j, is_backside, (int)(g_em->bitmap), (int)(debug_bitmap)); - - if (g_em->src_x != debug_src_x || - g_em->src_y != debug_src_y) - printf(" frame %d (%c): %d,%d (%d,%d) should be %d,%d (%d,%d)\n", - j, (is_backside ? 'B' : 'F'), - g_em->src_x, g_em->src_y, - g_em->src_x / 32, g_em->src_y / 32, - debug_src_x, debug_src_y, - debug_src_x / 32, debug_src_y / 32); - - if (g_em->src_offset_x != 0 || - g_em->src_offset_y != 0 || - g_em->dst_offset_x != 0 || - g_em->dst_offset_y != 0) - printf(" %d (%d): offsets %d,%d and %d,%d should be all 0\n", - j, is_backside, - g_em->src_offset_x, g_em->src_offset_y, - g_em->dst_offset_x, g_em->dst_offset_y); - - if (g_em->width != TILEX || - g_em->height != TILEY) - printf(" %d (%d): size %d,%d should be %d,%d\n", - j, is_backside, - g_em->width, g_em->height, TILEX, TILEY); - - num_em_gfx_errors++; - } -#endif - } } @@ -8964,7 +8946,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; @@ -8983,13 +8965,6 @@ void InitGraphicInfo_EM(void) Bitmap *src_bitmap; int src_x, src_y; int sync_frame = j; - -#if DEBUG_EM_GFX - Bitmap *debug_bitmap = g_em->bitmap; - int debug_src_x = g_em->src_x; - int debug_src_y = g_em->src_y; -#endif - int frame = getAnimationFrame(g->anim_frames, g->anim_delay, g->anim_mode, @@ -9007,64 +8982,9 @@ void InitGraphicInfo_EM(void) g_em->dst_offset_y = 0; g_em->width = TILEX; g_em->height = TILEY; - -#if DEBUG_EM_GFX - - // skip check for EMC elements not contained in original EMC artwork - if (element == EL_PLAYER_3 || - element == EL_PLAYER_4) - continue; - - if (g_em->bitmap != debug_bitmap || - g_em->src_x != debug_src_x || - g_em->src_y != debug_src_y) - { - static int last_i = -1; - - if (i != last_i) - { - printf("\n"); - last_i = i; - } - - printf("::: EMC GFX ERROR for p/a %d/%d -> %d ('%s', '%s', %d)", - p, i, element, element_info[element].token_name, - element_action_info[effective_action].suffix, direction); - - if (element != effective_element) - printf(" [%d ('%s')]", - effective_element, - element_info[effective_element].token_name); - - printf("\n"); - - if (g_em->bitmap != debug_bitmap) - printf(" %d: different bitmap! (0x%08x != 0x%08x)\n", - j, (int)(g_em->bitmap), (int)(debug_bitmap)); - - if (g_em->src_x != debug_src_x || - g_em->src_y != debug_src_y) - printf(" frame %d: %d,%d (%d,%d) should be %d,%d (%d,%d)\n", - j, - g_em->src_x, g_em->src_y, - g_em->src_x / 32, g_em->src_y / 32, - debug_src_x, debug_src_y, - debug_src_x / 32, debug_src_y / 32); - - num_em_gfx_errors++; - } -#endif - } } } - -#if DEBUG_EM_GFX - printf("\n"); - printf("::: [%d errors found]\n", num_em_gfx_errors); - - exit(0); -#endif } static void CheckSaveEngineSnapshot_EM(byte action[MAX_PLAYERS], int frame,