diff --git a/src/mame/drivers/cardline.c b/src/mame/drivers/cardline.c index 8f2dd4c5bad..2eda29b5910 100644 --- a/src/mame/drivers/cardline.c +++ b/src/mame/drivers/cardline.c @@ -139,7 +139,8 @@ WRITE_LINE_MEMBER(cardline_state::hsync_changed) { /* update any video up to the current scanline */ m_hsync_q = (state ? 0x00 : 0x10); - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); } WRITE_LINE_MEMBER(cardline_state::vsync_changed) diff --git a/src/mame/drivers/cubeqst.c b/src/mame/drivers/cubeqst.c index d11cf9ead2a..837e77c9a9f 100644 --- a/src/mame/drivers/cubeqst.c +++ b/src/mame/drivers/cubeqst.c @@ -101,7 +101,9 @@ void cubeqst_state::video_start() WRITE16_MEMBER(cubeqst_state::palette_w) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); + COMBINE_DATA(&m_generic_paletteram_16[offset]); } diff --git a/src/mame/drivers/firefox.c b/src/mame/drivers/firefox.c index 7d18687fed4..d77ee4b6a39 100644 --- a/src/mame/drivers/firefox.c +++ b/src/mame/drivers/firefox.c @@ -267,7 +267,8 @@ UINT32 firefox_state::screen_update_firefox(screen_device &screen, bitmap_rgb32 TIMER_DEVICE_CALLBACK_MEMBER(firefox_state::video_timer_callback) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE ); } diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c index bcd1651c2c7..446e3b310b7 100644 --- a/src/mame/drivers/galaxian.c +++ b/src/mame/drivers/galaxian.c @@ -5235,7 +5235,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(galaxian_state::timefgtr_scanline) // change spriteram base per each 64-line part of the screen if ((split & 0x3f) == 0) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_sprites_base = 0x40 | (split << 2 & 0x300); } } diff --git a/src/mame/drivers/merit.c b/src/mame/drivers/merit.c index 7131d099cc5..2983b49aeac 100644 --- a/src/mame/drivers/merit.c +++ b/src/mame/drivers/merit.c @@ -232,7 +232,8 @@ WRITE8_MEMBER(merit_state::palette_w) { int co; - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); data &= 0x0f; co = ((m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); @@ -305,7 +306,8 @@ MC6845_UPDATE_ROW( merit_state::crtc_update_row ) WRITE_LINE_MEMBER(merit_state::hsync_changed) { /* update any video up to the current scanline */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); } WRITE_LINE_MEMBER(merit_state::vsync_changed) diff --git a/src/mame/drivers/segas24.c b/src/mame/drivers/segas24.c index 7a3a5f76a51..34be9d6ba5d 100644 --- a/src/mame/drivers/segas24.c +++ b/src/mame/drivers/segas24.c @@ -878,8 +878,11 @@ TIMER_DEVICE_CALLBACK_MEMBER(segas24_state::irq_timer_cb) if(irq_allow1 & (1 << IRQ_TIMER)) m_subcpu->set_input_line(IRQ_TIMER+1, ASSERT_LINE); - if(irq_tmode == 1 || irq_tmode == 2) - m_screen->update_now(); + if (irq_tmode == 1 || irq_tmode == 2) + { + // m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); + } } TIMER_DEVICE_CALLBACK_MEMBER(segas24_state::irq_timer_clear_cb) diff --git a/src/mame/drivers/slotcarn.c b/src/mame/drivers/slotcarn.c index c5f0726a886..b1cedc60b39 100644 --- a/src/mame/drivers/slotcarn.c +++ b/src/mame/drivers/slotcarn.c @@ -82,7 +82,8 @@ WRITE8_MEMBER(slotcarn_state::palette_w) { int co; - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); data &= 0x0f; co = ((m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); @@ -157,7 +158,8 @@ MC6845_UPDATE_ROW( slotcarn_state::crtc_update_row ) WRITE_LINE_MEMBER(slotcarn_state::hsync_changed) { /* update any video up to the current scanline */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); } WRITE_LINE_MEMBER(slotcarn_state::vsync_changed) diff --git a/src/mame/drivers/vicdual.c b/src/mame/drivers/vicdual.c index 73e7682a86e..d180791cf48 100644 --- a/src/mame/drivers/vicdual.c +++ b/src/mame/drivers/vicdual.c @@ -207,14 +207,16 @@ int vicdual_state::is_cabinet_color() WRITE8_MEMBER(vicdual_state::videoram_w) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_videoram[offset] = data; } WRITE8_MEMBER(vicdual_state::characterram_w) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_characterram[offset] = data; } diff --git a/src/mame/video/btoads.c b/src/mame/video/btoads.c index 8dbdec15400..7bbbfbcd014 100644 --- a/src/mame/video/btoads.c +++ b/src/mame/video/btoads.c @@ -93,7 +93,8 @@ WRITE16_MEMBER( btoads_state::display_control_w ) WRITE16_MEMBER( btoads_state::scroll0_w ) { /* allow multiple changes during display */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); /* upper bits are Y scroll, lower bits are X scroll */ if (ACCESSING_BITS_8_15) @@ -106,7 +107,8 @@ WRITE16_MEMBER( btoads_state::scroll0_w ) WRITE16_MEMBER( btoads_state::scroll1_w ) { /* allow multiple changes during display */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); /* upper bits are Y scroll, lower bits are X scroll */ if (ACCESSING_BITS_8_15) diff --git a/src/mame/video/cloak.c b/src/mame/video/cloak.c index f9138f25970..18551ff6b52 100644 --- a/src/mame/video/cloak.c +++ b/src/mame/video/cloak.c @@ -92,7 +92,9 @@ void cloak_state::set_current_bitmap_videoram_pointer() WRITE8_MEMBER(cloak_state::cloak_clearbmp_w) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); + m_bitmap_videoram_selected = data & 0x01; set_current_bitmap_videoram_pointer(); diff --git a/src/mame/video/dkong.c b/src/mame/video/dkong.c index 1f8e700a2f1..484be075692 100644 --- a/src/mame/video/dkong.c +++ b/src/mame/video/dkong.c @@ -876,7 +876,8 @@ TIMER_CALLBACK_MEMBER(dkong_state::scanline_callback) radarscp_scanline(scanline); /* update any video up to the current scanline */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); scanline = (scanline+1) % VTOTAL; /* come back at the next appropriate scanline */ diff --git a/src/mame/video/galaxian.c b/src/mame/video/galaxian.c index ce800e92a83..1e84b9b0a9a 100644 --- a/src/mame/video/galaxian.c +++ b/src/mame/video/galaxian.c @@ -480,7 +480,8 @@ WRITE8_MEMBER(galaxian_state::galaxian_videoram_w) { UINT8 *videoram = m_videoram; /* update any video up to the current scanline */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); /* store the data and mark the corresponding tile dirty */ videoram[offset] = data; @@ -491,7 +492,8 @@ WRITE8_MEMBER(galaxian_state::galaxian_videoram_w) WRITE8_MEMBER(galaxian_state::galaxian_objram_w) { /* update any video up to the current scanline */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); /* store the data */ m_spriteram[offset] = data; @@ -641,7 +643,8 @@ WRITE8_MEMBER(galaxian_state::galaxian_flip_screen_x_w) { if (m_flipscreen_x != (data & 0x01)) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); /* when the direction changes, we count a different number of clocks */ /* per frame, so we need to reset the origin of the stars to the current */ @@ -657,7 +660,9 @@ WRITE8_MEMBER(galaxian_state::galaxian_flip_screen_y_w) { if (m_flipscreen_y != (data & 0x01)) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); + m_flipscreen_y = data & 0x01; m_bg_tilemap->set_flip((m_flipscreen_x ? TILEMAP_FLIPX : 0) | (m_flipscreen_y ? TILEMAP_FLIPY : 0)); } @@ -680,7 +685,10 @@ WRITE8_MEMBER(galaxian_state::galaxian_flip_screen_xy_w) WRITE8_MEMBER(galaxian_state::galaxian_stars_enable_w) { if ((m_stars_enabled ^ data) & 0x01) - m_screen->update_now(); + { +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); + } if (!m_stars_enabled && (data & 0x01)) { @@ -697,7 +705,10 @@ WRITE8_MEMBER(galaxian_state::galaxian_stars_enable_w) WRITE8_MEMBER(galaxian_state::scramble_background_enable_w) { if ((m_background_enable ^ data) & 0x01) - m_screen->update_now(); + { + // m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); + } m_background_enable = data & 0x01; } @@ -706,7 +717,10 @@ WRITE8_MEMBER(galaxian_state::scramble_background_enable_w) WRITE8_MEMBER(galaxian_state::scramble_background_red_w) { if ((m_background_red ^ data) & 0x01) - m_screen->update_now(); + { + // m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); + } m_background_red = data & 0x01; } @@ -715,7 +729,10 @@ WRITE8_MEMBER(galaxian_state::scramble_background_red_w) WRITE8_MEMBER(galaxian_state::scramble_background_green_w) { if ((m_background_green ^ data) & 0x01) - m_screen->update_now(); + { + // m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); + } m_background_green = data & 0x01; } @@ -724,7 +741,10 @@ WRITE8_MEMBER(galaxian_state::scramble_background_green_w) WRITE8_MEMBER(galaxian_state::scramble_background_blue_w) { if ((m_background_blue ^ data) & 0x01) - m_screen->update_now(); + { + // m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); + } m_background_blue = data & 0x01; } @@ -741,7 +761,8 @@ WRITE8_MEMBER(galaxian_state::galaxian_gfxbank_w) { if (m_gfxbank[offset] != data) { - m_screen->update_now(); + //m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_gfxbank[offset] = data; m_bg_tilemap->mark_all_dirty(); } diff --git a/src/mame/video/gyruss.c b/src/mame/video/gyruss.c index 316a748a971..bf1038ac72b 100644 --- a/src/mame/video/gyruss.c +++ b/src/mame/video/gyruss.c @@ -93,7 +93,8 @@ PALETTE_INIT_MEMBER(gyruss_state, gyruss) WRITE8_MEMBER(gyruss_state::gyruss_spriteram_w) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_spriteram[offset] = data; } diff --git a/src/mame/video/itech8.c b/src/mame/video/itech8.c index 42a80eb9291..8920c8c423f 100644 --- a/src/mame/video/itech8.c +++ b/src/mame/video/itech8.c @@ -537,7 +537,8 @@ WRITE8_MEMBER(itech8_state::grmatch_palette_w) WRITE8_MEMBER(itech8_state::grmatch_xscroll_w) { /* update the X scroll value */ - m_screen->update_now(); + //m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_grmatch_xscroll = data; } diff --git a/src/mame/video/meadows.c b/src/mame/video/meadows.c index 45d2cedfd3a..d378f15a7cf 100644 --- a/src/mame/video/meadows.c +++ b/src/mame/video/meadows.c @@ -64,7 +64,8 @@ WRITE8_MEMBER(meadows_state::meadows_videoram_w) WRITE8_MEMBER(meadows_state::meadows_spriteram_w) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_spriteram[offset] = data; } diff --git a/src/mame/video/qix.c b/src/mame/video/qix.c index 53cacf4a472..5bd717ecbc3 100644 --- a/src/mame/video/qix.c +++ b/src/mame/video/qix.c @@ -99,7 +99,8 @@ WRITE8_MEMBER(qix_state::qix_videoram_w) { /* update the screen in case the game is writing "behind" the beam - Zookeeper likes to do this */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); /* add in the upper bit of the address latch */ offset += (m_videoram_address[0] & 0x80) << 8; @@ -113,7 +114,8 @@ WRITE8_MEMBER(qix_state::slither_videoram_w) { /* update the screen in case the game is writing "behind" the beam - Zookeeper likes to do this */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); /* add in the upper bit of the address latch */ offset += (m_videoram_address[0] & 0x80) << 8; @@ -150,7 +152,8 @@ READ8_MEMBER(qix_state::qix_addresslatch_r) WRITE8_MEMBER(qix_state::qix_addresslatch_w) { /* update the screen in case the game is writing "behind" the beam */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); /* compute the value at the address latch */ offset = (m_videoram_address[0] << 8) | m_videoram_address[1]; @@ -163,7 +166,8 @@ WRITE8_MEMBER(qix_state::qix_addresslatch_w) WRITE8_MEMBER(qix_state::slither_addresslatch_w) { /* update the screen in case the game is writing "behind" the beam */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); /* compute the value at the address latch */ offset = (m_videoram_address[0] << 8) | m_videoram_address[1]; @@ -191,7 +195,10 @@ WRITE8_MEMBER(qix_state::qix_paletteram_w) /* trigger an update if a currently visible pen has changed */ if (((offset >> 8) == m_palette_bank) && (old_data != data)) - m_screen->update_now(); + { + // m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); + } set_pen(offset); } @@ -202,7 +209,8 @@ WRITE8_MEMBER(qix_state::qix_palettebank_w) /* set the bank value */ if (m_palette_bank != (data & 3)) { - m_screen->update_now(); + //m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_palette_bank = data & 3; } diff --git a/src/mame/video/spacefb.c b/src/mame/video/spacefb.c index c663655dc32..94499a825c3 100644 --- a/src/mame/video/spacefb.c +++ b/src/mame/video/spacefb.c @@ -19,14 +19,16 @@ WRITE8_MEMBER(spacefb_state::port_0_w) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_port_0 = data; } WRITE8_MEMBER(spacefb_state::port_2_w) { - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_port_2 = data; } diff --git a/src/mame/video/tp84.c b/src/mame/video/tp84.c index fc2f2196bba..cf95dafbc4f 100644 --- a/src/mame/video/tp84.c +++ b/src/mame/video/tp84.c @@ -106,7 +106,8 @@ PALETTE_INIT_MEMBER(tp84_state, tp84) WRITE8_MEMBER(tp84_state::tp84_spriteram_w) { /* the game multiplexes the sprites, so update now */ - m_screen->update_now(); +// m_screen->update_now(); + m_screen->update_partial(m_screen->vpos()); m_spriteram[offset] = data; }