Dont have a type for every grain of dirt - think about a method that just stores the top and bottom pixel position of every column (without any vertical space in it) of dirt.
Only perform logic and individual redraw on columns that have been affected by a blast. You could use drawrect or drawline to draw whole columns where they are changing position.
Only perform logic and individual redraw on columns that have been affected by a blast. You could use drawrect or drawline to draw whole columns where they are changing position.