X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=366303b22e49d5236b65e5ebe2b04186a6cd8f8e;hb=9e54f3f605e0999f4f2d866107449c247493e957;hp=c3668807a3f9601fd34ed7a7b6dac3dd960392b7;hpb=afeec80878187293b10f7dcdd6ff3c094cc97e5d;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index c3668807..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 @@ -299,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); @@ -316,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); @@ -5741,349 +5739,183 @@ static struct Mapping_EM_to_RND_object em_object_mapping_list[] = { { - Xblank, TRUE, FALSE, + Zborder, FALSE, FALSE, EL_EMPTY, -1, -1 }, { - Xacid_splash_e, FALSE, FALSE, - EL_ACID_SPLASH_RIGHT, -1, -1 - }, - { - Xacid_splash_w, FALSE, FALSE, - EL_ACID_SPLASH_LEFT, -1, -1 + Zplayer, FALSE, FALSE, + EL_EMPTY, -1, -1 }, -#ifdef EM_ENGINE_BAD_ROLL - { - Xpush_stone_e, FALSE, FALSE, - EL_ROCK, -1, MV_BIT_RIGHT - }, - { - Xpush_stone_w, FALSE, FALSE, - EL_ROCK, -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 - }, { - 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 + Zbug, FALSE, FALSE, + EL_EMPTY, -1, -1 }, { - Xpush_diamond_w, FALSE, FALSE, - EL_DIAMOND, -1, MV_BIT_LEFT + Ztank, FALSE, FALSE, + EL_EMPTY, -1, -1 }, { - Xpush_bomb_e, FALSE, FALSE, - EL_BOMB, -1, MV_BIT_RIGHT + Zeater, FALSE, FALSE, + EL_EMPTY, -1, -1 }, { - Xpush_bomb_w, FALSE, FALSE, - EL_BOMB, -1, MV_BIT_LEFT + Zdynamite, FALSE, FALSE, + EL_EMPTY, -1, -1 }, -#endif // EM_ENGINE_BAD_ROLL { - Xstone, TRUE, FALSE, - EL_ROCK, -1, -1 - }, - { - Xstone_pause, FALSE, FALSE, - EL_ROCK, -1, -1 - }, - { - Xstone_fall, FALSE, FALSE, - EL_ROCK, -1, -1 - }, - { - Ystone_s, FALSE, FALSE, - EL_ROCK, ACTION_FALLING, -1 - }, - { - Ystone_sB, FALSE, TRUE, - EL_ROCK, ACTION_FALLING, -1 - }, - { - Ystone_e, FALSE, FALSE, - EL_ROCK, ACTION_MOVING, MV_BIT_RIGHT - }, - { - Ystone_eB, FALSE, TRUE, - EL_ROCK, ACTION_MOVING, MV_BIT_RIGHT - }, - { - Ystone_w, FALSE, FALSE, - EL_ROCK, ACTION_MOVING, MV_BIT_LEFT - }, - { - Ystone_wB, FALSE, TRUE, - EL_ROCK, ACTION_MOVING, MV_BIT_LEFT - }, - { - Xnut, TRUE, FALSE, - EL_NUT, -1, -1 - }, - { - Xnut_pause, FALSE, FALSE, - EL_NUT, -1, -1 - }, - { - Xnut_fall, FALSE, FALSE, - EL_NUT, -1, -1 - }, - { - Ynut_s, FALSE, FALSE, - EL_NUT, ACTION_FALLING, -1 - }, - { - Ynut_sB, FALSE, TRUE, - EL_NUT, ACTION_FALLING, -1 - }, - { - Ynut_e, FALSE, FALSE, - EL_NUT, ACTION_MOVING, MV_BIT_RIGHT - }, - { - Ynut_eB, FALSE, TRUE, - EL_NUT, ACTION_MOVING, MV_BIT_RIGHT - }, - { - Ynut_w, FALSE, FALSE, - EL_NUT, ACTION_MOVING, MV_BIT_LEFT - }, - { - Ynut_wB, FALSE, TRUE, - EL_NUT, ACTION_MOVING, MV_BIT_LEFT - }, - { - Xbug_1_n, TRUE, FALSE, - EL_BUG_UP, -1, -1 - }, - { - Xbug_1_e, TRUE, FALSE, - EL_BUG_RIGHT, -1, -1 - }, - { - Xbug_1_s, TRUE, FALSE, - EL_BUG_DOWN, -1, -1 - }, - { - Xbug_1_w, TRUE, FALSE, - EL_BUG_LEFT, -1, -1 - }, - { - Xbug_2_n, FALSE, FALSE, - EL_BUG_UP, -1, -1 - }, - { - Xbug_2_e, FALSE, FALSE, - EL_BUG_RIGHT, -1, -1 - }, - { - Xbug_2_s, FALSE, FALSE, - EL_BUG_DOWN, -1, -1 - }, - { - Xbug_2_w, FALSE, FALSE, - EL_BUG_LEFT, -1, -1 - }, - { - Ybug_n, FALSE, FALSE, - EL_BUG, ACTION_MOVING, MV_BIT_UP - }, - { - Ybug_nB, FALSE, TRUE, - EL_BUG, ACTION_MOVING, MV_BIT_UP - }, - { - Ybug_e, FALSE, FALSE, - EL_BUG, ACTION_MOVING, MV_BIT_RIGHT - }, - { - Ybug_eB, FALSE, TRUE, - EL_BUG, ACTION_MOVING, MV_BIT_RIGHT - }, - { - Ybug_s, FALSE, FALSE, - EL_BUG, ACTION_MOVING, MV_BIT_DOWN - }, - { - Ybug_sB, FALSE, TRUE, - EL_BUG, ACTION_MOVING, MV_BIT_DOWN - }, - { - Ybug_w, FALSE, FALSE, - EL_BUG, ACTION_MOVING, MV_BIT_LEFT - }, - { - Ybug_wB, FALSE, TRUE, - EL_BUG, ACTION_MOVING, MV_BIT_LEFT - }, - { - Ybug_w_n, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_LEFT, MV_BIT_UP + Xboom_bug, FALSE, FALSE, + EL_BUG, ACTION_EXPLODING, -1 }, { - Ybug_n_e, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_UP, MV_BIT_RIGHT + Xboom_tank, FALSE, FALSE, + EL_SPACESHIP, ACTION_EXPLODING, -1 }, { - Ybug_e_s, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_RIGHT, MV_BIT_DOWN + Xboom_android, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_OTHER, -1 }, { - Ybug_s_w, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_DOWN, MV_BIT_LEFT + Xboom_1, FALSE, FALSE, + EL_DEFAULT, ACTION_EXPLODING, -1 }, { - Ybug_e_n, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_RIGHT, MV_BIT_UP + Xboom_2, FALSE, FALSE, + EL_DEFAULT, ACTION_EXPLODING, -1 }, + { - Ybug_s_e, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_DOWN, MV_BIT_RIGHT + Xblank, TRUE, FALSE, + EL_EMPTY, -1, -1 }, + { - Ybug_w_s, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_LEFT, MV_BIT_DOWN + Xsplash_e, FALSE, FALSE, + EL_ACID_SPLASH_RIGHT, -1, -1 }, { - Ybug_n_w, FALSE, FALSE, - EL_BUG, ACTION_TURNING_FROM_UP, MV_BIT_LEFT + Xsplash_w, FALSE, FALSE, + EL_ACID_SPLASH_LEFT, -1, -1 }, + { - Ybug_stone, FALSE, FALSE, - EL_BUG, ACTION_SMASHED_BY_ROCK, -1 + Xplant, TRUE, FALSE, + EL_EMC_PLANT, -1, -1 }, { - Ybug_spring, FALSE, FALSE, - EL_BUG, ACTION_SMASHED_BY_SPRING, -1 + Yplant, FALSE, FALSE, + EL_EMC_PLANT, -1, -1 }, + { - Xtank_1_n, TRUE, FALSE, - EL_SPACESHIP_UP, -1, -1 + Xacid_1, TRUE, FALSE, + EL_ACID, -1, -1 }, { - Xtank_1_e, TRUE, FALSE, - EL_SPACESHIP_RIGHT, -1, -1 + Xacid_2, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Xtank_1_s, TRUE, FALSE, - EL_SPACESHIP_DOWN, -1, -1 + Xacid_3, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Xtank_1_w, TRUE, FALSE, - EL_SPACESHIP_LEFT, -1, -1 + Xacid_4, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Xtank_2_n, FALSE, FALSE, - EL_SPACESHIP_UP, -1, -1 + Xacid_5, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Xtank_2_e, FALSE, FALSE, - EL_SPACESHIP_RIGHT, -1, -1 + Xacid_6, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Xtank_2_s, FALSE, FALSE, - EL_SPACESHIP_DOWN, -1, -1 + Xacid_7, FALSE, FALSE, + EL_ACID, -1, -1 }, { - Xtank_2_w, FALSE, FALSE, - EL_SPACESHIP_LEFT, -1, -1 + Xacid_8, FALSE, FALSE, + EL_ACID, -1, -1 }, + { - Ytank_n, FALSE, FALSE, - EL_SPACESHIP, ACTION_MOVING, MV_BIT_UP + Xfake_acid_1, TRUE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ytank_nB, FALSE, TRUE, - EL_SPACESHIP, ACTION_MOVING, MV_BIT_UP + Xfake_acid_2, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ytank_e, FALSE, FALSE, - EL_SPACESHIP, ACTION_MOVING, MV_BIT_RIGHT + Xfake_acid_3, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ytank_eB, FALSE, TRUE, - EL_SPACESHIP, ACTION_MOVING, MV_BIT_RIGHT + Xfake_acid_4, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ytank_s, FALSE, FALSE, - EL_SPACESHIP, ACTION_MOVING, MV_BIT_DOWN + Xfake_acid_5, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ytank_sB, FALSE, TRUE, - EL_SPACESHIP, ACTION_MOVING, MV_BIT_DOWN + Xfake_acid_6, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ytank_w, FALSE, FALSE, - EL_SPACESHIP, ACTION_MOVING, MV_BIT_LEFT + Xfake_acid_7, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, { - Ytank_wB, FALSE, TRUE, - EL_SPACESHIP, ACTION_MOVING, MV_BIT_LEFT + Xfake_acid_8, FALSE, FALSE, + EL_EMC_FAKE_ACID, -1, -1 }, + { - Ytank_w_n, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_LEFT, MV_BIT_UP + Xgrass, TRUE, FALSE, + EL_EMC_GRASS, -1, -1 }, { - Ytank_n_e, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_UP, MV_BIT_RIGHT + Ygrass_nB, FALSE, FALSE, + EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_UP }, { - Ytank_e_s, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_RIGHT, MV_BIT_DOWN + Ygrass_eB, FALSE, FALSE, + EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_RIGHT }, { - Ytank_s_w, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_DOWN, MV_BIT_LEFT + Ygrass_sB, FALSE, FALSE, + EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_DOWN }, { - Ytank_e_n, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_RIGHT, MV_BIT_UP + Ygrass_wB, FALSE, FALSE, + EL_EMC_GRASS, ACTION_DIGGING, MV_BIT_LEFT }, + { - Ytank_s_e, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_DOWN, MV_BIT_RIGHT + Xdirt, TRUE, FALSE, + EL_SAND, -1, -1 }, { - Ytank_w_s, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_LEFT, MV_BIT_DOWN + Ydirt_nB, FALSE, FALSE, + EL_SAND, ACTION_DIGGING, MV_BIT_UP }, { - Ytank_n_w, FALSE, FALSE, - EL_SPACESHIP, ACTION_TURNING_FROM_UP, MV_BIT_LEFT + Ydirt_eB, FALSE, FALSE, + EL_SAND, ACTION_DIGGING, MV_BIT_RIGHT }, { - Ytank_stone, FALSE, FALSE, - EL_SPACESHIP, ACTION_SMASHED_BY_ROCK, -1 + Ydirt_sB, FALSE, FALSE, + EL_SAND, ACTION_DIGGING, MV_BIT_DOWN }, { - Ytank_spring, FALSE, FALSE, - EL_SPACESHIP, ACTION_SMASHED_BY_SPRING, -1 + Ydirt_wB, FALSE, FALSE, + EL_SAND, ACTION_DIGGING, MV_BIT_LEFT }, + { Xandroid, TRUE, FALSE, EL_EMC_ANDROID, ACTION_ACTIVE, -1 @@ -6149,101 +5981,42 @@ em_object_mapping_list[] = EL_EMC_ANDROID, ACTION_GROWING, MV_BIT_DOWNRIGHT }, { - Yandroid_seB, FALSE, TRUE, - EL_EMC_ANDROID, ACTION_SHRINKING, MV_BIT_DOWNRIGHT - }, - { - Yandroid_s, FALSE, FALSE, - EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_DOWN - }, - { - Yandroid_sB, FALSE, TRUE, - EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_DOWN - }, - { - Yandroid_sw, FALSE, FALSE, - EL_EMC_ANDROID, ACTION_GROWING, MV_BIT_DOWNLEFT - }, - { - Yandroid_swB, FALSE, TRUE, - EL_EMC_ANDROID, ACTION_SHRINKING, MV_BIT_DOWNLEFT - }, - { - Yandroid_w, FALSE, FALSE, - EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_LEFT - }, - { - Yandroid_wB, FALSE, TRUE, - EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_LEFT - }, - { - Yandroid_nw, FALSE, FALSE, - EL_EMC_ANDROID, ACTION_GROWING, MV_BIT_UPLEFT - }, - { - Yandroid_nwB, FALSE, TRUE, - EL_EMC_ANDROID, ACTION_SHRINKING, MV_BIT_UPLEFT - }, - { - Xspring, TRUE, FALSE, - EL_SPRING, -1, -1 - }, - { - Xspring_pause, FALSE, FALSE, - EL_SPRING, -1, -1 - }, - { - Xspring_e, FALSE, FALSE, - EL_SPRING, -1, -1 - }, - { - Xspring_w, FALSE, FALSE, - EL_SPRING, -1, -1 - }, - { - Xspring_fall, FALSE, FALSE, - EL_SPRING, -1, -1 - }, - { - Yspring_s, FALSE, FALSE, - EL_SPRING, ACTION_FALLING, -1 - }, - { - Yspring_sB, FALSE, TRUE, - EL_SPRING, ACTION_FALLING, -1 + Yandroid_seB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_SHRINKING, MV_BIT_DOWNRIGHT }, { - Yspring_e, FALSE, FALSE, - EL_SPRING, ACTION_MOVING, MV_BIT_RIGHT + Yandroid_s, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_DOWN }, { - Yspring_eB, FALSE, TRUE, - EL_SPRING, ACTION_MOVING, MV_BIT_RIGHT + Yandroid_sB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_DOWN }, { - Yspring_w, FALSE, FALSE, - EL_SPRING, ACTION_MOVING, MV_BIT_LEFT + Yandroid_sw, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_GROWING, MV_BIT_DOWNLEFT }, { - Yspring_wB, FALSE, TRUE, - EL_SPRING, ACTION_MOVING, MV_BIT_LEFT + Yandroid_swB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_SHRINKING, MV_BIT_DOWNLEFT }, { - Yspring_alien_e, FALSE, FALSE, - EL_SPRING, ACTION_EATING, MV_BIT_RIGHT + Yandroid_w, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_LEFT }, { - Yspring_alien_eB, FALSE, TRUE, - EL_SPRING, ACTION_EATING, MV_BIT_RIGHT + Yandroid_wB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_MOVING, MV_BIT_LEFT }, { - Yspring_alien_w, FALSE, FALSE, - EL_SPRING, ACTION_EATING, MV_BIT_LEFT + Yandroid_nw, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_GROWING, MV_BIT_UPLEFT }, { - Yspring_alien_wB, FALSE, TRUE, - EL_SPRING, ACTION_EATING, MV_BIT_LEFT + Yandroid_nwB, FALSE, TRUE, + EL_EMC_ANDROID, ACTION_SHRINKING, MV_BIT_UPLEFT }, + { Xeater_n, TRUE, FALSE, EL_YAMYAM_UP, -1, -1 @@ -6300,6 +6073,7 @@ em_object_mapping_list[] = Yeater_spring, FALSE, FALSE, EL_YAMYAM, ACTION_SMASHED_BY_SPRING, -1 }, + { Xalien, TRUE, FALSE, EL_ROBOT, -1, -1 @@ -6348,6 +6122,217 @@ em_object_mapping_list[] = Yalien_spring, FALSE, FALSE, EL_ROBOT, ACTION_SMASHED_BY_SPRING, -1 }, + + { + Xbug_1_n, TRUE, FALSE, + EL_BUG_UP, -1, -1 + }, + { + Xbug_1_e, TRUE, FALSE, + EL_BUG_RIGHT, -1, -1 + }, + { + Xbug_1_s, TRUE, FALSE, + EL_BUG_DOWN, -1, -1 + }, + { + Xbug_1_w, TRUE, FALSE, + EL_BUG_LEFT, -1, -1 + }, + { + Xbug_2_n, FALSE, FALSE, + EL_BUG_UP, -1, -1 + }, + { + Xbug_2_e, FALSE, FALSE, + EL_BUG_RIGHT, -1, -1 + }, + { + Xbug_2_s, FALSE, FALSE, + EL_BUG_DOWN, -1, -1 + }, + { + Xbug_2_w, FALSE, FALSE, + EL_BUG_LEFT, -1, -1 + }, + { + Ybug_n, FALSE, FALSE, + EL_BUG, ACTION_MOVING, MV_BIT_UP + }, + { + Ybug_nB, FALSE, TRUE, + EL_BUG, ACTION_MOVING, MV_BIT_UP + }, + { + Ybug_e, FALSE, FALSE, + EL_BUG, ACTION_MOVING, MV_BIT_RIGHT + }, + { + Ybug_eB, FALSE, TRUE, + EL_BUG, ACTION_MOVING, MV_BIT_RIGHT + }, + { + Ybug_s, FALSE, FALSE, + EL_BUG, ACTION_MOVING, MV_BIT_DOWN + }, + { + Ybug_sB, FALSE, TRUE, + EL_BUG, ACTION_MOVING, MV_BIT_DOWN + }, + { + Ybug_w, FALSE, FALSE, + EL_BUG, ACTION_MOVING, MV_BIT_LEFT + }, + { + Ybug_wB, FALSE, TRUE, + EL_BUG, ACTION_MOVING, MV_BIT_LEFT + }, + { + Ybug_w_n, FALSE, FALSE, + EL_BUG, ACTION_TURNING_FROM_LEFT, MV_BIT_UP + }, + { + Ybug_n_e, FALSE, FALSE, + EL_BUG, ACTION_TURNING_FROM_UP, MV_BIT_RIGHT + }, + { + Ybug_e_s, FALSE, FALSE, + EL_BUG, ACTION_TURNING_FROM_RIGHT, MV_BIT_DOWN + }, + { + Ybug_s_w, FALSE, FALSE, + EL_BUG, ACTION_TURNING_FROM_DOWN, MV_BIT_LEFT + }, + { + Ybug_e_n, FALSE, FALSE, + EL_BUG, ACTION_TURNING_FROM_RIGHT, MV_BIT_UP + }, + { + Ybug_s_e, FALSE, FALSE, + EL_BUG, ACTION_TURNING_FROM_DOWN, MV_BIT_RIGHT + }, + { + Ybug_w_s, FALSE, FALSE, + EL_BUG, ACTION_TURNING_FROM_LEFT, MV_BIT_DOWN + }, + { + Ybug_n_w, FALSE, FALSE, + EL_BUG, ACTION_TURNING_FROM_UP, MV_BIT_LEFT + }, + { + Ybug_stone, FALSE, FALSE, + EL_BUG, ACTION_SMASHED_BY_ROCK, -1 + }, + { + Ybug_spring, FALSE, FALSE, + EL_BUG, ACTION_SMASHED_BY_SPRING, -1 + }, + + { + Xtank_1_n, TRUE, FALSE, + EL_SPACESHIP_UP, -1, -1 + }, + { + Xtank_1_e, TRUE, FALSE, + EL_SPACESHIP_RIGHT, -1, -1 + }, + { + Xtank_1_s, TRUE, FALSE, + EL_SPACESHIP_DOWN, -1, -1 + }, + { + Xtank_1_w, TRUE, FALSE, + EL_SPACESHIP_LEFT, -1, -1 + }, + { + Xtank_2_n, FALSE, FALSE, + EL_SPACESHIP_UP, -1, -1 + }, + { + Xtank_2_e, FALSE, FALSE, + EL_SPACESHIP_RIGHT, -1, -1 + }, + { + Xtank_2_s, FALSE, FALSE, + EL_SPACESHIP_DOWN, -1, -1 + }, + { + Xtank_2_w, FALSE, FALSE, + EL_SPACESHIP_LEFT, -1, -1 + }, + { + Ytank_n, FALSE, FALSE, + EL_SPACESHIP, ACTION_MOVING, MV_BIT_UP + }, + { + Ytank_nB, FALSE, TRUE, + EL_SPACESHIP, ACTION_MOVING, MV_BIT_UP + }, + { + 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 + }, + { Xemerald, TRUE, FALSE, EL_EMERALD, -1, -1 @@ -6392,10 +6377,7 @@ em_object_mapping_list[] = Yemerald_blank, FALSE, FALSE, EL_EMERALD, ACTION_COLLECTING, -1 }, - { - Ynut_stone, FALSE, FALSE, - EL_NUT, ACTION_BREAKING, -1 - }, + { Xdiamond, TRUE, FALSE, EL_DIAMOND, -1, -1 @@ -6444,38 +6426,44 @@ em_object_mapping_list[] = Ydiamond_stone, FALSE, FALSE, EL_DIAMOND, ACTION_SMASHED_BY_ROCK, -1 }, + + { + Xstone, TRUE, FALSE, + EL_ROCK, -1, -1 + }, { - Xdrip_fall, TRUE, FALSE, - EL_AMOEBA_DROP, -1, -1 + Xstone_pause, FALSE, FALSE, + EL_ROCK, -1, -1 }, { - Xdrip_stretch, FALSE, FALSE, - EL_AMOEBA_DROP, ACTION_FALLING, -1 + Xstone_fall, FALSE, FALSE, + EL_ROCK, -1, -1 }, { - Xdrip_stretchB, FALSE, TRUE, - EL_AMOEBA_DROP, ACTION_FALLING, -1 + Ystone_s, FALSE, FALSE, + EL_ROCK, ACTION_FALLING, -1 }, { - Xdrip, FALSE, FALSE, - EL_AMOEBA_DROP, ACTION_GROWING, -1 + Ystone_sB, FALSE, TRUE, + EL_ROCK, ACTION_FALLING, -1 }, { - Ydrip_1_s, FALSE, FALSE, - EL_AMOEBA_DROP, ACTION_FALLING, -1 + Ystone_e, FALSE, FALSE, + EL_ROCK, ACTION_MOVING, MV_BIT_RIGHT }, { - Ydrip_1_sB, FALSE, TRUE, - EL_AMOEBA_DROP, ACTION_FALLING, -1 + Ystone_eB, FALSE, TRUE, + EL_ROCK, ACTION_MOVING, MV_BIT_RIGHT }, { - Ydrip_2_s, FALSE, FALSE, - EL_AMOEBA_DROP, ACTION_FALLING, -1 + Ystone_w, FALSE, FALSE, + EL_ROCK, ACTION_MOVING, MV_BIT_LEFT }, { - Ydrip_2_sB, FALSE, TRUE, - EL_AMOEBA_DROP, ACTION_FALLING, -1 + Ystone_wB, FALSE, TRUE, + EL_ROCK, ACTION_MOVING, MV_BIT_LEFT }, + { Xbomb, TRUE, FALSE, EL_BOMB, -1, -1 @@ -6516,465 +6504,523 @@ em_object_mapping_list[] = 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 }, { - Xacid_sw, TRUE, FALSE, - EL_ACID_POOL_BOTTOMLEFT, -1, -1 + Yspring_alien_eB, FALSE, TRUE, + EL_SPRING, ACTION_EATING, MV_BIT_RIGHT }, { - Xacid_nw, TRUE, FALSE, - EL_ACID_POOL_TOPLEFT, -1, -1 + Yspring_alien_w, FALSE, FALSE, + EL_SPRING, ACTION_EATING, MV_BIT_LEFT }, { - Xacid_1, TRUE, FALSE, - EL_ACID, -1, -1 + Yspring_alien_wB, FALSE, TRUE, + EL_SPRING, ACTION_EATING, MV_BIT_LEFT }, + { - Xacid_2, FALSE, FALSE, - EL_ACID, -1, -1 + Xpush_emerald_e, FALSE, FALSE, + EL_EMERALD, -1, MV_BIT_RIGHT }, { - Xacid_3, FALSE, FALSE, - EL_ACID, -1, -1 + Xpush_emerald_w, FALSE, FALSE, + EL_EMERALD, -1, MV_BIT_LEFT }, { - Xacid_4, FALSE, FALSE, - EL_ACID, -1, -1 + Xpush_diamond_e, FALSE, FALSE, + EL_DIAMOND, -1, MV_BIT_RIGHT }, { - Xacid_5, FALSE, FALSE, - EL_ACID, -1, -1 + Xpush_diamond_w, FALSE, FALSE, + EL_DIAMOND, -1, MV_BIT_LEFT }, { - Xacid_6, FALSE, FALSE, - EL_ACID, -1, -1 + Xpush_stone_e, FALSE, FALSE, + EL_ROCK, -1, MV_BIT_RIGHT }, { - Xacid_7, FALSE, FALSE, - EL_ACID, -1, -1 + Xpush_stone_w, FALSE, FALSE, + EL_ROCK, -1, MV_BIT_LEFT }, { - Xacid_8, FALSE, FALSE, - EL_ACID, -1, -1 + Xpush_bomb_e, FALSE, FALSE, + EL_BOMB, -1, MV_BIT_RIGHT }, { - Xball_1, TRUE, FALSE, - EL_EMC_MAGIC_BALL, -1, -1 + Xpush_bomb_w, FALSE, FALSE, + EL_BOMB, -1, MV_BIT_LEFT }, { - Yball_1, FALSE, FALSE, - EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 + Xpush_nut_e, FALSE, FALSE, + EL_NUT, -1, MV_BIT_RIGHT }, { - Xball_2, FALSE, FALSE, - EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 + Xpush_nut_w, FALSE, FALSE, + EL_NUT, -1, MV_BIT_LEFT }, { - Yball_2, FALSE, FALSE, - EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 + Xpush_spring_e, FALSE, FALSE, + EL_SPRING, -1, MV_BIT_RIGHT }, { - Yball_blank, FALSE, FALSE, - EL_EMC_MAGIC_BALL, ACTION_DROPPING, -1 + Xpush_spring_w, FALSE, FALSE, + EL_SPRING, -1, MV_BIT_LEFT }, + { - Ykey_1_blank, FALSE, FALSE, - EL_EM_KEY_1, ACTION_COLLECTING, -1 + Xdynamite, TRUE, FALSE, + EL_EM_DYNAMITE, -1, -1 }, { - Ykey_2_blank, FALSE, FALSE, - EL_EM_KEY_2, ACTION_COLLECTING, -1 + Ydynamite_blank, FALSE, FALSE, + EL_EM_DYNAMITE, ACTION_COLLECTING, -1 }, { - Ykey_3_blank, FALSE, FALSE, - EL_EM_KEY_3, ACTION_COLLECTING, -1 + Xdynamite_1, TRUE, FALSE, + EL_EM_DYNAMITE_ACTIVE, -1, -1 }, { - Ykey_4_blank, FALSE, FALSE, - EL_EM_KEY_4, ACTION_COLLECTING, -1 + Xdynamite_2, FALSE, FALSE, + EL_EM_DYNAMITE_ACTIVE, -1, -1 }, { - Ykey_5_blank, FALSE, FALSE, - EL_EMC_KEY_5, ACTION_COLLECTING, -1 + Xdynamite_3, FALSE, FALSE, + EL_EM_DYNAMITE_ACTIVE, -1, -1 }, { - Ykey_6_blank, FALSE, FALSE, - EL_EMC_KEY_6, ACTION_COLLECTING, -1 + Xdynamite_4, FALSE, FALSE, + EL_EM_DYNAMITE_ACTIVE, -1, -1 }, + { - Ykey_7_blank, FALSE, FALSE, - EL_EMC_KEY_7, ACTION_COLLECTING, -1 + Xkey_1, TRUE, FALSE, + EL_EM_KEY_1, -1, -1 }, { - Ykey_8_blank, FALSE, FALSE, - EL_EMC_KEY_8, ACTION_COLLECTING, -1 + Xkey_2, TRUE, FALSE, + EL_EM_KEY_2, -1, -1 }, { - Ylenses_blank, FALSE, FALSE, - EL_EMC_LENSES, ACTION_COLLECTING, -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 + }, + { + Xkey_6, TRUE, FALSE, + EL_EMC_KEY_6, -1, -1 + }, + { + Xkey_7, TRUE, FALSE, + EL_EMC_KEY_7, -1, -1 + }, + { + Xkey_8, TRUE, FALSE, + EL_EMC_KEY_8, -1, -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 }, { - Ymagnify_blank, FALSE, FALSE, - EL_EMC_MAGNIFIER, ACTION_COLLECTING, -1 + Xdoor_4, TRUE, FALSE, + EL_EM_GATE_4, -1, -1 }, { - Ygrass_blank, FALSE, FALSE, - EL_EMC_GRASS, ACTION_SNAPPING, -1 + Xdoor_5, TRUE, FALSE, + EL_EMC_GATE_5, -1, -1 }, { - Ydirt_blank, FALSE, FALSE, - EL_SAND, ACTION_SNAPPING, -1 + Xdoor_6, TRUE, FALSE, + EL_EMC_GATE_6, -1, -1 }, { - Xslidewall_ns, TRUE, FALSE, - EL_EXPANDABLE_WALL_VERTICAL, -1, -1 + Xdoor_7, TRUE, FALSE, + EL_EMC_GATE_7, -1, -1 }, { - Yslidewall_ns_blank, FALSE, FALSE, - EL_EXPANDABLE_WALL_VERTICAL, ACTION_GROWING, -1 + Xdoor_8, TRUE, FALSE, + EL_EMC_GATE_8, -1, -1 }, + { - Xslidewall_ew, TRUE, FALSE, - EL_EXPANDABLE_WALL_HORIZONTAL, -1, -1 + Xfake_door_1, TRUE, FALSE, + EL_EM_GATE_1_GRAY, -1, -1 }, { - Yslidewall_ew_blank, FALSE, FALSE, - EL_EXPANDABLE_WALL_HORIZONTAL, ACTION_GROWING, -1 + Xfake_door_2, TRUE, FALSE, + EL_EM_GATE_2_GRAY, -1, -1 }, { - Xwonderwall, TRUE, FALSE, - EL_MAGIC_WALL, -1, -1 + Xfake_door_3, TRUE, FALSE, + EL_EM_GATE_3_GRAY, -1, -1 }, { - XwonderwallB, FALSE, FALSE, - EL_MAGIC_WALL, ACTION_ACTIVE, -1 + Xfake_door_4, TRUE, FALSE, + EL_EM_GATE_4_GRAY, -1, -1 }, { - Xamoeba_1, TRUE, FALSE, - EL_AMOEBA_DRY, ACTION_OTHER, -1 + Xfake_door_5, TRUE, FALSE, + EL_EMC_GATE_5_GRAY, -1, -1 }, { - Xamoeba_2, FALSE, FALSE, - EL_AMOEBA_DRY, ACTION_OTHER, -1 + Xfake_door_6, TRUE, FALSE, + EL_EMC_GATE_6_GRAY, -1, -1 }, { - Xamoeba_3, FALSE, FALSE, - EL_AMOEBA_DRY, ACTION_OTHER, -1 + Xfake_door_7, TRUE, FALSE, + EL_EMC_GATE_7_GRAY, -1, -1 }, { - Xamoeba_4, FALSE, FALSE, - EL_AMOEBA_DRY, ACTION_OTHER, -1 + Xfake_door_8, TRUE, FALSE, + EL_EMC_GATE_8_GRAY, -1, -1 }, + { - Xamoeba_5, TRUE, FALSE, - EL_AMOEBA_WET, ACTION_OTHER, -1 + Xballoon, TRUE, FALSE, + EL_BALLOON, -1, -1 }, { - Xamoeba_6, FALSE, FALSE, - EL_AMOEBA_WET, ACTION_OTHER, -1 + Yballoon_n, FALSE, FALSE, + EL_BALLOON, ACTION_MOVING, MV_BIT_UP }, { - Xamoeba_7, FALSE, FALSE, - EL_AMOEBA_WET, ACTION_OTHER, -1 + Yballoon_nB, FALSE, TRUE, + EL_BALLOON, ACTION_MOVING, MV_BIT_UP }, { - Xamoeba_8, FALSE, FALSE, - EL_AMOEBA_WET, ACTION_OTHER, -1 + Yballoon_e, FALSE, FALSE, + EL_BALLOON, ACTION_MOVING, MV_BIT_RIGHT }, { - Xdoor_1, TRUE, FALSE, - EL_EM_GATE_1, -1, -1 + Yballoon_eB, FALSE, TRUE, + EL_BALLOON, ACTION_MOVING, MV_BIT_RIGHT }, { - Xdoor_2, TRUE, FALSE, - EL_EM_GATE_2, -1, -1 + Yballoon_s, FALSE, FALSE, + EL_BALLOON, ACTION_MOVING, MV_BIT_DOWN }, { - Xdoor_3, TRUE, FALSE, - EL_EM_GATE_3, -1, -1 + Yballoon_sB, FALSE, TRUE, + EL_BALLOON, ACTION_MOVING, MV_BIT_DOWN }, { - Xdoor_4, TRUE, FALSE, - EL_EM_GATE_4, -1, -1 + Yballoon_w, FALSE, FALSE, + EL_BALLOON, ACTION_MOVING, MV_BIT_LEFT }, { - Xdoor_5, TRUE, FALSE, - EL_EMC_GATE_5, -1, -1 + Yballoon_wB, FALSE, TRUE, + EL_BALLOON, ACTION_MOVING, MV_BIT_LEFT }, + { - Xdoor_6, TRUE, FALSE, - EL_EMC_GATE_6, -1, -1 + Xball_1, TRUE, FALSE, + EL_EMC_MAGIC_BALL, -1, -1 }, { - Xdoor_7, TRUE, FALSE, - EL_EMC_GATE_7, -1, -1 + Yball_1, FALSE, FALSE, + EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 }, { - Xdoor_8, TRUE, FALSE, - EL_EMC_GATE_8, -1, -1 + Xball_2, FALSE, FALSE, + EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 }, { - Xkey_1, TRUE, FALSE, - EL_EM_KEY_1, -1, -1 + Yball_2, FALSE, FALSE, + EL_EMC_MAGIC_BALL, ACTION_ACTIVE, -1 }, { - Xkey_2, TRUE, FALSE, - EL_EM_KEY_2, -1, -1 + Yball_blank, FALSE, FALSE, + EL_EMC_MAGIC_BALL, ACTION_DROPPING, -1 }, + { - Xkey_3, TRUE, FALSE, - EL_EM_KEY_3, -1, -1 + Xamoeba_1, TRUE, FALSE, + EL_AMOEBA_DRY, ACTION_OTHER, -1 }, { - Xkey_4, TRUE, FALSE, - EL_EM_KEY_4, -1, -1 + Xamoeba_2, FALSE, FALSE, + EL_AMOEBA_DRY, ACTION_OTHER, -1 }, { - Xkey_5, TRUE, FALSE, - EL_EMC_KEY_5, -1, -1 + Xamoeba_3, FALSE, FALSE, + EL_AMOEBA_DRY, ACTION_OTHER, -1 }, { - Xkey_6, TRUE, FALSE, - EL_EMC_KEY_6, -1, -1 + Xamoeba_4, FALSE, FALSE, + EL_AMOEBA_DRY, ACTION_OTHER, -1 }, { - Xkey_7, TRUE, FALSE, - EL_EMC_KEY_7, -1, -1 + Xamoeba_5, TRUE, FALSE, + EL_AMOEBA_WET, ACTION_OTHER, -1 }, { - Xkey_8, TRUE, FALSE, - EL_EMC_KEY_8, -1, -1 + Xamoeba_6, FALSE, FALSE, + EL_AMOEBA_WET, ACTION_OTHER, -1 }, { - Xwind_n, TRUE, FALSE, - EL_BALLOON_SWITCH_UP, -1, -1 + Xamoeba_7, FALSE, FALSE, + EL_AMOEBA_WET, ACTION_OTHER, -1 }, { - Xwind_e, TRUE, FALSE, - EL_BALLOON_SWITCH_RIGHT, -1, -1 + Xamoeba_8, FALSE, FALSE, + EL_AMOEBA_WET, ACTION_OTHER, -1 }, + { - Xwind_s, TRUE, FALSE, - EL_BALLOON_SWITCH_DOWN, -1, -1 + Xdrip, FALSE, FALSE, + EL_AMOEBA_DROP, ACTION_GROWING, -1 }, { - Xwind_w, TRUE, FALSE, - EL_BALLOON_SWITCH_LEFT, -1, -1 + Xdrip_fall, TRUE, FALSE, + EL_AMOEBA_DROP, -1, -1 }, { - Xwind_any, TRUE, FALSE, - EL_BALLOON_SWITCH_ANY, -1, -1 + Xdrip_stretch, FALSE, FALSE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, { - Xwind_stop, TRUE, FALSE, - EL_BALLOON_SWITCH_NONE, -1, -1 + Xdrip_stretchB, FALSE, TRUE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, { - Xexit, TRUE, FALSE, - EL_EM_EXIT_CLOSED, -1, -1 + Ydrip_1_s, FALSE, FALSE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, { - Xexit_1, TRUE, FALSE, - EL_EM_EXIT_OPEN, -1, -1 + Ydrip_1_sB, FALSE, TRUE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, { - Xexit_2, FALSE, FALSE, - EL_EM_EXIT_OPEN, -1, -1 + Ydrip_2_s, FALSE, FALSE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, { - Xexit_3, FALSE, FALSE, - EL_EM_EXIT_OPEN, -1, -1 + Ydrip_2_sB, FALSE, TRUE, + EL_AMOEBA_DROP, ACTION_FALLING, -1 }, + { - Xdynamite, TRUE, FALSE, - EL_EM_DYNAMITE, -1, -1 + Xwonderwall, TRUE, FALSE, + EL_MAGIC_WALL, -1, -1 }, { - Ydynamite_blank, FALSE, FALSE, - EL_EM_DYNAMITE, ACTION_COLLECTING, -1 + Ywonderwall, FALSE, FALSE, + EL_MAGIC_WALL, ACTION_ACTIVE, -1 }, + { - Xdynamite_1, TRUE, FALSE, - EL_EM_DYNAMITE_ACTIVE, -1, -1 + Xwheel, TRUE, FALSE, + EL_ROBOT_WHEEL, -1, -1 }, { - Xdynamite_2, FALSE, FALSE, - EL_EM_DYNAMITE_ACTIVE, -1, -1 + Ywheel, FALSE, FALSE, + EL_ROBOT_WHEEL, ACTION_ACTIVE, -1 }, + { - Xdynamite_3, FALSE, FALSE, - EL_EM_DYNAMITE_ACTIVE, -1, -1 + Xswitch, TRUE, FALSE, + EL_EMC_MAGIC_BALL_SWITCH, -1, -1 }, { - Xdynamite_4, FALSE, FALSE, - EL_EM_DYNAMITE_ACTIVE, -1, -1 + Yswitch, FALSE, FALSE, + EL_EMC_MAGIC_BALL_SWITCH, ACTION_ACTIVE, -1 }, + { Xbumper, TRUE, FALSE, EL_EMC_SPRING_BUMPER, -1, -1 }, { - XbumperB, FALSE, FALSE, + Ybumper, FALSE, FALSE, EL_EMC_SPRING_BUMPER, ACTION_ACTIVE, -1 }, + { - Xwheel, TRUE, FALSE, - EL_ROBOT_WHEEL, -1, -1 + Xacid_nw, TRUE, FALSE, + EL_ACID_POOL_TOPLEFT, -1, -1 }, { - XwheelB, FALSE, FALSE, - EL_ROBOT_WHEEL, ACTION_ACTIVE, -1 + Xacid_ne, TRUE, FALSE, + EL_ACID_POOL_TOPRIGHT, -1, -1 }, { - Xswitch, TRUE, FALSE, - EL_EMC_MAGIC_BALL_SWITCH, -1, -1 + Xacid_sw, TRUE, FALSE, + EL_ACID_POOL_BOTTOMLEFT, -1, -1 }, { - XswitchB, FALSE, FALSE, - EL_EMC_MAGIC_BALL_SWITCH, ACTION_ACTIVE, -1 + Xacid_s, TRUE, FALSE, + EL_ACID_POOL_BOTTOM, -1, -1 }, { - Xsand, TRUE, FALSE, - EL_QUICKSAND_EMPTY, -1, -1 + Xacid_se, TRUE, FALSE, + EL_ACID_POOL_BOTTOMRIGHT, -1, -1 }, + { - Xsand_stone, TRUE, FALSE, - EL_QUICKSAND_FULL, -1, -1 + Xfake_blank, TRUE, FALSE, + EL_INVISIBLE_WALL, -1, -1 }, { - Xsand_stonein_1, FALSE, TRUE, - EL_ROCK, ACTION_FILLING, -1 + Yfake_blank, FALSE, FALSE, + EL_INVISIBLE_WALL, ACTION_ACTIVE, -1 }, + { - Xsand_stonein_2, FALSE, TRUE, - EL_ROCK, ACTION_FILLING, -1 + Xfake_grass, TRUE, FALSE, + EL_EMC_FAKE_GRASS, -1, -1 }, { - Xsand_stonein_3, FALSE, TRUE, - EL_ROCK, ACTION_FILLING, -1 + Yfake_grass, FALSE, FALSE, + EL_EMC_FAKE_GRASS, ACTION_ACTIVE, -1 }, + { - Xsand_stonein_4, FALSE, TRUE, - EL_ROCK, ACTION_FILLING, -1 + Xfake_amoeba, TRUE, FALSE, + EL_EMC_DRIPPER, -1, -1 }, { - Xsand_stonesand_1, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 + Yfake_amoeba, FALSE, FALSE, + EL_EMC_DRIPPER, ACTION_ACTIVE, -1 }, + { - Xsand_stonesand_2, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 + Xlenses, TRUE, FALSE, + EL_EMC_LENSES, -1, -1 + }, + + { + Xmagnify, TRUE, FALSE, + EL_EMC_MAGNIFIER, -1, -1 }, + { - Xsand_stonesand_3, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 + Xsand, TRUE, FALSE, + EL_QUICKSAND_EMPTY, -1, -1 }, { - Xsand_stonesand_4, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 + Xsand_stone, TRUE, FALSE, + EL_QUICKSAND_FULL, -1, -1 }, { - Xsand_stonesand_quickout_1, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 + Xsand_stonein_1, FALSE, TRUE, + EL_ROCK, ACTION_FILLING, -1 }, { - Xsand_stonesand_quickout_2, FALSE, FALSE, - EL_QUICKSAND_EMPTYING, -1, -1 + Xsand_stonein_2, FALSE, TRUE, + EL_ROCK, ACTION_FILLING, -1 }, { - Xsand_stoneout_1, FALSE, FALSE, - EL_ROCK, ACTION_EMPTYING, -1 + Xsand_stonein_3, FALSE, TRUE, + EL_ROCK, ACTION_FILLING, -1 }, { - Xsand_stoneout_2, FALSE, FALSE, - EL_ROCK, ACTION_EMPTYING, -1 + Xsand_stonein_4, FALSE, TRUE, + EL_ROCK, ACTION_FILLING, -1 }, { Xsand_sandstone_1, FALSE, FALSE, @@ -6993,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 - }, - { - Xfake_amoeba, TRUE, FALSE, - EL_EMC_DRIPPER, -1, -1 - }, - { - Xfake_amoebaB, 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 @@ -7128,6 +7151,7 @@ em_object_mapping_list[] = Xwall_4, TRUE, FALSE, EL_EMC_WALL_16, -1, -1 }, + { Xroundwall_1, TRUE, FALSE, EL_WALL_SLIPPERY, -1, -1 @@ -7144,6 +7168,24 @@ em_object_mapping_list[] = 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 @@ -7192,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 @@ -7378,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 }, { @@ -7706,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++) { @@ -7719,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; @@ -8174,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) @@ -8217,8 +8257,8 @@ static int get_effective_element_EM(int tile, int frame_em) { switch (tile) { - case Xacid_splash_e: - case Xacid_splash_w: + case Xsplash_e: + case Xsplash_w: return (frame_em > 5 ? EL_EMPTY : element); default: @@ -8229,8 +8269,8 @@ static int get_effective_element_EM(int tile, int frame_em) { switch (tile) { - case Xacid_splash_e: - case Xacid_splash_w: + case Xsplash_e: + case Xsplash_w: return EL_EMPTY; case Ynut_stone: @@ -8298,8 +8338,8 @@ static boolean check_linear_animation_EM(int tile) case Ytank_s_e: case Ytank_w_s: case Ytank_n_w: - case Xacid_splash_e: - case Xacid_splash_w: + case Xsplash_e: + case Xsplash_w: case Ynut_stone: return TRUE; } @@ -8546,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++) { @@ -8750,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 : @@ -8776,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, @@ -8878,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 - } } @@ -9013,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, @@ -9037,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,