static void PrepareGameTileBitmap_BD(void)
{
- struct GraphicInfo_BD *g = &graphic_info_bd_object[O_STONE][0];
+ struct GraphicInfo_BD *g_template = &graphic_info_bd_color_template;
+ struct GraphicInfo_BD *g_default = &graphic_info_bd_object[O_STONE][0];
- gd_prepare_tile_bitmap(native_bd_level.cave, g->bitmap, 1);
+ gd_prepare_tile_bitmap(native_bd_level.cave, g_template->bitmap, 1);
+ gd_set_tile_bitmap_reference(g_default->bitmap);
}
void PreparePreviewTileBitmap_BD(Bitmap *bitmap, int scale_down_factor)
play_game_func(game_bd.game, action[0]);
+ // scroll without iterating engine if player out of sight (mainly due to wrap-around)
+ // (this is needed to prevent broken tapes in case of viewport or tile size changes)
+ while (game_bd.game->out_of_window)
+ {
+ RedrawPlayfield_BD(TRUE);
+
+ BlitScreenToBitmap_BD(backbuffer);
+
+ BackToFront();
+
+ play_game_func(game_bd.game, action[0]);
+ }
+
RedrawPlayfield_BD(FALSE);
UpdateGameDoorValues_BD();