static int vblank_top_start, vblank_bottom_stop;
static int hblank_left_start, hblank_right_stop;
static int hblank_left_start_hard, hblank_right_stop_hard;
-static bool exthblank, extborder, exthblanken;
+static bool exthblank, extborder, exthblanken, exthblankon;
static int linetoscr_x_adjust_pixbytes, linetoscr_x_adjust_pixels;
static int thisframe_y_adjust;
static void extblankcheck(void)
{
- if (exthblanken && ((dp_for_drawing->bplcon3 & 1) && (dp_for_drawing->bplcon0 & 1))) {
+ exthblankon = dp_for_drawing && (dp_for_drawing->bplcon3 & 1) && (dp_for_drawing->bplcon0 & 1);
+ if (exthblanken && exthblankon) {
exthblank = true;
}
- if (exthblanken && (!(dp_for_drawing->bplcon3 & 1) || !(dp_for_drawing->bplcon0 & 1))) {
+ if (exthblanken && !exthblankon) {
exthblank = false;
}
}
} else {
// non-vblank scanline
- int hblank_left = exthblank ? hblank_left_start : hblank_left_start_hard;
+ int hblank_left = exthblankon ? hblank_left_start : hblank_left_start_hard;
// left hblank (left edge to hblank end)
if (nextpos_in_range > lastpos && lastpos < hblank_left) {
}
}
- int hblank_right = exthblank ? hblank_right_stop : hblank_right_stop_hard;
+ int hblank_right = exthblankon ? hblank_right_stop : hblank_right_stop_hard;
// right border (playfield end to hblank start)
if (nextpos_in_range > lastpos && lastpos >= playfield_end_pre) {
vb_state = 0;
exthblank = false;
exthblanken = false;
+ exthblankon = false;
extborder = false;
display_reset = 1;