X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=366303b22e49d5236b65e5ebe2b04186a6cd8f8e;hb=9e54f3f605e0999f4f2d866107449c247493e957;hp=0d4f45d868086ccbcfc26e8c2ba7a15d5695960c;hpb=1f5b7dda7fe53b3b0ec085a8e9c99d5ca82c8161;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 0d4f45d8..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); @@ -5740,17 +5738,64 @@ static struct Mapping_EM_to_RND_object } em_object_mapping_list[] = { + { + Zborder, FALSE, FALSE, + EL_EMPTY, -1, -1 + }, + { + Zplayer, FALSE, FALSE, + EL_EMPTY, -1, -1 + }, + + { + Zbug, FALSE, FALSE, + EL_EMPTY, -1, -1 + }, + { + Ztank, FALSE, FALSE, + EL_EMPTY, -1, -1 + }, + { + Zeater, FALSE, FALSE, + EL_EMPTY, -1, -1 + }, + { + Zdynamite, FALSE, FALSE, + EL_EMPTY, -1, -1 + }, + + { + Xboom_bug, FALSE, FALSE, + EL_BUG, ACTION_EXPLODING, -1 + }, + { + Xboom_tank, FALSE, FALSE, + EL_SPACESHIP, ACTION_EXPLODING, -1 + }, + { + Xboom_android, FALSE, FALSE, + EL_EMC_ANDROID, ACTION_OTHER, -1 + }, + { + Xboom_1, FALSE, FALSE, + EL_DEFAULT, ACTION_EXPLODING, -1 + }, + { + Xboom_2, FALSE, FALSE, + EL_DEFAULT, ACTION_EXPLODING, -1 + }, + { Xblank, TRUE, FALSE, EL_EMPTY, -1, -1 }, { - Xacid_splash_e, FALSE, FALSE, + Xsplash_e, FALSE, FALSE, EL_ACID_SPLASH_RIGHT, -1, -1 }, { - Xacid_splash_w, FALSE, FALSE, + Xsplash_w, FALSE, FALSE, EL_ACID_SPLASH_LEFT, -1, -1 }, @@ -6864,7 +6909,7 @@ em_object_mapping_list[] = EL_MAGIC_WALL, -1, -1 }, { - XwonderwallB, FALSE, FALSE, + Ywonderwall, FALSE, FALSE, EL_MAGIC_WALL, ACTION_ACTIVE, -1 }, @@ -6873,7 +6918,7 @@ em_object_mapping_list[] = EL_ROBOT_WHEEL, -1, -1 }, { - XwheelB, FALSE, FALSE, + Ywheel, FALSE, FALSE, EL_ROBOT_WHEEL, ACTION_ACTIVE, -1 }, @@ -6882,7 +6927,7 @@ em_object_mapping_list[] = EL_EMC_MAGIC_BALL_SWITCH, -1, -1 }, { - XswitchB, FALSE, FALSE, + Yswitch, FALSE, FALSE, EL_EMC_MAGIC_BALL_SWITCH, ACTION_ACTIVE, -1 }, @@ -6891,7 +6936,7 @@ em_object_mapping_list[] = EL_EMC_SPRING_BUMPER, -1, -1 }, { - XbumperB, FALSE, FALSE, + Ybumper, FALSE, FALSE, EL_EMC_SPRING_BUMPER, ACTION_ACTIVE, -1 }, @@ -6921,7 +6966,7 @@ em_object_mapping_list[] = EL_INVISIBLE_WALL, -1, -1 }, { - Xfake_blankB, FALSE, FALSE, + Yfake_blank, FALSE, FALSE, EL_INVISIBLE_WALL, ACTION_ACTIVE, -1 }, @@ -6930,7 +6975,7 @@ em_object_mapping_list[] = EL_EMC_FAKE_GRASS, -1, -1 }, { - Xfake_grassB, FALSE, FALSE, + Yfake_grass, FALSE, FALSE, EL_EMC_FAKE_GRASS, ACTION_ACTIVE, -1 }, @@ -6939,7 +6984,7 @@ em_object_mapping_list[] = EL_EMC_DRIPPER, -1, -1 }, { - Xfake_amoebaB, FALSE, FALSE, + Yfake_amoeba, FALSE, FALSE, EL_EMC_DRIPPER, ACTION_ACTIVE, -1 }, @@ -7027,19 +7072,19 @@ em_object_mapping_list[] = }, { - Xslidewall_ns, TRUE, FALSE, + Xslide_ns, TRUE, FALSE, EL_EXPANDABLE_WALL_VERTICAL, -1, -1 }, { - Yslidewall_ns_blank, FALSE, FALSE, + Yslide_ns_blank, FALSE, FALSE, EL_EXPANDABLE_WALL_VERTICAL, ACTION_GROWING, -1 }, { - Xslidewall_ew, TRUE, FALSE, + Xslide_ew, TRUE, FALSE, EL_EXPANDABLE_WALL_HORIZONTAL, -1, -1 }, { - Yslidewall_ew_blank, FALSE, FALSE, + Yslide_ew_blank, FALSE, FALSE, EL_EXPANDABLE_WALL_HORIZONTAL, ACTION_GROWING, -1 }, @@ -7085,6 +7130,11 @@ em_object_mapping_list[] = EL_EM_EXIT_OPEN, -1, -1 }, + { + Xpause, FALSE, FALSE, + EL_EMPTY, -1, -1 + }, + { Xwall_1, TRUE, FALSE, EL_WALL, -1, -1 @@ -7419,43 +7469,6 @@ em_object_mapping_list[] = EL_SAND, ACTION_SNAPPING, -1 }, - { - Xboom_bug, FALSE, FALSE, - EL_BUG, ACTION_EXPLODING, -1 - }, - { - Xboom_bomb, FALSE, FALSE, - EL_BOMB, ACTION_EXPLODING, -1 - }, - { - Xboom_android, FALSE, FALSE, - EL_EMC_ANDROID, ACTION_OTHER, -1 - }, - { - Xboom_1, FALSE, FALSE, - EL_DEFAULT, ACTION_EXPLODING, -1 - }, - { - Xboom_2, FALSE, FALSE, - EL_DEFAULT, ACTION_EXPLODING, -1 - }, - { - Znormal, FALSE, FALSE, - EL_EMPTY, -1, -1 - }, - { - Zdynamite, FALSE, FALSE, - EL_EMPTY, -1, -1 - }, - { - Zplayer, FALSE, FALSE, - EL_EMPTY, -1, -1 - }, - { - Zborder, FALSE, FALSE, - EL_EMPTY, -1, -1 - }, - { -1, FALSE, FALSE, -1, -1, -1 @@ -7748,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++) { @@ -7761,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; @@ -8216,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) @@ -8259,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: @@ -8271,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: @@ -8340,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; } @@ -8588,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++) { @@ -8792,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 : @@ -8818,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, @@ -8920,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 - } } @@ -9055,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, @@ -9079,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,