summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2012-01-14 00:39:13 +0000
committer Aaron Giles <aaron@aarongiles.com>2012-01-14 00:39:13 +0000
commit8d1ffc9677f513da4bda481dd2e5d67021043479 (patch)
tree98e70b854ac2cddae2ed2b2182da18df91ffd069
parente325b867ece9738594a92d7f75cc45168fdac494 (diff)
Death to SCREEN_EOF, which was ambiguously called either
at the start or end of VBLANK depending on the video flag VIDEO_UPDATE_AFTER_VBLANK. Replaced with SCREEN_VBLANK callbacks which are called both at the start and end of VBLANK, so you can operate either way, and be explicit about it. Updated all callers. Also updated screen_device to use device timers and some other minor cleanups.
-rw-r--r--src/emu/screen.c139
-rw-r--r--src/emu/screen.h60
-rw-r--r--src/emu/video.c11
-rw-r--r--src/mame/drivers/2mindril.c2
-rw-r--r--src/mame/drivers/airbustr.c2
-rw-r--r--src/mame/drivers/armedf.c16
-rw-r--r--src/mame/drivers/asuka.c21
-rw-r--r--src/mame/drivers/atarig1.c2
-rw-r--r--src/mame/drivers/atarig42.c2
-rw-r--r--src/mame/drivers/atarigt.c2
-rw-r--r--src/mame/drivers/atarigx2.c2
-rw-r--r--src/mame/drivers/baraduke.c2
-rw-r--r--src/mame/drivers/bbusters.c26
-rw-r--r--src/mame/drivers/bionicc.c2
-rw-r--r--src/mame/drivers/bking.c2
-rw-r--r--src/mame/drivers/blktiger.c2
-rw-r--r--src/mame/drivers/carpolo.c2
-rw-r--r--src/mame/drivers/cchance.c2
-rw-r--r--src/mame/drivers/champbas.c22
-rw-r--r--src/mame/drivers/champbwl.c16
-rw-r--r--src/mame/drivers/commando.c2
-rw-r--r--src/mame/drivers/cps1.c8
-rw-r--r--src/mame/drivers/cps2.c2
-rw-r--r--src/mame/drivers/crshrace.c2
-rw-r--r--src/mame/drivers/crystal.c48
-rw-r--r--src/mame/drivers/ddz.c4
-rw-r--r--src/mame/drivers/dec8.c16
-rw-r--r--src/mame/drivers/deco32.c6
-rw-r--r--src/mame/drivers/deco_mlc.c4
-rw-r--r--src/mame/drivers/djboy.c2
-rw-r--r--src/mame/drivers/dooyong.c18
-rw-r--r--src/mame/drivers/dreamwld.c14
-rw-r--r--src/mame/drivers/dynduke.c2
-rw-r--r--src/mame/drivers/exedexes.c2
-rw-r--r--src/mame/drivers/fcrash.c4
-rw-r--r--src/mame/drivers/fuukifg3.c2
-rw-r--r--src/mame/drivers/gaelco2.c12
-rw-r--r--src/mame/drivers/galaga.c4
-rw-r--r--src/mame/drivers/galpanic.c20
-rw-r--r--src/mame/drivers/gaplus.c2
-rw-r--r--src/mame/drivers/gng.c2
-rw-r--r--src/mame/drivers/goal92.c2
-rw-r--r--src/mame/drivers/hng64.c2
-rw-r--r--src/mame/drivers/homedata.c6
-rw-r--r--src/mame/drivers/hvyunit.c12
-rw-r--r--src/mame/drivers/igs011.c14
-rw-r--r--src/mame/drivers/ladybug.c2
-rw-r--r--src/mame/drivers/lastduel.c4
-rw-r--r--src/mame/drivers/lemmings.c2
-rw-r--r--src/mame/drivers/lockon.c2
-rw-r--r--src/mame/drivers/lwings.c2
-rw-r--r--src/mame/drivers/macrossp.c2
-rw-r--r--src/mame/drivers/maygayv1.c50
-rw-r--r--src/mame/drivers/mcatadv.c2
-rw-r--r--src/mame/drivers/megaplay.c10
-rw-r--r--src/mame/drivers/megasys1.c6
-rw-r--r--src/mame/drivers/megatech.c10
-rw-r--r--src/mame/drivers/mermaid.c2
-rw-r--r--src/mame/drivers/mirage.c12
-rw-r--r--src/mame/drivers/model1.c4
-rw-r--r--src/mame/drivers/mw8080bw.c2
-rw-r--r--src/mame/drivers/n8080.c2
-rw-r--r--src/mame/drivers/namcos1.c2
-rw-r--r--src/mame/drivers/namcos86.c2
-rw-r--r--src/mame/drivers/ninjakd2.c2
-rw-r--r--src/mame/drivers/nmk16.c46
-rw-r--r--src/mame/drivers/othldrby.c2
-rw-r--r--src/mame/drivers/pgm.c4
-rw-r--r--src/mame/drivers/pgm2.c4
-rw-r--r--src/mame/drivers/photon2.c22
-rw-r--r--src/mame/drivers/psattack.c4
-rw-r--r--src/mame/drivers/psikyo.c8
-rw-r--r--src/mame/drivers/psikyosh.c2
-rw-r--r--src/mame/drivers/raiden.c12
-rw-r--r--src/mame/drivers/redclash.c4
-rw-r--r--src/mame/drivers/sandscrp.c18
-rw-r--r--src/mame/drivers/segac2.c2
-rw-r--r--src/mame/drivers/seta.c22
-rw-r--r--src/mame/drivers/seta2.c6
-rw-r--r--src/mame/drivers/shadfrce.c2
-rw-r--r--src/mame/drivers/sidearms.c6
-rw-r--r--src/mame/drivers/sigmab98.c12
-rw-r--r--src/mame/drivers/slapfght.c18
-rw-r--r--src/mame/drivers/slapshot.c4
-rw-r--r--src/mame/drivers/snowbros.c14
-rw-r--r--src/mame/drivers/sprint2.c2
-rw-r--r--src/mame/drivers/sprint4.c2
-rw-r--r--src/mame/drivers/sprint8.c2
-rw-r--r--src/mame/drivers/srumbler.c2
-rw-r--r--src/mame/drivers/sspeedr.c2
-rw-r--r--src/mame/drivers/ssrj.c2
-rw-r--r--src/mame/drivers/starshp1.c2
-rw-r--r--src/mame/drivers/suprnova.c2
-rw-r--r--src/mame/drivers/taito_b.c38
-rw-r--r--src/mame/drivers/taito_f2.c30
-rw-r--r--src/mame/drivers/taito_f3.c4
-rw-r--r--src/mame/drivers/taito_l.c8
-rw-r--r--src/mame/drivers/tank8.c2
-rw-r--r--src/mame/drivers/taotaido.c2
-rw-r--r--src/mame/drivers/tceptor.c2
-rw-r--r--src/mame/drivers/tigeroad.c2
-rw-r--r--src/mame/drivers/tmnt.c2
-rw-r--r--src/mame/drivers/tnzs.c14
-rw-r--r--src/mame/drivers/toaplan1.c16
-rw-r--r--src/mame/drivers/toaplan2.c32
-rw-r--r--src/mame/drivers/toki.c4
-rw-r--r--src/mame/drivers/twin16.c4
-rw-r--r--src/mame/drivers/twincobr.c2
-rw-r--r--src/mame/drivers/tx1.c6
-rw-r--r--src/mame/drivers/ultratnk.c2
-rw-r--r--src/mame/drivers/wardner.c2
-rw-r--r--src/mame/drivers/wheelfir.c12
-rw-r--r--src/mame/drivers/wolfpack.c2
-rw-r--r--src/mame/drivers/wwfwfest.c12
-rw-r--r--src/mame/drivers/xmen.c2
-rw-r--r--src/mame/includes/airbustr.h2
-rw-r--r--src/mame/includes/armedf.h2
-rw-r--r--src/mame/includes/atarig1.h2
-rw-r--r--src/mame/includes/atarig42.h2
-rw-r--r--src/mame/includes/atarigt.h2
-rw-r--r--src/mame/includes/atarigx2.h2
-rw-r--r--src/mame/includes/baraduke.h2
-rw-r--r--src/mame/includes/bionicc.h2
-rw-r--r--src/mame/includes/bking.h2
-rw-r--r--src/mame/includes/blktiger.h2
-rw-r--r--src/mame/includes/carpolo.h2
-rw-r--r--src/mame/includes/commando.h2
-rw-r--r--src/mame/includes/cps1.h2
-rw-r--r--src/mame/includes/crshrace.h2
-rw-r--r--src/mame/includes/deco32.h4
-rw-r--r--src/mame/includes/deco_mlc.h2
-rw-r--r--src/mame/includes/djboy.h2
-rw-r--r--src/mame/includes/dooyong.h4
-rw-r--r--src/mame/includes/dynduke.h2
-rw-r--r--src/mame/includes/exedexes.h2
-rw-r--r--src/mame/includes/fuukifg3.h2
-rw-r--r--src/mame/includes/gaelco2.h2
-rw-r--r--src/mame/includes/galaga.h4
-rw-r--r--src/mame/includes/gaplus.h2
-rw-r--r--src/mame/includes/gng.h2
-rw-r--r--src/mame/includes/goal92.h2
-rw-r--r--src/mame/includes/hng64.h2
-rw-r--r--src/mame/includes/homedata.h2
-rw-r--r--src/mame/includes/ladybug.h4
-rw-r--r--src/mame/includes/lastduel.h2
-rw-r--r--src/mame/includes/lemmings.h2
-rw-r--r--src/mame/includes/lockon.h2
-rw-r--r--src/mame/includes/lwings.h2
-rw-r--r--src/mame/includes/macrossp.h2
-rw-r--r--src/mame/includes/mcatadv.h2
-rw-r--r--src/mame/includes/megadriv.h2
-rw-r--r--src/mame/includes/megasys1.h2
-rw-r--r--src/mame/includes/mermaid.h2
-rw-r--r--src/mame/includes/model1.h2
-rw-r--r--src/mame/includes/mw8080bw.h2
-rw-r--r--src/mame/includes/n8080.h2
-rw-r--r--src/mame/includes/namcos1.h2
-rw-r--r--src/mame/includes/namcos86.h2
-rw-r--r--src/mame/includes/ninjakd2.h2
-rw-r--r--src/mame/includes/nmk16.h4
-rw-r--r--src/mame/includes/othldrby.h2
-rw-r--r--src/mame/includes/pgm.h2
-rw-r--r--src/mame/includes/psikyo.h2
-rw-r--r--src/mame/includes/psikyosh.h2
-rw-r--r--src/mame/includes/segamsys.h8
-rw-r--r--src/mame/includes/seta.h2
-rw-r--r--src/mame/includes/seta2.h2
-rw-r--r--src/mame/includes/shadfrce.h2
-rw-r--r--src/mame/includes/sidearms.h2
-rw-r--r--src/mame/includes/slapshot.h2
-rw-r--r--src/mame/includes/sprint2.h2
-rw-r--r--src/mame/includes/sprint4.h2
-rw-r--r--src/mame/includes/sprint8.h2
-rw-r--r--src/mame/includes/srumbler.h2
-rw-r--r--src/mame/includes/sspeedr.h2
-rw-r--r--src/mame/includes/ssrj.h2
-rw-r--r--src/mame/includes/starshp1.h2
-rw-r--r--src/mame/includes/suprnova.h2
-rw-r--r--src/mame/includes/taito_b.h2
-rw-r--r--src/mame/includes/taito_f2.h10
-rw-r--r--src/mame/includes/taito_f3.h2
-rw-r--r--src/mame/includes/taito_l.h2
-rw-r--r--src/mame/includes/tank8.h2
-rw-r--r--src/mame/includes/taotaido.h2
-rw-r--r--src/mame/includes/tceptor.h2
-rw-r--r--src/mame/includes/tigeroad.h2
-rw-r--r--src/mame/includes/tmnt.h2
-rw-r--r--src/mame/includes/tnzs.h2
-rw-r--r--src/mame/includes/toaplan1.h6
-rw-r--r--src/mame/includes/toaplan2.h2
-rw-r--r--src/mame/includes/toki.h4
-rw-r--r--src/mame/includes/twin16.h2
-rw-r--r--src/mame/includes/twincobr.h2
-rw-r--r--src/mame/includes/tx1.h4
-rw-r--r--src/mame/includes/ultratnk.h2
-rw-r--r--src/mame/includes/wolfpack.h2
-rw-r--r--src/mame/includes/xmen.h2
-rw-r--r--src/mame/machine/megadriv.c164
-rw-r--r--src/mame/machine/segamsys.c39
-rw-r--r--src/mame/video/airbustr.c12
-rw-r--r--src/mame/video/armedf.c10
-rw-r--r--src/mame/video/atarig1.c10
-rw-r--r--src/mame/video/atarig42.c10
-rw-r--r--src/mame/video/atarigt.c10
-rw-r--r--src/mame/video/atarigx2.c10
-rw-r--r--src/mame/video/baraduke.c26
-rw-r--r--src/mame/video/bionicc.c10
-rw-r--r--src/mame/video/bking.c112
-rw-r--r--src/mame/video/blktiger.c10
-rw-r--r--src/mame/video/bosco.c16
-rw-r--r--src/mame/video/carpolo.c306
-rw-r--r--src/mame/video/commando.c10
-rw-r--r--src/mame/video/cps1.c20
-rw-r--r--src/mame/video/crshrace.c12
-rw-r--r--src/mame/video/deco32.c4
-rw-r--r--src/mame/video/deco_mlc.c20
-rw-r--r--src/mame/video/djboy.c10
-rw-r--r--src/mame/video/dooyong.c20
-rw-r--r--src/mame/video/dynduke.c10
-rw-r--r--src/mame/video/exedexes.c10
-rw-r--r--src/mame/video/fuukifg3.c18
-rw-r--r--src/mame/video/gaelco2.c12
-rw-r--r--src/mame/video/galaga.c22
-rw-r--r--src/mame/video/gaplus.c140
-rw-r--r--src/mame/video/gng.c10
-rw-r--r--src/mame/video/goal92.c10
-rw-r--r--src/mame/video/hng64.c6
-rw-r--r--src/mame/video/homedata.c10
-rw-r--r--src/mame/video/ladybug.c6
-rw-r--r--src/mame/video/lastduel.c16
-rw-r--r--src/mame/video/lemmings.c12
-rw-r--r--src/mame/video/lockon.c24
-rw-r--r--src/mame/video/lwings.c10
-rw-r--r--src/mame/video/macrossp.c14
-rw-r--r--src/mame/video/mcatadv.c12
-rw-r--r--src/mame/video/megasys1.c22
-rw-r--r--src/mame/video/mermaid.c471
-rw-r--r--src/mame/video/model1.c12
-rw-r--r--src/mame/video/mw8080bw.c14
-rw-r--r--src/mame/video/n8080.c56
-rw-r--r--src/mame/video/namcos1.c26
-rw-r--r--src/mame/video/namcos86.c26
-rw-r--r--src/mame/video/ninjakd2.c14
-rw-r--r--src/mame/video/nmk16.c40
-rw-r--r--src/mame/video/othldrby.c14
-rw-r--r--src/mame/video/pgm.c12
-rw-r--r--src/mame/video/psikyo.c12
-rw-r--r--src/mame/video/psikyosh.c10
-rw-r--r--src/mame/video/redclash.c8
-rw-r--r--src/mame/video/seta.c6
-rw-r--r--src/mame/video/seta2.c12
-rw-r--r--src/mame/video/shadfrce.c12
-rw-r--r--src/mame/video/sidearms.c10
-rw-r--r--src/mame/video/slapshot.c12
-rw-r--r--src/mame/video/sprint2.c136
-rw-r--r--src/mame/video/sprint4.c82
-rw-r--r--src/mame/video/sprint8.c40
-rw-r--r--src/mame/video/srumbler.c10
-rw-r--r--src/mame/video/sspeedr.c10
-rw-r--r--src/mame/video/ssrj.c10
-rw-r--r--src/mame/video/starshp1.c46
-rw-r--r--src/mame/video/suprnova.c2
-rw-r--r--src/mame/video/taito_b.c28
-rw-r--r--src/mame/video/taito_f2.c130
-rw-r--r--src/mame/video/taito_f3.c25
-rw-r--r--src/mame/video/taito_l.c12
-rw-r--r--src/mame/video/tank8.c152
-rw-r--r--src/mame/video/taotaido.c18
-rw-r--r--src/mame/video/tceptor.c10
-rw-r--r--src/mame/video/tigeroad.c10
-rw-r--r--src/mame/video/tmnt.c10
-rw-r--r--src/mame/video/tnzs.c6
-rw-r--r--src/mame/video/toaplan1.c36
-rw-r--r--src/mame/video/toaplan2.c12
-rw-r--r--src/mame/video/toki.c12
-rw-r--r--src/mame/video/twin16.c38
-rw-r--r--src/mame/video/twincobr.c16
-rw-r--r--src/mame/video/tx1.c18
-rw-r--r--src/mame/video/ultratnk.c82
-rw-r--r--src/mame/video/wolfpack.c46
-rw-r--r--src/mame/video/xmen.c138
281 files changed, 2420 insertions, 1978 deletions
diff --git a/src/emu/screen.c b/src/emu/screen.c
index 201df7948d3..4659792b324 100644
--- a/src/emu/screen.c
+++ b/src/emu/screen.c
@@ -232,14 +232,13 @@ void screen_device::static_set_screen_update(device_t &device, screen_update_rgb
//-------------------------------------------------
-// static_set_screen_eof - set the legacy
-// screen eof callback in the device
-// configuration
+// static_set_screen_vblank - set the screen
+// VBLANK callback in the device configuration
//-------------------------------------------------
-void screen_device::static_set_screen_eof(device_t &device, screen_eof_delegate callback)
+void screen_device::static_set_screen_vblank(device_t &device, screen_vblank_delegate callback)
{
- downcast<screen_device &>(device).m_screen_eof = callback;
+ downcast<screen_device &>(device).m_screen_vblank = callback;
}
@@ -299,7 +298,7 @@ void screen_device::device_start()
// bind our handlers
m_screen_update_ind16.bind_relative_to(*owner());
m_screen_update_rgb32.bind_relative_to(*owner());
- m_screen_eof.bind_relative_to(*owner());
+ m_screen_vblank.bind_relative_to(*owner());
// configure bitmap formats
texture_format texformat = !m_screen_update_ind16.isnull() ? TEXFORMAT_PALETTE16 : TEXFORMAT_RGB32;
@@ -316,15 +315,15 @@ void screen_device::device_start()
m_container->set_user_settings(settings);
// allocate the VBLANK timers
- m_vblank_begin_timer = machine().scheduler().timer_alloc(FUNC(static_vblank_begin_callback), (void *)this);
- m_vblank_end_timer = machine().scheduler().timer_alloc(FUNC(static_vblank_end_callback), (void *)this);
+ m_vblank_begin_timer = timer_alloc(TID_VBLANK_START);
+ m_vblank_end_timer = timer_alloc(TID_VBLANK_END);
// allocate a timer to reset partial updates
- m_scanline0_timer = machine().scheduler().timer_alloc(FUNC(static_scanline0_callback), (void *)this);
+ m_scanline0_timer = timer_alloc(TID_SCANLINE0);
// allocate a timer to generate per-scanline updates
if ((machine().config().m_video_attributes & VIDEO_UPDATE_SCANLINE) != 0)
- m_scanline_timer = machine().scheduler().timer_alloc(FUNC(static_scanline_update_callback), (void *)this);
+ m_scanline_timer = timer_alloc(TID_SCANLINE);
// configure the screen with the default parameters
configure(m_width, m_height, m_visarea, m_refresh);
@@ -396,6 +395,46 @@ void screen_device::device_post_load()
//-------------------------------------------------
+// device_timer - called whenever a device timer
+// fires
+//-------------------------------------------------
+
+void screen_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ switch (id)
+ {
+ // signal VBLANK start
+ case TID_VBLANK_START:
+ vblank_begin();
+ break;
+
+ // signal VBLANK end
+ case TID_VBLANK_END:
+ vblank_end();
+ break;
+
+ // first visible scanline
+ case TID_SCANLINE0:
+ reset_partial_updates();
+ break;
+
+ // subsequent scanlines when scanline updates are enabled
+ case TID_SCANLINE:
+
+ // force a partial update to the current scanline
+ update_partial(param);
+
+ // compute the next visible scanline
+ param++;
+ if (param > m_visarea.max_y)
+ param = m_visarea.min_y;
+ m_scanline_timer->adjust(time_until_pos(param), param);
+ break;
+ }
+}
+
+
+//-------------------------------------------------
// configure - configure screen parameters
//-------------------------------------------------
@@ -460,14 +499,14 @@ void screen_device::reset_origin(int beamy, int beamx)
// if we are resetting relative to (0,0) == VBLANK end, call the
// scanline 0 timer by hand now; otherwise, adjust it for the future
if (beamy == 0 && beamx == 0)
- scanline0_callback();
+ reset_partial_updates();
else
m_scanline0_timer->adjust(time_until_pos(0));
// if we are resetting relative to (visarea.max_y + 1, 0) == VBLANK start,
// call the VBLANK start timer now; otherwise, adjust it for the future
if (beamy == m_visarea.max_y + 1 && beamx == 0)
- vblank_begin_callback();
+ vblank_begin();
else
m_vblank_begin_timer->adjust(time_until_vblank_start());
}
@@ -644,6 +683,19 @@ void screen_device::update_now()
//-------------------------------------------------
+// reset_partial_updates - reset the partial
+// updating state
+//-------------------------------------------------
+
+void screen_device::reset_partial_updates()
+{
+ m_last_partial_scan = 0;
+ m_partial_updates_this_frame = 0;
+ m_scanline0_timer->adjust(time_until_pos(0));
+}
+
+
+//-------------------------------------------------
// vpos - returns the current vertical position
// of the beam
//-------------------------------------------------
@@ -758,11 +810,11 @@ void screen_device::register_vblank_callback(vblank_state_delegate vblank_callba
//-------------------------------------------------
-// vblank_begin_callback - call any external
-// callbacks to signal the VBLANK period has begun
+// vblank_begin - call any external callbacks to
+// signal the VBLANK period has begun
//-------------------------------------------------
-void screen_device::vblank_begin_callback()
+void screen_device::vblank_begin()
{
// reset the starting VBLANK time
m_vblank_start_time = machine().time();
@@ -771,6 +823,8 @@ void screen_device::vblank_begin_callback()
// call the screen specific callbacks
for (callback_item *item = m_callback_list.first(); item != NULL; item = item->next())
item->m_callback(*this, true);
+ if (!m_screen_vblank.isnull())
+ m_screen_vblank(*this, true);
// if this is the primary screen and we need to update now
if (this == machine().primary_screen && !(machine().config().m_video_attributes & VIDEO_UPDATE_AFTER_VBLANK))
@@ -781,22 +835,24 @@ void screen_device::vblank_begin_callback()
// if no VBLANK period, call the VBLANK end callback immedietely, otherwise reset the timer
if (m_vblank_period == 0)
- vblank_end_callback();
+ vblank_end();
else
m_vblank_end_timer->adjust(time_until_vblank_end());
}
//-------------------------------------------------
-// vblank_end_callback - call any external
-// callbacks to signal the VBLANK period has ended
+// vblank_end - call any external callbacks to
+// signal the VBLANK period has ended
//-------------------------------------------------
-void screen_device::vblank_end_callback()
+void screen_device::vblank_end()
{
// call the screen specific callbacks
for (callback_item *item = m_callback_list.first(); item != NULL; item = item->next())
item->m_callback(*this, false);
+ if (!m_screen_vblank.isnull())
+ m_screen_vblank(*this, false);
// if this is the primary screen and we need to update now
if (this == machine().primary_screen && (machine().config().m_video_attributes & VIDEO_UPDATE_AFTER_VBLANK))
@@ -808,39 +864,6 @@ void screen_device::vblank_end_callback()
//-------------------------------------------------
-// scanline0_callback - reset partial updates
-// for a screen
-//-------------------------------------------------
-
-void screen_device::scanline0_callback()
-{
- // reset partial updates
- m_last_partial_scan = 0;
- m_partial_updates_this_frame = 0;
-
- m_scanline0_timer->adjust(time_until_pos(0));
-}
-
-
-//-------------------------------------------------
-// scanline_update_callback - perform partial
-// updates on each scanline
-//-------------------------------------------------
-
-void screen_device::scanline_update_callback(int scanline)
-{
- // force a partial update to the current scanline
- update_partial(scanline);
-
- // compute the next visible scanline
- scanline++;
- if (scanline > m_visarea.max_y)
- scanline = m_visarea.min_y;
- m_scanline_timer->adjust(time_until_pos(scanline), scanline);
-}
-
-
-//-------------------------------------------------
// update_quads - set up the quads for this
// screen
//-------------------------------------------------
@@ -1040,15 +1063,3 @@ void screen_device::load_effect_overlay(const char *filename)
else
mame_printf_warning("Unable to load effect PNG file '%s'\n", fullname.cstr());
}
-
-
-//-------------------------------------------------
-// screen_eof - default implementation which
-// calls to the legacy screen_update function
-//-------------------------------------------------
-
-void screen_device::screen_eof()
-{
- if (!m_screen_eof.isnull())
- m_screen_eof(*this);
-}
diff --git a/src/emu/screen.h b/src/emu/screen.h
index 8bfd308b424..46e3af14304 100644
--- a/src/emu/screen.h
+++ b/src/emu/screen.h
@@ -161,9 +161,10 @@ private:
// ======================> other delegate types
typedef delegate<void (screen_device &, bool)> vblank_state_delegate;
-typedef device_delegate<void (screen_device &)> screen_eof_delegate;
+
typedef device_delegate<UINT32 (screen_device &, bitmap_ind16 &, const rectangle &)> screen_update_ind16_delegate;
typedef device_delegate<UINT32 (screen_device &, bitmap_rgb32 &, const rectangle &)> screen_update_rgb32_delegate;
+typedef device_delegate<void (screen_device &, bool)> screen_vblank_delegate;
// ======================> screen_device
@@ -202,12 +203,11 @@ public:
static void static_set_default_position(device_t &device, double xscale, double xoffs, double yscale, double yoffs);
static void static_set_screen_update(device_t &device, screen_update_ind16_delegate callback);
static void static_set_screen_update(device_t &device, screen_update_rgb32_delegate callback);
- static void static_set_screen_eof(device_t &device, screen_eof_delegate callback);
+ static void static_set_screen_vblank(device_t &device, screen_vblank_delegate callback);
// information getters
screen_device *next_screen() const { return downcast<screen_device *>(typenext()); }
render_container &container() const { assert(m_container != NULL); return *m_container; }
- void screen_eof();
// dynamic configuration
void configure(int width, int height, const rectangle &visarea, attoseconds_t frame_period);
@@ -228,11 +228,12 @@ public:
attotime scan_period() const { return attotime(0, m_scantime); }
attotime frame_period() const { return (this == NULL) ? DEFAULT_FRAME_PERIOD : attotime(0, m_frame_period); };
UINT64 frame_number() const { return m_frame_number; }
- int partial_updates() const { return m_partial_updates_this_frame; }
// updating
+ int partial_updates() const { return m_partial_updates_this_frame; }
bool update_partial(int scanline);
void update_now();
+ void reset_partial_updates();
// additional helpers
void register_vblank_callback(vblank_state_delegate vblank_callback);
@@ -246,30 +247,27 @@ public:
static const attotime DEFAULT_FRAME_PERIOD;
private:
+ // timer IDs
+ enum
+ {
+ TID_VBLANK_START,
+ TID_VBLANK_END,
+ TID_SCANLINE0,
+ TID_SCANLINE
+ };
+
// device-level overrides
virtual bool device_validity_check(emu_options &options, const game_driver &driver) const;
virtual void device_start();
virtual void device_stop();
virtual void device_post_load();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
// internal helpers
void set_container(render_container &container) { m_container = &container; }
void realloc_screen_bitmaps();
-
- static TIMER_CALLBACK( static_vblank_begin_callback ) { reinterpret_cast<screen_device *>(ptr)->vblank_begin_callback(); }
- void vblank_begin_callback();
-
- static TIMER_CALLBACK( static_vblank_end_callback ) { reinterpret_cast<screen_device *>(ptr)->vblank_end_callback(); }
- void vblank_end_callback();
-
- static TIMER_CALLBACK( static_scanline0_callback ) { reinterpret_cast<screen_device *>(ptr)->scanline0_callback(); }
-public: // temporary
- void scanline0_callback();
-private:
-
- static TIMER_CALLBACK( static_scanline_update_callback ) { reinterpret_cast<screen_device *>(ptr)->scanline_update_callback(param); }
- void scanline_update_callback(int scanline);
-
+ void vblank_begin();
+ void vblank_end();
void finalize_burnin();
void load_effect_overlay(const char *filename);
@@ -282,7 +280,7 @@ private:
float m_xscale, m_yscale; // default X/Y scale factor
screen_update_ind16_delegate m_screen_update_ind16; // screen update callback (16-bit palette)
screen_update_rgb32_delegate m_screen_update_rgb32; // screen update callback (32-bit RGB)
- screen_eof_delegate m_screen_eof; // screen eof callback
+ screen_vblank_delegate m_screen_vblank; // screen vblank callback
// internal state
render_container * m_container; // pointer to our container
@@ -346,9 +344,9 @@ extern const device_type SCREEN;
#define SCREEN_UPDATE16_CALL(name) SCREEN_UPDATE_NAME(name)(NULL, screen, bitmap, cliprect)
#define SCREEN_UPDATE32_CALL(name) SCREEN_UPDATE_NAME(name)(NULL, screen, bitmap, cliprect)
-#define SCREEN_EOF_NAME(name) screen_eof_##name
-#define SCREEN_EOF(name) void SCREEN_EOF_NAME(name)(device_t *, screen_device &screen)
-#define SCREEN_EOF_CALL(name) SCREEN_EOF_NAME(name)(NULL, screen)
+#define SCREEN_VBLANK_NAME(name) screen_vblank_##name
+#define SCREEN_VBLANK(name) void SCREEN_VBLANK_NAME(name)(device_t *, screen_device &screen, bool vblank_on)
+#define SCREEN_VBLANK_CALL(name) SCREEN_VBLANK_NAME(name)(NULL, screen, vblank_on)
#define MCFG_SCREEN_ADD(_tag, _type) \
MCFG_DEVICE_ADD(_tag, SCREEN, 0) \
@@ -387,17 +385,17 @@ extern const device_type SCREEN;
#define MCFG_SCREEN_UPDATE_DEVICE(_device, _class, _method) \
screen_device::static_set_screen_update(*device, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, _device)); \
-#define MCFG_SCREEN_EOF_NONE() \
- screen_device::static_set_screen_eof(*device, screen_eof_delegate()); \
+#define MCFG_SCREEN_VBLANK_NONE() \
+ screen_device::static_set_screen_vblank(*device, screen_vblank_delegate()); \
-#define MCFG_SCREEN_EOF_STATIC(_func) \
- screen_device::static_set_screen_eof(*device, screen_eof_delegate(&screen_eof_##_func, "screen_eof_" #_func)); \
+#define MCFG_SCREEN_VBLANK_STATIC(_func) \
+ screen_device::static_set_screen_vblank(*device, screen_vblank_delegate(&screen_vblank_##_func, "screen_vblank_" #_func)); \
-#define MCFG_SCREEN_EOF_DRIVER(_class, _method) \
- screen_device::static_set_screen_eof(*device, screen_eof_delegate(&_class::_method, #_class "::" #_method, NULL)); \
+#define MCFG_SCREEN_VBLANK_DRIVER(_class, _method) \
+ screen_device::static_set_screen_vblank(*device, screen_vblank_delegate(&_class::_method, #_class "::" #_method, NULL)); \
-#define MCFG_SCREEN_EOF_DEVICE(_device, _class, _method) \
- screen_device::static_set_screen_eof(*device, screen_eof_delegate(&_class::_method, #_class "::" #_method, _device)); \
+#define MCFG_SCREEN_VBLANK_DEVICE(_device, _class, _method) \
+ screen_device::static_set_screen_vblank(*device, screen_vblank_delegate(&_class::_method, #_class "::" #_method, _device)); \
diff --git a/src/emu/video.c b/src/emu/video.c
index 41dc41250cb..9625e38ab2c 100644
--- a/src/emu/video.c
+++ b/src/emu/video.c
@@ -267,16 +267,7 @@ void video_manager::frame_update(bool debug)
{
// reset partial updates if we're paused or if the debugger is active
if (machine().primary_screen != NULL && (machine().paused() || debug || debugger_within_instruction_hook(machine())))
- machine().primary_screen->scanline0_callback();
-
- // otherwise, call the video EOF callback
- else
- {
- g_profiler.start(PROFILER_VIDEO);
- for (screen_device *screen = machine().first_screen(); screen != NULL; screen = screen->next_screen())
- screen->screen_eof();
- g_profiler.stop();
- }
+ machine().primary_screen->reset_partial_updates();
}
}
diff --git a/src/mame/drivers/2mindril.c b/src/mame/drivers/2mindril.c
index cf2a53507ef..d3899a7028c 100644
--- a/src/mame/drivers/2mindril.c
+++ b/src/mame/drivers/2mindril.c
@@ -451,7 +451,7 @@ static MACHINE_CONFIG_START( drill, _2mindril_state )
MCFG_SCREEN_SIZE(40*8+48*2, 32*8)
MCFG_SCREEN_VISIBLE_AREA(46, 40*8-1 + 46, 24, 24+224-1)
MCFG_SCREEN_UPDATE_STATIC(f3)
- MCFG_SCREEN_EOF_STATIC(f3)
+ MCFG_SCREEN_VBLANK_STATIC(f3)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/airbustr.c b/src/mame/drivers/airbustr.c
index 53764fa0645..16afb9ec071 100644
--- a/src/mame/drivers/airbustr.c
+++ b/src/mame/drivers/airbustr.c
@@ -661,7 +661,7 @@ static MACHINE_CONFIG_START( airbustr, airbustr_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(airbustr)
- MCFG_SCREEN_EOF_STATIC(airbustr)
+ MCFG_SCREEN_VBLANK_STATIC(airbustr)
MCFG_GFXDECODE(airbustr)
MCFG_PALETTE_LENGTH(768)
diff --git a/src/mame/drivers/armedf.c b/src/mame/drivers/armedf.c
index 4db19c5a6bf..37f3743e0ee 100644
--- a/src/mame/drivers/armedf.c
+++ b/src/mame/drivers/armedf.c
@@ -1214,7 +1214,7 @@ static MACHINE_CONFIG_START( terraf, armedf_state )
MCFG_VIDEO_START(terraf)
MCFG_SCREEN_UPDATE_STATIC(armedf)
- MCFG_SCREEN_EOF_STATIC(armedf)
+ MCFG_SCREEN_VBLANK_STATIC(armedf)
MCFG_GFXDECODE(armedf)
@@ -1263,7 +1263,7 @@ static MACHINE_CONFIG_START( terrafb, armedf_state )
MCFG_VIDEO_START(terraf)
MCFG_SCREEN_UPDATE_STATIC(armedf)
- MCFG_SCREEN_EOF_STATIC(armedf)
+ MCFG_SCREEN_VBLANK_STATIC(armedf)
MCFG_GFXDECODE(armedf)
MCFG_PALETTE_LENGTH(2048)
@@ -1307,7 +1307,7 @@ static MACHINE_CONFIG_START( kozure, armedf_state )
MCFG_VIDEO_START(terraf)
MCFG_SCREEN_UPDATE_STATIC(armedf)
- MCFG_SCREEN_EOF_STATIC(armedf)
+ MCFG_SCREEN_VBLANK_STATIC(armedf)
MCFG_GFXDECODE(armedf)
MCFG_PALETTE_LENGTH(2048)
@@ -1351,7 +1351,7 @@ static MACHINE_CONFIG_START( armedf, armedf_state )
MCFG_VIDEO_START(armedf)
MCFG_SCREEN_UPDATE_STATIC(armedf)
- MCFG_SCREEN_EOF_STATIC(armedf)
+ MCFG_SCREEN_VBLANK_STATIC(armedf)
MCFG_GFXDECODE(armedf)
MCFG_PALETTE_LENGTH(2048)
@@ -1395,7 +1395,7 @@ static MACHINE_CONFIG_START( cclimbr2, armedf_state )
MCFG_VIDEO_START(terraf)
MCFG_SCREEN_UPDATE_STATIC(armedf)
- MCFG_SCREEN_EOF_STATIC(armedf)
+ MCFG_SCREEN_VBLANK_STATIC(armedf)
MCFG_GFXDECODE(armedf)
MCFG_PALETTE_LENGTH(2048)
@@ -1439,7 +1439,7 @@ static MACHINE_CONFIG_START( legion, armedf_state )
MCFG_VIDEO_START(terraf)
MCFG_SCREEN_UPDATE_STATIC(armedf)
- MCFG_SCREEN_EOF_STATIC(armedf)
+ MCFG_SCREEN_VBLANK_STATIC(armedf)
MCFG_GFXDECODE(armedf)
MCFG_PALETTE_LENGTH(2048)
@@ -1483,7 +1483,7 @@ static MACHINE_CONFIG_START( legiono, armedf_state )
MCFG_VIDEO_START(terraf)
MCFG_SCREEN_UPDATE_STATIC(armedf)
- MCFG_SCREEN_EOF_STATIC(armedf)
+ MCFG_SCREEN_VBLANK_STATIC(armedf)
MCFG_GFXDECODE(armedf)
MCFG_PALETTE_LENGTH(2048)
@@ -1542,7 +1542,7 @@ static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state )
MCFG_VIDEO_START(armedf)
MCFG_SCREEN_UPDATE_STATIC(armedf)
- MCFG_SCREEN_EOF_STATIC(armedf)
+ MCFG_SCREEN_VBLANK_STATIC(armedf)
MCFG_GFXDECODE(armedf)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/asuka.c b/src/mame/drivers/asuka.c
index 824e1c3ee78..2e305349b92 100644
--- a/src/mame/drivers/asuka.c
+++ b/src/mame/drivers/asuka.c
@@ -874,10 +874,13 @@ static MACHINE_RESET( asuka )
memset(state->m_cval, 0, 26);
}
-static SCREEN_EOF( asuka )
+static SCREEN_VBLANK( asuka )
{
- asuka_state *state = screen.machine().driver_data<asuka_state>();
- pc090oj_eof_callback(state->m_pc090oj);
+ if (vblank_on)
+ {
+ asuka_state *state = screen.machine().driver_data<asuka_state>();
+ pc090oj_eof_callback(state->m_pc090oj);
+ }
}
static const tc0220ioc_interface asuka_io_intf =
@@ -914,7 +917,7 @@ static MACHINE_CONFIG_START( bonzeadv, asuka_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 3*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(bonzeadv)
- MCFG_SCREEN_EOF_STATIC(asuka)
+ MCFG_SCREEN_VBLANK_STATIC(asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096)
@@ -959,7 +962,7 @@ static MACHINE_CONFIG_START( asuka, asuka_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_STATIC(asuka)
- MCFG_SCREEN_EOF_STATIC(asuka)
+ MCFG_SCREEN_VBLANK_STATIC(asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096)
@@ -1011,7 +1014,7 @@ static MACHINE_CONFIG_START( cadash, asuka_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_STATIC(bonzeadv)
- MCFG_SCREEN_EOF_STATIC(asuka)
+ MCFG_SCREEN_VBLANK_STATIC(asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096)
@@ -1055,7 +1058,7 @@ static MACHINE_CONFIG_START( mofflott, asuka_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_STATIC(asuka)
- MCFG_SCREEN_EOF_STATIC(asuka)
+ MCFG_SCREEN_VBLANK_STATIC(asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
@@ -1103,7 +1106,7 @@ static MACHINE_CONFIG_START( galmedes, asuka_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_STATIC(asuka)
- MCFG_SCREEN_EOF_STATIC(asuka)
+ MCFG_SCREEN_VBLANK_STATIC(asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
@@ -1147,7 +1150,7 @@ static MACHINE_CONFIG_START( eto, asuka_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_STATIC(asuka)
- MCFG_SCREEN_EOF_STATIC(asuka)
+ MCFG_SCREEN_VBLANK_STATIC(asuka)
MCFG_GFXDECODE(asuka)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/atarig1.c b/src/mame/drivers/atarig1.c
index c233140e7fe..f7f42032be5 100644
--- a/src/mame/drivers/atarig1.c
+++ b/src/mame/drivers/atarig1.c
@@ -472,7 +472,7 @@ static MACHINE_CONFIG_START( atarig1, atarig1_state )
/* note: these parameters are from published specs, not derived */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
MCFG_SCREEN_UPDATE_STATIC(atarig1)
- MCFG_SCREEN_EOF_STATIC(atarig1)
+ MCFG_SCREEN_VBLANK_STATIC(atarig1)
MCFG_VIDEO_START(atarig1)
diff --git a/src/mame/drivers/atarig42.c b/src/mame/drivers/atarig42.c
index 48e5ebeecbc..8635bfe212c 100644
--- a/src/mame/drivers/atarig42.c
+++ b/src/mame/drivers/atarig42.c
@@ -582,7 +582,7 @@ static MACHINE_CONFIG_START( atarig42, atarig42_state )
/* the board uses an SOS chip to generate video signals */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
MCFG_SCREEN_UPDATE_STATIC(atarig42)
- MCFG_SCREEN_EOF_STATIC(atarig42)
+ MCFG_SCREEN_VBLANK_STATIC(atarig42)
MCFG_VIDEO_START(atarig42)
diff --git a/src/mame/drivers/atarigt.c b/src/mame/drivers/atarigt.c
index 047743e3d20..9aa2cecd85c 100644
--- a/src/mame/drivers/atarigt.c
+++ b/src/mame/drivers/atarigt.c
@@ -833,7 +833,7 @@ static MACHINE_CONFIG_START( atarigt, atarigt_state )
/* the board uses a pair of GALs to determine H and V parameters */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
MCFG_SCREEN_UPDATE_STATIC(atarigt)
- MCFG_SCREEN_EOF_STATIC(atarigt)
+ MCFG_SCREEN_VBLANK_STATIC(atarigt)
MCFG_VIDEO_START(atarigt)
diff --git a/src/mame/drivers/atarigx2.c b/src/mame/drivers/atarigx2.c
index d0d05c43cdd..7a6635d641d 100644
--- a/src/mame/drivers/atarigx2.c
+++ b/src/mame/drivers/atarigx2.c
@@ -1453,7 +1453,7 @@ static MACHINE_CONFIG_START( atarigx2, atarigx2_state )
/* the board uses a pair of GALs to determine H and V parameters */
MCFG_SCREEN_RAW_PARAMS(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240)
MCFG_SCREEN_UPDATE_STATIC(atarigx2)
- MCFG_SCREEN_EOF_STATIC(atarigx2)
+ MCFG_SCREEN_VBLANK_STATIC(atarigx2)
MCFG_VIDEO_START(atarigx2)
diff --git a/src/mame/drivers/baraduke.c b/src/mame/drivers/baraduke.c
index f6940e43989..1d42172a0cf 100644
--- a/src/mame/drivers/baraduke.c
+++ b/src/mame/drivers/baraduke.c
@@ -397,7 +397,7 @@ static MACHINE_CONFIG_START( baraduke, baraduke_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(baraduke)
- MCFG_SCREEN_EOF_STATIC(baraduke)
+ MCFG_SCREEN_VBLANK_STATIC(baraduke)
MCFG_GFXDECODE(baraduke)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/bbusters.c b/src/mame/drivers/bbusters.c
index 54c7c65fdf5..adbd7cfb751 100644
--- a/src/mame/drivers/bbusters.c
+++ b/src/mame/drivers/bbusters.c
@@ -664,18 +664,26 @@ static const ym2610_interface ym2610_config =
/******************************************************************************/
-static SCREEN_EOF( bbuster )
+static SCREEN_VBLANK( bbuster )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space,0,0,0xffff);
- buffer_spriteram16_2_w(space,0,0,0xffff);
+ buffer_spriteram16_w(space,0,0,0xffff);
+ buffer_spriteram16_2_w(space,0,0,0xffff);
+ }
}
-static SCREEN_EOF( mechatt )
+static SCREEN_VBLANK( mechatt )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space,0,0,0xffff);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ buffer_spriteram16_w(space,0,0,0xffff);
+ }
}
static MACHINE_CONFIG_START( bbusters, bbusters_state )
@@ -699,7 +707,7 @@ static MACHINE_CONFIG_START( bbusters, bbusters_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(bbuster)
- MCFG_SCREEN_EOF_STATIC(bbuster)
+ MCFG_SCREEN_VBLANK_STATIC(bbuster)
MCFG_GFXDECODE(bbusters)
MCFG_PALETTE_LENGTH(2048)
@@ -736,7 +744,7 @@ static MACHINE_CONFIG_START( mechatt, bbusters_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(mechatt)
- MCFG_SCREEN_EOF_STATIC(mechatt)
+ MCFG_SCREEN_VBLANK_STATIC(mechatt)
MCFG_GFXDECODE(mechatt)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/bionicc.c b/src/mame/drivers/bionicc.c
index d2bc46b39a3..63e1658f301 100644
--- a/src/mame/drivers/bionicc.c
+++ b/src/mame/drivers/bionicc.c
@@ -383,7 +383,7 @@ static MACHINE_CONFIG_START( bionicc, bionicc_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(bionicc)
- MCFG_SCREEN_EOF_STATIC(bionicc)
+ MCFG_SCREEN_VBLANK_STATIC(bionicc)
MCFG_GFXDECODE(bionicc)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/bking.c b/src/mame/drivers/bking.c
index 4ee814de213..074651e9a74 100644
--- a/src/mame/drivers/bking.c
+++ b/src/mame/drivers/bking.c
@@ -504,7 +504,7 @@ static MACHINE_CONFIG_START( bking, bking_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(bking)
- MCFG_SCREEN_EOF_STATIC(bking)
+ MCFG_SCREEN_VBLANK_STATIC(bking)
MCFG_GFXDECODE(bking)
MCFG_PALETTE_LENGTH(4*8+4*4+4*2+4*2)
diff --git a/src/mame/drivers/blktiger.c b/src/mame/drivers/blktiger.c
index 7422dd767da..df021da7878 100644
--- a/src/mame/drivers/blktiger.c
+++ b/src/mame/drivers/blktiger.c
@@ -345,7 +345,7 @@ static MACHINE_CONFIG_START( blktiger, blktiger_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(blktiger)
- MCFG_SCREEN_EOF_STATIC(blktiger)
+ MCFG_SCREEN_VBLANK_STATIC(blktiger)
MCFG_GFXDECODE(blktiger)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/carpolo.c b/src/mame/drivers/carpolo.c
index fde42358b65..f7865d5ca6d 100644
--- a/src/mame/drivers/carpolo.c
+++ b/src/mame/drivers/carpolo.c
@@ -267,7 +267,7 @@ static MACHINE_CONFIG_START( carpolo, carpolo_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 239, 0, 255)
MCFG_SCREEN_UPDATE_STATIC(carpolo)
- MCFG_SCREEN_EOF_STATIC(carpolo)
+ MCFG_SCREEN_VBLANK_STATIC(carpolo)
MCFG_GFXDECODE(carpolo)
MCFG_PALETTE_LENGTH(12*2+2*16+4*2)
diff --git a/src/mame/drivers/cchance.c b/src/mame/drivers/cchance.c
index 8d1f98c2c46..cd8176fcbe8 100644
--- a/src/mame/drivers/cchance.c
+++ b/src/mame/drivers/cchance.c
@@ -234,7 +234,7 @@ static MACHINE_CONFIG_START( cchance, cchance_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_EOF_STATIC(tnzs)
+ MCFG_SCREEN_VBLANK_STATIC(tnzs)
MCFG_PALETTE_LENGTH(512)
MCFG_PALETTE_INIT(arknoid2)
diff --git a/src/mame/drivers/champbas.c b/src/mame/drivers/champbas.c
index d7dea155c7e..653136a3407 100644
--- a/src/mame/drivers/champbas.c
+++ b/src/mame/drivers/champbas.c
@@ -95,13 +95,17 @@ TODO:
*
*************************************/
-static SCREEN_EOF( champbas )
+static SCREEN_VBLANK( champbas )
{
- champbas_state *state = screen.machine().driver_data<champbas_state>();
- state->m_watchdog_count++;
+ // rising edge
+ if (vblank_on)
+ {
+ champbas_state *state = screen.machine().driver_data<champbas_state>();
+ state->m_watchdog_count++;
- if (state->m_watchdog_count == 0x10)
- screen.machine().schedule_soft_reset();
+ if (state->m_watchdog_count == 0x10)
+ screen.machine().schedule_soft_reset();
+ }
}
@@ -625,7 +629,7 @@ static MACHINE_CONFIG_START( talbot, champbas_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(champbas)
- MCFG_SCREEN_EOF_STATIC(champbas)
+ MCFG_SCREEN_VBLANK_STATIC(champbas)
MCFG_GFXDECODE(talbot)
MCFG_PALETTE_LENGTH(0x200)
@@ -660,7 +664,7 @@ static MACHINE_CONFIG_START( champbas, champbas_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(champbas)
- MCFG_SCREEN_EOF_STATIC(champbas)
+ MCFG_SCREEN_VBLANK_STATIC(champbas)
MCFG_GFXDECODE(champbas)
MCFG_PALETTE_LENGTH(0x200)
@@ -717,7 +721,7 @@ static MACHINE_CONFIG_START( exctsccr, champbas_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(exctsccr)
- MCFG_SCREEN_EOF_STATIC(champbas)
+ MCFG_SCREEN_VBLANK_STATIC(champbas)
MCFG_GFXDECODE(exctsccr)
MCFG_PALETTE_LENGTH(0x200)
@@ -768,7 +772,7 @@ static MACHINE_CONFIG_START( exctsccrb, champbas_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(exctsccr)
- MCFG_SCREEN_EOF_STATIC(champbas)
+ MCFG_SCREEN_VBLANK_STATIC(champbas)
MCFG_GFXDECODE(exctsccr)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/champbwl.c b/src/mame/drivers/champbwl.c
index f5133af0ca6..375240cb3cb 100644
--- a/src/mame/drivers/champbwl.c
+++ b/src/mame/drivers/champbwl.c
@@ -460,9 +460,11 @@ SCREEN_UPDATE_IND16( champbwl )
return 0;
}
-SCREEN_EOF( champbwl )
+SCREEN_VBLANK( champbwl )
{
- screen.machine().device<seta001_device>("spritegen")->tnzs_eof();
+ // rising edge
+ if (vblank_on)
+ screen.machine().device<seta001_device>("spritegen")->tnzs_eof();
}
@@ -487,7 +489,7 @@ static MACHINE_CONFIG_START( champbwl, champbwl_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(champbwl)
- MCFG_SCREEN_EOF_STATIC(champbwl)
+ MCFG_SCREEN_VBLANK_STATIC(champbwl)
MCFG_GFXDECODE(champbwl)
MCFG_PALETTE_LENGTH(512)
@@ -517,9 +519,11 @@ static SCREEN_UPDATE_IND16( doraemon )
return 0;
}
-static SCREEN_EOF( doraemon )
+static SCREEN_VBLANK( doraemon )
{
- screen.machine().device<seta001_device>("spritegen")->setac_eof();
+ // rising edge
+ if (vblank_on)
+ screen.machine().device<seta001_device>("spritegen")->setac_eof();
}
static MACHINE_START( doraemon )
@@ -548,7 +552,7 @@ static MACHINE_CONFIG_START( doraemon, tnzs_state )
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-16-1)
MCFG_SCREEN_UPDATE_STATIC(doraemon)
- MCFG_SCREEN_EOF_STATIC(doraemon)
+ MCFG_SCREEN_VBLANK_STATIC(doraemon)
MCFG_GFXDECODE(champbwl)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/commando.c b/src/mame/drivers/commando.c
index 2f405f68450..a1c4651a0e5 100644
--- a/src/mame/drivers/commando.c
+++ b/src/mame/drivers/commando.c
@@ -267,7 +267,7 @@ static MACHINE_CONFIG_START( commando, commando_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(commando)
- MCFG_SCREEN_EOF_STATIC(commando)
+ MCFG_SCREEN_VBLANK_STATIC(commando)
MCFG_GFXDECODE(commando)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c
index 36e8365f546..8c3f2ef92b7 100644
--- a/src/mame/drivers/cps1.c
+++ b/src/mame/drivers/cps1.c
@@ -3056,7 +3056,7 @@ static MACHINE_CONFIG_START( cps1_10MHz, cps_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_STATIC(cps1)
- MCFG_SCREEN_EOF_STATIC(cps1)
+ MCFG_SCREEN_VBLANK_STATIC(cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(0xc00)
@@ -3140,7 +3140,7 @@ static MACHINE_CONFIG_START( cpspicb, cps_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_STATIC(cps1)
- MCFG_SCREEN_EOF_STATIC(cps1)
+ MCFG_SCREEN_VBLANK_STATIC(cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(0xc00)
@@ -3214,7 +3214,7 @@ static MACHINE_CONFIG_START( sf2mdt, cps_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_STATIC(cps1)
- MCFG_SCREEN_EOF_STATIC(cps1)
+ MCFG_SCREEN_VBLANK_STATIC(cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(0xc00)
@@ -3298,7 +3298,7 @@ static MACHINE_CONFIG_START( knightsb, cps_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_STATIC(cps1)
- MCFG_SCREEN_EOF_STATIC(cps1)
+ MCFG_SCREEN_VBLANK_STATIC(cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(0xc00)
diff --git a/src/mame/drivers/cps2.c b/src/mame/drivers/cps2.c
index fdbeb55ce2e..fdf7ac70043 100644
--- a/src/mame/drivers/cps2.c
+++ b/src/mame/drivers/cps2.c
@@ -1227,7 +1227,7 @@ static MACHINE_CONFIG_START( cps2, cps_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_8MHz, 518, 64, 448, 259, 16, 240)
MCFG_SCREEN_UPDATE_STATIC(cps1)
- MCFG_SCREEN_EOF_STATIC(cps1)
+ MCFG_SCREEN_VBLANK_STATIC(cps1)
/*
Measured clocks:
V = 59.6376Hz
diff --git a/src/mame/drivers/crshrace.c b/src/mame/drivers/crshrace.c
index 82d6b6177ff..294a145fcef 100644
--- a/src/mame/drivers/crshrace.c
+++ b/src/mame/drivers/crshrace.c
@@ -489,7 +489,7 @@ static MACHINE_CONFIG_START( crshrace, crshrace_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(crshrace)
- MCFG_SCREEN_EOF_STATIC(crshrace)
+ MCFG_SCREEN_VBLANK_STATIC(crshrace)
MCFG_GFXDECODE(crshrace)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/crystal.c b/src/mame/drivers/crystal.c
index 57e59f95234..50be45a3128 100644
--- a/src/mame/drivers/crystal.c
+++ b/src/mame/drivers/crystal.c
@@ -694,31 +694,35 @@ static SCREEN_UPDATE_IND16( crystal )
return 0;
}
-static SCREEN_EOF(crystal)
+static SCREEN_VBLANK(crystal)
{
- crystal_state *state = screen.machine().driver_data<crystal_state>();
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- UINT16 head, tail;
- int DoFlip = 0;
-
- head = GetVidReg(space, 0x82);
- tail = GetVidReg(space, 0x80);
- while ((head & 0x7ff) != (tail & 0x7ff))
+ // rising edge
+ if (vblank_on)
{
- UINT16 Packet0 = space->read_word(0x03800000 + head * 64);
- if (Packet0 & 0x81)
- DoFlip = 1;
- head++;
- head &= 0x7ff;
+ crystal_state *state = screen.machine().driver_data<crystal_state>();
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ UINT16 head, tail;
+ int DoFlip = 0;
+
+ head = GetVidReg(space, 0x82);
+ tail = GetVidReg(space, 0x80);
+ while ((head & 0x7ff) != (tail & 0x7ff))
+ {
+ UINT16 Packet0 = space->read_word(0x03800000 + head * 64);
+ if (Packet0 & 0x81)
+ DoFlip = 1;
+ head++;
+ head &= 0x7ff;
+ if (DoFlip)
+ break;
+ }
+ SetVidReg(space, 0x82, head);
if (DoFlip)
- break;
- }
- SetVidReg(space, 0x82, head);
- if (DoFlip)
- {
- if (state->m_FlipCount)
- state->m_FlipCount--;
+ {
+ if (state->m_FlipCount)
+ state->m_FlipCount--;
+ }
}
}
@@ -834,7 +838,7 @@ static MACHINE_CONFIG_START( crystal, crystal_state )
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(crystal)
- MCFG_SCREEN_EOF_STATIC(crystal)
+ MCFG_SCREEN_VBLANK_STATIC(crystal)
MCFG_VIDEO_VRENDER0_ADD("vr0", vr0video_config)
diff --git a/src/mame/drivers/ddz.c b/src/mame/drivers/ddz.c
index abf0bd0ce10..4622f88306e 100644
--- a/src/mame/drivers/ddz.c
+++ b/src/mame/drivers/ddz.c
@@ -39,7 +39,7 @@ static SCREEN_UPDATE_RGB32(ddz)
return 0;
}
-static SCREEN_EOF(ddz)
+static SCREEN_VBLANK(ddz)
{
}
@@ -75,7 +75,7 @@ static MACHINE_CONFIG_START( ddz, ddz_state )
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(ddz)
- MCFG_SCREEN_EOF_STATIC(ddz)
+ MCFG_SCREEN_VBLANK_STATIC(ddz)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/dec8.c b/src/mame/drivers/dec8.c
index db76b6f2862..01cd7ed5a8e 100644
--- a/src/mame/drivers/dec8.c
+++ b/src/mame/drivers/dec8.c
@@ -65,10 +65,14 @@ static WRITE8_HANDLER( dec8_mxc06_karn_buffer_spriteram_w)
}
/* Only used by ghostb, gondo, garyoret, other games can control buffering */
-static SCREEN_EOF( dec8 )
+static SCREEN_VBLANK( dec8 )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- dec8_mxc06_karn_buffer_spriteram_w(space, 0, 0);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ dec8_mxc06_karn_buffer_spriteram_w(space, 0, 0);
+ }
}
static READ8_HANDLER( i8751_h_r )
@@ -2075,7 +2079,7 @@ static MACHINE_CONFIG_START( ghostb, dec8_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(ghostb)
- MCFG_SCREEN_EOF_STATIC(dec8)
+ MCFG_SCREEN_VBLANK_STATIC(dec8)
MCFG_GFXDECODE(ghostb)
MCFG_PALETTE_LENGTH(1024)
@@ -2224,7 +2228,7 @@ static MACHINE_CONFIG_START( gondo, dec8_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(gondo)
- MCFG_SCREEN_EOF_STATIC(dec8)
+ MCFG_SCREEN_VBLANK_STATIC(dec8)
MCFG_GFXDECODE(gondo)
MCFG_PALETTE_LENGTH(1024)
@@ -2423,7 +2427,7 @@ static MACHINE_CONFIG_START( garyoret, dec8_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(garyoret)
- MCFG_SCREEN_EOF_STATIC(dec8)
+ MCFG_SCREEN_VBLANK_STATIC(dec8)
MCFG_GFXDECODE(gondo)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/deco32.c b/src/mame/drivers/deco32.c
index df1af48505f..57fbd98b5ac 100644
--- a/src/mame/drivers/deco32.c
+++ b/src/mame/drivers/deco32.c
@@ -1771,7 +1771,7 @@ static MACHINE_CONFIG_START( captaven, deco32_state )
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(captaven)
- MCFG_SCREEN_EOF_STATIC(captaven)
+ MCFG_SCREEN_VBLANK_STATIC(captaven)
MCFG_GFXDECODE(captaven)
MCFG_PALETTE_LENGTH(2048)
@@ -1983,7 +1983,7 @@ static MACHINE_CONFIG_START( dragngun, dragngun_state )
MCFG_SCREEN_SIZE(42*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(dragngun)
- MCFG_SCREEN_EOF_STATIC(dragngun)
+ MCFG_SCREEN_VBLANK_STATIC(dragngun)
MCFG_DECO16IC_ADD("tilegen1", dragngun_deco16ic_tilegen1_intf)
MCFG_DECO16IC_ADD("tilegen2", dragngun_deco16ic_tilegen2_intf)
@@ -2056,7 +2056,7 @@ static MACHINE_CONFIG_START( lockload, dragngun_state )
MCFG_SCREEN_SIZE(42*8, 32*8+22)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(dragngun)
- MCFG_SCREEN_EOF_STATIC(dragngun)
+ MCFG_SCREEN_VBLANK_STATIC(dragngun)
MCFG_DECO16IC_ADD("tilegen1", lockload_deco16ic_tilegen1_intf)
MCFG_DECO16IC_ADD("tilegen2", lockload_deco16ic_tilegen2_intf)
diff --git a/src/mame/drivers/deco_mlc.c b/src/mame/drivers/deco_mlc.c
index 66048d7b765..b9dccbf9b03 100644
--- a/src/mame/drivers/deco_mlc.c
+++ b/src/mame/drivers/deco_mlc.c
@@ -396,7 +396,7 @@ static MACHINE_CONFIG_START( avengrgs, deco_mlc_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(mlc)
- MCFG_SCREEN_EOF_STATIC(mlc)
+ MCFG_SCREEN_VBLANK_STATIC(mlc)
MCFG_GFXDECODE(deco_mlc)
MCFG_PALETTE_LENGTH(2048)
@@ -428,7 +428,7 @@ static MACHINE_CONFIG_START( mlc, deco_mlc_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(mlc)
- MCFG_SCREEN_EOF_STATIC(mlc)
+ MCFG_SCREEN_VBLANK_STATIC(mlc)
MCFG_GFXDECODE(deco_mlc)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/djboy.c b/src/mame/drivers/djboy.c
index d3220a6a6bb..adf5e4530cf 100644
--- a/src/mame/drivers/djboy.c
+++ b/src/mame/drivers/djboy.c
@@ -614,7 +614,7 @@ static MACHINE_CONFIG_START( djboy, djboy_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
MCFG_SCREEN_UPDATE_STATIC(djboy)
- MCFG_SCREEN_EOF_STATIC(djboy)
+ MCFG_SCREEN_VBLANK_STATIC(djboy)
MCFG_GFXDECODE(djboy)
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/drivers/dooyong.c b/src/mame/drivers/dooyong.c
index 04706b140cd..4a03344fb29 100644
--- a/src/mame/drivers/dooyong.c
+++ b/src/mame/drivers/dooyong.c
@@ -884,7 +884,7 @@ static MACHINE_CONFIG_START( lastday, dooyong_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(lastday)
- MCFG_SCREEN_EOF_STATIC(dooyong)
+ MCFG_SCREEN_VBLANK_STATIC(dooyong)
MCFG_GFXDECODE(lastday)
MCFG_PALETTE_LENGTH(1024)
@@ -926,7 +926,7 @@ static MACHINE_CONFIG_START( gulfstrm, dooyong_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(gulfstrm)
- MCFG_SCREEN_EOF_STATIC(dooyong)
+ MCFG_SCREEN_VBLANK_STATIC(dooyong)
MCFG_GFXDECODE(lastday)
MCFG_PALETTE_LENGTH(1024)
@@ -959,7 +959,7 @@ static MACHINE_CONFIG_START( pollux, dooyong_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(pollux)
- MCFG_SCREEN_EOF_STATIC(dooyong)
+ MCFG_SCREEN_VBLANK_STATIC(dooyong)
MCFG_GFXDECODE(lastday)
MCFG_PALETTE_LENGTH(1024)
@@ -991,7 +991,7 @@ static MACHINE_CONFIG_START( bluehawk, dooyong_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(bluehawk)
- MCFG_SCREEN_EOF_STATIC(dooyong)
+ MCFG_SCREEN_VBLANK_STATIC(dooyong)
MCFG_GFXDECODE(bluehawk)
MCFG_PALETTE_LENGTH(1024)
@@ -1023,7 +1023,7 @@ static MACHINE_CONFIG_START( flytiger, dooyong_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(flytiger)
- MCFG_SCREEN_EOF_STATIC(dooyong)
+ MCFG_SCREEN_VBLANK_STATIC(dooyong)
MCFG_GFXDECODE(flytiger)
MCFG_PALETTE_LENGTH(1024)
@@ -1053,7 +1053,7 @@ static MACHINE_CONFIG_START( primella, dooyong_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 0*8, 32*8-1 )
MCFG_SCREEN_UPDATE_STATIC(primella)
- MCFG_SCREEN_EOF_STATIC(dooyong)
+ MCFG_SCREEN_VBLANK_STATIC(dooyong)
MCFG_GFXDECODE(primella)
MCFG_PALETTE_LENGTH(1024)
@@ -1095,7 +1095,7 @@ static MACHINE_CONFIG_START( rshark, dooyong_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(rshark)
- MCFG_SCREEN_EOF_STATIC(rshark)
+ MCFG_SCREEN_VBLANK_STATIC(rshark)
MCFG_GFXDECODE(rshark)
MCFG_PALETTE_LENGTH(2048)
@@ -1125,7 +1125,7 @@ static MACHINE_CONFIG_START( superx, dooyong_state ) // dif mem map
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(rshark)
- MCFG_SCREEN_EOF_STATIC(rshark)
+ MCFG_SCREEN_VBLANK_STATIC(rshark)
MCFG_GFXDECODE(rshark)
MCFG_PALETTE_LENGTH(2048)
@@ -1155,7 +1155,7 @@ static MACHINE_CONFIG_START( popbingo, dooyong_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(popbingo)
- MCFG_SCREEN_EOF_STATIC(rshark)
+ MCFG_SCREEN_VBLANK_STATIC(rshark)
MCFG_GFXDECODE(popbingo)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/dreamwld.c b/src/mame/drivers/dreamwld.c
index a53309d0ec8..26f8e3dcb7f 100644
--- a/src/mame/drivers/dreamwld.c
+++ b/src/mame/drivers/dreamwld.c
@@ -272,11 +272,15 @@ static VIDEO_START( dreamwld )
}
-SCREEN_EOF( dreamwld )
+SCREEN_VBLANK( dreamwld )
{
- dreamwld_state *state = screen.machine().driver_data<dreamwld_state>();
- memcpy(state->m_spritebuf2, state->m_spritebuf1, 0x2000);
- memcpy(state->m_spritebuf1, state->m_spriteram, 0x2000);
+ // rising edge
+ if (vblank_on)
+ {
+ dreamwld_state *state = screen.machine().driver_data<dreamwld_state>();
+ memcpy(state->m_spritebuf2, state->m_spritebuf1, 0x2000);
+ memcpy(state->m_spritebuf1, state->m_spriteram, 0x2000);
+ }
}
@@ -587,7 +591,7 @@ static MACHINE_CONFIG_START( baryon, dreamwld_state )
MCFG_SCREEN_SIZE(512,256)
MCFG_SCREEN_VISIBLE_AREA(0, 304-1, 0, 224-1)
MCFG_SCREEN_UPDATE_STATIC(dreamwld)
- MCFG_SCREEN_EOF_STATIC(dreamwld)
+ MCFG_SCREEN_VBLANK_STATIC(dreamwld)
MCFG_PALETTE_LENGTH(0x1000)
MCFG_GFXDECODE(dreamwld)
diff --git a/src/mame/drivers/dynduke.c b/src/mame/drivers/dynduke.c
index cd5689fc5e8..30ea28de4df 100644
--- a/src/mame/drivers/dynduke.c
+++ b/src/mame/drivers/dynduke.c
@@ -295,7 +295,7 @@ static MACHINE_CONFIG_START( dynduke, dynduke_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(dynduke)
- MCFG_SCREEN_EOF_STATIC(dynduke)
+ MCFG_SCREEN_VBLANK_STATIC(dynduke)
MCFG_GFXDECODE(dynduke)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/exedexes.c b/src/mame/drivers/exedexes.c
index 85651aca158..67ee1bc2089 100644
--- a/src/mame/drivers/exedexes.c
+++ b/src/mame/drivers/exedexes.c
@@ -239,7 +239,7 @@ static MACHINE_CONFIG_START( exedexes, exedexes_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(exedexes)
- MCFG_SCREEN_EOF_STATIC(exedexes)
+ MCFG_SCREEN_VBLANK_STATIC(exedexes)
MCFG_GFXDECODE(exedexes)
MCFG_PALETTE_LENGTH(64*4+64*4+16*16+16*16)
diff --git a/src/mame/drivers/fcrash.c b/src/mame/drivers/fcrash.c
index fb65c881f11..532db7becf0 100644
--- a/src/mame/drivers/fcrash.c
+++ b/src/mame/drivers/fcrash.c
@@ -746,7 +746,7 @@ static MACHINE_CONFIG_START( fcrash, cps_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_STATIC(fcrash)
- MCFG_SCREEN_EOF_STATIC(cps1)
+ MCFG_SCREEN_VBLANK_STATIC(cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(4096)
@@ -796,7 +796,7 @@ static MACHINE_CONFIG_START( kodb, cps_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_STATIC(kodb)
- MCFG_SCREEN_EOF_STATIC(cps1)
+ MCFG_SCREEN_VBLANK_STATIC(cps1)
MCFG_GFXDECODE(cps1)
MCFG_PALETTE_LENGTH(0xc00)
diff --git a/src/mame/drivers/fuukifg3.c b/src/mame/drivers/fuukifg3.c
index e2f06cf3de1..3235eedacac 100644
--- a/src/mame/drivers/fuukifg3.c
+++ b/src/mame/drivers/fuukifg3.c
@@ -618,7 +618,7 @@ static MACHINE_CONFIG_START( fuuki32, fuuki32_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(fuuki32)
- MCFG_SCREEN_EOF_STATIC(fuuki32)
+ MCFG_SCREEN_VBLANK_STATIC(fuuki32)
MCFG_GFXDECODE(fuuki32)
MCFG_PALETTE_LENGTH(0x4000/2)
diff --git a/src/mame/drivers/gaelco2.c b/src/mame/drivers/gaelco2.c
index d63d854463c..82873bfd15a 100644
--- a/src/mame/drivers/gaelco2.c
+++ b/src/mame/drivers/gaelco2.c
@@ -169,7 +169,7 @@ static MACHINE_CONFIG_START( maniacsq, gaelco2_state )
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
MCFG_SCREEN_UPDATE_STATIC(gaelco2)
- MCFG_SCREEN_EOF_STATIC(gaelco2)
+ MCFG_SCREEN_VBLANK_STATIC(gaelco2)
MCFG_GFXDECODE(0x0080000)
MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
@@ -302,7 +302,7 @@ static MACHINE_CONFIG_START( bang, gaelco2_state )
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
MCFG_SCREEN_UPDATE_STATIC(gaelco2)
- MCFG_SCREEN_EOF_STATIC(gaelco2)
+ MCFG_SCREEN_VBLANK_STATIC(gaelco2)
MCFG_GFXDECODE(0x0200000)
MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
@@ -543,7 +543,7 @@ static MACHINE_CONFIG_START( alighunt, gaelco2_state )
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1)
MCFG_SCREEN_UPDATE_STATIC(gaelco2)
- MCFG_SCREEN_EOF_STATIC(gaelco2)
+ MCFG_SCREEN_VBLANK_STATIC(gaelco2)
MCFG_GFXDECODE(0x0400000)
MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
@@ -795,7 +795,7 @@ static MACHINE_CONFIG_START( touchgo, gaelco2_state )
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 16, 256-1)
MCFG_SCREEN_UPDATE_STATIC(gaelco2_right)
- MCFG_SCREEN_EOF_STATIC(gaelco2)
+ MCFG_SCREEN_VBLANK_STATIC(gaelco2)
MCFG_VIDEO_START(gaelco2_dual)
@@ -979,7 +979,7 @@ static MACHINE_CONFIG_START( snowboar, gaelco2_state )
MCFG_SCREEN_SIZE(64*16, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 256-1)
MCFG_SCREEN_UPDATE_STATIC(gaelco2)
- MCFG_SCREEN_EOF_STATIC(gaelco2)
+ MCFG_SCREEN_VBLANK_STATIC(gaelco2)
MCFG_GFXDECODE(0x0400000)
MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */
@@ -1230,7 +1230,7 @@ static MACHINE_CONFIG_START( wrally2, gaelco2_state )
MCFG_SCREEN_SIZE(384, 32*16)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 256-1)
MCFG_SCREEN_UPDATE_STATIC(gaelco2_right)
- MCFG_SCREEN_EOF_STATIC(gaelco2)
+ MCFG_SCREEN_VBLANK_STATIC(gaelco2)
MCFG_VIDEO_START(gaelco2_dual)
diff --git a/src/mame/drivers/galaga.c b/src/mame/drivers/galaga.c
index a44cb70a1ac..ef23a94352d 100644
--- a/src/mame/drivers/galaga.c
+++ b/src/mame/drivers/galaga.c
@@ -1689,7 +1689,7 @@ static MACHINE_CONFIG_START( bosco, bosco_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 16, 224+16)
MCFG_SCREEN_UPDATE_STATIC(bosco)
- MCFG_SCREEN_EOF_STATIC(bosco)
+ MCFG_SCREEN_VBLANK_STATIC(bosco)
MCFG_GFXDECODE(bosco)
MCFG_PALETTE_LENGTH(64*4+64*4+4+64)
@@ -1740,7 +1740,7 @@ static MACHINE_CONFIG_START( galaga, galaga_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
MCFG_SCREEN_UPDATE_STATIC(galaga)
- MCFG_SCREEN_EOF_STATIC(galaga)
+ MCFG_SCREEN_VBLANK_STATIC(galaga)
MCFG_GFXDECODE(galaga)
MCFG_PALETTE_LENGTH(64*4+64*4+64)
diff --git a/src/mame/drivers/galpanic.c b/src/mame/drivers/galpanic.c
index ce20788dafd..bf59d10f1c3 100644
--- a/src/mame/drivers/galpanic.c
+++ b/src/mame/drivers/galpanic.c
@@ -125,10 +125,14 @@ The current set of Super Model is an example of type C
#include "includes/galpanic.h"
#include "includes/galpnipt.h"
-static SCREEN_EOF( galpanic )
+static SCREEN_VBLANK( galpanic )
{
- device_t *pandora = screen.machine().device("pandora");
- pandora_eof(pandora);
+ // rising edge
+ if (vblank_on)
+ {
+ device_t *pandora = screen.machine().device("pandora");
+ pandora_eof(pandora);
+ }
}
static TIMER_DEVICE_CALLBACK( galpanic_scanline )
@@ -577,7 +581,7 @@ static MACHINE_CONFIG_START( galpanic, galpanic_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1)
MCFG_SCREEN_UPDATE_STATIC(galpanic)
- MCFG_SCREEN_EOF_STATIC( galpanic )
+ MCFG_SCREEN_VBLANK_STATIC( galpanic )
MCFG_GFXDECODE(galpanic)
MCFG_PALETTE_LENGTH(1024 + 32768)
@@ -615,7 +619,7 @@ static MACHINE_CONFIG_DERIVED( comad, galpanic )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(comad)
- MCFG_SCREEN_EOF_NONE()
+ MCFG_SCREEN_VBLANK_NONE()
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( supmodel, comad )
@@ -629,7 +633,7 @@ static MACHINE_CONFIG_DERIVED( supmodel, comad )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(comad)
- MCFG_SCREEN_EOF_NONE()
+ MCFG_SCREEN_VBLANK_NONE()
/* sound hardware */
MCFG_OKIM6295_REPLACE("oki", 1584000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
@@ -647,7 +651,7 @@ static MACHINE_CONFIG_DERIVED( fantsia2, comad )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(comad)
- MCFG_SCREEN_EOF_NONE()
+ MCFG_SCREEN_VBLANK_NONE()
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( galhustl, comad )
@@ -662,7 +666,7 @@ static MACHINE_CONFIG_DERIVED( galhustl, comad )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(comad)
- MCFG_SCREEN_EOF_NONE()
+ MCFG_SCREEN_VBLANK_NONE()
/* sound hardware */
MCFG_OKIM6295_REPLACE("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
diff --git a/src/mame/drivers/gaplus.c b/src/mame/drivers/gaplus.c
index 43c86f63f2b..64ccdd7432c 100644
--- a/src/mame/drivers/gaplus.c
+++ b/src/mame/drivers/gaplus.c
@@ -591,7 +591,7 @@ static MACHINE_CONFIG_START( gaplus, gaplus_state )
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(gaplus)
- MCFG_SCREEN_EOF_STATIC(gaplus)
+ MCFG_SCREEN_VBLANK_STATIC(gaplus)
MCFG_GFXDECODE(gaplus)
MCFG_PALETTE_LENGTH(64*4+64*8)
diff --git a/src/mame/drivers/gng.c b/src/mame/drivers/gng.c
index 0d28b16f556..d0cf1f8389a 100644
--- a/src/mame/drivers/gng.c
+++ b/src/mame/drivers/gng.c
@@ -363,7 +363,7 @@ static MACHINE_CONFIG_START( gng, gng_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(gng)
- MCFG_SCREEN_EOF_STATIC(gng)
+ MCFG_SCREEN_VBLANK_STATIC(gng)
MCFG_GFXDECODE(gng)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/goal92.c b/src/mame/drivers/goal92.c
index 79c08d30d11..41ea74949dc 100644
--- a/src/mame/drivers/goal92.c
+++ b/src/mame/drivers/goal92.c
@@ -334,7 +334,7 @@ static MACHINE_CONFIG_START( goal92, goal92_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) // black border at bottom is a game bug...
MCFG_SCREEN_UPDATE_STATIC(goal92)
- MCFG_SCREEN_EOF_STATIC(goal92)
+ MCFG_SCREEN_VBLANK_STATIC(goal92)
MCFG_GFXDECODE(goal92)
MCFG_PALETTE_LENGTH(128*16)
diff --git a/src/mame/drivers/hng64.c b/src/mame/drivers/hng64.c
index 766437167f5..93d18712217 100644
--- a/src/mame/drivers/hng64.c
+++ b/src/mame/drivers/hng64.c
@@ -1746,7 +1746,7 @@ static MACHINE_CONFIG_START( hng64, hng64_state )
MCFG_PALETTE_LENGTH(0x1000)
MCFG_VIDEO_START(hng64)
- MCFG_SCREEN_EOF_STATIC(hng64)
+ MCFG_SCREEN_VBLANK_STATIC(hng64)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/homedata.c b/src/mame/drivers/homedata.c
index ea012e16151..9141fb8f606 100644
--- a/src/mame/drivers/homedata.c
+++ b/src/mame/drivers/homedata.c
@@ -1274,7 +1274,7 @@ static MACHINE_CONFIG_START( mrokumei, homedata_state )
// visible area can be changed at runtime
MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(mrokumei)
- MCFG_SCREEN_EOF_STATIC(homedata)
+ MCFG_SCREEN_VBLANK_STATIC(homedata)
MCFG_GFXDECODE(mrokumei)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1342,7 +1342,7 @@ static MACHINE_CONFIG_START( reikaids, homedata_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 256-1-16)
MCFG_SCREEN_UPDATE_STATIC(reikaids)
- MCFG_SCREEN_EOF_STATIC(homedata)
+ MCFG_SCREEN_VBLANK_STATIC(homedata)
MCFG_GFXDECODE(reikaids)
MCFG_PALETTE_LENGTH(0x8000)
@@ -1393,7 +1393,7 @@ static MACHINE_CONFIG_START( pteacher, homedata_state )
// visible area can be changed at runtime
MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(pteacher)
- MCFG_SCREEN_EOF_STATIC(homedata)
+ MCFG_SCREEN_VBLANK_STATIC(homedata)
MCFG_GFXDECODE(pteacher)
MCFG_PALETTE_LENGTH(0x8000)
diff --git a/src/mame/drivers/hvyunit.c b/src/mame/drivers/hvyunit.c
index 18d34ff5639..0a4ba22c572 100644
--- a/src/mame/drivers/hvyunit.c
+++ b/src/mame/drivers/hvyunit.c
@@ -169,10 +169,14 @@ static SCREEN_UPDATE_IND16( hvyunit )
return 0;
}
-static SCREEN_EOF( hvyunit )
+static SCREEN_VBLANK( hvyunit )
{
- hvyunit_state *state = screen.machine().driver_data<hvyunit_state>();
- pandora_eof(state->m_pandora);
+ // rising edge
+ if (vblank_on)
+ {
+ hvyunit_state *state = screen.machine().driver_data<hvyunit_state>();
+ pandora_eof(state->m_pandora);
+ }
}
@@ -672,7 +676,7 @@ static MACHINE_CONFIG_START( hvyunit, hvyunit_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
MCFG_SCREEN_UPDATE_STATIC(hvyunit)
- MCFG_SCREEN_EOF_STATIC(hvyunit)
+ MCFG_SCREEN_VBLANK_STATIC(hvyunit)
MCFG_GFXDECODE(hvyunit)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/igs011.c b/src/mame/drivers/igs011.c
index 4bf4891a26a..380f7cb7f27 100644
--- a/src/mame/drivers/igs011.c
+++ b/src/mame/drivers/igs011.c
@@ -2388,11 +2388,15 @@ static READ16_HANDLER( vbowl_unk_r )
return 0xffff;
}
-static SCREEN_EOF( vbowl )
+static SCREEN_VBLANK( vbowl )
{
- igs011_state *state = screen.machine().driver_data<igs011_state>();
- state->m_vbowl_trackball[0] = state->m_vbowl_trackball[1];
- state->m_vbowl_trackball[1] = (input_port_read(screen.machine(), "AN1") << 8) | input_port_read(screen.machine(), "AN0");
+ // rising edge
+ if (vblank_on)
+ {
+ igs011_state *state = screen.machine().driver_data<igs011_state>();
+ state->m_vbowl_trackball[0] = state->m_vbowl_trackball[1];
+ state->m_vbowl_trackball[1] = (input_port_read(screen.machine(), "AN1") << 8) | input_port_read(screen.machine(), "AN0");
+ }
}
static WRITE16_HANDLER( vbowl_pen_hi_w )
@@ -3696,7 +3700,7 @@ static MACHINE_CONFIG_DERIVED( vbowl, igs011_base )
// irq 4 points to an apparently unneeded routine
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_EOF_STATIC(vbowl) // trackball
+ MCFG_SCREEN_VBLANK_STATIC(vbowl) // trackball
// MCFG_GFXDECODE(igs011_hi)
MCFG_DEVICE_REMOVE("oki")
diff --git a/src/mame/drivers/ladybug.c b/src/mame/drivers/ladybug.c
index 1fd43fb0928..7578ba3cfb8 100644
--- a/src/mame/drivers/ladybug.c
+++ b/src/mame/drivers/ladybug.c
@@ -828,7 +828,7 @@ static MACHINE_CONFIG_START( sraider, ladybug_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(sraider)
- MCFG_SCREEN_EOF_STATIC(sraider)
+ MCFG_SCREEN_VBLANK_STATIC(sraider)
MCFG_GFXDECODE(sraider)
MCFG_PALETTE_LENGTH(4*8+4*16+32+2)
diff --git a/src/mame/drivers/lastduel.c b/src/mame/drivers/lastduel.c
index 2b393837d2e..dd76d0b5d58 100644
--- a/src/mame/drivers/lastduel.c
+++ b/src/mame/drivers/lastduel.c
@@ -520,7 +520,7 @@ static MACHINE_CONFIG_START( lastduel, lastduel_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(lastduel)
- MCFG_SCREEN_EOF_STATIC(lastduel)
+ MCFG_SCREEN_VBLANK_STATIC(lastduel)
MCFG_GFXDECODE(lastduel)
MCFG_PALETTE_LENGTH(1024)
@@ -562,7 +562,7 @@ static MACHINE_CONFIG_START( madgear, lastduel_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(madgear)
- MCFG_SCREEN_EOF_STATIC(lastduel)
+ MCFG_SCREEN_VBLANK_STATIC(lastduel)
MCFG_GFXDECODE(madgear)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/lemmings.c b/src/mame/drivers/lemmings.c
index 8f05698b38a..53911cb6b88 100644
--- a/src/mame/drivers/lemmings.c
+++ b/src/mame/drivers/lemmings.c
@@ -283,7 +283,7 @@ static MACHINE_CONFIG_START( lemmings, lemmings_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(lemmings)
- MCFG_SCREEN_EOF_STATIC(lemmings)
+ MCFG_SCREEN_VBLANK_STATIC(lemmings)
MCFG_GFXDECODE(lemmings)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/lockon.c b/src/mame/drivers/lockon.c
index 373c2876738..c7340d1f08e 100644
--- a/src/mame/drivers/lockon.c
+++ b/src/mame/drivers/lockon.c
@@ -543,7 +543,7 @@ static MACHINE_CONFIG_START( lockon, lockon_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_STATIC(lockon)
- MCFG_SCREEN_EOF_STATIC(lockon)
+ MCFG_SCREEN_VBLANK_STATIC(lockon)
MCFG_GFXDECODE(lockon)
MCFG_PALETTE_INIT(lockon)
diff --git a/src/mame/drivers/lwings.c b/src/mame/drivers/lwings.c
index f05a47141c9..85686123f34 100644
--- a/src/mame/drivers/lwings.c
+++ b/src/mame/drivers/lwings.c
@@ -809,7 +809,7 @@ static MACHINE_CONFIG_START( lwings, lwings_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(lwings)
- MCFG_SCREEN_EOF_STATIC(lwings)
+ MCFG_SCREEN_VBLANK_STATIC(lwings)
MCFG_GFXDECODE(lwings)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/macrossp.c b/src/mame/drivers/macrossp.c
index 68067b8598b..7fdf74ef3a4 100644
--- a/src/mame/drivers/macrossp.c
+++ b/src/mame/drivers/macrossp.c
@@ -645,7 +645,7 @@ static MACHINE_CONFIG_START( macrossp, macrossp_state )
MCFG_SCREEN_SIZE(32*16, 16*16)
MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 0*16, 15*16-1)
MCFG_SCREEN_UPDATE_STATIC(macrossp)
- MCFG_SCREEN_EOF_STATIC(macrossp)
+ MCFG_SCREEN_VBLANK_STATIC(macrossp)
MCFG_GFXDECODE(macrossp)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/maygayv1.c b/src/mame/drivers/maygayv1.c
index 021e98ab9a9..0858651b2ab 100644
--- a/src/mame/drivers/maygayv1.c
+++ b/src/mame/drivers/maygayv1.c
@@ -411,33 +411,37 @@ static SCREEN_UPDATE_IND16( maygayv1 )
return 0;
}
-static SCREEN_EOF( maygayv1 )
+static SCREEN_VBLANK( maygayv1 )
{
- maygayv1_state *state = screen.machine().driver_data<maygayv1_state>();
- i82716_t &i82716 = state->m_i82716;
- // UCF
- if (VREG(VCR0) & VCR0_UCF)
- {
- int i;
-
- for (i = 0; i < 16; ++i)
- VREG(i) = i82716.dram[i];
- }
- else
+ // rising edge
+ if (vblank_on)
{
- VREG(VCR0) = i82716.dram[VCR0];
- VREG(ATBA) = i82716.dram[ATBA];
- }
+ maygayv1_state *state = screen.machine().driver_data<maygayv1_state>();
+ i82716_t &i82716 = state->m_i82716;
+ // UCF
+ if (VREG(VCR0) & VCR0_UCF)
+ {
+ int i;
- if (!(VREG(VCR0) & VCR0_DEI))
- {
- int i;
- UINT16 *palbase = &i82716.dram[VREG(CTBA)];
+ for (i = 0; i < 16; ++i)
+ VREG(i) = i82716.dram[i];
+ }
+ else
+ {
+ VREG(VCR0) = i82716.dram[VCR0];
+ VREG(ATBA) = i82716.dram[ATBA];
+ }
- for (i = 0; i < 16; ++i)
+ if (!(VREG(VCR0) & VCR0_DEI))
{
- UINT16 entry = *palbase++;
- palette_set_color_rgb(screen.machine(), entry & 0xf, pal4bit(entry >> 12), pal4bit(entry >> 8), pal4bit(entry >> 4));
+ int i;
+ UINT16 *palbase = &i82716.dram[VREG(CTBA)];
+
+ for (i = 0; i < 16; ++i)
+ {
+ UINT16 entry = *palbase++;
+ palette_set_color_rgb(screen.machine(), entry & 0xf, pal4bit(entry >> 12), pal4bit(entry >> 8), pal4bit(entry >> 4));
+ }
}
}
}
@@ -1047,7 +1051,7 @@ static MACHINE_CONFIG_START( maygayv1, maygayv1_state )
MCFG_SCREEN_SIZE(640, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 300 - 1)
MCFG_SCREEN_UPDATE_STATIC(maygayv1)
- MCFG_SCREEN_EOF_STATIC(maygayv1)
+ MCFG_SCREEN_VBLANK_STATIC(maygayv1)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/mcatadv.c b/src/mame/drivers/mcatadv.c
index b5d58684250..a0e7584963b 100644
--- a/src/mame/drivers/mcatadv.c
+++ b/src/mame/drivers/mcatadv.c
@@ -461,7 +461,7 @@ static MACHINE_CONFIG_START( mcatadv, mcatadv_state )
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
MCFG_SCREEN_UPDATE_STATIC(mcatadv)
- MCFG_SCREEN_EOF_STATIC(mcatadv) // Buffer Spriteram
+ MCFG_SCREEN_VBLANK_STATIC(mcatadv) // Buffer Spriteram
MCFG_GFXDECODE(mcatadv)
MCFG_PALETTE_LENGTH(0x2000/2)
diff --git a/src/mame/drivers/megaplay.c b/src/mame/drivers/megaplay.c
index 0f5578a5dde..1017ad3f4c2 100644
--- a/src/mame/drivers/megaplay.c
+++ b/src/mame/drivers/megaplay.c
@@ -627,7 +627,7 @@ static SCREEN_UPDATE_RGB32(megplay)
}
-//extern SCREEN_EOF(megadriv);
+//extern SCREEN_VBLANK(megadriv);
static MACHINE_RESET( megaplay )
{
mplay_state *state = machine.driver_data<mplay_state>();
@@ -638,10 +638,10 @@ static MACHINE_RESET( megaplay )
MACHINE_RESET_CALL(megatech_bios);
}
-static SCREEN_EOF( megaplay )
+static SCREEN_VBLANK( megaplay )
{
- SCREEN_EOF_CALL(megadriv);
- SCREEN_EOF_CALL(megatech_bios);
+ SCREEN_VBLANK_CALL(megadriv);
+ SCREEN_VBLANK_CALL(megatech_bios);
}
static MACHINE_CONFIG_START( megaplay, mplay_state )
@@ -666,7 +666,7 @@ static MACHINE_CONFIG_START( megaplay, mplay_state )
MCFG_VIDEO_START(megplay)
MCFG_SCREEN_MODIFY("megadriv")
MCFG_SCREEN_UPDATE_STATIC(megplay)
- MCFG_SCREEN_EOF_STATIC( megaplay )
+ MCFG_SCREEN_VBLANK_STATIC( megaplay )
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/megasys1.c b/src/mame/drivers/megasys1.c
index 8d3fc9ec9e2..849b65a1c2a 100644
--- a/src/mame/drivers/megasys1.c
+++ b/src/mame/drivers/megasys1.c
@@ -1480,7 +1480,7 @@ static MACHINE_CONFIG_START( system_A, megasys1_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(megasys1)
- MCFG_SCREEN_EOF_STATIC(megasys1)
+ MCFG_SCREEN_VBLANK_STATIC(megasys1)
MCFG_GFXDECODE(ABC)
MCFG_PALETTE_LENGTH(1024)
@@ -1540,7 +1540,7 @@ static MACHINE_CONFIG_START( system_Bbl, megasys1_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(megasys1)
- MCFG_SCREEN_EOF_STATIC(megasys1)
+ MCFG_SCREEN_VBLANK_STATIC(megasys1)
MCFG_GFXDECODE(ABC)
MCFG_PALETTE_LENGTH(1024)
@@ -1612,7 +1612,7 @@ static MACHINE_CONFIG_START( system_D, megasys1_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(megasys1)
- MCFG_SCREEN_EOF_STATIC(megasys1)
+ MCFG_SCREEN_VBLANK_STATIC(megasys1)
MCFG_GFXDECODE(ABC)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/megatech.c b/src/mame/drivers/megatech.c
index 6c33181c76b..bea38d1d58a 100644
--- a/src/mame/drivers/megatech.c
+++ b/src/mame/drivers/megatech.c
@@ -454,13 +454,13 @@ static SCREEN_UPDATE_RGB32(mtnew)
return 0;
}
-static SCREEN_EOF(mtnew)
+static SCREEN_VBLANK(mtnew)
{
mtech_state *state = screen.machine().driver_data<mtech_state>();
if (!state->m_current_game_is_sms)
- SCREEN_EOF_CALL(megadriv);
+ SCREEN_VBLANK_CALL(megadriv);
else
- SCREEN_EOF_CALL(megatech_md_sms);
+ SCREEN_VBLANK_CALL(megatech_md_sms);
}
static MACHINE_RESET(mtnew)
@@ -494,11 +494,11 @@ static MACHINE_CONFIG_START( megatech, mtech_state )
MCFG_SCREEN_SIZE(342,262)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1)
MCFG_SCREEN_UPDATE_STATIC(megatech_bios)
- MCFG_SCREEN_EOF_STATIC(megatech_bios)
+ MCFG_SCREEN_VBLANK_STATIC(megatech_bios)
MCFG_SCREEN_MODIFY("megadriv")
MCFG_SCREEN_UPDATE_STATIC(mtnew)
- MCFG_SCREEN_EOF_STATIC(mtnew)
+ MCFG_SCREEN_VBLANK_STATIC(mtnew)
/* sound hardware */
MCFG_SOUND_ADD("sn2", SN76496, MASTER_CLOCK/15)
diff --git a/src/mame/drivers/mermaid.c b/src/mame/drivers/mermaid.c
index 8abd7e3cd8c..7b73071465d 100644
--- a/src/mame/drivers/mermaid.c
+++ b/src/mame/drivers/mermaid.c
@@ -472,7 +472,7 @@ static MACHINE_CONFIG_START( mermaid, mermaid_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(mermaid)
- MCFG_SCREEN_EOF_STATIC(mermaid)
+ MCFG_SCREEN_VBLANK_STATIC(mermaid)
MCFG_GFXDECODE(mermaid)
MCFG_PALETTE_LENGTH(4*16+2*2)
diff --git a/src/mame/drivers/mirage.c b/src/mame/drivers/mirage.c
index d573e4e1c76..6c9a09b0525 100644
--- a/src/mame/drivers/mirage.c
+++ b/src/mame/drivers/mirage.c
@@ -93,10 +93,14 @@ static SCREEN_UPDATE_RGB32( mirage )
return 0;
}
-static SCREEN_EOF( mirage )
+static SCREEN_VBLANK( mirage )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space,0,0,0xffff);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ buffer_spriteram16_w(space,0,0,0xffff);
+ }
}
@@ -333,7 +337,7 @@ static MACHINE_CONFIG_START( mirage, mirage_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(mirage)
- MCFG_SCREEN_EOF_STATIC(mirage)
+ MCFG_SCREEN_VBLANK_STATIC(mirage)
MCFG_VIDEO_START(mirage)
diff --git a/src/mame/drivers/model1.c b/src/mame/drivers/model1.c
index a55860067de..d4eec80d09c 100644
--- a/src/mame/drivers/model1.c
+++ b/src/mame/drivers/model1.c
@@ -1522,7 +1522,7 @@ static MACHINE_CONFIG_START( model1, model1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_16MHz, 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/)
MCFG_SCREEN_UPDATE_STATIC(model1)
- MCFG_SCREEN_EOF_STATIC(model1)
+ MCFG_SCREEN_VBLANK_STATIC(model1)
MCFG_PALETTE_LENGTH(8192)
@@ -1567,7 +1567,7 @@ static MACHINE_CONFIG_START( model1_vr, model1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_16MHz, 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/)
MCFG_SCREEN_UPDATE_STATIC(model1)
- MCFG_SCREEN_EOF_STATIC(model1)
+ MCFG_SCREEN_VBLANK_STATIC(model1)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/mw8080bw.c b/src/mame/drivers/mw8080bw.c
index 7518b41d946..0d4e609cb5b 100644
--- a/src/mame/drivers/mw8080bw.c
+++ b/src/mame/drivers/mw8080bw.c
@@ -2374,7 +2374,7 @@ static MACHINE_CONFIG_DERIVED( phantom2, mw8080bw_root )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(phantom2)
- MCFG_SCREEN_EOF_STATIC(phantom2)
+ MCFG_SCREEN_VBLANK_STATIC(phantom2)
/* add shifter */
MCFG_MB14241_ADD("mb14241")
diff --git a/src/mame/drivers/n8080.c b/src/mame/drivers/n8080.c
index 50b60771a7c..0cef611a768 100644
--- a/src/mame/drivers/n8080.c
+++ b/src/mame/drivers/n8080.c
@@ -634,7 +634,7 @@ static MACHINE_CONFIG_START( helifire, n8080_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 239)
MCFG_SCREEN_UPDATE_STATIC(helifire)
- MCFG_SCREEN_EOF_STATIC(helifire)
+ MCFG_SCREEN_VBLANK_STATIC(helifire)
MCFG_PALETTE_LENGTH(8 + 0x400)
MCFG_PALETTE_INIT(helifire)
diff --git a/src/mame/drivers/namcos1.c b/src/mame/drivers/namcos1.c
index ed239c9ee9f..1d5004c7953 100644
--- a/src/mame/drivers/namcos1.c
+++ b/src/mame/drivers/namcos1.c
@@ -1116,7 +1116,7 @@ static MACHINE_CONFIG_START( ns1, namcos1_state )
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(9 + 8*8, 9 + 44*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(namcos1)
- MCFG_SCREEN_EOF_STATIC(namcos1)
+ MCFG_SCREEN_VBLANK_STATIC(namcos1)
MCFG_GFXDECODE(namcos1)
MCFG_PALETTE_LENGTH(0x2000)
diff --git a/src/mame/drivers/namcos86.c b/src/mame/drivers/namcos86.c
index 645bd4b4027..d42c6dd90c9 100644
--- a/src/mame/drivers/namcos86.c
+++ b/src/mame/drivers/namcos86.c
@@ -1016,7 +1016,7 @@ static MACHINE_CONFIG_START( hopmappy, namcos86_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(3 + 8*8, 3 + 44*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(namcos86)
- MCFG_SCREEN_EOF_STATIC(namcos86)
+ MCFG_SCREEN_VBLANK_STATIC(namcos86)
MCFG_GFXDECODE(namcos86)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/ninjakd2.c b/src/mame/drivers/ninjakd2.c
index a56ac586ae3..a3f0f1788b8 100644
--- a/src/mame/drivers/ninjakd2.c
+++ b/src/mame/drivers/ninjakd2.c
@@ -956,7 +956,7 @@ static MACHINE_CONFIG_START( ninjakd2, ninjakd2_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(ninjakd2)
- MCFG_SCREEN_EOF_STATIC(ninjakd2)
+ MCFG_SCREEN_VBLANK_STATIC(ninjakd2)
MCFG_GFXDECODE(ninjakd2)
MCFG_PALETTE_LENGTH(0x300)
diff --git a/src/mame/drivers/nmk16.c b/src/mame/drivers/nmk16.c
index eb7f5144bf0..c32a4420811 100644
--- a/src/mame/drivers/nmk16.c
+++ b/src/mame/drivers/nmk16.c
@@ -3570,7 +3570,7 @@ static MACHINE_CONFIG_START( tharrier, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(tharrier)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(tharrier)
MCFG_PALETTE_LENGTH(512)
@@ -3613,7 +3613,7 @@ static MACHINE_CONFIG_START( manybloc, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(manybloc)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(tharrier)
MCFG_PALETTE_LENGTH(512)
@@ -3654,7 +3654,7 @@ static MACHINE_CONFIG_START( mustang, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3697,7 +3697,7 @@ static MACHINE_CONFIG_START( mustangb, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3729,7 +3729,7 @@ static MACHINE_CONFIG_START( bioship, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(bioship)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(bioship)
MCFG_PALETTE_LENGTH(1024)
@@ -3770,7 +3770,7 @@ static MACHINE_CONFIG_START( vandyke, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3814,7 +3814,7 @@ static MACHINE_CONFIG_START( vandykeb, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3845,7 +3845,7 @@ static MACHINE_CONFIG_START( acrobatm, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3890,7 +3890,7 @@ static MACHINE_CONFIG_START( tdragonb, nmk16_state ) /* bootleg using Raiden sou
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3919,7 +3919,7 @@ static MACHINE_CONFIG_START( tdragon, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(tdragon)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3962,7 +3962,7 @@ static MACHINE_CONFIG_START( ssmissin, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -3994,7 +3994,7 @@ static MACHINE_CONFIG_START( strahl, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(strahl)
- MCFG_SCREEN_EOF_STATIC(strahl)
+ MCFG_SCREEN_VBLANK_STATIC(strahl)
MCFG_GFXDECODE(strahl)
MCFG_PALETTE_LENGTH(1024)
@@ -4035,7 +4035,7 @@ static MACHINE_CONFIG_START( hachamf, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(hachamf)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -4077,7 +4077,7 @@ static MACHINE_CONFIG_START( macross, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -4118,7 +4118,7 @@ static MACHINE_CONFIG_START( blkheart, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -4159,7 +4159,7 @@ static MACHINE_CONFIG_START( gunnail, nmk16_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(gunnail)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
@@ -4202,7 +4202,7 @@ static MACHINE_CONFIG_START( macross2, nmk16_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(gunnail)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross2)
MCFG_PALETTE_LENGTH(1024)
@@ -4244,7 +4244,7 @@ static MACHINE_CONFIG_START( tdragon2, nmk16_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(gunnail)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross2)
MCFG_PALETTE_LENGTH(1024)
@@ -4285,7 +4285,7 @@ static MACHINE_CONFIG_START( raphero, nmk16_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(gunnail)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross2)
MCFG_PALETTE_LENGTH(1024)
@@ -4323,7 +4323,7 @@ static MACHINE_CONFIG_START( bjtwin, nmk16_state )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(bjtwin)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(bjtwin)
MCFG_PALETTE_LENGTH(1024)
@@ -4834,7 +4834,7 @@ static MACHINE_CONFIG_START( stagger1, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(afega)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(stagger1)
MCFG_PALETTE_LENGTH(768)
@@ -4918,7 +4918,7 @@ static MACHINE_CONFIG_START( firehawk, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(firehawk)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(grdnstrm)
MCFG_PALETTE_LENGTH(768)
@@ -4953,7 +4953,7 @@ static MACHINE_CONFIG_START( twinactn, nmk16_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(macross)
- MCFG_SCREEN_EOF_STATIC(nmk)
+ MCFG_SCREEN_VBLANK_STATIC(nmk)
MCFG_GFXDECODE(macross)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/othldrby.c b/src/mame/drivers/othldrby.c
index e2284a2ed33..43b676ec583 100644
--- a/src/mame/drivers/othldrby.c
+++ b/src/mame/drivers/othldrby.c
@@ -254,7 +254,7 @@ static MACHINE_CONFIG_START( othldrby, othldrby_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(othldrby)
- MCFG_SCREEN_EOF_STATIC(othldrby)
+ MCFG_SCREEN_VBLANK_STATIC(othldrby)
MCFG_GFXDECODE(othldrby)
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/pgm.c b/src/mame/drivers/pgm.c
index b98229ea761..6fa60269ab1 100644
--- a/src/mame/drivers/pgm.c
+++ b/src/mame/drivers/pgm.c
@@ -1154,7 +1154,7 @@ MACHINE_CONFIG_FRAGMENT( pgmbase )
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(pgm)
- MCFG_SCREEN_EOF_STATIC(pgm)
+ MCFG_SCREEN_VBLANK_STATIC(pgm)
MCFG_GFXDECODE(pgm)
MCFG_PALETTE_LENGTH(0x1200/2)
@@ -1325,7 +1325,7 @@ static MACHINE_CONFIG_START( cavepgm, cavepgm_state )
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(pgm)
- MCFG_SCREEN_EOF_STATIC(pgm)
+ MCFG_SCREEN_VBLANK_STATIC(pgm)
MCFG_GFXDECODE(pgm)
MCFG_PALETTE_LENGTH(0x1200/2)
diff --git a/src/mame/drivers/pgm2.c b/src/mame/drivers/pgm2.c
index afa426f05ac..c7b257af3e8 100644
--- a/src/mame/drivers/pgm2.c
+++ b/src/mame/drivers/pgm2.c
@@ -38,7 +38,7 @@ static SCREEN_UPDATE_IND16(pgm2)
return 0;
}
-static SCREEN_EOF(pgm2)
+static SCREEN_VBLANK(pgm2)
{
}
@@ -130,7 +130,7 @@ static MACHINE_CONFIG_START( pgm2, pgm2_state )
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(pgm2)
- MCFG_SCREEN_EOF_STATIC(pgm2)
+ MCFG_SCREEN_VBLANK_STATIC(pgm2)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/photon2.c b/src/mame/drivers/photon2.c
index 25957b1fd60..73415b7a165 100644
--- a/src/mame/drivers/photon2.c
+++ b/src/mame/drivers/photon2.c
@@ -100,15 +100,19 @@ INLINE unsigned char get_display_color (unsigned char color, int invert)
/* Code to change the FLASH status every 25 frames. Note this must be
independent of frame skip etc. */
-static SCREEN_EOF( spectrum )
+static SCREEN_VBLANK( spectrum )
{
- photon2_state *state = screen.machine().driver_data<photon2_state>();
- state->m_spectrum_frame_number++;
- if (state->m_spectrum_frame_number >= 25)
- {
- state->m_spectrum_frame_number = 0;
- state->m_spectrum_flash_invert = !state->m_spectrum_flash_invert;
- }
+ // rising edge
+ if (vblank_on)
+ {
+ photon2_state *state = screen.machine().driver_data<photon2_state>();
+ state->m_spectrum_frame_number++;
+ if (state->m_spectrum_frame_number >= 25)
+ {
+ state->m_spectrum_frame_number = 0;
+ state->m_spectrum_flash_invert = !state->m_spectrum_flash_invert;
+ }
+ }
}
INLINE void spectrum_plot_pixel(bitmap_ind16 &bitmap, int x, int y, UINT32 color)
@@ -325,7 +329,7 @@ static MACHINE_CONFIG_START( photon2, photon2_state )
MCFG_SCREEN_SIZE(SPEC_SCREEN_WIDTH, SPEC_SCREEN_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0, SPEC_SCREEN_WIDTH-1, 0, SPEC_SCREEN_HEIGHT-1)
MCFG_SCREEN_UPDATE_STATIC( spectrum )
- MCFG_SCREEN_EOF_STATIC( spectrum )
+ MCFG_SCREEN_VBLANK_STATIC( spectrum )
MCFG_PALETTE_LENGTH(16)
MCFG_PALETTE_INIT( spectrum )
diff --git a/src/mame/drivers/psattack.c b/src/mame/drivers/psattack.c
index 752007903b9..afcf0bdba7a 100644
--- a/src/mame/drivers/psattack.c
+++ b/src/mame/drivers/psattack.c
@@ -124,7 +124,7 @@ static SCREEN_UPDATE_IND16(psattack)
return 0;
}
-static SCREEN_EOF(psattack)
+static SCREEN_VBLANK(psattack)
{
}
@@ -184,7 +184,7 @@ static MACHINE_CONFIG_START( psattack, psattack_state )
MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(psattack)
- MCFG_SCREEN_EOF_STATIC(psattack)
+ MCFG_SCREEN_VBLANK_STATIC(psattack)
MCFG_VIDEO_START(psattack)
diff --git a/src/mame/drivers/psikyo.c b/src/mame/drivers/psikyo.c
index 121ac4ad574..042ad8e2c3e 100644
--- a/src/mame/drivers/psikyo.c
+++ b/src/mame/drivers/psikyo.c
@@ -1081,7 +1081,7 @@ static MACHINE_CONFIG_START( sngkace, psikyo_state )
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
MCFG_SCREEN_UPDATE_STATIC(psikyo)
- MCFG_SCREEN_EOF_STATIC(psikyo)
+ MCFG_SCREEN_VBLANK_STATIC(psikyo)
MCFG_GFXDECODE(psikyo)
MCFG_PALETTE_LENGTH(0x1000)
@@ -1132,7 +1132,7 @@ static MACHINE_CONFIG_START( gunbird, psikyo_state )
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
MCFG_SCREEN_UPDATE_STATIC(psikyo)
- MCFG_SCREEN_EOF_STATIC(psikyo)
+ MCFG_SCREEN_VBLANK_STATIC(psikyo)
MCFG_GFXDECODE(psikyo)
MCFG_PALETTE_LENGTH(0x1000)
@@ -1167,7 +1167,7 @@ static MACHINE_CONFIG_START( s1945bl, psikyo_state ) /* Bootleg hardware based o
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
MCFG_SCREEN_UPDATE_STATIC(psikyo_bootleg)
- MCFG_SCREEN_EOF_STATIC(psikyo)
+ MCFG_SCREEN_VBLANK_STATIC(psikyo)
MCFG_GFXDECODE(psikyo)
MCFG_PALETTE_LENGTH(0x1000)
@@ -1223,7 +1223,7 @@ static MACHINE_CONFIG_START( s1945, psikyo_state )
MCFG_SCREEN_SIZE(320, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1)
MCFG_SCREEN_UPDATE_STATIC(psikyo)
- MCFG_SCREEN_EOF_STATIC(psikyo)
+ MCFG_SCREEN_VBLANK_STATIC(psikyo)
MCFG_GFXDECODE(psikyo)
MCFG_PALETTE_LENGTH(0x1000)
diff --git a/src/mame/drivers/psikyosh.c b/src/mame/drivers/psikyosh.c
index fe011efef5d..f9cd2086848 100644
--- a/src/mame/drivers/psikyosh.c
+++ b/src/mame/drivers/psikyosh.c
@@ -827,7 +827,7 @@ static MACHINE_CONFIG_START( psikyo3v1, psikyosh_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(psikyosh)
- MCFG_SCREEN_EOF_STATIC(psikyosh)
+ MCFG_SCREEN_VBLANK_STATIC(psikyosh)
MCFG_GFXDECODE(psikyosh)
MCFG_PALETTE_LENGTH(0x5000/4)
diff --git a/src/mame/drivers/raiden.c b/src/mame/drivers/raiden.c
index 1c81c884cc6..d444312ea84 100644
--- a/src/mame/drivers/raiden.c
+++ b/src/mame/drivers/raiden.c
@@ -242,10 +242,14 @@ static INTERRUPT_GEN( raiden_interrupt )
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xc8/4); /* VBL */
}
-static SCREEN_EOF( raiden )
+static SCREEN_VBLANK( raiden )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space,0,0,0xffff); /* Could be a memory location instead */
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ buffer_spriteram16_w(space,0,0,0xffff); /* Could be a memory location instead */
+ }
}
static MACHINE_CONFIG_START( raiden, raiden_state )
@@ -274,7 +278,7 @@ static MACHINE_CONFIG_START( raiden, raiden_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(raiden)
- MCFG_SCREEN_EOF_STATIC(raiden)
+ MCFG_SCREEN_VBLANK_STATIC(raiden)
MCFG_GFXDECODE(raiden)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/redclash.c b/src/mame/drivers/redclash.c
index b972030eb6d..5d75c95b751 100644
--- a/src/mame/drivers/redclash.c
+++ b/src/mame/drivers/redclash.c
@@ -370,7 +370,7 @@ static MACHINE_CONFIG_START( zerohour, ladybug_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(redclash)
- MCFG_SCREEN_EOF_STATIC(redclash)
+ MCFG_SCREEN_VBLANK_STATIC(redclash)
MCFG_GFXDECODE(redclash)
MCFG_PALETTE_LENGTH(4*8+4*16+32)
@@ -398,7 +398,7 @@ static MACHINE_CONFIG_START( redclash, ladybug_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(redclash)
- MCFG_SCREEN_EOF_STATIC(redclash)
+ MCFG_SCREEN_VBLANK_STATIC(redclash)
MCFG_GFXDECODE(redclash)
MCFG_PALETTE_LENGTH(4*8+4*16+32)
diff --git a/src/mame/drivers/sandscrp.c b/src/mame/drivers/sandscrp.c
index 59c24baa0cb..48b29343b2a 100644
--- a/src/mame/drivers/sandscrp.c
+++ b/src/mame/drivers/sandscrp.c
@@ -134,13 +134,17 @@ static INTERRUPT_GEN( sandscrp_interrupt )
}
-static SCREEN_EOF( sandscrp )
+static SCREEN_VBLANK( sandscrp )
{
- sandscrp_state *state = screen.machine().driver_data<sandscrp_state>();
- device_t *pandora = screen.machine().device("pandora");
- state->m_sprite_irq = 1;
- update_irq_state(screen.machine());
- pandora_eof(pandora);
+ // rising edge
+ if (vblank_on)
+ {
+ sandscrp_state *state = screen.machine().driver_data<sandscrp_state>();
+ device_t *pandora = screen.machine().device("pandora");
+ state->m_sprite_irq = 1;
+ update_irq_state(screen.machine());
+ pandora_eof(pandora);
+ }
}
/* Reads the cause of the interrupt */
@@ -483,7 +487,7 @@ static MACHINE_CONFIG_START( sandscrp, sandscrp_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
MCFG_SCREEN_UPDATE_STATIC(sandscrp)
- MCFG_SCREEN_EOF_STATIC(sandscrp)
+ MCFG_SCREEN_VBLANK_STATIC(sandscrp)
MCFG_GFXDECODE(sandscrp)
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/segac2.c b/src/mame/drivers/segac2.c
index daf2f3b80fe..4c05380a34e 100644
--- a/src/mame/drivers/segac2.c
+++ b/src/mame/drivers/segac2.c
@@ -1297,7 +1297,7 @@ static MACHINE_CONFIG_START( segac, segac2_state )
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(segac2_new)
- MCFG_SCREEN_EOF_STATIC( megadriv )
+ MCFG_SCREEN_VBLANK_STATIC( megadriv )
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/seta.c b/src/mame/drivers/seta.c
index 8788cb5feaf..cfca09a69b7 100644
--- a/src/mame/drivers/seta.c
+++ b/src/mame/drivers/seta.c
@@ -1545,10 +1545,14 @@ static READ8_DEVICE_HANDLER( dsw2_r )
Sprites Buffering
*/
-static SCREEN_EOF( seta_buffer_sprites )
+static SCREEN_VBLANK( seta_buffer_sprites )
{
- //seta_state *state = machine.driver_data<seta_state>();
- screen.machine().device<seta001_device>("spritegen")->setac_eof();
+ // rising edge
+ if (vblank_on)
+ {
+ //seta_state *state = machine.driver_data<seta_state>();
+ screen.machine().device<seta001_device>("spritegen")->setac_eof();
+ }
}
@@ -7665,7 +7669,7 @@ static MACHINE_CONFIG_START( blandia, seta_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(seta)
- MCFG_SCREEN_EOF_STATIC(seta_buffer_sprites) /* Blandia uses sprite buffering */
+ MCFG_SCREEN_VBLANK_STATIC(seta_buffer_sprites) /* Blandia uses sprite buffering */
MCFG_GFXDECODE(blandia)
MCFG_PALETTE_LENGTH((16*32+64*32*4)*2) /* sprites, layer1, layer2, palette effect */
@@ -7698,7 +7702,7 @@ static MACHINE_CONFIG_START( blandiap, seta_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(seta)
- MCFG_SCREEN_EOF_STATIC(seta_buffer_sprites) /* Blandia uses sprite buffering */
+ MCFG_SCREEN_VBLANK_STATIC(seta_buffer_sprites) /* Blandia uses sprite buffering */
MCFG_GFXDECODE(blandia)
MCFG_PALETTE_LENGTH((16*32+64*32*4)*2) /* sprites, layer1, layer2, palette effect */
@@ -7813,7 +7817,7 @@ static MACHINE_CONFIG_START( drgnunit, seta_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(seta)
- MCFG_SCREEN_EOF_STATIC(seta_buffer_sprites) /* qzkklogy uses sprite buffering */
+ MCFG_SCREEN_VBLANK_STATIC(seta_buffer_sprites) /* qzkklogy uses sprite buffering */
MCFG_GFXDECODE(downtown)
MCFG_PALETTE_LENGTH(512)
@@ -7848,7 +7852,7 @@ static MACHINE_CONFIG_START( qzkklgy2, seta_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(seta)
- MCFG_SCREEN_EOF_STATIC(seta_buffer_sprites) /* qzkklogy uses sprite buffering */
+ MCFG_SCREEN_VBLANK_STATIC(seta_buffer_sprites) /* qzkklogy uses sprite buffering */
MCFG_GFXDECODE(qzkklgy2)
MCFG_PALETTE_LENGTH(512)
@@ -7899,7 +7903,7 @@ static MACHINE_CONFIG_START( setaroul, seta_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(setaroul)
- MCFG_SCREEN_EOF_STATIC(setaroul) /* qzkklogy uses sprite buffering */
+ MCFG_SCREEN_VBLANK_STATIC(setaroul) /* qzkklogy uses sprite buffering */
MCFG_GFXDECODE(setaroul)
MCFG_PALETTE_LENGTH(512)
@@ -8352,7 +8356,7 @@ static MACHINE_CONFIG_START( msgundam, seta_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_STATIC(seta)
- MCFG_SCREEN_EOF_STATIC(seta_buffer_sprites) /* msgundam uses sprite buffering */
+ MCFG_SCREEN_VBLANK_STATIC(seta_buffer_sprites) /* msgundam uses sprite buffering */
MCFG_GFXDECODE(msgundam)
MCFG_PALETTE_LENGTH(512 * 3) /* sprites, layer2, layer1 */
diff --git a/src/mame/drivers/seta2.c b/src/mame/drivers/seta2.c
index 7b849e48c60..c873e545ff7 100644
--- a/src/mame/drivers/seta2.c
+++ b/src/mame/drivers/seta2.c
@@ -2032,7 +2032,7 @@ static MACHINE_CONFIG_START( seta2, seta2_state )
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0x40, 0x1c0-1, 0x80, 0x170-1)
MCFG_SCREEN_UPDATE_STATIC(seta2)
- MCFG_SCREEN_EOF_STATIC(seta2)
+ MCFG_SCREEN_VBLANK_STATIC(seta2)
MCFG_GFXDECODE(seta2)
MCFG_PALETTE_LENGTH(0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
@@ -2228,7 +2228,7 @@ static MACHINE_CONFIG_START( funcube, seta2_state )
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0x0, 0x140-1, 0x80, 0x170-1)
MCFG_SCREEN_UPDATE_STATIC(seta2)
- MCFG_SCREEN_EOF_STATIC(seta2)
+ MCFG_SCREEN_VBLANK_STATIC(seta2)
MCFG_GFXDECODE(funcube)
MCFG_PALETTE_LENGTH(0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
@@ -2264,7 +2264,7 @@ static MACHINE_CONFIG_START( namcostr, seta2_state )
MCFG_SCREEN_SIZE(0x200, 0x200)
MCFG_SCREEN_VISIBLE_AREA(0x40, 0x1c0-1, 0x80, 0x170-1)
MCFG_SCREEN_UPDATE_STATIC(seta2)
- MCFG_SCREEN_EOF_STATIC(seta2)
+ MCFG_SCREEN_VBLANK_STATIC(seta2)
MCFG_GFXDECODE(funcube)
MCFG_PALETTE_LENGTH(0x8000+0xf0) // extra 0xf0 because we might draw 256-color object with 16-color granularity
diff --git a/src/mame/drivers/shadfrce.c b/src/mame/drivers/shadfrce.c
index ed2a3154998..4db1acf7f10 100644
--- a/src/mame/drivers/shadfrce.c
+++ b/src/mame/drivers/shadfrce.c
@@ -568,7 +568,7 @@ static MACHINE_CONFIG_START( shadfrce, shadfrce_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 432, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
MCFG_SCREEN_UPDATE_STATIC(shadfrce)
- MCFG_SCREEN_EOF_STATIC(shadfrce)
+ MCFG_SCREEN_VBLANK_STATIC(shadfrce)
MCFG_GFXDECODE(shadfrce)
MCFG_PALETTE_LENGTH(0x4000)
diff --git a/src/mame/drivers/sidearms.c b/src/mame/drivers/sidearms.c
index b4540d1f7bc..6e89dff4610 100644
--- a/src/mame/drivers/sidearms.c
+++ b/src/mame/drivers/sidearms.c
@@ -671,7 +671,7 @@ static MACHINE_CONFIG_START( sidearms, sidearms_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_STATIC(sidearms)
- MCFG_SCREEN_EOF_STATIC(sidearms)
+ MCFG_SCREEN_VBLANK_STATIC(sidearms)
MCFG_GFXDECODE(sidearms)
MCFG_PALETTE_LENGTH(1024)
@@ -714,7 +714,7 @@ static MACHINE_CONFIG_START( turtship, sidearms_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_EOF_STATIC(sidearms)
+ MCFG_SCREEN_VBLANK_STATIC(sidearms)
MCFG_SCREEN_UPDATE_STATIC(sidearms)
MCFG_GFXDECODE(turtship)
@@ -762,7 +762,7 @@ static MACHINE_CONFIG_START( whizz, sidearms_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_STATIC(sidearms)
- MCFG_SCREEN_EOF_STATIC(sidearms)
+ MCFG_SCREEN_VBLANK_STATIC(sidearms)
MCFG_GFXDECODE(turtship)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/sigmab98.c b/src/mame/drivers/sigmab98.c
index 530caa851f0..d83927023e9 100644
--- a/src/mame/drivers/sigmab98.c
+++ b/src/mame/drivers/sigmab98.c
@@ -638,10 +638,14 @@ static WRITE8_HANDLER( vblank_w )
state->m_vblank = (state->m_vblank & ~0x03) | (data & 0x03);
}
-static SCREEN_EOF( sammymdl )
+static SCREEN_VBLANK( sammymdl )
{
- sigmab98_state *state = screen.machine().driver_data<sigmab98_state>();
- state->m_vblank &= ~0x01;
+ // rising edge
+ if (vblank_on)
+ {
+ sigmab98_state *state = screen.machine().driver_data<sigmab98_state>();
+ state->m_vblank &= ~0x01;
+ }
}
static void show_3_outputs(sigmab98_state *state)
@@ -1741,7 +1745,7 @@ static MACHINE_CONFIG_START( sammymdl, sigmab98_state )
MCFG_SCREEN_SIZE(0x140, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1)
MCFG_SCREEN_UPDATE_STATIC(sigmab98)
- MCFG_SCREEN_EOF_STATIC(sammymdl)
+ MCFG_SCREEN_VBLANK_STATIC(sammymdl)
MCFG_GFXDECODE(sigmab98)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/slapfght.c b/src/mame/drivers/slapfght.c
index ec315575e47..4e349537bb0 100644
--- a/src/mame/drivers/slapfght.c
+++ b/src/mame/drivers/slapfght.c
@@ -734,10 +734,14 @@ static const ay8910_interface ay8910_interface_2 =
DEVCB_NULL
};
-static SCREEN_EOF( perfrman )
+static SCREEN_VBLANK( perfrman )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram_w(space, 0, 0);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ buffer_spriteram_w(space, 0, 0);
+ }
}
static INTERRUPT_GEN( vblank_irq )
@@ -774,7 +778,7 @@ static MACHINE_CONFIG_START( perfrman, slapfght_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 34*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_STATIC(perfrman)
- MCFG_SCREEN_EOF_STATIC(perfrman)
+ MCFG_SCREEN_VBLANK_STATIC(perfrman)
MCFG_GFXDECODE(perfrman)
MCFG_PALETTE_LENGTH(256)
@@ -820,7 +824,7 @@ static MACHINE_CONFIG_START( tigerhb, slapfght_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_STATIC(slapfight)
- MCFG_SCREEN_EOF_STATIC(perfrman)
+ MCFG_SCREEN_VBLANK_STATIC(perfrman)
MCFG_GFXDECODE(slapfght)
MCFG_PALETTE_LENGTH(256)
@@ -868,7 +872,7 @@ static MACHINE_CONFIG_START( tigerh, slapfght_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_STATIC(slapfight)
- MCFG_SCREEN_EOF_STATIC(perfrman)
+ MCFG_SCREEN_VBLANK_STATIC(perfrman)
MCFG_GFXDECODE(slapfght)
MCFG_PALETTE_LENGTH(256)
@@ -917,7 +921,7 @@ static MACHINE_CONFIG_START( slapfigh, slapfght_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1)
MCFG_SCREEN_UPDATE_STATIC(slapfight)
- MCFG_SCREEN_EOF_STATIC(perfrman)
+ MCFG_SCREEN_VBLANK_STATIC(perfrman)
MCFG_GFXDECODE(slapfght)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/slapshot.c b/src/mame/drivers/slapshot.c
index 9bf0675e52f..d785ce036d9 100644
--- a/src/mame/drivers/slapshot.c
+++ b/src/mame/drivers/slapshot.c
@@ -569,7 +569,7 @@ static MACHINE_CONFIG_START( slapshot, slapshot_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(slapshot)
- MCFG_SCREEN_EOF_STATIC(taito_no_buffer)
+ MCFG_SCREEN_VBLANK_STATIC(taito_no_buffer)
MCFG_GFXDECODE(slapshot)
MCFG_PALETTE_LENGTH(8192)
@@ -617,7 +617,7 @@ static MACHINE_CONFIG_START( opwolf3, slapshot_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(slapshot)
- MCFG_SCREEN_EOF_STATIC(taito_no_buffer)
+ MCFG_SCREEN_VBLANK_STATIC(taito_no_buffer)
MCFG_GFXDECODE(slapshot)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/snowbros.c b/src/mame/drivers/snowbros.c
index 01c54d9d1ed..ef27f21253f 100644
--- a/src/mame/drivers/snowbros.c
+++ b/src/mame/drivers/snowbros.c
@@ -92,10 +92,14 @@ static SCREEN_UPDATE_IND16( snowbros )
}
-static SCREEN_EOF( snowbros )
+static SCREEN_VBLANK( snowbros )
{
- device_t *pandora = screen.machine().device("pandora");
- pandora_eof(pandora);
+ // rising edge
+ if (vblank_on)
+ {
+ device_t *pandora = screen.machine().device("pandora");
+ pandora_eof(pandora);
+ }
}
@@ -1485,7 +1489,7 @@ static MACHINE_CONFIG_START( snowbros, snowbros_state )
MCFG_SCREEN_SIZE(32*8, 262)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(snowbros)
- MCFG_SCREEN_EOF_STATIC(snowbros)
+ MCFG_SCREEN_VBLANK_STATIC(snowbros)
MCFG_GFXDECODE(snowbros)
MCFG_PALETTE_LENGTH(256)
@@ -1514,7 +1518,7 @@ static MACHINE_CONFIG_DERIVED( wintbob, snowbros )
MCFG_GFXDECODE(wb)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(wintbob)
- MCFG_SCREEN_EOF_NONE()
+ MCFG_SCREEN_VBLANK_NONE()
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/sprint2.c b/src/mame/drivers/sprint2.c
index 8476827f404..e6fe13cc1cf 100644
--- a/src/mame/drivers/sprint2.c
+++ b/src/mame/drivers/sprint2.c
@@ -516,7 +516,7 @@ static MACHINE_CONFIG_START( sprint2, sprint2_state )
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 223)
MCFG_SCREEN_UPDATE_STATIC(sprint2)
- MCFG_SCREEN_EOF_STATIC(sprint2)
+ MCFG_SCREEN_VBLANK_STATIC(sprint2)
MCFG_GFXDECODE(sprint2)
MCFG_PALETTE_LENGTH(12)
diff --git a/src/mame/drivers/sprint4.c b/src/mame/drivers/sprint4.c
index 01fbebbe3de..29ea2ff50bd 100644
--- a/src/mame/drivers/sprint4.c
+++ b/src/mame/drivers/sprint4.c
@@ -408,7 +408,7 @@ static MACHINE_CONFIG_START( sprint4, sprint4_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
MCFG_SCREEN_UPDATE_STATIC(sprint4)
- MCFG_SCREEN_EOF_STATIC(sprint4)
+ MCFG_SCREEN_VBLANK_STATIC(sprint4)
MCFG_GFXDECODE(sprint4)
MCFG_PALETTE_LENGTH(10)
diff --git a/src/mame/drivers/sprint8.c b/src/mame/drivers/sprint8.c
index b619ea2aa76..0af43faa345 100644
--- a/src/mame/drivers/sprint8.c
+++ b/src/mame/drivers/sprint8.c
@@ -469,7 +469,7 @@ static MACHINE_CONFIG_START( sprint8, sprint8_state )
MCFG_SCREEN_SIZE(512, 261)
MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 231)
MCFG_SCREEN_UPDATE_STATIC(sprint8)
- MCFG_SCREEN_EOF_STATIC(sprint8)
+ MCFG_SCREEN_VBLANK_STATIC(sprint8)
MCFG_GFXDECODE(sprint8)
MCFG_PALETTE_LENGTH(36)
diff --git a/src/mame/drivers/srumbler.c b/src/mame/drivers/srumbler.c
index e3a5415fd33..8f08c03d1a9 100644
--- a/src/mame/drivers/srumbler.c
+++ b/src/mame/drivers/srumbler.c
@@ -256,7 +256,7 @@ static MACHINE_CONFIG_START( srumbler, srumbler_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(10*8, (64-10)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_STATIC(srumbler)
- MCFG_SCREEN_EOF_STATIC(srumbler)
+ MCFG_SCREEN_VBLANK_STATIC(srumbler)
MCFG_GFXDECODE(srumbler)
MCFG_PALETTE_LENGTH(512)
diff --git a/src/mame/drivers/sspeedr.c b/src/mame/drivers/sspeedr.c
index 7c2531d172f..b4e61148844 100644
--- a/src/mame/drivers/sspeedr.c
+++ b/src/mame/drivers/sspeedr.c
@@ -201,7 +201,7 @@ static MACHINE_CONFIG_START( sspeedr, sspeedr_state )
MCFG_SCREEN_SIZE(376, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 375, 0, 247)
MCFG_SCREEN_UPDATE_STATIC(sspeedr)
- MCFG_SCREEN_EOF_STATIC(sspeedr)
+ MCFG_SCREEN_VBLANK_STATIC(sspeedr)
MCFG_GFXDECODE(sspeedr)
MCFG_PALETTE_LENGTH(16)
diff --git a/src/mame/drivers/ssrj.c b/src/mame/drivers/ssrj.c
index 040b4793c22..ab51a886565 100644
--- a/src/mame/drivers/ssrj.c
+++ b/src/mame/drivers/ssrj.c
@@ -155,7 +155,7 @@ static MACHINE_CONFIG_START( ssrj, ssrj_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 1*8, 31*8-1) // unknown res
MCFG_SCREEN_UPDATE_STATIC(ssrj)
- MCFG_SCREEN_EOF_STATIC(ssrj)
+ MCFG_SCREEN_VBLANK_STATIC(ssrj)
MCFG_GFXDECODE(ssrj)
MCFG_PALETTE_LENGTH(128)
diff --git a/src/mame/drivers/starshp1.c b/src/mame/drivers/starshp1.c
index c2a4a4c165c..54cd255b600 100644
--- a/src/mame/drivers/starshp1.c
+++ b/src/mame/drivers/starshp1.c
@@ -312,7 +312,7 @@ static MACHINE_CONFIG_START( starshp1, starshp1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(STARSHP1_PIXEL_CLOCK, STARSHP1_HTOTAL, STARSHP1_HBEND, STARSHP1_HBSTART, STARSHP1_VTOTAL, STARSHP1_VBEND, STARSHP1_VBSTART)
MCFG_SCREEN_UPDATE_STATIC(starshp1)
- MCFG_SCREEN_EOF_STATIC(starshp1)
+ MCFG_SCREEN_VBLANK_STATIC(starshp1)
MCFG_GFXDECODE(starshp1)
MCFG_PALETTE_LENGTH(19)
diff --git a/src/mame/drivers/suprnova.c b/src/mame/drivers/suprnova.c
index 330924fbae3..1fc9c667006 100644
--- a/src/mame/drivers/suprnova.c
+++ b/src/mame/drivers/suprnova.c
@@ -784,7 +784,7 @@ static MACHINE_CONFIG_START( skns, skns_state )
MCFG_SCREEN_SIZE(340,262)
MCFG_SCREEN_VISIBLE_AREA(0,319,0,239)
MCFG_SCREEN_UPDATE_STATIC(skns)
- MCFG_SCREEN_EOF_STATIC(skns)
+ MCFG_SCREEN_VBLANK_STATIC(skns)
MCFG_PALETTE_LENGTH(32768)
MCFG_GFXDECODE(skns_bg)
diff --git a/src/mame/drivers/taito_b.c b/src/mame/drivers/taito_b.c
index 49c172c70f7..a51d4e0e0be 100644
--- a/src/mame/drivers/taito_b.c
+++ b/src/mame/drivers/taito_b.c
@@ -2069,7 +2069,7 @@ static MACHINE_CONFIG_START( rastsag2, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2115,7 +2115,7 @@ static MACHINE_CONFIG_START( ashura, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2161,7 +2161,7 @@ static MACHINE_CONFIG_START( crimec, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2207,7 +2207,7 @@ static MACHINE_CONFIG_START( tetrist, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2252,7 +2252,7 @@ static MACHINE_CONFIG_START( tetrista, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2298,7 +2298,7 @@ static MACHINE_CONFIG_START( hitice, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2349,7 +2349,7 @@ static MACHINE_CONFIG_START( rambo3p, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(rambo3)
MCFG_PALETTE_LENGTH(4096)
@@ -2395,7 +2395,7 @@ static MACHINE_CONFIG_START( rambo3, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2444,7 +2444,7 @@ static MACHINE_CONFIG_START( pbobble, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2494,7 +2494,7 @@ static MACHINE_CONFIG_START( spacedx, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2540,7 +2540,7 @@ static MACHINE_CONFIG_START( spacedxo, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2590,7 +2590,7 @@ static MACHINE_CONFIG_START( qzshowby, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2636,7 +2636,7 @@ static MACHINE_CONFIG_START( viofight, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2685,7 +2685,7 @@ static MACHINE_CONFIG_START( masterw, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2732,7 +2732,7 @@ static MACHINE_CONFIG_START( silentd, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2778,7 +2778,7 @@ static MACHINE_CONFIG_START( selfeena, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2833,7 +2833,7 @@ static MACHINE_CONFIG_START( ryujin, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2886,7 +2886,7 @@ static MACHINE_CONFIG_START( sbm, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
@@ -2937,7 +2937,7 @@ static MACHINE_CONFIG_START( realpunc, taitob_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitob)
- MCFG_SCREEN_EOF_STATIC(taitob)
+ MCFG_SCREEN_VBLANK_STATIC(taitob)
MCFG_GFXDECODE(taito_b)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/taito_f2.c b/src/mame/drivers/taito_f2.c
index b90b3e733d9..b253a5d2f46 100644
--- a/src/mame/drivers/taito_f2.c
+++ b/src/mame/drivers/taito_f2.c
@@ -3042,7 +3042,7 @@ static MACHINE_CONFIG_START( taito_f2, taitof2_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitof2)
- MCFG_SCREEN_EOF_STATIC(taitof2_no_buffer)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_no_buffer)
MCFG_GFXDECODE(taitof2)
MCFG_PALETTE_LENGTH(4096)
@@ -3087,7 +3087,7 @@ static MACHINE_CONFIG_DERIVED( finalb, taito_f2_tc0220ioc )
MCFG_GFXDECODE(finalb)
MCFG_VIDEO_START(taitof2_finalb)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_EOF_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", finalb_tc0100scn_intf)
MCFG_TC0110PCR_ADD("tc0110pcr", taitof2_tc0110pcr_intf)
@@ -3104,7 +3104,7 @@ static MACHINE_CONFIG_DERIVED( dondokod, taito_f2_tc0220ioc )
MCFG_GFXDECODE(pivot)
MCFG_VIDEO_START(taitof2_dondokod)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_EOF_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf)
@@ -3140,7 +3140,7 @@ static MACHINE_CONFIG_DERIVED( thundfox, taito_f2_tc0220ioc )
MCFG_VIDEO_START(taitof2_thundfox)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(taitof2_thundfox)
- MCFG_SCREEN_EOF_STATIC(taitof2_partial_buffer_delayed_thundfox)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed_thundfox)
MCFG_TC0100SCN_ADD("tc0100scn_1", thundfox_tc0100scn_intf_1)
MCFG_TC0100SCN_ADD("tc0100scn_2", thundfox_tc0100scn_intf_2)
@@ -3175,7 +3175,7 @@ static MACHINE_CONFIG_DERIVED( qtorimon, taito_f2_tc0220ioc )
/* video hardware */
MCFG_GFXDECODE(yuyugogo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_EOF_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf)
MCFG_TC0110PCR_ADD("tc0110pcr", taitof2_tc0110pcr_intf)
@@ -3192,7 +3192,7 @@ static MACHINE_CONFIG_DERIVED( liquidk, taito_f2_tc0220ioc )
MCFG_VIDEO_START(taitof2_megab)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
- MCFG_SCREEN_EOF_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3208,7 +3208,7 @@ static MACHINE_CONFIG_DERIVED( quizhq, taito_f2 )
/* video hardware */
MCFG_GFXDECODE(yuyugogo)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_EOF_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf)
MCFG_TC0110PCR_ADD("tc0110pcr", taitof2_tc0110pcr_intf)
@@ -3225,7 +3225,7 @@ static MACHINE_CONFIG_DERIVED( ssi, taito_f2_tc0510nio )
MCFG_VIDEO_START(taitof2_ssi)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(taitof2_ssi)
- MCFG_SCREEN_EOF_STATIC(taitof2_partial_buffer_delayed_thundfox) // buffer_delayed_thundfox instead of buffer_delayed fixes the butterfly powerup
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed_thundfox) // buffer_delayed_thundfox instead of buffer_delayed fixes the butterfly powerup
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MACHINE_CONFIG_END
@@ -3241,7 +3241,7 @@ static MACHINE_CONFIG_DERIVED( gunfront, taito_f2_tc0510nio )
MCFG_VIDEO_START(taitof2_gunfront)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(taitof2_pri)
- MCFG_SCREEN_EOF_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3289,7 +3289,7 @@ static MACHINE_CONFIG_DERIVED( footchmp, taito_f2 )
MCFG_VIDEO_START(taitof2_footchmp)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(taitof2_deadconx)
- MCFG_SCREEN_EOF_STATIC(taitof2_full_buffer_delayed)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_full_buffer_delayed)
MCFG_TC0480SCP_ADD("tc0480scp", footchmp_tc0480scp_intf)
MCFG_TC0360PRI_ADD("tc0360pri")
@@ -3313,7 +3313,7 @@ static MACHINE_CONFIG_DERIVED( hthero, taito_f2 )
MCFG_VIDEO_START(taitof2_hthero)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_STATIC(taitof2_deadconx)
- MCFG_SCREEN_EOF_STATIC(taitof2_full_buffer_delayed)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_full_buffer_delayed)
MCFG_TC0360PRI_ADD("tc0360pri")
MCFG_TC0480SCP_ADD("tc0480scp", hthero_tc0480scp_intf)
@@ -3392,7 +3392,7 @@ static MACHINE_CONFIG_DERIVED( qzquest, taito_f2_tc0510nio )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_EOF_STATIC(taitof2_partial_buffer_delayed)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed)
MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf)
MACHINE_CONFIG_END
@@ -3443,7 +3443,7 @@ static MACHINE_CONFIG_DERIVED( qzchikyu, taito_f2_tc0510nio )
/* video hardware */
MCFG_VIDEO_START(taitof2_qzchikyu)
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_EOF_STATIC(taitof2_partial_buffer_delayed_qzchikyu)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_partial_buffer_delayed_qzchikyu)
MCFG_TC0100SCN_ADD("tc0100scn", qzchikyu_tc0100scn_intf)
MACHINE_CONFIG_END
@@ -3602,7 +3602,7 @@ static MACHINE_CONFIG_START( cameltrya, taitof2_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
- MCFG_SCREEN_EOF_STATIC(taitof2_no_buffer)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_no_buffer)
MCFG_GFXDECODE(pivot)
MCFG_PALETTE_LENGTH(4096)
@@ -3651,7 +3651,7 @@ static MACHINE_CONFIG_START( driveout, taitof2_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitof2_pri_roz)
- MCFG_SCREEN_EOF_STATIC(taitof2_no_buffer)
+ MCFG_SCREEN_VBLANK_STATIC(taitof2_no_buffer)
MCFG_GFXDECODE(pivot)
MCFG_PALETTE_LENGTH(4096)
diff --git a/src/mame/drivers/taito_f3.c b/src/mame/drivers/taito_f3.c
index 5ace7cd02d6..b8042414281 100644
--- a/src/mame/drivers/taito_f3.c
+++ b/src/mame/drivers/taito_f3.c
@@ -446,7 +446,7 @@ static MACHINE_CONFIG_START( f3, taito_f3_state )
MCFG_SCREEN_SIZE(40*8+48*2, 32*8)
MCFG_SCREEN_VISIBLE_AREA(46, 40*8-1 + 46, 24, 24+232-1)
MCFG_SCREEN_UPDATE_STATIC(f3)
- MCFG_SCREEN_EOF_STATIC(f3)
+ MCFG_SCREEN_VBLANK_STATIC(f3)
MCFG_GFXDECODE(taito_f3)
MCFG_PALETTE_LENGTH(0x2000)
@@ -540,7 +540,7 @@ static MACHINE_CONFIG_START( bubsympb, taito_f3_state )
MCFG_SCREEN_SIZE(40*8+48*2, 32*8)
MCFG_SCREEN_VISIBLE_AREA(46, 40*8-1 + 46, 31, 31+224-1)
MCFG_SCREEN_UPDATE_STATIC(f3)
- MCFG_SCREEN_EOF_STATIC(f3)
+ MCFG_SCREEN_VBLANK_STATIC(f3)
MCFG_GFXDECODE(bubsympb)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/taito_l.c b/src/mame/drivers/taito_l.c
index da51f2c2710..022fb47506c 100644
--- a/src/mame/drivers/taito_l.c
+++ b/src/mame/drivers/taito_l.c
@@ -1900,7 +1900,7 @@ static MACHINE_CONFIG_START( fhawk, taitol_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitol)
- MCFG_SCREEN_EOF_STATIC(taitol)
+ MCFG_SCREEN_VBLANK_STATIC(taitol)
MCFG_GFXDECODE(2)
MCFG_PALETTE_LENGTH(256)
@@ -1996,7 +1996,7 @@ static MACHINE_CONFIG_START( kurikint, taitol_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitol)
- MCFG_SCREEN_EOF_STATIC(taitol)
+ MCFG_SCREEN_VBLANK_STATIC(taitol)
MCFG_GFXDECODE(2)
MCFG_PALETTE_LENGTH(256)
@@ -2042,7 +2042,7 @@ static MACHINE_CONFIG_START( plotting, taitol_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitol)
- MCFG_SCREEN_EOF_STATIC(taitol)
+ MCFG_SCREEN_VBLANK_STATIC(taitol)
MCFG_GFXDECODE(1)
MCFG_PALETTE_LENGTH(256)
@@ -2135,7 +2135,7 @@ static MACHINE_CONFIG_START( evilston, taitol_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(taitol)
- MCFG_SCREEN_EOF_STATIC(taitol)
+ MCFG_SCREEN_VBLANK_STATIC(taitol)
MCFG_GFXDECODE(2)
MCFG_PALETTE_LENGTH(256)
diff --git a/src/mame/drivers/tank8.c b/src/mame/drivers/tank8.c
index 401be37a153..b844e2ec7f2 100644
--- a/src/mame/drivers/tank8.c
+++ b/src/mame/drivers/tank8.c
@@ -344,7 +344,7 @@ static MACHINE_CONFIG_START( tank8, tank8_state )
MCFG_SCREEN_SIZE(512, 524)
MCFG_SCREEN_VISIBLE_AREA(16, 495, 0, 463)
MCFG_SCREEN_UPDATE_STATIC(tank8)
- MCFG_SCREEN_EOF_STATIC(tank8)
+ MCFG_SCREEN_VBLANK_STATIC(tank8)
MCFG_GFXDECODE(tank8)
MCFG_PALETTE_LENGTH(20)
diff --git a/src/mame/drivers/taotaido.c b/src/mame/drivers/taotaido.c
index f89ba1f0bd5..94162e76d37 100644
--- a/src/mame/drivers/taotaido.c
+++ b/src/mame/drivers/taotaido.c
@@ -350,7 +350,7 @@ static MACHINE_CONFIG_START( taotaido, taotaido_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(taotaido)
- MCFG_SCREEN_EOF_STATIC( taotaido )
+ MCFG_SCREEN_VBLANK_STATIC( taotaido )
MCFG_PALETTE_LENGTH(0x800)
diff --git a/src/mame/drivers/tceptor.c b/src/mame/drivers/tceptor.c
index 716d40a8b96..cfa5c6587ff 100644
--- a/src/mame/drivers/tceptor.c
+++ b/src/mame/drivers/tceptor.c
@@ -421,7 +421,7 @@ static MACHINE_CONFIG_START( tceptor, tceptor_state )
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0)
MCFG_SCREEN_UPDATE_STATIC(tceptor_3d_right)
- MCFG_SCREEN_EOF_STATIC(tceptor)
+ MCFG_SCREEN_VBLANK_STATIC(tceptor)
MCFG_PALETTE_INIT(tceptor)
diff --git a/src/mame/drivers/tigeroad.c b/src/mame/drivers/tigeroad.c
index ee400911587..7b67d3033b5 100644
--- a/src/mame/drivers/tigeroad.c
+++ b/src/mame/drivers/tigeroad.c
@@ -537,7 +537,7 @@ static MACHINE_CONFIG_START( tigeroad, tigeroad_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(tigeroad)
- MCFG_SCREEN_EOF_STATIC(tigeroad)
+ MCFG_SCREEN_VBLANK_STATIC(tigeroad)
MCFG_GFXDECODE(tigeroad)
MCFG_PALETTE_LENGTH(576)
diff --git a/src/mame/drivers/tmnt.c b/src/mame/drivers/tmnt.c
index 7975996ccdb..af29fb10a58 100644
--- a/src/mame/drivers/tmnt.c
+++ b/src/mame/drivers/tmnt.c
@@ -2581,7 +2581,7 @@ static MACHINE_CONFIG_START( blswhstl, tmnt_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-15)*8-1, 2*8, 30*8-1 )
MCFG_SCREEN_UPDATE_STATIC(lgtnfght)
- MCFG_SCREEN_EOF_STATIC( blswhstl )
+ MCFG_SCREEN_VBLANK_STATIC( blswhstl )
MCFG_PALETTE_LENGTH(2048)
diff --git a/src/mame/drivers/tnzs.c b/src/mame/drivers/tnzs.c
index a85206aa654..9e474e106d2 100644
--- a/src/mame/drivers/tnzs.c
+++ b/src/mame/drivers/tnzs.c
@@ -1639,7 +1639,7 @@ static MACHINE_CONFIG_START( arknoid2, tnzs_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_EOF_STATIC(tnzs)
+ MCFG_SCREEN_VBLANK_STATIC(tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(512)
@@ -1680,7 +1680,7 @@ static MACHINE_CONFIG_START( drtoppel, tnzs_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_EOF_STATIC(tnzs)
+ MCFG_SCREEN_VBLANK_STATIC(tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(512)
@@ -1724,7 +1724,7 @@ static MACHINE_CONFIG_START( tnzs, tnzs_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_EOF_STATIC(tnzs)
+ MCFG_SCREEN_VBLANK_STATIC(tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(512)
@@ -1764,7 +1764,7 @@ static MACHINE_CONFIG_START( insectx, tnzs_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_EOF_STATIC(tnzs)
+ MCFG_SCREEN_VBLANK_STATIC(tnzs)
MCFG_GFXDECODE(insectx)
MCFG_PALETTE_LENGTH(512)
@@ -1803,7 +1803,7 @@ static MACHINE_CONFIG_START( kageki, tnzs_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_EOF_STATIC(tnzs)
+ MCFG_SCREEN_VBLANK_STATIC(tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(512)
@@ -1853,7 +1853,7 @@ static MACHINE_CONFIG_START( tnzsb, tnzs_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_EOF_STATIC(tnzs)
+ MCFG_SCREEN_VBLANK_STATIC(tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(512)
@@ -1916,7 +1916,7 @@ static MACHINE_CONFIG_START( jpopnics, tnzs_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(tnzs)
- MCFG_SCREEN_EOF_STATIC(tnzs)
+ MCFG_SCREEN_VBLANK_STATIC(tnzs)
MCFG_GFXDECODE(tnzs)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/toaplan1.c b/src/mame/drivers/toaplan1.c
index 71c851e3ee7..f4bd6001982 100644
--- a/src/mame/drivers/toaplan1.c
+++ b/src/mame/drivers/toaplan1.c
@@ -1540,7 +1540,7 @@ static MACHINE_CONFIG_START( rallybik, toaplan1_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(rallybik)
- MCFG_SCREEN_EOF_STATIC(rallybik)
+ MCFG_SCREEN_VBLANK_STATIC(rallybik)
MCFG_GFXDECODE(rallybik)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1578,7 +1578,7 @@ static MACHINE_CONFIG_START( truxton, toaplan1_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_EOF_STATIC(toaplan1)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan1)
MCFG_GFXDECODE(toaplan1)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1616,7 +1616,7 @@ static MACHINE_CONFIG_START( hellfire, toaplan1_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 16, 255)
MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_EOF_STATIC(toaplan1)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan1)
MCFG_GFXDECODE(toaplan1)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1654,7 +1654,7 @@ static MACHINE_CONFIG_START( zerowing, toaplan1_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 16, 255)
MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_EOF_STATIC(toaplan1)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan1)
MCFG_GFXDECODE(toaplan1)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1696,7 +1696,7 @@ static MACHINE_CONFIG_START( demonwld, toaplan1_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 16, 255)
MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_EOF_STATIC(toaplan1)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan1)
MCFG_GFXDECODE(toaplan1)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1732,7 +1732,7 @@ static MACHINE_CONFIG_START( samesame, toaplan1_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_EOF_STATIC(samesame)
+ MCFG_SCREEN_VBLANK_STATIC(samesame)
MCFG_GFXDECODE(toaplan1)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1770,7 +1770,7 @@ static MACHINE_CONFIG_START( outzone, toaplan1_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_EOF_STATIC(toaplan1)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan1)
MCFG_GFXDECODE(outzone)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
@@ -1806,7 +1806,7 @@ static MACHINE_CONFIG_START( vimana, toaplan1_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan1)
- MCFG_SCREEN_EOF_STATIC(toaplan1)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan1)
MCFG_GFXDECODE(vm)
MCFG_PALETTE_LENGTH((64*16)+(64*16))
diff --git a/src/mame/drivers/toaplan2.c b/src/mame/drivers/toaplan2.c
index a1cb894636b..c2739bebffa 100644
--- a/src/mame/drivers/toaplan2.c
+++ b/src/mame/drivers/toaplan2.c
@@ -3047,7 +3047,7 @@ static MACHINE_CONFIG_START( tekipaki, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3088,7 +3088,7 @@ static MACHINE_CONFIG_START( ghox, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3178,7 +3178,7 @@ static MACHINE_CONFIG_START( dogyuun, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(dogyuun)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(t2dualvdp)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3222,7 +3222,7 @@ static MACHINE_CONFIG_START( kbash, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3259,7 +3259,7 @@ static MACHINE_CONFIG_START( kbash2, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3296,7 +3296,7 @@ static MACHINE_CONFIG_START( truxton2, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(truxton2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3351,7 +3351,7 @@ static MACHINE_CONFIG_START( pipibibs, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3392,7 +3392,7 @@ static MACHINE_CONFIG_START( pipibibsbl, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3473,7 +3473,7 @@ static MACHINE_CONFIG_START( fixeight, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(truxton2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3510,7 +3510,7 @@ static MACHINE_CONFIG_START( fixeightbl, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(fixeightbl)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3550,7 +3550,7 @@ static MACHINE_CONFIG_START( vfive, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3588,7 +3588,7 @@ static MACHINE_CONFIG_START( batsugun, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(batsugun)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(t2dualvdp)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3626,7 +3626,7 @@ static MACHINE_CONFIG_START( snowbro2, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(toaplan2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(toaplan2)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3669,7 +3669,7 @@ static MACHINE_CONFIG_START( mahoudai, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(raizing)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3712,7 +3712,7 @@ static MACHINE_CONFIG_START( shippumd, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(raizing)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
@@ -3766,7 +3766,7 @@ static MACHINE_CONFIG_START( bgaregga, toaplan2_state )
MCFG_SCREEN_SIZE(432, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_SCREEN_UPDATE_STATIC(truxton2)
- MCFG_SCREEN_EOF_STATIC(toaplan2)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan2)
MCFG_GFXDECODE(raizing)
MCFG_PALETTE_LENGTH(T2PALETTE_LENGTH)
diff --git a/src/mame/drivers/toki.c b/src/mame/drivers/toki.c
index 0d1920e99c8..4f4742042bb 100644
--- a/src/mame/drivers/toki.c
+++ b/src/mame/drivers/toki.c
@@ -432,7 +432,7 @@ static MACHINE_CONFIG_START( toki, toki_state ) /* KOYO 20.000MHz near the cpu *
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) /* verified */
MCFG_SCREEN_UPDATE_STATIC(toki)
- MCFG_SCREEN_EOF_STATIC(toki)
+ MCFG_SCREEN_VBLANK_STATIC(toki)
MCFG_GFXDECODE(toki)
MCFG_PALETTE_LENGTH(1024)
@@ -462,7 +462,7 @@ static MACHINE_CONFIG_START( tokib, toki_state )
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) /* verified */
MCFG_SCREEN_UPDATE_STATIC(tokib)
- MCFG_SCREEN_EOF_STATIC(tokib)
+ MCFG_SCREEN_VBLANK_STATIC(tokib)
MCFG_GFXDECODE(tokib)
MCFG_PALETTE_LENGTH(1024)
diff --git a/src/mame/drivers/twin16.c b/src/mame/drivers/twin16.c
index b8ccd53dac4..34b5dff0779 100644
--- a/src/mame/drivers/twin16.c
+++ b/src/mame/drivers/twin16.c
@@ -754,7 +754,7 @@ static MACHINE_CONFIG_START( twin16, twin16_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(twin16)
- MCFG_SCREEN_EOF_STATIC(twin16)
+ MCFG_SCREEN_VBLANK_STATIC(twin16)
MCFG_GFXDECODE(twin16)
MCFG_PALETTE_LENGTH(0x400)
@@ -807,7 +807,7 @@ static MACHINE_CONFIG_START( fround, twin16_state )
MCFG_SCREEN_SIZE(40*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(twin16)
- MCFG_SCREEN_EOF_STATIC(twin16)
+ MCFG_SCREEN_VBLANK_STATIC(twin16)
MCFG_GFXDECODE(twin16)
MCFG_PALETTE_LENGTH(0x400)
diff --git a/src/mame/drivers/twincobr.c b/src/mame/drivers/twincobr.c
index 0e5afa5bf26..fc0a17e056f 100644
--- a/src/mame/drivers/twincobr.c
+++ b/src/mame/drivers/twincobr.c
@@ -584,7 +584,7 @@ static MACHINE_CONFIG_START( twincobr, twincobr_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz/4, 446, 0, 320, 286, 0, 240)
MCFG_SCREEN_UPDATE_STATIC(toaplan0)
- MCFG_SCREEN_EOF_STATIC(toaplan0)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan0)
MCFG_GFXDECODE(twincobr)
MCFG_PALETTE_LENGTH(1792)
diff --git a/src/mame/drivers/tx1.c b/src/mame/drivers/tx1.c
index 57ea78aab52..f449008bcd8 100644
--- a/src/mame/drivers/tx1.c
+++ b/src/mame/drivers/tx1.c
@@ -728,7 +728,7 @@ static MACHINE_CONFIG_START( tx1, tx1_state )
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_RAW_PARAMS(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART)
MCFG_SCREEN_UPDATE_STATIC(tx1_right)
- MCFG_SCREEN_EOF_STATIC(tx1)
+ MCFG_SCREEN_VBLANK_STATIC(tx1)
MCFG_VIDEO_START(tx1)
@@ -777,7 +777,7 @@ static MACHINE_CONFIG_START( buggyboy, tx1_state )
MCFG_SCREEN_ADD("rscreen", RASTER)
MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
MCFG_SCREEN_UPDATE_STATIC(buggyboy_right)
- MCFG_SCREEN_EOF_STATIC(buggyboy)
+ MCFG_SCREEN_VBLANK_STATIC(buggyboy)
MCFG_PALETTE_LENGTH(256)
MCFG_PALETTE_INIT(buggyboy)
@@ -819,7 +819,7 @@ static MACHINE_CONFIG_START( buggybjr, tx1_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART)
MCFG_SCREEN_UPDATE_STATIC(buggybjr)
- MCFG_SCREEN_EOF_STATIC(buggyboy)
+ MCFG_SCREEN_VBLANK_STATIC(buggyboy)
MCFG_PALETTE_LENGTH(256)
MCFG_PALETTE_INIT(buggyboy)
diff --git a/src/mame/drivers/ultratnk.c b/src/mame/drivers/ultratnk.c
index 25da4dffd86..e8dd3f8a540 100644
--- a/src/mame/drivers/ultratnk.c
+++ b/src/mame/drivers/ultratnk.c
@@ -305,7 +305,7 @@ static MACHINE_CONFIG_START( ultratnk, ultratnk_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
MCFG_SCREEN_UPDATE_STATIC(ultratnk)
- MCFG_SCREEN_EOF_STATIC(ultratnk)
+ MCFG_SCREEN_VBLANK_STATIC(ultratnk)
MCFG_GFXDECODE(ultratnk)
MCFG_PALETTE_LENGTH(10)
diff --git a/src/mame/drivers/wardner.c b/src/mame/drivers/wardner.c
index 5853aed62f3..50fba056454 100644
--- a/src/mame/drivers/wardner.c
+++ b/src/mame/drivers/wardner.c
@@ -432,7 +432,7 @@ static MACHINE_CONFIG_START( wardner, wardner_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_14MHz/2, 446, 0, 320, 286, 0, 240)
MCFG_SCREEN_UPDATE_STATIC(toaplan0)
- MCFG_SCREEN_EOF_STATIC(toaplan0)
+ MCFG_SCREEN_VBLANK_STATIC(toaplan0)
MCFG_GFXDECODE(wardner)
MCFG_PALETTE_LENGTH(1792)
diff --git a/src/mame/drivers/wheelfir.c b/src/mame/drivers/wheelfir.c
index f9b41f7152a..4032e51eb78 100644
--- a/src/mame/drivers/wheelfir.c
+++ b/src/mame/drivers/wheelfir.c
@@ -595,10 +595,14 @@ static SCREEN_UPDATE_IND16(wheelfir)
return 0;
}
-static SCREEN_EOF( wheelfir )
+static SCREEN_VBLANK( wheelfir )
{
- wheelfir_state *state = screen.machine().driver_data<wheelfir_state>();
- state->m_tmp_bitmap[LAYER_FG]->fill(0, screen.visible_area());
+ // rising edge
+ if (vblank_on)
+ {
+ wheelfir_state *state = screen.machine().driver_data<wheelfir_state>();
+ state->m_tmp_bitmap[LAYER_FG]->fill(0, screen.visible_area());
+ }
}
@@ -821,7 +825,7 @@ static MACHINE_CONFIG_START( wheelfir, wheelfir_state )
MCFG_SCREEN_SIZE(336, NUM_SCANLINES+NUM_VBLANK_LINES)
MCFG_SCREEN_VISIBLE_AREA(0,335, 0, NUM_SCANLINES-1)
MCFG_SCREEN_UPDATE_STATIC(wheelfir)
- MCFG_SCREEN_EOF_STATIC(wheelfir)
+ MCFG_SCREEN_VBLANK_STATIC(wheelfir)
MCFG_PALETTE_LENGTH(NUM_COLORS)
diff --git a/src/mame/drivers/wolfpack.c b/src/mame/drivers/wolfpack.c
index 7f1d270feba..ee7380fdfe4 100644
--- a/src/mame/drivers/wolfpack.c
+++ b/src/mame/drivers/wolfpack.c
@@ -302,7 +302,7 @@ static MACHINE_CONFIG_START( wolfpack, wolfpack_state )
MCFG_SCREEN_SIZE(512, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 511, 16, 239)
MCFG_SCREEN_UPDATE_STATIC(wolfpack)
- MCFG_SCREEN_EOF_STATIC(wolfpack)
+ MCFG_SCREEN_VBLANK_STATIC(wolfpack)
MCFG_GFXDECODE(wolfpack)
MCFG_PALETTE_LENGTH(12)
diff --git a/src/mame/drivers/wwfwfest.c b/src/mame/drivers/wwfwfest.c
index 3968ac2ac67..e4f8a11ddf0 100644
--- a/src/mame/drivers/wwfwfest.c
+++ b/src/mame/drivers/wwfwfest.c
@@ -381,11 +381,15 @@ static const ym2151_interface ym2151_config =
dd3_ymirq_handler
};
-static SCREEN_EOF( wwfwfest )
+static SCREEN_VBLANK( wwfwfest )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space,0,0,0xffff);
+ buffer_spriteram16_w(space,0,0,0xffff);
+ }
}
/*******************************************************************************
@@ -408,7 +412,7 @@ static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */
MCFG_SCREEN_UPDATE_STATIC(wwfwfest)
- MCFG_SCREEN_EOF_STATIC(wwfwfest)
+ MCFG_SCREEN_VBLANK_STATIC(wwfwfest)
MCFG_GFXDECODE(wwfwfest)
MCFG_PALETTE_LENGTH(8192)
diff --git a/src/mame/drivers/xmen.c b/src/mame/drivers/xmen.c
index 20f30a71c4b..8a8394daeb8 100644
--- a/src/mame/drivers/xmen.c
+++ b/src/mame/drivers/xmen.c
@@ -455,7 +455,7 @@ static MACHINE_CONFIG_START( xmen6p, xmen_state )
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(16*8, 52*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_STATIC(xmen6p_right)
- MCFG_SCREEN_EOF_STATIC(xmen6p)
+ MCFG_SCREEN_VBLANK_STATIC(xmen6p)
MCFG_VIDEO_START(xmen6p)
diff --git a/src/mame/includes/airbustr.h b/src/mame/includes/airbustr.h
index 0d56e7fa961..2486292cb4f 100644
--- a/src/mame/includes/airbustr.h
+++ b/src/mame/includes/airbustr.h
@@ -50,4 +50,4 @@ WRITE8_HANDLER( airbustr_scrollregs_w );
VIDEO_START( airbustr );
SCREEN_UPDATE_IND16( airbustr );
-SCREEN_EOF( airbustr );
+SCREEN_VBLANK( airbustr );
diff --git a/src/mame/includes/armedf.h b/src/mame/includes/armedf.h
index 5578fcabbe8..570c2353dbb 100644
--- a/src/mame/includes/armedf.h
+++ b/src/mame/includes/armedf.h
@@ -47,7 +47,7 @@ public:
/*----------- defined in video/armedf.c -----------*/
SCREEN_UPDATE_IND16( armedf );
-SCREEN_EOF( armedf );
+SCREEN_VBLANK( armedf );
VIDEO_START( armedf );
VIDEO_START( terraf );
diff --git a/src/mame/includes/atarig1.h b/src/mame/includes/atarig1.h
index fcf58fa141a..21629bac321 100644
--- a/src/mame/includes/atarig1.h
+++ b/src/mame/includes/atarig1.h
@@ -37,7 +37,7 @@ public:
WRITE16_HANDLER( atarig1_mo_control_w );
VIDEO_START( atarig1 );
-SCREEN_EOF( atarig1 );
+SCREEN_VBLANK( atarig1 );
SCREEN_UPDATE_IND16( atarig1 );
void atarig1_scanline_update(screen_device &screen, int scanline);
diff --git a/src/mame/includes/atarig42.h b/src/mame/includes/atarig42.h
index ba78ef8d914..37bf10d082c 100644
--- a/src/mame/includes/atarig42.h
+++ b/src/mame/includes/atarig42.h
@@ -37,7 +37,7 @@ public:
/*----------- defined in video/atarig42.c -----------*/
VIDEO_START( atarig42 );
-SCREEN_EOF( atarig42 );
+SCREEN_VBLANK( atarig42 );
SCREEN_UPDATE_IND16( atarig42 );
WRITE16_HANDLER( atarig42_mo_control_w );
diff --git a/src/mame/includes/atarigt.h b/src/mame/includes/atarigt.h
index f82b7f5f239..5d79708ab23 100644
--- a/src/mame/includes/atarigt.h
+++ b/src/mame/includes/atarigt.h
@@ -55,7 +55,7 @@ void atarigt_colorram_w(atarigt_state *state, offs_t address, UINT16 data, UINT1
UINT16 atarigt_colorram_r(atarigt_state *state, offs_t address);
VIDEO_START( atarigt );
-SCREEN_EOF( atarigt );
+SCREEN_VBLANK( atarigt );
SCREEN_UPDATE_RGB32( atarigt );
void atarigt_scanline_update(screen_device &screen, int scanline);
diff --git a/src/mame/includes/atarigx2.h b/src/mame/includes/atarigx2.h
index dae2c3e0b4b..23a9b78cd8f 100644
--- a/src/mame/includes/atarigx2.h
+++ b/src/mame/includes/atarigx2.h
@@ -33,7 +33,7 @@ public:
/*----------- defined in video/atarigx2.c -----------*/
VIDEO_START( atarigx2 );
-SCREEN_EOF( atarigx2 );
+SCREEN_VBLANK( atarigx2 );
SCREEN_UPDATE_IND16( atarigx2 );
WRITE16_HANDLER( atarigx2_mo_control_w );
diff --git a/src/mame/includes/baraduke.h b/src/mame/includes/baraduke.h
index ea6370d0fad..029598c8039 100644
--- a/src/mame/includes/baraduke.h
+++ b/src/mame/includes/baraduke.h
@@ -21,7 +21,7 @@ public:
VIDEO_START( baraduke );
SCREEN_UPDATE_IND16( baraduke );
-SCREEN_EOF( baraduke );
+SCREEN_VBLANK( baraduke );
READ8_HANDLER( baraduke_videoram_r );
WRITE8_HANDLER( baraduke_videoram_w );
READ8_HANDLER( baraduke_textram_r );
diff --git a/src/mame/includes/bionicc.h b/src/mame/includes/bionicc.h
index ab491d598a0..9964fb0acc0 100644
--- a/src/mame/includes/bionicc.h
+++ b/src/mame/includes/bionicc.h
@@ -39,4 +39,4 @@ WRITE16_HANDLER( bionicc_gfxctrl_w );
VIDEO_START( bionicc );
SCREEN_UPDATE_IND16( bionicc );
-SCREEN_EOF( bionicc );
+SCREEN_VBLANK( bionicc );
diff --git a/src/mame/includes/bking.h b/src/mame/includes/bking.h
index cca8faf3636..0ae47a76056 100644
--- a/src/mame/includes/bking.h
+++ b/src/mame/includes/bking.h
@@ -72,4 +72,4 @@ READ8_HANDLER( bking_pos_r );
PALETTE_INIT( bking );
VIDEO_START( bking );
SCREEN_UPDATE_IND16( bking );
-SCREEN_EOF( bking );
+SCREEN_VBLANK( bking );
diff --git a/src/mame/includes/blktiger.h b/src/mame/includes/blktiger.h
index 56113db65a3..0dca3884382 100644
--- a/src/mame/includes/blktiger.h
+++ b/src/mame/includes/blktiger.h
@@ -54,4 +54,4 @@ WRITE8_HANDLER( blktiger_scrolly_w );
VIDEO_START( blktiger );
SCREEN_UPDATE_IND16( blktiger );
-SCREEN_EOF( blktiger );
+SCREEN_VBLANK( blktiger );
diff --git a/src/mame/includes/carpolo.h b/src/mame/includes/carpolo.h
index 4bf5d45e953..6afc52fc318 100644
--- a/src/mame/includes/carpolo.h
+++ b/src/mame/includes/carpolo.h
@@ -94,4 +94,4 @@ void carpolo_generate_car_border_interrupt(running_machine &machine, int car, in
PALETTE_INIT( carpolo );
VIDEO_START( carpolo );
SCREEN_UPDATE_IND16( carpolo );
-SCREEN_EOF( carpolo );
+SCREEN_VBLANK( carpolo );
diff --git a/src/mame/includes/commando.h b/src/mame/includes/commando.h
index 3d6571d7c33..42240a31d1d 100644
--- a/src/mame/includes/commando.h
+++ b/src/mame/includes/commando.h
@@ -41,4 +41,4 @@ WRITE8_HANDLER( commando_c804_w );
VIDEO_START( commando );
SCREEN_UPDATE_IND16( commando );
-SCREEN_EOF( commando );
+SCREEN_VBLANK( commando );
diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h
index a7703f519d2..7eceafb3562 100644
--- a/src/mame/includes/cps1.h
+++ b/src/mame/includes/cps1.h
@@ -175,7 +175,7 @@ WRITE16_HANDLER( cps2_objram2_w );
VIDEO_START( cps1 );
VIDEO_START( cps2 );
SCREEN_UPDATE_IND16( cps1 );
-SCREEN_EOF( cps1 );
+SCREEN_VBLANK( cps1 );
void cps1_get_video_base(running_machine &machine);
void cps2_set_sprite_priorities(running_machine &machine);
diff --git a/src/mame/includes/crshrace.h b/src/mame/includes/crshrace.h
index bc1c88e575a..c92ab18ba36 100644
--- a/src/mame/includes/crshrace.h
+++ b/src/mame/includes/crshrace.h
@@ -35,5 +35,5 @@ WRITE16_HANDLER( crshrace_roz_bank_w );
WRITE16_HANDLER( crshrace_gfxctrl_w );
VIDEO_START( crshrace );
-SCREEN_EOF( crshrace );
+SCREEN_VBLANK( crshrace );
SCREEN_UPDATE_IND16( crshrace );
diff --git a/src/mame/includes/deco32.h b/src/mame/includes/deco32.h
index 30b43b923a0..3418ad2d502 100644
--- a/src/mame/includes/deco32.h
+++ b/src/mame/includes/deco32.h
@@ -78,8 +78,8 @@ VIDEO_START( dragngun );
VIDEO_START( lockload );
VIDEO_START( nslasher );
-SCREEN_EOF( captaven );
-SCREEN_EOF( dragngun );
+SCREEN_VBLANK( captaven );
+SCREEN_VBLANK( dragngun );
SCREEN_UPDATE_IND16( captaven );
SCREEN_UPDATE_RGB32( fghthist );
diff --git a/src/mame/includes/deco_mlc.h b/src/mame/includes/deco_mlc.h
index ee5a79c7f66..d530da5dce0 100644
--- a/src/mame/includes/deco_mlc.h
+++ b/src/mame/includes/deco_mlc.h
@@ -24,4 +24,4 @@ public:
VIDEO_START( mlc );
SCREEN_UPDATE_RGB32( mlc );
-SCREEN_EOF( mlc );
+SCREEN_VBLANK( mlc );
diff --git a/src/mame/includes/djboy.h b/src/mame/includes/djboy.h
index a820ea57f7e..2062ebf762c 100644
--- a/src/mame/includes/djboy.h
+++ b/src/mame/includes/djboy.h
@@ -54,4 +54,4 @@ WRITE8_HANDLER( djboy_paletteram_w );
VIDEO_START( djboy );
SCREEN_UPDATE_IND16( djboy );
-SCREEN_EOF( djboy );
+SCREEN_VBLANK( djboy );
diff --git a/src/mame/includes/dooyong.h b/src/mame/includes/dooyong.h
index c4b8e6a942c..0d5b151d0f9 100644
--- a/src/mame/includes/dooyong.h
+++ b/src/mame/includes/dooyong.h
@@ -77,5 +77,5 @@ VIDEO_START( primella );
VIDEO_START( rshark );
VIDEO_START( popbingo );
-SCREEN_EOF( dooyong );
-SCREEN_EOF( rshark );
+SCREEN_VBLANK( dooyong );
+SCREEN_VBLANK( rshark );
diff --git a/src/mame/includes/dynduke.h b/src/mame/includes/dynduke.h
index 975973fdde8..7748e6bee31 100644
--- a/src/mame/includes/dynduke.h
+++ b/src/mame/includes/dynduke.h
@@ -32,4 +32,4 @@ WRITE16_HANDLER( dynduke_control_w );
WRITE16_HANDLER( dynduke_paletteram_w );
VIDEO_START( dynduke );
SCREEN_UPDATE_IND16( dynduke );
-SCREEN_EOF( dynduke );
+SCREEN_VBLANK( dynduke );
diff --git a/src/mame/includes/exedexes.h b/src/mame/includes/exedexes.h
index 1cb20f4d576..e56d05217ad 100644
--- a/src/mame/includes/exedexes.h
+++ b/src/mame/includes/exedexes.h
@@ -41,4 +41,4 @@ extern WRITE8_HANDLER( exedexes_gfxctrl_w );
extern PALETTE_INIT( exedexes );
extern VIDEO_START( exedexes );
extern SCREEN_UPDATE_IND16( exedexes );
-extern SCREEN_EOF( exedexes );
+extern SCREEN_VBLANK( exedexes );
diff --git a/src/mame/includes/fuukifg3.h b/src/mame/includes/fuukifg3.h
index 563602e8f7a..3eb1ac24d8d 100644
--- a/src/mame/includes/fuukifg3.h
+++ b/src/mame/includes/fuukifg3.h
@@ -49,4 +49,4 @@ WRITE32_HANDLER( fuuki32_vram_3_w );
VIDEO_START( fuuki32 );
SCREEN_UPDATE_IND16( fuuki32 );
-SCREEN_EOF( fuuki32 );
+SCREEN_VBLANK( fuuki32 );
diff --git a/src/mame/includes/gaelco2.h b/src/mame/includes/gaelco2.h
index 7a899507421..85420cf2f1e 100644
--- a/src/mame/includes/gaelco2.h
+++ b/src/mame/includes/gaelco2.h
@@ -44,7 +44,7 @@ WRITE16_HANDLER( snowboar_protection_w );
WRITE16_HANDLER( gaelco2_vram_w );
WRITE16_HANDLER( gaelco2_palette_w );
SCREEN_UPDATE_IND16( gaelco2 );
-SCREEN_EOF( gaelco2 );
+SCREEN_VBLANK( gaelco2 );
VIDEO_START( gaelco2 );
SCREEN_UPDATE_IND16( gaelco2_left );
SCREEN_UPDATE_IND16( gaelco2_right );
diff --git a/src/mame/includes/galaga.h b/src/mame/includes/galaga.h
index 2e2e1ebe382..9aa1ba9714a 100644
--- a/src/mame/includes/galaga.h
+++ b/src/mame/includes/galaga.h
@@ -94,7 +94,7 @@ WRITE8_HANDLER( bosco_starclr_w );
VIDEO_START( bosco );
SCREEN_UPDATE_IND16( bosco );
PALETTE_INIT( bosco );
-SCREEN_EOF( bosco ); /* update starfield */
+SCREEN_VBLANK( bosco ); /* update starfield */
/*----------- defined in audio/galaga.c -----------*/
@@ -117,7 +117,7 @@ WRITE8_HANDLER( galaga_videoram_w );
WRITE8_HANDLER( gatsbee_bank_w );
VIDEO_START( galaga );
SCREEN_UPDATE_IND16( galaga );
-SCREEN_EOF( galaga ); /* update starfield */
+SCREEN_VBLANK( galaga ); /* update starfield */
/*----------- defined in video/xevious.c -----------*/
diff --git a/src/mame/includes/gaplus.h b/src/mame/includes/gaplus.h
index 61123c109b0..ba6682e0db9 100644
--- a/src/mame/includes/gaplus.h
+++ b/src/mame/includes/gaplus.h
@@ -39,4 +39,4 @@ WRITE8_HANDLER( gaplus_starfield_control_w );
VIDEO_START( gaplus );
PALETTE_INIT( gaplus );
SCREEN_UPDATE_IND16( gaplus );
-SCREEN_EOF( gaplus ); /* update starfields */
+SCREEN_VBLANK( gaplus ); /* update starfields */
diff --git a/src/mame/includes/gng.h b/src/mame/includes/gng.h
index 070e8d33691..5e660689bb9 100644
--- a/src/mame/includes/gng.h
+++ b/src/mame/includes/gng.h
@@ -35,4 +35,4 @@ WRITE8_HANDLER( gng_flipscreen_w );
VIDEO_START( gng );
SCREEN_UPDATE_IND16( gng );
-SCREEN_EOF( gng );
+SCREEN_VBLANK( gng );
diff --git a/src/mame/includes/goal92.h b/src/mame/includes/goal92.h
index e7cfb9e147c..50ab004cc61 100644
--- a/src/mame/includes/goal92.h
+++ b/src/mame/includes/goal92.h
@@ -47,4 +47,4 @@ READ16_HANDLER( goal92_fg_bank_r );
VIDEO_START( goal92 );
SCREEN_UPDATE_IND16( goal92 );
-SCREEN_EOF( goal92 );
+SCREEN_VBLANK( goal92 );
diff --git a/src/mame/includes/hng64.h b/src/mame/includes/hng64.h
index d86b8539643..f110fe225e8 100644
--- a/src/mame/includes/hng64.h
+++ b/src/mame/includes/hng64.h
@@ -108,4 +108,4 @@ void hng64_command3d(running_machine& machine, const UINT16* packet);
VIDEO_START( hng64 );
SCREEN_UPDATE_RGB32( hng64 );
-SCREEN_EOF( hng64 );
+SCREEN_VBLANK( hng64 );
diff --git a/src/mame/includes/homedata.h b/src/mame/includes/homedata.h
index d777509ebd8..72e1b186870 100644
--- a/src/mame/includes/homedata.h
+++ b/src/mame/includes/homedata.h
@@ -70,4 +70,4 @@ SCREEN_UPDATE_IND16( mrokumei );
SCREEN_UPDATE_IND16( reikaids );
SCREEN_UPDATE_IND16( pteacher );
SCREEN_UPDATE_IND16( mirderby );
-SCREEN_EOF( homedata );
+SCREEN_VBLANK( homedata );
diff --git a/src/mame/includes/ladybug.h b/src/mame/includes/ladybug.h
index dabe64ff049..2038a159ce7 100644
--- a/src/mame/includes/ladybug.h
+++ b/src/mame/includes/ladybug.h
@@ -58,7 +58,7 @@ SCREEN_UPDATE_IND16( ladybug );
PALETTE_INIT( sraider );
VIDEO_START( sraider );
SCREEN_UPDATE_IND16( sraider );
-SCREEN_EOF( sraider );
+SCREEN_VBLANK( sraider );
/*----------- defined in video/redclash.c -----------*/
@@ -74,7 +74,7 @@ WRITE8_HANDLER( redclash_star_reset_w );
PALETTE_INIT( redclash );
VIDEO_START( redclash );
SCREEN_UPDATE_IND16( redclash );
-SCREEN_EOF( redclash );
+SCREEN_VBLANK( redclash );
/* sraider uses the zerohour star generator board */
void redclash_set_stars_enable(running_machine &machine, UINT8 on);
diff --git a/src/mame/includes/lastduel.h b/src/mame/includes/lastduel.h
index ef221aaa9b9..72ad7fc152b 100644
--- a/src/mame/includes/lastduel.h
+++ b/src/mame/includes/lastduel.h
@@ -49,4 +49,4 @@ VIDEO_START( lastduel );
VIDEO_START( madgear );
SCREEN_UPDATE_IND16( lastduel );
SCREEN_UPDATE_IND16( madgear );
-SCREEN_EOF( lastduel );
+SCREEN_VBLANK( lastduel );
diff --git a/src/mame/includes/lemmings.h b/src/mame/includes/lemmings.h
index 6af96250dfb..fd9de45bd0f 100644
--- a/src/mame/includes/lemmings.h
+++ b/src/mame/includes/lemmings.h
@@ -33,5 +33,5 @@ WRITE16_HANDLER( lemmings_pixel_1_w );
WRITE16_HANDLER( lemmings_vram_w );
VIDEO_START( lemmings );
-SCREEN_EOF( lemmings );
+SCREEN_VBLANK( lemmings );
SCREEN_UPDATE_IND16( lemmings );
diff --git a/src/mame/includes/lockon.h b/src/mame/includes/lockon.h
index b802710d9d7..e046e09c0ec 100644
--- a/src/mame/includes/lockon.h
+++ b/src/mame/includes/lockon.h
@@ -81,7 +81,7 @@ public:
PALETTE_INIT( lockon );
VIDEO_START( lockon );
SCREEN_UPDATE_IND16( lockon );
-SCREEN_EOF( lockon );
+SCREEN_VBLANK( lockon );
READ16_HANDLER( lockon_crtc_r );
WRITE16_HANDLER( lockon_crtc_w );
WRITE16_HANDLER( lockon_rotate_w );
diff --git a/src/mame/includes/lwings.h b/src/mame/includes/lwings.h
index 0711524984f..7b884702836 100644
--- a/src/mame/includes/lwings.h
+++ b/src/mame/includes/lwings.h
@@ -45,4 +45,4 @@ VIDEO_START( trojan );
VIDEO_START( avengers );
SCREEN_UPDATE_IND16( lwings );
SCREEN_UPDATE_IND16( trojan );
-SCREEN_EOF( lwings );
+SCREEN_VBLANK( lwings );
diff --git a/src/mame/includes/macrossp.h b/src/mame/includes/macrossp.h
index 202a13dba42..febd6e3a64a 100644
--- a/src/mame/includes/macrossp.h
+++ b/src/mame/includes/macrossp.h
@@ -52,4 +52,4 @@ WRITE32_HANDLER( macrossp_text_videoram_w );
VIDEO_START(macrossp);
SCREEN_UPDATE_RGB32(macrossp);
-SCREEN_EOF(macrossp);
+SCREEN_VBLANK(macrossp);
diff --git a/src/mame/includes/mcatadv.h b/src/mame/includes/mcatadv.h
index 682661dae28..54746025849 100644
--- a/src/mame/includes/mcatadv.h
+++ b/src/mame/includes/mcatadv.h
@@ -32,7 +32,7 @@ public:
SCREEN_UPDATE_IND16( mcatadv );
VIDEO_START( mcatadv );
-SCREEN_EOF( mcatadv );
+SCREEN_VBLANK( mcatadv );
WRITE16_HANDLER( mcatadv_videoram1_w );
WRITE16_HANDLER( mcatadv_videoram2_w );
diff --git a/src/mame/includes/megadriv.h b/src/mame/includes/megadriv.h
index e9a41ca131a..98504307bda 100644
--- a/src/mame/includes/megadriv.h
+++ b/src/mame/includes/megadriv.h
@@ -67,7 +67,7 @@ MACHINE_START( megadriv );
MACHINE_RESET( megadriv );
VIDEO_START( megadriv );
SCREEN_UPDATE_RGB32( megadriv );
-SCREEN_EOF( megadriv );
+SCREEN_VBLANK( megadriv );
extern UINT16* megadrive_vdp_palette_lookup;
diff --git a/src/mame/includes/megasys1.h b/src/mame/includes/megasys1.h
index 62403f44970..e8b6cb1bb56 100644
--- a/src/mame/includes/megasys1.h
+++ b/src/mame/includes/megasys1.h
@@ -58,7 +58,7 @@ public:
VIDEO_START( megasys1 );
SCREEN_UPDATE_IND16( megasys1 );
-SCREEN_EOF( megasys1 );
+SCREEN_VBLANK( megasys1 );
PALETTE_INIT( megasys1 );
diff --git a/src/mame/includes/mermaid.h b/src/mame/includes/mermaid.h
index cfd3268498f..165b0c0aafe 100644
--- a/src/mame/includes/mermaid.h
+++ b/src/mame/includes/mermaid.h
@@ -69,4 +69,4 @@ PALETTE_INIT( mermaid );
PALETTE_INIT( rougien );
VIDEO_START( mermaid );
SCREEN_UPDATE_IND16( mermaid );
-SCREEN_EOF( mermaid );
+SCREEN_VBLANK( mermaid );
diff --git a/src/mame/includes/model1.h b/src/mame/includes/model1.h
index 3f7c02b789a..e14e9c335ac 100644
--- a/src/mame/includes/model1.h
+++ b/src/mame/includes/model1.h
@@ -113,7 +113,7 @@ void model1_tgp_reset(running_machine &machine, int swa);
VIDEO_START(model1);
SCREEN_UPDATE_RGB32(model1);
-SCREEN_EOF(model1);
+SCREEN_VBLANK(model1);
READ16_HANDLER( model1_listctl_r );
WRITE16_HANDLER( model1_listctl_w );
diff --git a/src/mame/includes/mw8080bw.h b/src/mame/includes/mw8080bw.h
index cdd673ae50f..08c4568c0ed 100644
--- a/src/mame/includes/mw8080bw.h
+++ b/src/mame/includes/mw8080bw.h
@@ -230,6 +230,6 @@ SCREEN_UPDATE_RGB32( mw8080bw );
SCREEN_UPDATE_RGB32( spcenctr );
SCREEN_UPDATE_RGB32( phantom2 );
-SCREEN_EOF( phantom2 );
+SCREEN_VBLANK( phantom2 );
SCREEN_UPDATE_RGB32( invaders );
diff --git a/src/mame/includes/n8080.h b/src/mame/includes/n8080.h
index a2092769105..d83592c30e7 100644
--- a/src/mame/includes/n8080.h
+++ b/src/mame/includes/n8080.h
@@ -55,7 +55,7 @@ VIDEO_START( helifire );
SCREEN_UPDATE_IND16( spacefev );
SCREEN_UPDATE_IND16( sheriff );
SCREEN_UPDATE_IND16( helifire );
-SCREEN_EOF( helifire );
+SCREEN_VBLANK( helifire );
void spacefev_start_red_cannon(running_machine &machine);
diff --git a/src/mame/includes/namcos1.h b/src/mame/includes/namcos1.h
index 2700450adfb..0b4b52b694c 100644
--- a/src/mame/includes/namcos1.h
+++ b/src/mame/includes/namcos1.h
@@ -103,4 +103,4 @@ WRITE8_HANDLER( namcos1_spriteram_w );
VIDEO_START( namcos1 );
SCREEN_UPDATE_IND16( namcos1 );
-SCREEN_EOF( namcos1 );
+SCREEN_VBLANK( namcos1 );
diff --git a/src/mame/includes/namcos86.h b/src/mame/includes/namcos86.h
index 6f4d6bed192..7a95213e25a 100644
--- a/src/mame/includes/namcos86.h
+++ b/src/mame/includes/namcos86.h
@@ -24,7 +24,7 @@ public:
PALETTE_INIT( namcos86 );
VIDEO_START( namcos86 );
SCREEN_UPDATE_IND16( namcos86 );
-SCREEN_EOF( namcos86 );
+SCREEN_VBLANK( namcos86 );
READ8_HANDLER( rthunder_videoram1_r );
WRITE8_HANDLER( rthunder_videoram1_w );
diff --git a/src/mame/includes/ninjakd2.h b/src/mame/includes/ninjakd2.h
index 5c638c0308d..afe57a73788 100644
--- a/src/mame/includes/ninjakd2.h
+++ b/src/mame/includes/ninjakd2.h
@@ -59,5 +59,5 @@ extern VIDEO_START( omegaf );
extern SCREEN_UPDATE_IND16( ninjakd2 );
extern SCREEN_UPDATE_IND16( robokid );
extern SCREEN_UPDATE_IND16( omegaf );
-extern SCREEN_EOF( ninjakd2 );
+extern SCREEN_VBLANK( ninjakd2 );
diff --git a/src/mame/includes/nmk16.h b/src/mame/includes/nmk16.h
index 30563bd25ac..e005e695962 100644
--- a/src/mame/includes/nmk16.h
+++ b/src/mame/includes/nmk16.h
@@ -82,8 +82,8 @@ SCREEN_UPDATE_IND16( bjtwin );
SCREEN_UPDATE_IND16( tharrier );
SCREEN_UPDATE_IND16( hachamf );
SCREEN_UPDATE_IND16( tdragon );
-SCREEN_EOF( nmk );
-SCREEN_EOF( strahl );
+SCREEN_VBLANK( nmk );
+SCREEN_VBLANK( strahl );
VIDEO_START( afega );
VIDEO_START( grdnstrm );
diff --git a/src/mame/includes/othldrby.h b/src/mame/includes/othldrby.h
index 00708ba6200..c32c603602f 100644
--- a/src/mame/includes/othldrby.h
+++ b/src/mame/includes/othldrby.h
@@ -37,5 +37,5 @@ WRITE16_HANDLER( othldrby_vreg_addr_w );
WRITE16_HANDLER( othldrby_vreg_w );
VIDEO_START( othldrby );
-SCREEN_EOF( othldrby );
+SCREEN_VBLANK( othldrby );
SCREEN_UPDATE_IND16( othldrby );
diff --git a/src/mame/includes/pgm.h b/src/mame/includes/pgm.h
index 098118f3114..a87ef744f00 100644
--- a/src/mame/includes/pgm.h
+++ b/src/mame/includes/pgm.h
@@ -171,5 +171,5 @@ WRITE16_HANDLER( pgm_tx_videoram_w );
WRITE16_HANDLER( pgm_bg_videoram_w );
VIDEO_START( pgm );
-SCREEN_EOF( pgm );
+SCREEN_VBLANK( pgm );
SCREEN_UPDATE_IND16( pgm );
diff --git a/src/mame/includes/psikyo.h b/src/mame/includes/psikyo.h
index 16887598691..b5cc64f7679 100644
--- a/src/mame/includes/psikyo.h
+++ b/src/mame/includes/psikyo.h
@@ -70,4 +70,4 @@ VIDEO_START( sngkace );
VIDEO_START( psikyo );
SCREEN_UPDATE_IND16( psikyo );
SCREEN_UPDATE_IND16( psikyo_bootleg );
-SCREEN_EOF( psikyo );
+SCREEN_VBLANK( psikyo );
diff --git a/src/mame/includes/psikyosh.h b/src/mame/includes/psikyosh.h
index 786a05f9f0b..69279db736c 100644
--- a/src/mame/includes/psikyosh.h
+++ b/src/mame/includes/psikyosh.h
@@ -46,4 +46,4 @@ public:
VIDEO_START( psikyosh );
SCREEN_UPDATE_RGB32( psikyosh );
-SCREEN_EOF( psikyosh );
+SCREEN_VBLANK( psikyosh );
diff --git a/src/mame/includes/segamsys.h b/src/mame/includes/segamsys.h
index 6de643804f4..47830ed3af4 100644
--- a/src/mame/includes/segamsys.h
+++ b/src/mame/includes/segamsys.h
@@ -15,8 +15,8 @@ extern DRIVER_INIT( megatech_bios );
extern DRIVER_INIT( hazemd_segasyse );
extern MACHINE_RESET(megatech_bios);
extern MACHINE_RESET(megatech_md_sms);
-extern SCREEN_EOF(megatech_bios);
-extern SCREEN_EOF(megatech_md_sms);
+extern SCREEN_VBLANK(megatech_bios);
+extern SCREEN_VBLANK(megatech_md_sms);
extern READ8_HANDLER( sms_vcounter_r );
extern READ8_HANDLER( sms_vdp_data_r );
@@ -35,12 +35,12 @@ extern READ8_HANDLER( md_sms_vdp_ctrl_r );
extern WRITE8_HANDLER( md_sms_vdp_ctrl_w );
extern VIDEO_START(sms);
-extern SCREEN_EOF(sms);
+extern SCREEN_VBLANK(sms);
extern READ8_HANDLER( sms_vdp_2_data_r );
extern WRITE8_HANDLER( sms_vdp_2_data_w );
extern READ8_HANDLER( sms_vdp_2_ctrl_r );
extern WRITE8_HANDLER( sms_vdp_2_ctrl_w );
-extern SCREEN_EOF(systeme);
+extern SCREEN_VBLANK(systeme);
extern SCREEN_UPDATE_RGB32(systeme);
extern MACHINE_RESET(systeme);
extern UINT8* sms_mainram;
diff --git a/src/mame/includes/seta.h b/src/mame/includes/seta.h
index e53a56e014f..818ebbbd032 100644
--- a/src/mame/includes/seta.h
+++ b/src/mame/includes/seta.h
@@ -120,5 +120,5 @@ SCREEN_UPDATE_IND16( usclssic );
SCREEN_UPDATE_IND16( inttoote );
SCREEN_UPDATE_IND16( setaroul );
-SCREEN_EOF( setaroul );
+SCREEN_VBLANK( setaroul );
diff --git a/src/mame/includes/seta2.h b/src/mame/includes/seta2.h
index cd59fe5c2c1..0b9ab2bb3fb 100644
--- a/src/mame/includes/seta2.h
+++ b/src/mame/includes/seta2.h
@@ -38,4 +38,4 @@ VIDEO_START( seta2 );
VIDEO_START( seta2_xoffset );
VIDEO_START( seta2_yoffset );
SCREEN_UPDATE_IND16( seta2 );
-SCREEN_EOF( seta2 );
+SCREEN_VBLANK( seta2 );
diff --git a/src/mame/includes/shadfrce.h b/src/mame/includes/shadfrce.h
index 2db245332a0..f9506e595f0 100644
--- a/src/mame/includes/shadfrce.h
+++ b/src/mame/includes/shadfrce.h
@@ -31,7 +31,7 @@ WRITE16_HANDLER ( shadfrce_bg1scrollx_w );
WRITE16_HANDLER ( shadfrce_bg0scrolly_w );
WRITE16_HANDLER ( shadfrce_bg1scrolly_w );
VIDEO_START( shadfrce );
-SCREEN_EOF(shadfrce);
+SCREEN_VBLANK(shadfrce);
SCREEN_UPDATE_IND16( shadfrce );
WRITE16_HANDLER( shadfrce_fgvideoram_w );
WRITE16_HANDLER( shadfrce_bg0videoram_w );
diff --git a/src/mame/includes/sidearms.h b/src/mame/includes/sidearms.h
index 2e7cd4da486..d2dbb8fe8bd 100644
--- a/src/mame/includes/sidearms.h
+++ b/src/mame/includes/sidearms.h
@@ -37,4 +37,4 @@ WRITE8_HANDLER( sidearms_gfxctrl_w );
VIDEO_START( sidearms );
SCREEN_UPDATE_IND16( sidearms );
-SCREEN_EOF( sidearms );
+SCREEN_VBLANK( sidearms );
diff --git a/src/mame/includes/slapshot.h b/src/mame/includes/slapshot.h
index 06f265bc569..1477d1bf8f3 100644
--- a/src/mame/includes/slapshot.h
+++ b/src/mame/includes/slapshot.h
@@ -59,4 +59,4 @@ public:
VIDEO_START( slapshot );
SCREEN_UPDATE_IND16( slapshot );
-SCREEN_EOF( taito_no_buffer );
+SCREEN_VBLANK( taito_no_buffer );
diff --git a/src/mame/includes/sprint2.h b/src/mame/includes/sprint2.h
index 2576b8683a2..8cd368daa79 100644
--- a/src/mame/includes/sprint2.h
+++ b/src/mame/includes/sprint2.h
@@ -58,5 +58,5 @@ WRITE8_HANDLER( sprint2_video_ram_w );
PALETTE_INIT( sprint2 );
SCREEN_UPDATE_IND16( sprint2 );
VIDEO_START( sprint2 );
-SCREEN_EOF( sprint2 );
+SCREEN_VBLANK( sprint2 );
diff --git a/src/mame/includes/sprint4.h b/src/mame/includes/sprint4.h
index 06d2e53c370..3f35b963772 100644
--- a/src/mame/includes/sprint4.h
+++ b/src/mame/includes/sprint4.h
@@ -20,7 +20,7 @@ public:
PALETTE_INIT( sprint4 );
-SCREEN_EOF( sprint4 );
+SCREEN_VBLANK( sprint4 );
VIDEO_START( sprint4 );
SCREEN_UPDATE_IND16( sprint4 );
diff --git a/src/mame/includes/sprint8.h b/src/mame/includes/sprint8.h
index bda145b045c..5dbf429b2d5 100644
--- a/src/mame/includes/sprint8.h
+++ b/src/mame/includes/sprint8.h
@@ -31,7 +31,7 @@ void sprint8_set_collision(running_machine &machine, int n);
/*----------- defined in video/sprint8.c -----------*/
PALETTE_INIT( sprint8 );
-SCREEN_EOF( sprint8 );
+SCREEN_VBLANK( sprint8 );
VIDEO_START( sprint8 );
SCREEN_UPDATE_IND16( sprint8 );
diff --git a/src/mame/includes/srumbler.h b/src/mame/includes/srumbler.h
index fc6596b644d..474a79424b3 100644
--- a/src/mame/includes/srumbler.h
+++ b/src/mame/includes/srumbler.h
@@ -25,4 +25,4 @@ WRITE8_HANDLER( srumbler_4009_w );
VIDEO_START( srumbler );
SCREEN_UPDATE_IND16( srumbler );
-SCREEN_EOF( srumbler );
+SCREEN_VBLANK( srumbler );
diff --git a/src/mame/includes/sspeedr.h b/src/mame/includes/sspeedr.h
index 66e6839c29a..c1dabc59166 100644
--- a/src/mame/includes/sspeedr.h
+++ b/src/mame/includes/sspeedr.h
@@ -38,4 +38,4 @@ WRITE8_HANDLER( sspeedr_track_ice_w );
VIDEO_START( sspeedr );
SCREEN_UPDATE_IND16( sspeedr );
-SCREEN_EOF( sspeedr );
+SCREEN_VBLANK( sspeedr );
diff --git a/src/mame/includes/ssrj.h b/src/mame/includes/ssrj.h
index d8da319ca16..babd922ce15 100644
--- a/src/mame/includes/ssrj.h
+++ b/src/mame/includes/ssrj.h
@@ -25,5 +25,5 @@ WRITE8_HANDLER(ssrj_vram4_w);
VIDEO_START( ssrj );
SCREEN_UPDATE_IND16( ssrj );
-SCREEN_EOF( ssrj );
+SCREEN_VBLANK( ssrj );
PALETTE_INIT( ssrj );
diff --git a/src/mame/includes/starshp1.h b/src/mame/includes/starshp1.h
index 7108bab908b..fc28aef92cf 100644
--- a/src/mame/includes/starshp1.h
+++ b/src/mame/includes/starshp1.h
@@ -73,7 +73,7 @@ WRITE8_HANDLER( starshp1_playfield_w );
PALETTE_INIT( starshp1 );
SCREEN_UPDATE_IND16( starshp1 );
-SCREEN_EOF( starshp1 );
+SCREEN_VBLANK( starshp1 );
VIDEO_START( starshp1 );
diff --git a/src/mame/includes/suprnova.h b/src/mame/includes/suprnova.h
index f54628b10a6..de97ee783bf 100644
--- a/src/mame/includes/suprnova.h
+++ b/src/mame/includes/suprnova.h
@@ -86,5 +86,5 @@ WRITE32_HANDLER ( skns_pal_regs_w );
WRITE32_HANDLER ( skns_palette_ram_w );
VIDEO_START(skns);
VIDEO_RESET(skns);
-SCREEN_EOF(skns);
+SCREEN_VBLANK(skns);
SCREEN_UPDATE_RGB32(skns);
diff --git a/src/mame/includes/taito_b.h b/src/mame/includes/taito_b.h
index 38b45f1121c..a30b9b7b522 100644
--- a/src/mame/includes/taito_b.h
+++ b/src/mame/includes/taito_b.h
@@ -59,4 +59,4 @@ VIDEO_RESET( hitice );
SCREEN_UPDATE_RGB32( realpunc );
SCREEN_UPDATE_IND16( taitob );
-SCREEN_EOF( taitob );
+SCREEN_VBLANK( taitob );
diff --git a/src/mame/includes/taito_f2.h b/src/mame/includes/taito_f2.h
index 9462bae1b3a..2f30c0d7215 100644
--- a/src/mame/includes/taito_f2.h
+++ b/src/mame/includes/taito_f2.h
@@ -108,11 +108,11 @@ VIDEO_START( taitof2_yesnoj );
VIDEO_START( taitof2_deadconx );
VIDEO_START( taitof2_deadconxj );
VIDEO_START( taitof2_dinorex );
-SCREEN_EOF( taitof2_no_buffer );
-SCREEN_EOF( taitof2_full_buffer_delayed );
-SCREEN_EOF( taitof2_partial_buffer_delayed );
-SCREEN_EOF( taitof2_partial_buffer_delayed_thundfox );
-SCREEN_EOF( taitof2_partial_buffer_delayed_qzchikyu );
+SCREEN_VBLANK( taitof2_no_buffer );
+SCREEN_VBLANK( taitof2_full_buffer_delayed );
+SCREEN_VBLANK( taitof2_partial_buffer_delayed );
+SCREEN_VBLANK( taitof2_partial_buffer_delayed_thundfox );
+SCREEN_VBLANK( taitof2_partial_buffer_delayed_qzchikyu );
SCREEN_UPDATE_IND16( taitof2 );
SCREEN_UPDATE_IND16( taitof2_pri );
diff --git a/src/mame/includes/taito_f3.h b/src/mame/includes/taito_f3.h
index 524168a7a8a..9072e176802 100644
--- a/src/mame/includes/taito_f3.h
+++ b/src/mame/includes/taito_f3.h
@@ -200,7 +200,7 @@ public:
VIDEO_START( f3 );
SCREEN_UPDATE_RGB32( f3 );
-SCREEN_EOF( f3 );
+SCREEN_VBLANK( f3 );
WRITE16_HANDLER( f3_control_0_w );
WRITE16_HANDLER( f3_control_1_w );
diff --git a/src/mame/includes/taito_l.h b/src/mame/includes/taito_l.h
index 7cd842331bb..822187929c3 100644
--- a/src/mame/includes/taito_l.h
+++ b/src/mame/includes/taito_l.h
@@ -63,7 +63,7 @@ public:
/*----------- defined in video/taito_l.c -----------*/
-SCREEN_EOF( taitol );
+SCREEN_VBLANK( taitol );
VIDEO_START( taitol );
SCREEN_UPDATE_IND16( taitol );
diff --git a/src/mame/includes/tank8.h b/src/mame/includes/tank8.h
index fade5fc4b29..821022bc348 100644
--- a/src/mame/includes/tank8.h
+++ b/src/mame/includes/tank8.h
@@ -55,7 +55,7 @@ void tank8_set_collision(running_machine &machine, int index);
/*----------- defined in video/tank8.c -----------*/
PALETTE_INIT( tank8 );
-SCREEN_EOF( tank8 );
+SCREEN_VBLANK( tank8 );
VIDEO_START( tank8 );
SCREEN_UPDATE_IND16( tank8 );
diff --git a/src/mame/includes/taotaido.h b/src/mame/includes/taotaido.h
index 631c33d6da5..6b38a9495aa 100644
--- a/src/mame/includes/taotaido.h
+++ b/src/mame/includes/taotaido.h
@@ -26,4 +26,4 @@ WRITE16_HANDLER( taotaido_tileregs_w );
WRITE16_HANDLER( taotaido_bgvideoram_w );
VIDEO_START( taotaido );
SCREEN_UPDATE_IND16( taotaido );
-SCREEN_EOF( taotaido );
+SCREEN_VBLANK( taotaido );
diff --git a/src/mame/includes/tceptor.h b/src/mame/includes/tceptor.h
index 77f2ccfa018..6214b0be925 100644
--- a/src/mame/includes/tceptor.h
+++ b/src/mame/includes/tceptor.h
@@ -35,7 +35,7 @@ VIDEO_START( tceptor );
SCREEN_UPDATE_IND16( tceptor_2d );
SCREEN_UPDATE_IND16( tceptor_3d_left );
SCREEN_UPDATE_IND16( tceptor_3d_right );
-SCREEN_EOF( tceptor );
+SCREEN_VBLANK( tceptor );
WRITE8_HANDLER( tceptor_tile_ram_w );
WRITE8_HANDLER( tceptor_tile_attr_w );
diff --git a/src/mame/includes/tigeroad.h b/src/mame/includes/tigeroad.h
index 1646c9aedbb..a6ebc0ff081 100644
--- a/src/mame/includes/tigeroad.h
+++ b/src/mame/includes/tigeroad.h
@@ -19,4 +19,4 @@ WRITE16_HANDLER( tigeroad_videoctrl_w );
WRITE16_HANDLER( tigeroad_scroll_w );
VIDEO_START( tigeroad );
SCREEN_UPDATE_IND16( tigeroad );
-SCREEN_EOF( tigeroad );
+SCREEN_VBLANK( tigeroad );
diff --git a/src/mame/includes/tmnt.h b/src/mame/includes/tmnt.h
index 325f60a93f3..4f5503fa573 100644
--- a/src/mame/includes/tmnt.h
+++ b/src/mame/includes/tmnt.h
@@ -108,4 +108,4 @@ SCREEN_UPDATE_IND16( glfgreat );
SCREEN_UPDATE_IND16( tmnt2 );
SCREEN_UPDATE_IND16( thndrx2 );
-SCREEN_EOF( blswhstl );
+SCREEN_VBLANK( blswhstl );
diff --git a/src/mame/includes/tnzs.h b/src/mame/includes/tnzs.h
index b8b90a80a04..2e54fe3485f 100644
--- a/src/mame/includes/tnzs.h
+++ b/src/mame/includes/tnzs.h
@@ -88,4 +88,4 @@ MACHINE_START( jpopnics );
PALETTE_INIT( arknoid2 );
SCREEN_UPDATE_IND16( tnzs );
-SCREEN_EOF( tnzs );
+SCREEN_VBLANK( tnzs );
diff --git a/src/mame/includes/toaplan1.h b/src/mame/includes/toaplan1.h
index e85b41107ea..9c9cfebb6d1 100644
--- a/src/mame/includes/toaplan1.h
+++ b/src/mame/includes/toaplan1.h
@@ -147,9 +147,9 @@ WRITE16_HANDLER( toaplan1_tileram_offs_w );
READ16_HANDLER ( toaplan1_spriteram_offs_r );
WRITE16_HANDLER( toaplan1_spriteram_offs_w );
-SCREEN_EOF( rallybik );
-SCREEN_EOF( toaplan1 );
-SCREEN_EOF( samesame );
+SCREEN_VBLANK( rallybik );
+SCREEN_VBLANK( toaplan1 );
+SCREEN_VBLANK( samesame );
VIDEO_START( rallybik );
VIDEO_START( toaplan1 );
SCREEN_UPDATE_IND16( rallybik );
diff --git a/src/mame/includes/toaplan2.h b/src/mame/includes/toaplan2.h
index c7cac1b646e..d95ad982d55 100644
--- a/src/mame/includes/toaplan2.h
+++ b/src/mame/includes/toaplan2.h
@@ -69,7 +69,7 @@ SCREEN_UPDATE_IND16( batrider );
SCREEN_UPDATE_IND16( dogyuun );
SCREEN_UPDATE_IND16( batsugun );
-SCREEN_EOF( toaplan2 );
+SCREEN_VBLANK( toaplan2 );
/* non-vdp text layer */
WRITE16_HANDLER( toaplan2_txvideoram16_w );
diff --git a/src/mame/includes/toki.h b/src/mame/includes/toki.h
index 51ba65c9c4b..fe45cf58e6a 100644
--- a/src/mame/includes/toki.h
+++ b/src/mame/includes/toki.h
@@ -19,8 +19,8 @@ public:
/*----------- defined in video/toki.c -----------*/
VIDEO_START( toki );
-SCREEN_EOF( toki );
-SCREEN_EOF( tokib );
+SCREEN_VBLANK( toki );
+SCREEN_VBLANK( tokib );
SCREEN_UPDATE_IND16( toki );
SCREEN_UPDATE_IND16( tokib );
WRITE16_HANDLER( toki_background1_videoram16_w );
diff --git a/src/mame/includes/twin16.h b/src/mame/includes/twin16.h
index 36397630b3f..c3db4a7941e 100644
--- a/src/mame/includes/twin16.h
+++ b/src/mame/includes/twin16.h
@@ -42,6 +42,6 @@ READ16_HANDLER( twin16_sprite_status_r );
VIDEO_START( twin16 );
SCREEN_UPDATE_IND16( twin16 );
-SCREEN_EOF( twin16 );
+SCREEN_VBLANK( twin16 );
void twin16_spriteram_process( running_machine &machine );
diff --git a/src/mame/includes/twincobr.h b/src/mame/includes/twincobr.h
index 59987260c26..13171622e41 100644
--- a/src/mame/includes/twincobr.h
+++ b/src/mame/includes/twincobr.h
@@ -122,4 +122,4 @@ WRITE8_HANDLER( wardner_sprite_w );
VIDEO_START( toaplan0 );
SCREEN_UPDATE_IND16( toaplan0 );
-SCREEN_EOF( toaplan0 );
+SCREEN_VBLANK( toaplan0 );
diff --git a/src/mame/includes/tx1.h b/src/mame/includes/tx1.h
index 760a320db8d..12bc99d93e7 100644
--- a/src/mame/includes/tx1.h
+++ b/src/mame/includes/tx1.h
@@ -164,7 +164,7 @@ VIDEO_START( tx1 );
SCREEN_UPDATE_IND16( tx1_left );
SCREEN_UPDATE_IND16( tx1_middle );
SCREEN_UPDATE_IND16( tx1_right );
-SCREEN_EOF( tx1 );
+SCREEN_VBLANK( tx1 );
WRITE16_HANDLER( tx1_slincs_w );
WRITE16_HANDLER( tx1_slock_w );
WRITE16_HANDLER( tx1_scolst_w );
@@ -176,7 +176,7 @@ VIDEO_START( buggyboy );
SCREEN_UPDATE_IND16( buggyboy_left );
SCREEN_UPDATE_IND16( buggyboy_middle );
SCREEN_UPDATE_IND16( buggyboy_right );
-SCREEN_EOF( buggyboy );
+SCREEN_VBLANK( buggyboy );
VIDEO_START( buggybjr );
SCREEN_UPDATE_IND16( buggybjr );
diff --git a/src/mame/includes/ultratnk.h b/src/mame/includes/ultratnk.h
index 4cb440e5060..f748505139f 100644
--- a/src/mame/includes/ultratnk.h
+++ b/src/mame/includes/ultratnk.h
@@ -24,6 +24,6 @@ public:
PALETTE_INIT( ultratnk );
VIDEO_START( ultratnk );
SCREEN_UPDATE_IND16( ultratnk );
-SCREEN_EOF( ultratnk );
+SCREEN_VBLANK( ultratnk );
WRITE8_HANDLER( ultratnk_video_ram_w );
diff --git a/src/mame/includes/wolfpack.h b/src/mame/includes/wolfpack.h
index b537de19e89..2dde29be368 100644
--- a/src/mame/includes/wolfpack.h
+++ b/src/mame/includes/wolfpack.h
@@ -29,7 +29,7 @@ public:
PALETTE_INIT( wolfpack );
SCREEN_UPDATE_IND16( wolfpack );
VIDEO_START( wolfpack );
-SCREEN_EOF( wolfpack );
+SCREEN_VBLANK( wolfpack );
WRITE8_HANDLER( wolfpack_video_invert_w );
WRITE8_HANDLER( wolfpack_ship_reflect_w );
diff --git a/src/mame/includes/xmen.h b/src/mame/includes/xmen.h
index 2c451780056..d864dd93d7a 100644
--- a/src/mame/includes/xmen.h
+++ b/src/mame/includes/xmen.h
@@ -46,4 +46,4 @@ VIDEO_START( xmen6p );
SCREEN_UPDATE_IND16( xmen );
SCREEN_UPDATE_IND16( xmen6p_left );
SCREEN_UPDATE_IND16( xmen6p_right );
-SCREEN_EOF( xmen6p );
+SCREEN_VBLANK( xmen6p );
diff --git a/src/mame/machine/megadriv.c b/src/mame/machine/megadriv.c
index 2be878aa15b..e67abe68293 100644
--- a/src/mame/machine/megadriv.c
+++ b/src/mame/machine/megadriv.c
@@ -9396,23 +9396,26 @@ void megadriv_stop_scanline_timer(void)
/* VIDEO_EOF is used to resync the scanline counters */
-SCREEN_EOF(megadriv)
+SCREEN_VBLANK(megadriv)
{
- rectangle visarea;
- int scr_width = 320;
+ // rising edge
+ if (vblank_on)
+ {
+ rectangle visarea;
+ int scr_width = 320;
- megadrive_vblank_flag = 0;
- //megadrive_irq6_pending = 0; /* NO! (breaks warlock) */
+ megadrive_vblank_flag = 0;
+ //megadrive_irq6_pending = 0; /* NO! (breaks warlock) */
- /* Set it to -1 here, so it becomes 0 when the first timer kicks in */
- genesis_scanline_counter = -1;
- megadrive_sprite_collision=0;//? when to reset this ..
- megadrive_imode = MEGADRIVE_REG0C_INTERLEAVE; // can't change mid-frame..
- megadrive_imode_odd_frame^=1;
-// cputag_set_input_line(machine, "genesis_snd_z80", 0, CLEAR_LINE); // if the z80 interrupt hasn't happened by now, clear it..
+ /* Set it to -1 here, so it becomes 0 when the first timer kicks in */
+ genesis_scanline_counter = -1;
+ megadrive_sprite_collision=0;//? when to reset this ..
+ megadrive_imode = MEGADRIVE_REG0C_INTERLEAVE; // can't change mid-frame..
+ megadrive_imode_odd_frame^=1;
+// cputag_set_input_line(machine, "genesis_snd_z80", 0, CLEAR_LINE); // if the z80 interrupt hasn't happened by now, clear it..
- if (input_port_read_safe(screen.machine(), "RESET", 0x00) & 0x01)
- cputag_set_input_line(screen.machine(), "maincpu", INPUT_LINE_RESET, PULSE_LINE);
+ if (input_port_read_safe(screen.machine(), "RESET", 0x00) & 0x01)
+ cputag_set_input_line(screen.machine(), "maincpu", INPUT_LINE_RESET, PULSE_LINE);
/*
int megadrive_total_scanlines = 262;
@@ -9424,88 +9427,89 @@ int megadrive_z80irq_hpos = 320;
*/
- if (MEGADRIVE_REG01_240_LINE)
- {
- if (!megadrive_region_pal)
+ if (MEGADRIVE_REG01_240_LINE)
{
- /* this is invalid! */
- megadrive_visible_scanlines = 240;
- megadrive_total_scanlines = 262;
- megadrive_irq6_scanline = 240;
- megadrive_z80irq_scanline = 240;
+ if (!megadrive_region_pal)
+ {
+ /* this is invalid! */
+ megadrive_visible_scanlines = 240;
+ megadrive_total_scanlines = 262;
+ megadrive_irq6_scanline = 240;
+ megadrive_z80irq_scanline = 240;
+ }
+ else
+ {
+ megadrive_visible_scanlines = 240;
+ megadrive_total_scanlines = 313;
+ megadrive_irq6_scanline = 240;
+ megadrive_z80irq_scanline = 240;
+ }
}
else
{
- megadrive_visible_scanlines = 240;
- megadrive_total_scanlines = 313;
- megadrive_irq6_scanline = 240;
- megadrive_z80irq_scanline = 240;
+ if (!megadrive_region_pal)
+ {
+ megadrive_visible_scanlines = 224;
+ megadrive_total_scanlines=262;
+ megadrive_irq6_scanline = 224;
+ megadrive_z80irq_scanline = 224;
+ }
+ else
+ {
+ megadrive_visible_scanlines = 224;
+ megadrive_total_scanlines=313;
+ megadrive_irq6_scanline = 224;
+ megadrive_z80irq_scanline = 224;
+ }
}
- }
- else
- {
- if (!megadrive_region_pal)
+
+ if (megadrive_imode==3)
{
- megadrive_visible_scanlines = 224;
- megadrive_total_scanlines=262;
- megadrive_irq6_scanline = 224;
- megadrive_z80irq_scanline = 224;
+ megadrive_visible_scanlines<<=1;
+ megadrive_total_scanlines<<=1;
+ megadrive_irq6_scanline <<=1;
+ megadrive_z80irq_scanline <<=1;
}
- else
+
+
+ //get_hposition();
+ switch (MEGADRIVE_REG0C_RS0 | (MEGADRIVE_REG0C_RS1 << 1))
{
- megadrive_visible_scanlines = 224;
- megadrive_total_scanlines=313;
- megadrive_irq6_scanline = 224;
- megadrive_z80irq_scanline = 224;
+ /* note, add 240 mode + init new timings! */
+ case 0:scr_width = 256;break;// configure_screen(0, 256-1, megadrive_visible_scanlines-1,(double)megadriv_framerate); break;
+ case 1:scr_width = 256;break;// configure_screen(0, 256-1, megadrive_visible_scanlines-1,(double)megadriv_framerate); mame_printf_debug("invalid screenmode!\n"); break;
+ case 2:scr_width = 320;break;// configure_screen(0, 320-1, megadrive_visible_scanlines-1,(double)megadriv_framerate); break; /* technically invalid, but used in rare cases */
+ case 3:scr_width = 320;break;// configure_screen(0, 320-1, megadrive_visible_scanlines-1,(double)megadriv_framerate); break;
}
- }
-
- if (megadrive_imode==3)
- {
- megadrive_visible_scanlines<<=1;
- megadrive_total_scanlines<<=1;
- megadrive_irq6_scanline <<=1;
- megadrive_z80irq_scanline <<=1;
- }
+// mame_printf_debug("my mode %02x", megadrive_vdp_register[0x0c]);
+ visarea.min_x = 0;
+ visarea.max_x = scr_width-1;
+ visarea.min_y = 0;
+ visarea.max_y = megadrive_visible_scanlines-1;
- //get_hposition();
- switch (MEGADRIVE_REG0C_RS0 | (MEGADRIVE_REG0C_RS1 << 1))
- {
- /* note, add 240 mode + init new timings! */
- case 0:scr_width = 256;break;// configure_screen(0, 256-1, megadrive_visible_scanlines-1,(double)megadriv_framerate); break;
- case 1:scr_width = 256;break;// configure_screen(0, 256-1, megadrive_visible_scanlines-1,(double)megadriv_framerate); mame_printf_debug("invalid screenmode!\n"); break;
- case 2:scr_width = 320;break;// configure_screen(0, 320-1, megadrive_visible_scanlines-1,(double)megadriv_framerate); break; /* technically invalid, but used in rare cases */
- case 3:scr_width = 320;break;// configure_screen(0, 320-1, megadrive_visible_scanlines-1,(double)megadriv_framerate); break;
- }
-// mame_printf_debug("my mode %02x", megadrive_vdp_register[0x0c]);
+ screen.machine().primary_screen->configure(scr_width, megadrive_visible_scanlines, visarea, HZ_TO_ATTOSECONDS(megadriv_framerate));
- visarea.min_x = 0;
- visarea.max_x = scr_width-1;
- visarea.min_y = 0;
- visarea.max_y = megadrive_visible_scanlines-1;
+ if (0)
+ {
+ //int xxx;
+// UINT64 frametime;
- screen.machine().primary_screen->configure(scr_width, megadrive_visible_scanlines, visarea, HZ_TO_ATTOSECONDS(megadriv_framerate));
+ // /* reference */
+// frametime = ATTOSECONDS_PER_SECOND/megadriv_framerate;
- if (0)
- {
- //int xxx;
-// UINT64 frametime;
+ //time_elapsed_since_crap = frame_timer->time_elapsed();
+ //xxx = screen.machine().device<cpudevice>("maincpu")->attotime_to_cycles(time_elapsed_since_crap);
+ //mame_printf_debug("---------- cycles %d, %08x %08x\n",xxx, (UINT32)(time_elapsed_since_crap.attoseconds>>32),(UINT32)(time_elapsed_since_crap.attoseconds&0xffffffff));
+ //mame_printf_debug("---------- framet %d, %08x %08x\n",xxx, (UINT32)(frametime>>32),(UINT32)(frametime&0xffffffff));
+ frame_timer->adjust(attotime::zero);
+ }
- // /* reference */
-// frametime = ATTOSECONDS_PER_SECOND/megadriv_framerate;
+ scanline_timer->adjust(attotime::zero);
- //time_elapsed_since_crap = frame_timer->time_elapsed();
- //xxx = screen.machine().device<cpudevice>("maincpu")->attotime_to_cycles(time_elapsed_since_crap);
- //mame_printf_debug("---------- cycles %d, %08x %08x\n",xxx, (UINT32)(time_elapsed_since_crap.attoseconds>>32),(UINT32)(time_elapsed_since_crap.attoseconds&0xffffffff));
- //mame_printf_debug("---------- framet %d, %08x %08x\n",xxx, (UINT32)(frametime>>32),(UINT32)(frametime&0xffffffff));
- frame_timer->adjust(attotime::zero);
+ if(_32x_is_connected)
+ _32x_hcount_compare_val = -1;
}
-
- scanline_timer->adjust(attotime::zero);
-
- if(_32x_is_connected)
- _32x_hcount_compare_val = -1;
}
@@ -9565,7 +9569,7 @@ MACHINE_CONFIG_FRAGMENT( md_ntsc )
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(megadriv) /* Copies a bitmap */
- MCFG_SCREEN_EOF_STATIC(megadriv) /* Used to Sync the timing */
+ MCFG_SCREEN_VBLANK_STATIC(megadriv) /* Used to Sync the timing */
MCFG_NVRAM_HANDLER(megadriv)
@@ -9613,7 +9617,7 @@ MACHINE_CONFIG_FRAGMENT( md_pal )
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1)
MCFG_SCREEN_UPDATE_STATIC(megadriv) /* Copies a bitmap */
- MCFG_SCREEN_EOF_STATIC(megadriv) /* Used to Sync the timing */
+ MCFG_SCREEN_VBLANK_STATIC(megadriv) /* Used to Sync the timing */
MCFG_NVRAM_HANDLER(megadriv)
diff --git a/src/mame/machine/segamsys.c b/src/mame/machine/segamsys.c
index 36e8d535acb..fbcbe640462 100644
--- a/src/mame/machine/segamsys.c
+++ b/src/mame/machine/segamsys.c
@@ -1181,14 +1181,17 @@ static void end_of_frame(running_machine &machine, struct sms_vdp *chip)
}
-SCREEN_EOF(sms)
+SCREEN_VBLANK(sms)
{
- end_of_frame(screen.machine(), md_sms_vdp);
-
- // the SMS has a 'RESET' button on the machine, it generates an NMI
- if (input_port_read_safe(screen.machine(),"PAUSE",0x00))
- cputag_set_input_line(screen.machine(), "maincpu", INPUT_LINE_NMI, PULSE_LINE);
+ // rising edge
+ if (vblank_on)
+ {
+ end_of_frame(screen.machine(), md_sms_vdp);
+ // the SMS has a 'RESET' button on the machine, it generates an NMI
+ if (input_port_read_safe(screen.machine(),"PAUSE",0x00))
+ cputag_set_input_line(screen.machine(), "maincpu", INPUT_LINE_NMI, PULSE_LINE);
+ }
}
@@ -1250,21 +1253,29 @@ MACHINE_RESET(megatech_bios)
vdp1->sms_scanline_timer->adjust(attotime::zero);
}
-SCREEN_EOF(systeme)
+SCREEN_VBLANK(systeme)
{
- end_of_frame(screen.machine(), vdp1);
- end_of_frame(screen.machine(), vdp2);
+ // rising edge
+ if (vblank_on)
+ {
+ end_of_frame(screen.machine(), vdp1);
+ end_of_frame(screen.machine(), vdp2);
+ }
}
-SCREEN_EOF(megatech_md_sms)
+SCREEN_VBLANK(megatech_md_sms)
{
- end_of_frame(screen.machine(), md_sms_vdp);
+ // rising edge
+ if (vblank_on)
+ end_of_frame(screen.machine(), md_sms_vdp);
}
-SCREEN_EOF(megatech_bios)
+SCREEN_VBLANK(megatech_bios)
{
- end_of_frame(screen.machine(), vdp1);
+ // rising edge
+ if (vblank_on)
+ end_of_frame(screen.machine(), vdp1);
}
SCREEN_UPDATE_RGB32(megatech_md_sms)
@@ -1729,7 +1740,7 @@ MACHINE_CONFIG_START( sms, driver_device )
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 223)
// MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 191)
MCFG_SCREEN_UPDATE_STATIC(megatech_md_sms) /* Copies a bitmap */
- MCFG_SCREEN_EOF_STATIC(sms) /* Used to Sync the timing */
+ MCFG_SCREEN_VBLANK_STATIC(sms) /* Used to Sync the timing */
MCFG_PALETTE_LENGTH(0x200)
diff --git a/src/mame/video/airbustr.c b/src/mame/video/airbustr.c
index 8fb38918549..987a29b0ac2 100644
--- a/src/mame/video/airbustr.c
+++ b/src/mame/video/airbustr.c
@@ -146,11 +146,15 @@ SCREEN_UPDATE_IND16( airbustr )
return 0;
}
-SCREEN_EOF( airbustr )
+SCREEN_VBLANK( airbustr )
{
- airbustr_state *state = screen.machine().driver_data<airbustr_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ airbustr_state *state = screen.machine().driver_data<airbustr_state>();
- // update the sprite bitmap
- pandora_eof(state->m_pandora);
+ // update the sprite bitmap
+ pandora_eof(state->m_pandora);
+ }
}
diff --git a/src/mame/video/armedf.c b/src/mame/video/armedf.c
index b83bd555828..37c5502789e 100644
--- a/src/mame/video/armedf.c
+++ b/src/mame/video/armedf.c
@@ -431,9 +431,13 @@ SCREEN_UPDATE_IND16( armedf )
}
-SCREEN_EOF( armedf )
+SCREEN_VBLANK( armedf )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space, 0, 0, 0xffff);
+ buffer_spriteram16_w(space, 0, 0, 0xffff);
+ }
}
diff --git a/src/mame/video/atarig1.c b/src/mame/video/atarig1.c
index 2d1c144a191..49ca351b389 100644
--- a/src/mame/video/atarig1.c
+++ b/src/mame/video/atarig1.c
@@ -166,9 +166,13 @@ SCREEN_UPDATE_IND16( atarig1 )
return 0;
}
-SCREEN_EOF( atarig1 )
+SCREEN_VBLANK( atarig1 )
{
- atarig1_state *state = screen.machine().driver_data<atarig1_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ atarig1_state *state = screen.machine().driver_data<atarig1_state>();
- atarirle_eof(state->m_rle);
+ atarirle_eof(state->m_rle);
+ }
}
diff --git a/src/mame/video/atarig42.c b/src/mame/video/atarig42.c
index abcd53be806..5f50a26c194 100644
--- a/src/mame/video/atarig42.c
+++ b/src/mame/video/atarig42.c
@@ -227,9 +227,13 @@ SCREEN_UPDATE_IND16( atarig42 )
return 0;
}
-SCREEN_EOF( atarig42 )
+SCREEN_VBLANK( atarig42 )
{
- atarig42_state *state = screen.machine().driver_data<atarig42_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ atarig42_state *state = screen.machine().driver_data<atarig42_state>();
- atarirle_eof(state->m_rle);
+ atarirle_eof(state->m_rle);
+ }
}
diff --git a/src/mame/video/atarigt.c b/src/mame/video/atarigt.c
index 9a4c7842c49..35f8c2b281b 100644
--- a/src/mame/video/atarigt.c
+++ b/src/mame/video/atarigt.c
@@ -632,9 +632,13 @@ SCREEN_UPDATE_RGB32( atarigt )
return 0;
}
-SCREEN_EOF( atarigt )
+SCREEN_VBLANK( atarigt )
{
- atarigt_state *state = screen.machine().driver_data<atarigt_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ atarigt_state *state = screen.machine().driver_data<atarigt_state>();
- atarirle_eof(state->m_rle);
+ atarirle_eof(state->m_rle);
+ }
}
diff --git a/src/mame/video/atarigx2.c b/src/mame/video/atarigx2.c
index 7a41f2a4af6..ef2c7d50727 100644
--- a/src/mame/video/atarigx2.c
+++ b/src/mame/video/atarigx2.c
@@ -220,9 +220,13 @@ SCREEN_UPDATE_IND16( atarigx2 )
return 0;
}
-SCREEN_EOF( atarigx2 )
+SCREEN_VBLANK( atarigx2 )
{
- atarigx2_state *state = screen.machine().driver_data<atarigx2_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ atarigx2_state *state = screen.machine().driver_data<atarigx2_state>();
- atarirle_eof(state->m_rle);
+ atarirle_eof(state->m_rle);
+ }
}
diff --git a/src/mame/video/baraduke.c b/src/mame/video/baraduke.c
index 9840da91e27..7296534e8e0 100644
--- a/src/mame/video/baraduke.c
+++ b/src/mame/video/baraduke.c
@@ -340,20 +340,24 @@ SCREEN_UPDATE_IND16( baraduke )
}
-SCREEN_EOF( baraduke )
+SCREEN_VBLANK( baraduke )
{
- baraduke_state *state = screen.machine().driver_data<baraduke_state>();
- if (state->m_copy_sprites)
+ // rising edge
+ if (vblank_on)
{
- UINT8 *spriteram = state->m_spriteram + 0x1800;
- int i,j;
-
- for (i = 0;i < 0x800;i += 16)
+ baraduke_state *state = screen.machine().driver_data<baraduke_state>();
+ if (state->m_copy_sprites)
{
- for (j = 10;j < 16;j++)
- spriteram[i+j] = spriteram[i+j - 6];
- }
+ UINT8 *spriteram = state->m_spriteram + 0x1800;
+ int i,j;
- state->m_copy_sprites = 0;
+ for (i = 0;i < 0x800;i += 16)
+ {
+ for (j = 10;j < 16;j++)
+ spriteram[i+j] = spriteram[i+j - 6];
+ }
+
+ state->m_copy_sprites = 0;
+ }
}
}
diff --git a/src/mame/video/bionicc.c b/src/mame/video/bionicc.c
index 2f66d01995e..ab9eee12fac 100644
--- a/src/mame/video/bionicc.c
+++ b/src/mame/video/bionicc.c
@@ -260,9 +260,13 @@ SCREEN_UPDATE_IND16( bionicc )
return 0;
}
-SCREEN_EOF( bionicc )
+SCREEN_VBLANK( bionicc )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space, 0, 0, 0xffff);
+ buffer_spriteram16_w(space, 0, 0, 0xffff);
+ }
}
diff --git a/src/mame/video/bking.c b/src/mame/video/bking.c
index 8d52839527f..c9014182f78 100644
--- a/src/mame/video/bking.c
+++ b/src/mame/video/bking.c
@@ -278,80 +278,84 @@ SCREEN_UPDATE_IND16( bking )
}
-SCREEN_EOF( bking )
+SCREEN_VBLANK( bking )
{
- bking_state *state = screen.machine().driver_data<bking_state>();
- const rectangle rect(0, 7, 0, 15);
-
- int xld = 0;
- int yld = 0;
-
- UINT32 latch = 0;
-
- if (state->m_pc3259_mask == 6) /* player 1 */
+ // rising edge
+ if (vblank_on)
{
- xld = state->m_xld1;
- yld = state->m_yld1;
+ bking_state *state = screen.machine().driver_data<bking_state>();
+ const rectangle rect(0, 7, 0, 15);
- drawgfx_opaque(state->m_tmp_bitmap2, rect, screen.machine().gfx[2],
- state->m_ball1_pic,
- 0,
- 0, 0,
- 0, 0);
+ int xld = 0;
+ int yld = 0;
- latch = 0x0c00;
- }
+ UINT32 latch = 0;
- if (state->m_pc3259_mask == 3) /* player 2 */
- {
- xld = state->m_xld2;
- yld = state->m_yld2;
+ if (state->m_pc3259_mask == 6) /* player 1 */
+ {
+ xld = state->m_xld1;
+ yld = state->m_yld1;
- drawgfx_opaque(state->m_tmp_bitmap2, rect, screen.machine().gfx[3],
- state->m_ball2_pic,
- 0,
- 0, 0,
- 0, 0);
+ drawgfx_opaque(state->m_tmp_bitmap2, rect, screen.machine().gfx[2],
+ state->m_ball1_pic,
+ 0,
+ 0, 0,
+ 0, 0);
- latch = 0x0400;
- }
+ latch = 0x0c00;
+ }
- tilemap_set_scrollx(state->m_bg_tilemap, 0, flip_screen_get(screen.machine()) ? -xld : xld);
- tilemap_set_scrolly(state->m_bg_tilemap, 0, flip_screen_get(screen.machine()) ? -yld : yld);
+ if (state->m_pc3259_mask == 3) /* player 2 */
+ {
+ xld = state->m_xld2;
+ yld = state->m_yld2;
- tilemap_draw(state->m_tmp_bitmap1, rect, state->m_bg_tilemap, 0, 0);
+ drawgfx_opaque(state->m_tmp_bitmap2, rect, screen.machine().gfx[3],
+ state->m_ball2_pic,
+ 0,
+ 0, 0,
+ 0, 0);
- tilemap_set_scrollx(state->m_bg_tilemap, 0, 0);
- tilemap_set_scrolly(state->m_bg_tilemap, 0, 0);
+ latch = 0x0400;
+ }
- if (latch != 0)
- {
- const UINT8* MASK = screen.machine().region("user1")->base() + 8 * state->m_hit;
+ tilemap_set_scrollx(state->m_bg_tilemap, 0, flip_screen_get(screen.machine()) ? -xld : xld);
+ tilemap_set_scrolly(state->m_bg_tilemap, 0, flip_screen_get(screen.machine()) ? -yld : yld);
- int x;
- int y;
+ tilemap_draw(state->m_tmp_bitmap1, rect, state->m_bg_tilemap, 0, 0);
- for (y = rect.min_y; y <= rect.max_y; y++)
+ tilemap_set_scrollx(state->m_bg_tilemap, 0, 0);
+ tilemap_set_scrolly(state->m_bg_tilemap, 0, 0);
+
+ if (latch != 0)
{
- const UINT16* p0 = &state->m_tmp_bitmap1.pix16(y);
- const UINT16* p1 = &state->m_tmp_bitmap2.pix16(y);
+ const UINT8* MASK = screen.machine().region("user1")->base() + 8 * state->m_hit;
+
+ int x;
+ int y;
- for (x = rect.min_x; x <= rect.max_x; x++)
+ for (y = rect.min_y; y <= rect.max_y; y++)
{
- if (MASK[p0[x] & 7] && p1[x])
+ const UINT16* p0 = &state->m_tmp_bitmap1.pix16(y);
+ const UINT16* p1 = &state->m_tmp_bitmap2.pix16(y);
+
+ for (x = rect.min_x; x <= rect.max_x; x++)
{
- int col = (xld + x) / 8 + 1;
- int row = (yld + y) / 8 + 0;
+ if (MASK[p0[x] & 7] && p1[x])
+ {
+ int col = (xld + x) / 8 + 1;
+ int row = (yld + y) / 8 + 0;
- latch |= (flip_screen_get(screen.machine()) ? 31 - col : col) << 0;
- latch |= (flip_screen_get(screen.machine()) ? 31 - row : row) << 5;
+ latch |= (flip_screen_get(screen.machine()) ? 31 - col : col) << 0;
+ latch |= (flip_screen_get(screen.machine()) ? 31 - row : row) << 5;
- state->m_pc3259_output[0] = (latch >> 0x0) & 0xf;
- state->m_pc3259_output[1] = (latch >> 0x4) & 0xf;
- state->m_pc3259_output[2] = (latch >> 0x8) & 0xf;
- state->m_pc3259_output[3] = (latch >> 0xc) & 0xf;
+ state->m_pc3259_output[0] = (latch >> 0x0) & 0xf;
+ state->m_pc3259_output[1] = (latch >> 0x4) & 0xf;
+ state->m_pc3259_output[2] = (latch >> 0x8) & 0xf;
+ state->m_pc3259_output[3] = (latch >> 0xc) & 0xf;
- return;
+ return;
+ }
}
}
}
diff --git a/src/mame/video/blktiger.c b/src/mame/video/blktiger.c
index c2d44cd0dc2..30f2ad6e371 100644
--- a/src/mame/video/blktiger.c
+++ b/src/mame/video/blktiger.c
@@ -251,9 +251,13 @@ SCREEN_UPDATE_IND16( blktiger )
return 0;
}
-SCREEN_EOF( blktiger )
+SCREEN_VBLANK( blktiger )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram_w(space, 0, 0);
+ buffer_spriteram_w(space, 0, 0);
+ }
}
diff --git a/src/mame/video/bosco.c b/src/mame/video/bosco.c
index 619a8ccf301..35cbed8c32b 100644
--- a/src/mame/video/bosco.c
+++ b/src/mame/video/bosco.c
@@ -317,12 +317,16 @@ SCREEN_UPDATE_IND16( bosco )
}
-SCREEN_EOF( bosco )
+SCREEN_VBLANK( bosco )
{
- bosco_state *state = screen.machine().driver_data<bosco_state>();
- static const int speedsx[8] = { -1, -2, -3, 0, 3, 2, 1, 0 };
- static const int speedsy[8] = { 0, -1, -2, -3, 0, 3, 2, 1 };
+ // rising edge
+ if (vblank_on)
+ {
+ bosco_state *state = screen.machine().driver_data<bosco_state>();
+ static const int speedsx[8] = { -1, -2, -3, 0, 3, 2, 1, 0 };
+ static const int speedsy[8] = { 0, -1, -2, -3, 0, 3, 2, 1 };
- state->m_stars_scrollx += speedsx[state->m_bosco_starcontrol[0] & 0x07];
- state->m_stars_scrolly += speedsy[(state->m_bosco_starcontrol[0] & 0x38) >> 3];
+ state->m_stars_scrollx += speedsx[state->m_bosco_starcontrol[0] & 0x07];
+ state->m_stars_scrolly += speedsy[(state->m_bosco_starcontrol[0] & 0x38) >> 3];
+ }
}
diff --git a/src/mame/video/carpolo.c b/src/mame/video/carpolo.c
index be7abffe459..8ad3c9e0760 100644
--- a/src/mame/video/carpolo.c
+++ b/src/mame/video/carpolo.c
@@ -548,182 +548,186 @@ static int check_sprite_border_collision(running_machine &machine, UINT8 x1, UIN
}
-SCREEN_EOF( carpolo )
+SCREEN_VBLANK( carpolo )
{
- carpolo_state *state = screen.machine().driver_data<carpolo_state>();
- int col_x, col_y;
- int car1_x, car2_x, car3_x, car4_x, ball_x;
- int car1_y, car2_y, car3_y, car4_y, ball_y;
- int car1_code, car2_code, car3_code, car4_code, ball_code;
- int car1_flipy, car2_flipy, car3_flipy, car4_flipy, ball_flipy;
-
-
- /* check car-car collision first */
-
- car1_x = state->m_spriteram[0x00];
- car1_y = state->m_spriteram[0x01];
- remap_sprite_code(screen.machine(), 0, state->m_spriteram[0x0c] & 0x0f, &car1_code, &car1_flipy);
-
- car2_x = state->m_spriteram[0x02];
- car2_y = state->m_spriteram[0x03];
- remap_sprite_code(screen.machine(), 0, state->m_spriteram[0x0c] >> 4, &car2_code, &car2_flipy);
-
- car3_x = state->m_spriteram[0x04];
- car3_y = state->m_spriteram[0x05];
- remap_sprite_code(screen.machine(), 0, state->m_spriteram[0x0d] & 0x0f, &car3_code, &car3_flipy);
-
- car4_x = state->m_spriteram[0x06];
- car4_y = state->m_spriteram[0x07];
- remap_sprite_code(screen.machine(), 0, state->m_spriteram[0x0d] >> 4, &car4_code, &car4_flipy);
-
- ball_x = state->m_spriteram[0x08];
- ball_y = state->m_spriteram[0x09];
- remap_sprite_code(screen.machine(), 1, state->m_spriteram[0x0e] & 0x0f, &ball_code, &ball_flipy);
-
-
- /* cars 1 and 2 */
- if (check_sprite_sprite_collision(screen.machine(),
- car1_x, car1_y, car1_code, car1_flipy,
- car2_x, car2_y, car2_code, car2_flipy,
- &col_x, &col_y))
- carpolo_generate_car_car_interrupt(screen.machine(), 0, 1);
-
- /* cars 1 and 3 */
- else if (check_sprite_sprite_collision(screen.machine(),
- car1_x, car1_y, car1_code, car1_flipy,
- car3_x, car3_y, car3_code, car3_flipy,
- &col_x, &col_y))
- carpolo_generate_car_car_interrupt(screen.machine(), 0, 2);
-
- /* cars 1 and 4 */
- else if (check_sprite_sprite_collision(screen.machine(),
- car1_x, car1_y, car1_code, car1_flipy,
- car4_x, car4_y, car4_code, car4_flipy,
- &col_x, &col_y))
- carpolo_generate_car_car_interrupt(screen.machine(), 0, 3);
-
- /* cars 2 and 3 */
- else if (check_sprite_sprite_collision(screen.machine(),
- car2_x, car2_y, car2_code, car2_flipy,
- car3_x, car3_y, car3_code, car3_flipy,
- &col_x, &col_y))
- carpolo_generate_car_car_interrupt(screen.machine(), 1, 2);
-
- /* cars 2 and 4 */
- else if (check_sprite_sprite_collision(screen.machine(),
- car2_x, car2_y, car2_code, car2_flipy,
- car4_x, car4_y, car4_code, car4_flipy,
- &col_x, &col_y))
- carpolo_generate_car_car_interrupt(screen.machine(), 1, 3);
-
- /* cars 3 and 4 */
- else if (check_sprite_sprite_collision(screen.machine(),
- car3_x, car3_y, car3_code, car3_flipy,
- car4_x, car4_y, car4_code, car4_flipy,
- &col_x, &col_y))
- carpolo_generate_car_car_interrupt(screen.machine(), 2, 3);
-
-
-
- /* check car-ball collision */
- if (check_sprite_sprite_collision(screen.machine(),
- car1_x, car1_y, car1_code, car1_flipy,
- ball_x, ball_y, ball_code, ball_flipy,
- &col_x, &col_y))
- carpolo_generate_car_ball_interrupt(screen.machine(), 0, col_x, col_y);
-
- else if (check_sprite_sprite_collision(screen.machine(),
- car2_x, car2_y, car2_code, car2_flipy,
- ball_x, ball_y, ball_code, ball_flipy,
- &col_x, &col_y))
- carpolo_generate_car_ball_interrupt(screen.machine(), 1, col_x, col_y);
-
- else if (check_sprite_sprite_collision(screen.machine(),
- car3_x, car3_y, car3_code, car3_flipy,
- ball_x, ball_y, ball_code, ball_flipy,
- &col_x, &col_y))
- carpolo_generate_car_ball_interrupt(screen.machine(), 2, col_x, col_y);
-
- else if (check_sprite_sprite_collision(screen.machine(),
- car4_x, car4_y, car4_code, car4_flipy,
- ball_x, ball_y, ball_code, ball_flipy,
- &col_x, &col_y))
- carpolo_generate_car_ball_interrupt(screen.machine(), 3, col_x, col_y);
-
-
- /* check car-goal collision */
- if (check_sprite_left_goal_collision(screen.machine(), car1_x, car1_y, car1_code, car1_flipy, 1))
- carpolo_generate_car_goal_interrupt(screen.machine(), 0, 0);
-
- else if (check_sprite_right_goal_collision(screen.machine(), car1_x, car1_y, car1_code, car1_flipy, 1))
- carpolo_generate_car_goal_interrupt(screen.machine(), 0, 1);
+ // rising edge
+ if (vblank_on)
+ {
+ carpolo_state *state = screen.machine().driver_data<carpolo_state>();
+ int col_x, col_y;
+ int car1_x, car2_x, car3_x, car4_x, ball_x;
+ int car1_y, car2_y, car3_y, car4_y, ball_y;
+ int car1_code, car2_code, car3_code, car4_code, ball_code;
+ int car1_flipy, car2_flipy, car3_flipy, car4_flipy, ball_flipy;
+
+
+ /* check car-car collision first */
+
+ car1_x = state->m_spriteram[0x00];
+ car1_y = state->m_spriteram[0x01];
+ remap_sprite_code(screen.machine(), 0, state->m_spriteram[0x0c] & 0x0f, &car1_code, &car1_flipy);
+
+ car2_x = state->m_spriteram[0x02];
+ car2_y = state->m_spriteram[0x03];
+ remap_sprite_code(screen.machine(), 0, state->m_spriteram[0x0c] >> 4, &car2_code, &car2_flipy);
+
+ car3_x = state->m_spriteram[0x04];
+ car3_y = state->m_spriteram[0x05];
+ remap_sprite_code(screen.machine(), 0, state->m_spriteram[0x0d] & 0x0f, &car3_code, &car3_flipy);
+
+ car4_x = state->m_spriteram[0x06];
+ car4_y = state->m_spriteram[0x07];
+ remap_sprite_code(screen.machine(), 0, state->m_spriteram[0x0d] >> 4, &car4_code, &car4_flipy);
+
+ ball_x = state->m_spriteram[0x08];
+ ball_y = state->m_spriteram[0x09];
+ remap_sprite_code(screen.machine(), 1, state->m_spriteram[0x0e] & 0x0f, &ball_code, &ball_flipy);
+
+
+ /* cars 1 and 2 */
+ if (check_sprite_sprite_collision(screen.machine(),
+ car1_x, car1_y, car1_code, car1_flipy,
+ car2_x, car2_y, car2_code, car2_flipy,
+ &col_x, &col_y))
+ carpolo_generate_car_car_interrupt(screen.machine(), 0, 1);
+
+ /* cars 1 and 3 */
+ else if (check_sprite_sprite_collision(screen.machine(),
+ car1_x, car1_y, car1_code, car1_flipy,
+ car3_x, car3_y, car3_code, car3_flipy,
+ &col_x, &col_y))
+ carpolo_generate_car_car_interrupt(screen.machine(), 0, 2);
+
+ /* cars 1 and 4 */
+ else if (check_sprite_sprite_collision(screen.machine(),
+ car1_x, car1_y, car1_code, car1_flipy,
+ car4_x, car4_y, car4_code, car4_flipy,
+ &col_x, &col_y))
+ carpolo_generate_car_car_interrupt(screen.machine(), 0, 3);
+
+ /* cars 2 and 3 */
+ else if (check_sprite_sprite_collision(screen.machine(),
+ car2_x, car2_y, car2_code, car2_flipy,
+ car3_x, car3_y, car3_code, car3_flipy,
+ &col_x, &col_y))
+ carpolo_generate_car_car_interrupt(screen.machine(), 1, 2);
+
+ /* cars 2 and 4 */
+ else if (check_sprite_sprite_collision(screen.machine(),
+ car2_x, car2_y, car2_code, car2_flipy,
+ car4_x, car4_y, car4_code, car4_flipy,
+ &col_x, &col_y))
+ carpolo_generate_car_car_interrupt(screen.machine(), 1, 3);
+
+ /* cars 3 and 4 */
+ else if (check_sprite_sprite_collision(screen.machine(),
+ car3_x, car3_y, car3_code, car3_flipy,
+ car4_x, car4_y, car4_code, car4_flipy,
+ &col_x, &col_y))
+ carpolo_generate_car_car_interrupt(screen.machine(), 2, 3);
+
+
+
+ /* check car-ball collision */
+ if (check_sprite_sprite_collision(screen.machine(),
+ car1_x, car1_y, car1_code, car1_flipy,
+ ball_x, ball_y, ball_code, ball_flipy,
+ &col_x, &col_y))
+ carpolo_generate_car_ball_interrupt(screen.machine(), 0, col_x, col_y);
+
+ else if (check_sprite_sprite_collision(screen.machine(),
+ car2_x, car2_y, car2_code, car2_flipy,
+ ball_x, ball_y, ball_code, ball_flipy,
+ &col_x, &col_y))
+ carpolo_generate_car_ball_interrupt(screen.machine(), 1, col_x, col_y);
+
+ else if (check_sprite_sprite_collision(screen.machine(),
+ car3_x, car3_y, car3_code, car3_flipy,
+ ball_x, ball_y, ball_code, ball_flipy,
+ &col_x, &col_y))
+ carpolo_generate_car_ball_interrupt(screen.machine(), 2, col_x, col_y);
+
+ else if (check_sprite_sprite_collision(screen.machine(),
+ car4_x, car4_y, car4_code, car4_flipy,
+ ball_x, ball_y, ball_code, ball_flipy,
+ &col_x, &col_y))
+ carpolo_generate_car_ball_interrupt(screen.machine(), 3, col_x, col_y);
+
+
+ /* check car-goal collision */
+ if (check_sprite_left_goal_collision(screen.machine(), car1_x, car1_y, car1_code, car1_flipy, 1))
+ carpolo_generate_car_goal_interrupt(screen.machine(), 0, 0);
- else if (check_sprite_left_goal_collision(screen.machine(), car2_x, car2_y, car2_code, car2_flipy, 1))
- carpolo_generate_car_goal_interrupt(screen.machine(), 1, 0);
-
- else if (check_sprite_right_goal_collision(screen.machine(), car2_x, car2_y, car2_code, car2_flipy, 1))
- carpolo_generate_car_goal_interrupt(screen.machine(), 1, 1);
+ else if (check_sprite_right_goal_collision(screen.machine(), car1_x, car1_y, car1_code, car1_flipy, 1))
+ carpolo_generate_car_goal_interrupt(screen.machine(), 0, 1);
- else if (check_sprite_left_goal_collision(screen.machine(), car3_x, car3_y, car3_code, car3_flipy, 1))
- carpolo_generate_car_goal_interrupt(screen.machine(), 2, 0);
-
- else if (check_sprite_right_goal_collision(screen.machine(), car3_x, car3_y, car3_code, car3_flipy, 1))
- carpolo_generate_car_goal_interrupt(screen.machine(), 2, 1);
-
- else if (check_sprite_left_goal_collision(screen.machine(), car4_x, car4_y, car4_code, car4_flipy, 1))
- carpolo_generate_car_goal_interrupt(screen.machine(), 3, 0);
-
- else if (check_sprite_right_goal_collision(screen.machine(), car4_x, car4_y, car4_code, car4_flipy, 1))
- carpolo_generate_car_goal_interrupt(screen.machine(), 3, 1);
+ else if (check_sprite_left_goal_collision(screen.machine(), car2_x, car2_y, car2_code, car2_flipy, 1))
+ carpolo_generate_car_goal_interrupt(screen.machine(), 1, 0);
+
+ else if (check_sprite_right_goal_collision(screen.machine(), car2_x, car2_y, car2_code, car2_flipy, 1))
+ carpolo_generate_car_goal_interrupt(screen.machine(), 1, 1);
+ else if (check_sprite_left_goal_collision(screen.machine(), car3_x, car3_y, car3_code, car3_flipy, 1))
+ carpolo_generate_car_goal_interrupt(screen.machine(), 2, 0);
+
+ else if (check_sprite_right_goal_collision(screen.machine(), car3_x, car3_y, car3_code, car3_flipy, 1))
+ carpolo_generate_car_goal_interrupt(screen.machine(), 2, 1);
+
+ else if (check_sprite_left_goal_collision(screen.machine(), car4_x, car4_y, car4_code, car4_flipy, 1))
+ carpolo_generate_car_goal_interrupt(screen.machine(), 3, 0);
+
+ else if (check_sprite_right_goal_collision(screen.machine(), car4_x, car4_y, car4_code, car4_flipy, 1))
+ carpolo_generate_car_goal_interrupt(screen.machine(), 3, 1);
- /* check ball collision with static screen elements */
- {
- int col;
-
- col = check_sprite_left_goal_collision(screen.machine(), ball_x, ball_y, ball_code, ball_flipy, 0);
-
- if (col == 1) carpolo_generate_ball_screen_interrupt(screen.machine(), 0x05);
- if (col == 2) carpolo_generate_ball_screen_interrupt(screen.machine(), 0x03);
+ /* check ball collision with static screen elements */
+ {
+ int col;
+
+ col = check_sprite_left_goal_collision(screen.machine(), ball_x, ball_y, ball_code, ball_flipy, 0);
- col = check_sprite_right_goal_collision(screen.machine(), ball_x, ball_y, ball_code, ball_flipy, 0);
+ if (col == 1) carpolo_generate_ball_screen_interrupt(screen.machine(), 0x05);
+ if (col == 2) carpolo_generate_ball_screen_interrupt(screen.machine(), 0x03);
- if (col == 1) carpolo_generate_ball_screen_interrupt(screen.machine(), 0x05 | 0x08);
- if (col == 2) carpolo_generate_ball_screen_interrupt(screen.machine(), 0x03 | 0x08);
+ col = check_sprite_right_goal_collision(screen.machine(), ball_x, ball_y, ball_code, ball_flipy, 0);
- if (check_sprite_border_collision(screen.machine(), ball_x, ball_y, ball_code, ball_flipy))
- carpolo_generate_ball_screen_interrupt(screen.machine(), 0x06);
- }
+ if (col == 1) carpolo_generate_ball_screen_interrupt(screen.machine(), 0x05 | 0x08);
+ if (col == 2) carpolo_generate_ball_screen_interrupt(screen.machine(), 0x03 | 0x08);
- /* check car-border collision */
- {
- int col;
+ if (check_sprite_border_collision(screen.machine(), ball_x, ball_y, ball_code, ball_flipy))
+ carpolo_generate_ball_screen_interrupt(screen.machine(), 0x06);
+ }
- col = check_sprite_border_collision(screen.machine(), car1_x, car1_y, car1_code, car1_flipy);
- if (col)
- carpolo_generate_car_border_interrupt(screen.machine(), 0, (col == 2));
- else
+ /* check car-border collision */
{
- col = check_sprite_border_collision(screen.machine(), car2_x, car2_y, car2_code, car2_flipy);
+ int col;
+
+ col = check_sprite_border_collision(screen.machine(), car1_x, car1_y, car1_code, car1_flipy);
if (col)
- carpolo_generate_car_border_interrupt(screen.machine(), 1, (col == 2));
+ carpolo_generate_car_border_interrupt(screen.machine(), 0, (col == 2));
else
{
- col = check_sprite_border_collision(screen.machine(), car3_x, car3_y, car3_code, car3_flipy);
+ col = check_sprite_border_collision(screen.machine(), car2_x, car2_y, car2_code, car2_flipy);
if (col)
- carpolo_generate_car_border_interrupt(screen.machine(), 2, (col == 2));
+ carpolo_generate_car_border_interrupt(screen.machine(), 1, (col == 2));
else
{
- col = check_sprite_border_collision(screen.machine(), car4_x, car4_y, car4_code, car4_flipy);
+ col = check_sprite_border_collision(screen.machine(), car3_x, car3_y, car3_code, car3_flipy);
if (col)
- carpolo_generate_car_border_interrupt(screen.machine(), 3, (col == 2));
+ carpolo_generate_car_border_interrupt(screen.machine(), 2, (col == 2));
+ else
+ {
+ col = check_sprite_border_collision(screen.machine(), car4_x, car4_y, car4_code, car4_flipy);
+
+ if (col)
+ carpolo_generate_car_border_interrupt(screen.machine(), 3, (col == 2));
+ }
}
}
}
diff --git a/src/mame/video/commando.c b/src/mame/video/commando.c
index 240119671c2..3b1bda588d4 100644
--- a/src/mame/video/commando.c
+++ b/src/mame/video/commando.c
@@ -145,9 +145,13 @@ SCREEN_UPDATE_IND16( commando )
return 0;
}
-SCREEN_EOF( commando )
+SCREEN_VBLANK( commando )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram_w(space, 0, 0);
+ buffer_spriteram_w(space, 0, 0);
+ }
}
diff --git a/src/mame/video/cps1.c b/src/mame/video/cps1.c
index e8290a7eb8e..a46aa08d433 100644
--- a/src/mame/video/cps1.c
+++ b/src/mame/video/cps1.c
@@ -2950,17 +2950,21 @@ if (0 && screen.machine().input().code_pressed(KEYCODE_Z))
return 0;
}
-SCREEN_EOF( cps1 )
+SCREEN_VBLANK( cps1 )
{
- cps_state *state = screen.machine().driver_data<cps_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ cps_state *state = screen.machine().driver_data<cps_state>();
- /* Get video memory base registers */
- cps1_get_video_base(screen.machine());
+ /* Get video memory base registers */
+ cps1_get_video_base(screen.machine());
- if (state->m_cps_version == 1)
- {
- /* CPS1 sprites have to be delayed one frame */
- memcpy(state->m_buffered_obj, state->m_obj, state->m_obj_size);
+ if (state->m_cps_version == 1)
+ {
+ /* CPS1 sprites have to be delayed one frame */
+ memcpy(state->m_buffered_obj, state->m_obj, state->m_obj_size);
+ }
}
}
diff --git a/src/mame/video/crshrace.c b/src/mame/video/crshrace.c
index 2d2f82103d3..5b15d117f64 100644
--- a/src/mame/video/crshrace.c
+++ b/src/mame/video/crshrace.c
@@ -217,10 +217,14 @@ SCREEN_UPDATE_IND16( crshrace )
return 0;
}
-SCREEN_EOF( crshrace )
+SCREEN_VBLANK( crshrace )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space, 0, 0, 0xffff);
- buffer_spriteram16_2_w(space, 0, 0, 0xffff);
+ buffer_spriteram16_w(space, 0, 0, 0xffff);
+ buffer_spriteram16_2_w(space, 0, 0, 0xffff);
+ }
}
diff --git a/src/mame/video/deco32.c b/src/mame/video/deco32.c
index 0403054b01e..4bffbc46e88 100644
--- a/src/mame/video/deco32.c
+++ b/src/mame/video/deco32.c
@@ -568,12 +568,12 @@ VIDEO_START( nslasher )
/******************************************************************************/
-SCREEN_EOF( captaven )
+SCREEN_VBLANK( captaven )
{
}
-SCREEN_EOF( dragngun )
+SCREEN_VBLANK( dragngun )
{
}
diff --git a/src/mame/video/deco_mlc.c b/src/mame/video/deco_mlc.c
index 46a6c7a4126..e5de156a644 100644
--- a/src/mame/video/deco_mlc.c
+++ b/src/mame/video/deco_mlc.c
@@ -494,15 +494,19 @@ static void draw_sprites(running_machine& machine, bitmap_rgb32 &bitmap,const re
}
}
-SCREEN_EOF( mlc )
+SCREEN_VBLANK( mlc )
{
- deco_mlc_state *state = screen.machine().driver_data<deco_mlc_state>();
- /* Spriteram is definitely double buffered, as the vram lookup tables
- are often updated a frame after spriteram is setup to point to a new
- lookup table. Without buffering incorrect one frame glitches are seen
- in several places, especially in Hoops.
- */
- memcpy(state->m_mlc_buffered_spriteram, state->m_spriteram, 0x3000);
+ // rising edge
+ if (vblank_on)
+ {
+ deco_mlc_state *state = screen.machine().driver_data<deco_mlc_state>();
+ /* Spriteram is definitely double buffered, as the vram lookup tables
+ are often updated a frame after spriteram is setup to point to a new
+ lookup table. Without buffering incorrect one frame glitches are seen
+ in several places, especially in Hoops.
+ */
+ memcpy(state->m_mlc_buffered_spriteram, state->m_spriteram, 0x3000);
+ }
}
SCREEN_UPDATE_RGB32( mlc )
diff --git a/src/mame/video/djboy.c b/src/mame/video/djboy.c
index 01fffa076d1..f5d35ddc367 100644
--- a/src/mame/video/djboy.c
+++ b/src/mame/video/djboy.c
@@ -81,8 +81,12 @@ SCREEN_UPDATE_IND16( djboy )
return 0;
}
-SCREEN_EOF( djboy )
+SCREEN_VBLANK( djboy )
{
- djboy_state *state = screen.machine().driver_data<djboy_state>();
- pandora_eof(state->m_pandora);
+ // rising edge
+ if (vblank_on)
+ {
+ djboy_state *state = screen.machine().driver_data<djboy_state>();
+ pandora_eof(state->m_pandora);
+ }
}
diff --git a/src/mame/video/dooyong.c b/src/mame/video/dooyong.c
index 8761cb30aae..addb3aafed8 100644
--- a/src/mame/video/dooyong.c
+++ b/src/mame/video/dooyong.c
@@ -931,16 +931,24 @@ VIDEO_START( popbingo )
}
-SCREEN_EOF( dooyong )
+SCREEN_VBLANK( dooyong )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram_w(space, 0, 0);
+ buffer_spriteram_w(space, 0, 0);
+ }
}
-SCREEN_EOF( rshark )
+SCREEN_VBLANK( rshark )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space, 0, 0, 0xffff);
+ buffer_spriteram16_w(space, 0, 0, 0xffff);
+ }
}
diff --git a/src/mame/video/dynduke.c b/src/mame/video/dynduke.c
index e063e90e29d..282759c25cd 100644
--- a/src/mame/video/dynduke.c
+++ b/src/mame/video/dynduke.c
@@ -251,9 +251,13 @@ SCREEN_UPDATE_IND16( dynduke )
return 0;
}
-SCREEN_EOF( dynduke )
+SCREEN_VBLANK( dynduke )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space, 0, 0, 0xffff); // Could be a memory location instead
+ buffer_spriteram16_w(space, 0, 0, 0xffff); // Could be a memory location instead
+ }
}
diff --git a/src/mame/video/exedexes.c b/src/mame/video/exedexes.c
index 057ff71525e..e2e1a27d748 100644
--- a/src/mame/video/exedexes.c
+++ b/src/mame/video/exedexes.c
@@ -245,9 +245,13 @@ SCREEN_UPDATE_IND16( exedexes )
return 0;
}
-SCREEN_EOF( exedexes )
+SCREEN_VBLANK( exedexes )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram_w(space, 0, 0);
+ buffer_spriteram_w(space, 0, 0);
+ }
}
diff --git a/src/mame/video/fuukifg3.c b/src/mame/video/fuukifg3.c
index 25db696c27a..be1c96114ef 100644
--- a/src/mame/video/fuukifg3.c
+++ b/src/mame/video/fuukifg3.c
@@ -367,13 +367,17 @@ SCREEN_UPDATE_IND16( fuuki32 )
return 0;
}
-SCREEN_EOF( fuuki32 )
+SCREEN_VBLANK( fuuki32 )
{
- fuuki32_state *state = screen.machine().driver_data<fuuki32_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ fuuki32_state *state = screen.machine().driver_data<fuuki32_state>();
- /* Buffer sprites and tilebank by 2 frames */
- state->m_spr_buffered_tilebank[1] = state->m_spr_buffered_tilebank[0];
- state->m_spr_buffered_tilebank[0] = state->m_tilebank[0];
- memcpy(state->m_buf_spriteram2, state->m_buf_spriteram, state->m_spriteram_size);
- memcpy(state->m_buf_spriteram, state->m_spriteram, state->m_spriteram_size);
+ /* Buffer sprites and tilebank by 2 frames */
+ state->m_spr_buffered_tilebank[1] = state->m_spr_buffered_tilebank[0];
+ state->m_spr_buffered_tilebank[0] = state->m_tilebank[0];
+ memcpy(state->m_buf_spriteram2, state->m_buf_spriteram, state->m_spriteram_size);
+ memcpy(state->m_buf_spriteram, state->m_spriteram, state->m_spriteram_size);
+ }
}
diff --git a/src/mame/video/gaelco2.c b/src/mame/video/gaelco2.c
index 0c2a4eea208..474fc18da5e 100644
--- a/src/mame/video/gaelco2.c
+++ b/src/mame/video/gaelco2.c
@@ -501,10 +501,14 @@ SCREEN_UPDATE_IND16( gaelco2_right ) { return dual_update(screen, bitmap, clipre
-SCREEN_EOF( gaelco2 )
+SCREEN_VBLANK( gaelco2 )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- /* sprites are one frame ahead */
- buffer_spriteram16_w(space, 0, 0, 0xffff);
+ /* sprites are one frame ahead */
+ buffer_spriteram16_w(space, 0, 0, 0xffff);
+ }
}
diff --git a/src/mame/video/galaga.c b/src/mame/video/galaga.c
index bc926d6258d..bd5400953da 100644
--- a/src/mame/video/galaga.c
+++ b/src/mame/video/galaga.c
@@ -578,18 +578,22 @@ SCREEN_UPDATE_IND16( galaga )
-SCREEN_EOF( galaga )
+SCREEN_VBLANK( galaga )
{
- galaga_state *state = screen.machine().driver_data<galaga_state>();
- /* this function is called by galaga_interrupt_1() */
- int s0,s1,s2;
- static const int speeds[8] = { -1, -2, -3, 0, 3, 2, 1, 0 };
+ // rising edge
+ if (vblank_on)
+ {
+ galaga_state *state = screen.machine().driver_data<galaga_state>();
+ /* this function is called by galaga_interrupt_1() */
+ int s0,s1,s2;
+ static const int speeds[8] = { -1, -2, -3, 0, 3, 2, 1, 0 };
- s0 = (state->m_galaga_starcontrol[0] & 1);
- s1 = (state->m_galaga_starcontrol[1] & 1);
- s2 = (state->m_galaga_starcontrol[2] & 1);
+ s0 = (state->m_galaga_starcontrol[0] & 1);
+ s1 = (state->m_galaga_starcontrol[1] & 1);
+ s2 = (state->m_galaga_starcontrol[2] & 1);
- state->m_stars_scrollx += speeds[s0 + s1*2 + s2*4];
+ state->m_stars_scrollx += speeds[s0 + s1*2 + s2*4];
+ }
}
diff --git a/src/mame/video/gaplus.c b/src/mame/video/gaplus.c
index 24445de663f..257e7705420 100644
--- a/src/mame/video/gaplus.c
+++ b/src/mame/video/gaplus.c
@@ -329,78 +329,82 @@ SCREEN_UPDATE_IND16( gaplus )
}
-SCREEN_EOF( gaplus ) /* update starfields */
+SCREEN_VBLANK( gaplus ) /* update starfields */
{
- gaplus_state *state = screen.machine().driver_data<gaplus_state>();
- struct star *stars = state->m_stars;
- int i;
-
- int width = screen.machine().primary_screen->width();
- int height = screen.machine().primary_screen->height();
-
- /* check if we're running */
- if ( ( state->m_starfield_control[0] & 1 ) == 0 )
- return;
-
- /* update the starfields */
- for ( i = 0; i < state->m_total_stars; i++ ) {
- switch( state->m_starfield_control[stars[i].set + 1] ) {
- case 0x87:
- /* stand still */
- break;
-
- case 0x86:
- /* scroll down (speed 1) */
- stars[i].x += SPEED_1;
- break;
-
- case 0x85:
- /* scroll down (speed 2) */
- stars[i].x += SPEED_2;
- break;
-
- case 0x06:
- /* scroll down (speed 3) */
- stars[i].x += SPEED_3;
- break;
-
- case 0x80:
- /* scroll up (speed 1) */
- stars[i].x -= SPEED_1;
- break;
-
- case 0x82:
- /* scroll up (speed 2) */
- stars[i].x -= SPEED_2;
- break;
-
- case 0x81:
- /* scroll up (speed 3) */
- stars[i].x -= SPEED_3;
- break;
-
- case 0x9f:
- /* scroll left (speed 2) */
- stars[i].y += SPEED_2;
- break;
-
- case 0xaf:
- /* scroll left (speed 1) */
- stars[i].y += SPEED_1;
- break;
- }
+ // rising edge
+ if (vblank_on)
+ {
+ gaplus_state *state = screen.machine().driver_data<gaplus_state>();
+ struct star *stars = state->m_stars;
+ int i;
+
+ int width = screen.machine().primary_screen->width();
+ int height = screen.machine().primary_screen->height();
+
+ /* check if we're running */
+ if ( ( state->m_starfield_control[0] & 1 ) == 0 )
+ return;
+
+ /* update the starfields */
+ for ( i = 0; i < state->m_total_stars; i++ ) {
+ switch( state->m_starfield_control[stars[i].set + 1] ) {
+ case 0x87:
+ /* stand still */
+ break;
+
+ case 0x86:
+ /* scroll down (speed 1) */
+ stars[i].x += SPEED_1;
+ break;
+
+ case 0x85:
+ /* scroll down (speed 2) */
+ stars[i].x += SPEED_2;
+ break;
+
+ case 0x06:
+ /* scroll down (speed 3) */
+ stars[i].x += SPEED_3;
+ break;
+
+ case 0x80:
+ /* scroll up (speed 1) */
+ stars[i].x -= SPEED_1;
+ break;
+
+ case 0x82:
+ /* scroll up (speed 2) */
+ stars[i].x -= SPEED_2;
+ break;
+
+ case 0x81:
+ /* scroll up (speed 3) */
+ stars[i].x -= SPEED_3;
+ break;
+
+ case 0x9f:
+ /* scroll left (speed 2) */
+ stars[i].y += SPEED_2;
+ break;
+
+ case 0xaf:
+ /* scroll left (speed 1) */
+ stars[i].y += SPEED_1;
+ break;
+ }
- /* wrap */
- if ( stars[i].x < 0 )
- stars[i].x = ( float )( width*2 ) + stars[i].x;
+ /* wrap */
+ if ( stars[i].x < 0 )
+ stars[i].x = ( float )( width*2 ) + stars[i].x;
- if ( stars[i].x >= ( float )( width*2 ) )
- stars[i].x -= ( float )( width*2 );
+ if ( stars[i].x >= ( float )( width*2 ) )
+ stars[i].x -= ( float )( width*2 );
- if ( stars[i].y < 0 )
- stars[i].y = ( float )( height ) + stars[i].y;
+ if ( stars[i].y < 0 )
+ stars[i].y = ( float )( height ) + stars[i].y;
- if ( stars[i].y >= ( float )( height ) )
- stars[i].y -= ( float )( height );
+ if ( stars[i].y >= ( float )( height ) )
+ stars[i].y -= ( float )( height );
+ }
}
}
diff --git a/src/mame/video/gng.c b/src/mame/video/gng.c
index 35eff523052..43d2e21396f 100644
--- a/src/mame/video/gng.c
+++ b/src/mame/video/gng.c
@@ -150,9 +150,13 @@ SCREEN_UPDATE_IND16( gng )
return 0;
}
-SCREEN_EOF( gng )
+SCREEN_VBLANK( gng )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram_w(space, 0, 0);
+ buffer_spriteram_w(space, 0, 0);
+ }
}
diff --git a/src/mame/video/goal92.c b/src/mame/video/goal92.c
index b08b6295ecd..b4a34c19b9f 100644
--- a/src/mame/video/goal92.c
+++ b/src/mame/video/goal92.c
@@ -188,8 +188,12 @@ SCREEN_UPDATE_IND16( goal92 )
return 0;
}
-SCREEN_EOF( goal92 )
+SCREEN_VBLANK( goal92 )
{
- goal92_state *state = screen.machine().driver_data<goal92_state>();
- memcpy(state->m_buffered_spriteram, state->m_spriteram, 0x400 * 2);
+ // rising edge
+ if (vblank_on)
+ {
+ goal92_state *state = screen.machine().driver_data<goal92_state>();
+ memcpy(state->m_buffered_spriteram, state->m_spriteram, 0x400 * 2);
+ }
}
diff --git a/src/mame/video/hng64.c b/src/mame/video/hng64.c
index cf88a81ecd5..5658187414f 100644
--- a/src/mame/video/hng64.c
+++ b/src/mame/video/hng64.c
@@ -1643,9 +1643,11 @@ SCREEN_UPDATE_RGB32( hng64 )
return 0;
}
-SCREEN_EOF( hng64 )
+SCREEN_VBLANK( hng64 )
{
- clear3d(screen.machine());
+ // rising edge
+ if (vblank_on)
+ clear3d(screen.machine());
}
VIDEO_START( hng64 )
diff --git a/src/mame/video/homedata.c b/src/mame/video/homedata.c
index 8be2aa04101..a3c49be5dd2 100644
--- a/src/mame/video/homedata.c
+++ b/src/mame/video/homedata.c
@@ -1049,8 +1049,12 @@ SCREEN_UPDATE_IND16( mirderby )
}
-SCREEN_EOF( homedata )
+SCREEN_VBLANK( homedata )
{
- homedata_state *state = screen.machine().driver_data<homedata_state>();
- state->m_visible_page ^= 1;
+ // rising edge
+ if (vblank_on)
+ {
+ homedata_state *state = screen.machine().driver_data<homedata_state>();
+ state->m_visible_page ^= 1;
+ }
}
diff --git a/src/mame/video/ladybug.c b/src/mame/video/ladybug.c
index 7c2b4fc9248..ab7fdcd49fe 100644
--- a/src/mame/video/ladybug.c
+++ b/src/mame/video/ladybug.c
@@ -306,9 +306,11 @@ SCREEN_UPDATE_IND16( ladybug )
return 0;
}
-SCREEN_EOF( sraider ) /* update starfield position */
+SCREEN_VBLANK( sraider ) /* update starfield position */
{
- redclash_update_stars_state(screen.machine());
+ // rising edge
+ if (vblank_on)
+ redclash_update_stars_state(screen.machine());
}
SCREEN_UPDATE_IND16( sraider )
diff --git a/src/mame/video/lastduel.c b/src/mame/video/lastduel.c
index 3b5eed35573..588b980d7ea 100644
--- a/src/mame/video/lastduel.c
+++ b/src/mame/video/lastduel.c
@@ -306,12 +306,16 @@ SCREEN_UPDATE_IND16( madgear )
return 0;
}
-SCREEN_EOF( lastduel )
+SCREEN_VBLANK( lastduel )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- /* Spriteram is always 1 frame ahead, suggesting buffering. I can't find
- a register to control this so I assume it happens automatically
- every frame at the end of vblank */
- buffer_spriteram16_w(space, 0, 0, 0xffff);
+ /* Spriteram is always 1 frame ahead, suggesting buffering. I can't find
+ a register to control this so I assume it happens automatically
+ every frame at the end of vblank */
+ buffer_spriteram16_w(space, 0, 0, 0xffff);
+ }
}
diff --git a/src/mame/video/lemmings.c b/src/mame/video/lemmings.c
index 2011f984140..56f3c06f64d 100644
--- a/src/mame/video/lemmings.c
+++ b/src/mame/video/lemmings.c
@@ -105,12 +105,16 @@ VIDEO_START( lemmings )
state->save_pointer(NAME(state->m_sprite_triple_buffer_1), 0x800 / 2);
}
-SCREEN_EOF( lemmings )
+SCREEN_VBLANK( lemmings )
{
- lemmings_state *state = screen.machine().driver_data<lemmings_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ lemmings_state *state = screen.machine().driver_data<lemmings_state>();
- memcpy(state->m_sprite_triple_buffer_0, screen.machine().generic.buffered_spriteram.u16, 0x800);
- memcpy(state->m_sprite_triple_buffer_1, screen.machine().generic.buffered_spriteram2.u16, 0x800);
+ memcpy(state->m_sprite_triple_buffer_0, screen.machine().generic.buffered_spriteram.u16, 0x800);
+ memcpy(state->m_sprite_triple_buffer_1, screen.machine().generic.buffered_spriteram2.u16, 0x800);
+ }
}
/******************************************************************************/
diff --git a/src/mame/video/lockon.c b/src/mame/video/lockon.c
index f86ee773122..8c2551cd9ba 100644
--- a/src/mame/video/lockon.c
+++ b/src/mame/video/lockon.c
@@ -952,17 +952,21 @@ SCREEN_UPDATE_IND16( lockon )
return 0;
}
-SCREEN_EOF( lockon )
+SCREEN_VBLANK( lockon )
{
- lockon_state *state = screen.machine().driver_data<lockon_state>();
+ // on falling edge
+ if (!vblank_on)
+ {
+ lockon_state *state = screen.machine().driver_data<lockon_state>();
- /* Swap the frame buffers */
- bitmap_ind16 *tmp = state->m_front_buffer;
- state->m_front_buffer = state->m_back_buffer;
- state->m_back_buffer = tmp;
+ /* Swap the frame buffers */
+ bitmap_ind16 *tmp = state->m_front_buffer;
+ state->m_front_buffer = state->m_back_buffer;
+ state->m_back_buffer = tmp;
- /* Draw the frame buffer layers */
- scene_draw(screen.machine());
- ground_draw(screen.machine());
- objects_draw(screen.machine());
+ /* Draw the frame buffer layers */
+ scene_draw(screen.machine());
+ ground_draw(screen.machine());
+ objects_draw(screen.machine());
+ }
}
diff --git a/src/mame/video/lwings.c b/src/mame/video/lwings.c
index f769e424abd..b0830bc0c7d 100644
--- a/src/mame/video/lwings.c
+++ b/src/mame/video/lwings.c
@@ -291,9 +291,13 @@ SCREEN_UPDATE_IND16( trojan )
return 0;
}
-SCREEN_EOF( lwings )
+SCREEN_VBLANK( lwings )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram_w(space, 0, 0);
+ buffer_spriteram_w(space, 0, 0);
+ }
}
diff --git a/src/mame/video/macrossp.c b/src/mame/video/macrossp.c
index 0db495d3a45..ebde07e9b8e 100644
--- a/src/mame/video/macrossp.c
+++ b/src/mame/video/macrossp.c
@@ -429,11 +429,15 @@ state->m_scrc_videoregs[2]);// 08 - 0b
return 0;
}
-SCREEN_EOF( macrossp )
+SCREEN_VBLANK( macrossp )
{
- macrossp_state *state = screen.machine().driver_data<macrossp_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ macrossp_state *state = screen.machine().driver_data<macrossp_state>();
- /* looks like sprites are *two* frames ahead, like nmk16 */
- memcpy(state->m_spriteram_old2, state->m_spriteram_old, state->m_spriteram_size);
- memcpy(state->m_spriteram_old, state->m_spriteram, state->m_spriteram_size);
+ /* looks like sprites are *two* frames ahead, like nmk16 */
+ memcpy(state->m_spriteram_old2, state->m_spriteram_old, state->m_spriteram_size);
+ memcpy(state->m_spriteram_old, state->m_spriteram, state->m_spriteram_size);
+ }
}
diff --git a/src/mame/video/mcatadv.c b/src/mame/video/mcatadv.c
index 16289228c26..3a9893ee934 100644
--- a/src/mame/video/mcatadv.c
+++ b/src/mame/video/mcatadv.c
@@ -269,9 +269,13 @@ VIDEO_START( mcatadv )
state->save_pointer(NAME(state->m_vidregs_old), (0x0f + 1) / 2);
}
-SCREEN_EOF( mcatadv )
+SCREEN_VBLANK( mcatadv )
{
- mcatadv_state *state = screen.machine().driver_data<mcatadv_state>();
- memcpy(state->m_spriteram_old, state->m_spriteram, state->m_spriteram_size);
- memcpy(state->m_vidregs_old, state->m_vidregs, 0xf);
+ // rising edge
+ if (vblank_on)
+ {
+ mcatadv_state *state = screen.machine().driver_data<mcatadv_state>();
+ memcpy(state->m_spriteram_old, state->m_spriteram, state->m_spriteram_size);
+ memcpy(state->m_vidregs_old, state->m_vidregs, 0xf);
+ }
}
diff --git a/src/mame/video/megasys1.c b/src/mame/video/megasys1.c
index 8c04c614748..5d07590f5a4 100644
--- a/src/mame/video/megasys1.c
+++ b/src/mame/video/megasys1.c
@@ -1020,16 +1020,20 @@ SCREEN_UPDATE_IND16( megasys1 )
return 0;
}
-SCREEN_EOF( megasys1 )
+SCREEN_VBLANK( megasys1 )
{
- megasys1_state *state = screen.machine().driver_data<megasys1_state>();
- /* Sprite are TWO frames ahead, like NMK16 HW. */
-//state->m_objectram
- memcpy(state->m_buffer2_objectram,state->m_buffer_objectram, 0x2000);
- memcpy(state->m_buffer_objectram, state->m_objectram, 0x2000);
-//spriteram16
- memcpy(state->m_buffer2_spriteram16, state->m_buffer_spriteram16, 0x2000);
- memcpy(state->m_buffer_spriteram16, state->m_spriteram, 0x2000);
+ // rising edge
+ if (vblank_on)
+ {
+ megasys1_state *state = screen.machine().driver_data<megasys1_state>();
+ /* Sprite are TWO frames ahead, like NMK16 HW. */
+ //state->m_objectram
+ memcpy(state->m_buffer2_objectram,state->m_buffer_objectram, 0x2000);
+ memcpy(state->m_buffer_objectram, state->m_objectram, 0x2000);
+ //spriteram16
+ memcpy(state->m_buffer2_spriteram16, state->m_buffer_spriteram16, 0x2000);
+ memcpy(state->m_buffer_spriteram16, state->m_spriteram, 0x2000);
+ }
}
diff --git a/src/mame/video/mermaid.c b/src/mame/video/mermaid.c
index bcf55924457..b4714d722cc 100644
--- a/src/mame/video/mermaid.c
+++ b/src/mame/video/mermaid.c
@@ -262,304 +262,307 @@ static UINT8 collision_check( running_machine &machine, rectangle& rect )
return data;
}
-SCREEN_EOF( mermaid )
+SCREEN_VBLANK( mermaid )
{
- mermaid_state *state = screen.machine().driver_data<mermaid_state>();
- const rectangle &visarea = screen.machine().primary_screen->visible_area();
- UINT8 *spriteram = state->m_spriteram;
-
- int offs, offs2;
-
- state->m_coll_bit0 = 0;
- state->m_coll_bit1 = 0;
- state->m_coll_bit2 = 0;
- state->m_coll_bit3 = 0;
- state->m_coll_bit6 = 0;
-
- // check for bit 0 (sprite-sprite), 1 (sprite-foreground), 2 (sprite-background)
-
- for (offs = state->m_spriteram_size - 4; offs >= 0; offs -= 4)
+ // rising edge
+ if (vblank_on)
{
- int attr = spriteram[offs + 2];
- int bank = (attr & 0x30) >> 4;
- int coll = (attr & 0xc0) >> 6;
- int code = (spriteram[offs] & 0x3f) | (bank << 6);
- int flipx = spriteram[offs] & 0x40;
- int flipy = spriteram[offs] & 0x80;
- int sx = spriteram[offs + 3] + 1;
- int sy = 240 - spriteram[offs + 1];
+ mermaid_state *state = screen.machine().driver_data<mermaid_state>();
+ const rectangle &visarea = screen.machine().primary_screen->visible_area();
+ UINT8 *spriteram = state->m_spriteram;
- rectangle rect;
+ int offs, offs2;
- if (coll != 1) continue;
+ state->m_coll_bit0 = 0;
+ state->m_coll_bit1 = 0;
+ state->m_coll_bit2 = 0;
+ state->m_coll_bit3 = 0;
+ state->m_coll_bit6 = 0;
- code |= state->m_rougien_gfxbank1 * 0x2800;
- code |= state->m_rougien_gfxbank2 * 0x2400;
+ // check for bit 0 (sprite-sprite), 1 (sprite-foreground), 2 (sprite-background)
- if (flip_screen_x_get(screen.machine()))
+ for (offs = state->m_spriteram_size - 4; offs >= 0; offs -= 4)
{
- flipx = !flipx;
- sx = 240 - sx;
- }
+ int attr = spriteram[offs + 2];
+ int bank = (attr & 0x30) >> 4;
+ int coll = (attr & 0xc0) >> 6;
+ int code = (spriteram[offs] & 0x3f) | (bank << 6);
+ int flipx = spriteram[offs] & 0x40;
+ int flipy = spriteram[offs] & 0x80;
+ int sx = spriteram[offs + 3] + 1;
+ int sy = 240 - spriteram[offs + 1];
- if (flip_screen_y_get(screen.machine()))
- {
- flipy = !flipy;
- sy = 240 - sy;
- }
+ rectangle rect;
- rect.min_x = sx;
- rect.min_y = sy;
- rect.max_x = sx + screen.machine().gfx[1]->width - 1;
- rect.max_y = sy + screen.machine().gfx[1]->height - 1;
+ if (coll != 1) continue;
- if (rect.min_x < visarea.min_x)
- rect.min_x = visarea.min_x;
- if (rect.min_y < visarea.min_y)
- rect.min_y = visarea.min_y;
- if (rect.max_x > visarea.max_x)
- rect.max_x = visarea.max_x;
- if (rect.max_y > visarea.max_y)
- rect.max_y = visarea.max_y;
+ code |= state->m_rougien_gfxbank1 * 0x2800;
+ code |= state->m_rougien_gfxbank2 * 0x2400;
- // check collision sprite - background
+ if (flip_screen_x_get(screen.machine()))
+ {
+ flipx = !flipx;
+ sx = 240 - sx;
+ }
- state->m_helper.fill(0, rect);
- state->m_helper2.fill(0, rect);
+ if (flip_screen_y_get(screen.machine()))
+ {
+ flipy = !flipy;
+ sy = 240 - sy;
+ }
- tilemap_draw(state->m_helper, rect, state->m_bg_tilemap, 0, 0);
+ rect.min_x = sx;
+ rect.min_y = sy;
+ rect.max_x = sx + screen.machine().gfx[1]->width - 1;
+ rect.max_y = sy + screen.machine().gfx[1]->height - 1;
- drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
+ if (rect.min_x < visarea.min_x)
+ rect.min_x = visarea.min_x;
+ if (rect.min_y < visarea.min_y)
+ rect.min_y = visarea.min_y;
+ if (rect.max_x > visarea.max_x)
+ rect.max_x = visarea.max_x;
+ if (rect.max_y > visarea.max_y)
+ rect.max_y = visarea.max_y;
- state->m_coll_bit2 |= collision_check(screen.machine(), rect);
+ // check collision sprite - background
- // check collision sprite - foreground
+ state->m_helper.fill(0, rect);
+ state->m_helper2.fill(0, rect);
- state->m_helper.fill(0, rect);
- state->m_helper2.fill(0, rect);
+ tilemap_draw(state->m_helper, rect, state->m_bg_tilemap, 0, 0);
- tilemap_draw(state->m_helper, rect, state->m_fg_tilemap, 0, 0);
+ drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
- drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
+ state->m_coll_bit2 |= collision_check(screen.machine(), rect);
- state->m_coll_bit1 |= collision_check(screen.machine(), rect);
+ // check collision sprite - foreground
- // check collision sprite - sprite
+ state->m_helper.fill(0, rect);
+ state->m_helper2.fill(0, rect);
- state->m_helper.fill(0, rect);
- state->m_helper2.fill(0, rect);
+ tilemap_draw(state->m_helper, rect, state->m_fg_tilemap, 0, 0);
- for (offs2 = state->m_spriteram_size - 4; offs2 >= 0; offs2 -= 4)
- if (offs != offs2)
- {
- int attr2 = spriteram[offs2 + 2];
- int bank2 = (attr2 & 0x30) >> 4;
- int coll2 = (attr2 & 0xc0) >> 6;
- int code2 = (spriteram[offs2] & 0x3f) | (bank2 << 6);
- int flipx2 = spriteram[offs2] & 0x40;
- int flipy2 = spriteram[offs2] & 0x80;
- int sx2 = spriteram[offs2 + 3] + 1;
- int sy2 = 240 - spriteram[offs2 + 1];
+ drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
- if (coll2 != 0) continue;
+ state->m_coll_bit1 |= collision_check(screen.machine(), rect);
- code2 |= state->m_rougien_gfxbank1 * 0x2800;
- code2 |= state->m_rougien_gfxbank2 * 0x2400;
+ // check collision sprite - sprite
- if (flip_screen_x_get(screen.machine()))
- {
- flipx2 = !flipx2;
- sx2 = 240 - sx2;
- }
+ state->m_helper.fill(0, rect);
+ state->m_helper2.fill(0, rect);
- if (flip_screen_y_get(screen.machine()))
+ for (offs2 = state->m_spriteram_size - 4; offs2 >= 0; offs2 -= 4)
+ if (offs != offs2)
{
- flipy2 = !flipy2;
- sy2 = 240 - sy2;
+ int attr2 = spriteram[offs2 + 2];
+ int bank2 = (attr2 & 0x30) >> 4;
+ int coll2 = (attr2 & 0xc0) >> 6;
+ int code2 = (spriteram[offs2] & 0x3f) | (bank2 << 6);
+ int flipx2 = spriteram[offs2] & 0x40;
+ int flipy2 = spriteram[offs2] & 0x80;
+ int sx2 = spriteram[offs2 + 3] + 1;
+ int sy2 = 240 - spriteram[offs2 + 1];
+
+ if (coll2 != 0) continue;
+
+ code2 |= state->m_rougien_gfxbank1 * 0x2800;
+ code2 |= state->m_rougien_gfxbank2 * 0x2400;
+
+ if (flip_screen_x_get(screen.machine()))
+ {
+ flipx2 = !flipx2;
+ sx2 = 240 - sx2;
+ }
+
+ if (flip_screen_y_get(screen.machine()))
+ {
+ flipy2 = !flipy2;
+ sy2 = 240 - sy2;
+ }
+
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
}
- drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
- }
-
- drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
-
- state->m_coll_bit0 |= collision_check(screen.machine(), rect);
- }
-
- // check for bit 3 (sprite-sprite)
-
- for (offs = state->m_spriteram_size - 4; offs >= 0; offs -= 4)
- {
- int attr = spriteram[offs + 2];
- int bank = (attr & 0x30) >> 4;
- int coll = (attr & 0xc0) >> 6;
- int code = (spriteram[offs] & 0x3f) | (bank << 6);
- int flipx = spriteram[offs] & 0x40;
- int flipy = spriteram[offs] & 0x80;
- int sx = spriteram[offs + 3] + 1;
- int sy = 240 - spriteram[offs + 1];
-
- rectangle rect;
-
- if (coll != 2) continue;
-
- code |= state->m_rougien_gfxbank1 * 0x2800;
- code |= state->m_rougien_gfxbank2 * 0x2400;
+ drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
- if (flip_screen_x_get(screen.machine()))
- {
- flipx = !flipx;
- sx = 240 - sx;
+ state->m_coll_bit0 |= collision_check(screen.machine(), rect);
}
- if (flip_screen_y_get(screen.machine()))
- {
- flipy = !flipy;
- sy = 240 - sy;
- }
+ // check for bit 3 (sprite-sprite)
- rect.min_x = sx;
- rect.min_y = sy;
- rect.max_x = sx + screen.machine().gfx[1]->width - 1;
- rect.max_y = sy + screen.machine().gfx[1]->height - 1;
+ for (offs = state->m_spriteram_size - 4; offs >= 0; offs -= 4)
+ {
+ int attr = spriteram[offs + 2];
+ int bank = (attr & 0x30) >> 4;
+ int coll = (attr & 0xc0) >> 6;
+ int code = (spriteram[offs] & 0x3f) | (bank << 6);
+ int flipx = spriteram[offs] & 0x40;
+ int flipy = spriteram[offs] & 0x80;
+ int sx = spriteram[offs + 3] + 1;
+ int sy = 240 - spriteram[offs + 1];
- if (rect.min_x < visarea.min_x)
- rect.min_x = visarea.min_x;
- if (rect.min_y < visarea.min_y)
- rect.min_y = visarea.min_y;
- if (rect.max_x > visarea.max_x)
- rect.max_x = visarea.max_x;
- if (rect.max_y > visarea.max_y)
- rect.max_y = visarea.max_y;
+ rectangle rect;
- // check collision sprite - sprite
+ if (coll != 2) continue;
- state->m_helper.fill(0, rect);
- state->m_helper2.fill(0, rect);
+ code |= state->m_rougien_gfxbank1 * 0x2800;
+ code |= state->m_rougien_gfxbank2 * 0x2400;
- for (offs2 = state->m_spriteram_size - 4; offs2 >= 0; offs2 -= 4)
- if (offs != offs2)
+ if (flip_screen_x_get(screen.machine()))
{
- int attr2 = spriteram[offs2 + 2];
- int bank2 = (attr2 & 0x30) >> 4;
- int coll2 = (attr2 & 0xc0) >> 6;
- int code2 = (spriteram[offs2] & 0x3f) | (bank2 << 6);
- int flipx2 = spriteram[offs2] & 0x40;
- int flipy2 = spriteram[offs2] & 0x80;
- int sx2 = spriteram[offs2 + 3] + 1;
- int sy2 = 240 - spriteram[offs2 + 1];
-
- if (coll2 != 0) continue;
-
- code2 |= state->m_rougien_gfxbank1 * 0x2800;
- code2 |= state->m_rougien_gfxbank2 * 0x2400;
-
- if (flip_screen_x_get(screen.machine()))
- {
- flipx2 = !flipx2;
- sx2 = 240 - sx2;
- }
-
- if (flip_screen_y_get(screen.machine()))
- {
- flipy2 = !flipy2;
- sy2 = 240 - sy2;
- }
-
- drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
+ flipx = !flipx;
+ sx = 240 - sx;
}
- drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
+ if (flip_screen_y_get(screen.machine()))
+ {
+ flipy = !flipy;
+ sy = 240 - sy;
+ }
- state->m_coll_bit3 |= collision_check(screen.machine(), rect);
- }
+ rect.min_x = sx;
+ rect.min_y = sy;
+ rect.max_x = sx + screen.machine().gfx[1]->width - 1;
+ rect.max_y = sy + screen.machine().gfx[1]->height - 1;
- // check for bit 6
+ if (rect.min_x < visarea.min_x)
+ rect.min_x = visarea.min_x;
+ if (rect.min_y < visarea.min_y)
+ rect.min_y = visarea.min_y;
+ if (rect.max_x > visarea.max_x)
+ rect.max_x = visarea.max_x;
+ if (rect.max_y > visarea.max_y)
+ rect.max_y = visarea.max_y;
- for (offs = state->m_spriteram_size - 4; offs >= 0; offs -= 4)
- {
- int attr = spriteram[offs + 2];
- int bank = (attr & 0x30) >> 4;
- int coll = (attr & 0xc0) >> 6;
- int code = (spriteram[offs] & 0x3f) | (bank << 6);
- int flipx = spriteram[offs] & 0x40;
- int flipy = spriteram[offs] & 0x80;
- int sx = spriteram[offs + 3] + 1;
- int sy = 240 - spriteram[offs + 1];
+ // check collision sprite - sprite
- rectangle rect;
+ state->m_helper.fill(0, rect);
+ state->m_helper2.fill(0, rect);
- if (coll != 1) continue;
+ for (offs2 = state->m_spriteram_size - 4; offs2 >= 0; offs2 -= 4)
+ if (offs != offs2)
+ {
+ int attr2 = spriteram[offs2 + 2];
+ int bank2 = (attr2 & 0x30) >> 4;
+ int coll2 = (attr2 & 0xc0) >> 6;
+ int code2 = (spriteram[offs2] & 0x3f) | (bank2 << 6);
+ int flipx2 = spriteram[offs2] & 0x40;
+ int flipy2 = spriteram[offs2] & 0x80;
+ int sx2 = spriteram[offs2 + 3] + 1;
+ int sy2 = 240 - spriteram[offs2 + 1];
+
+ if (coll2 != 0) continue;
+
+ code2 |= state->m_rougien_gfxbank1 * 0x2800;
+ code2 |= state->m_rougien_gfxbank2 * 0x2400;
+
+ if (flip_screen_x_get(screen.machine()))
+ {
+ flipx2 = !flipx2;
+ sx2 = 240 - sx2;
+ }
+
+ if (flip_screen_y_get(screen.machine()))
+ {
+ flipy2 = !flipy2;
+ sy2 = 240 - sy2;
+ }
+
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
+ }
- code |= state->m_rougien_gfxbank1 * 0x2800;
- code |= state->m_rougien_gfxbank2 * 0x2400;
+ drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
- if (flip_screen_x_get(screen.machine()))
- {
- flipx = !flipx;
- sx = 240 - sx;
+ state->m_coll_bit3 |= collision_check(screen.machine(), rect);
}
- if (flip_screen_y_get(screen.machine()))
+ // check for bit 6
+
+ for (offs = state->m_spriteram_size - 4; offs >= 0; offs -= 4)
{
- flipy = !flipy;
- sy = 240 - sy;
- }
+ int attr = spriteram[offs + 2];
+ int bank = (attr & 0x30) >> 4;
+ int coll = (attr & 0xc0) >> 6;
+ int code = (spriteram[offs] & 0x3f) | (bank << 6);
+ int flipx = spriteram[offs] & 0x40;
+ int flipy = spriteram[offs] & 0x80;
+ int sx = spriteram[offs + 3] + 1;
+ int sy = 240 - spriteram[offs + 1];
- rect.min_x = sx;
- rect.min_y = sy;
- rect.max_x = sx + screen.machine().gfx[1]->width - 1;
- rect.max_y = sy + screen.machine().gfx[1]->height - 1;
+ rectangle rect;
- if (rect.min_x < visarea.min_x)
- rect.min_x = visarea.min_x;
- if (rect.min_y < visarea.min_y)
- rect.min_y = visarea.min_y;
- if (rect.max_x > visarea.max_x)
- rect.max_x = visarea.max_x;
- if (rect.max_y > visarea.max_y)
- rect.max_y = visarea.max_y;
+ if (coll != 1) continue;
- // check collision sprite - sprite
+ code |= state->m_rougien_gfxbank1 * 0x2800;
+ code |= state->m_rougien_gfxbank2 * 0x2400;
- state->m_helper.fill(0, rect);
- state->m_helper2.fill(0, rect);
+ if (flip_screen_x_get(screen.machine()))
+ {
+ flipx = !flipx;
+ sx = 240 - sx;
+ }
- for (offs2 = state->m_spriteram_size - 4; offs2 >= 0; offs2 -= 4)
- if (offs != offs2)
+ if (flip_screen_y_get(screen.machine()))
{
- int attr2 = spriteram[offs2 + 2];
- int bank2 = (attr2 & 0x30) >> 4;
- int coll2 = (attr2 & 0xc0) >> 6;
- int code2 = (spriteram[offs2] & 0x3f) | (bank2 << 6);
- int flipx2 = spriteram[offs2] & 0x40;
- int flipy2 = spriteram[offs2] & 0x80;
- int sx2 = spriteram[offs2 + 3] + 1;
- int sy2 = 240 - spriteram[offs2 + 1];
+ flipy = !flipy;
+ sy = 240 - sy;
+ }
- if (coll2 != 2) continue;
+ rect.min_x = sx;
+ rect.min_y = sy;
+ rect.max_x = sx + screen.machine().gfx[1]->width - 1;
+ rect.max_y = sy + screen.machine().gfx[1]->height - 1;
- code2 |= state->m_rougien_gfxbank1 * 0x2800;
- code2 |= state->m_rougien_gfxbank2 * 0x2400;
+ if (rect.min_x < visarea.min_x)
+ rect.min_x = visarea.min_x;
+ if (rect.min_y < visarea.min_y)
+ rect.min_y = visarea.min_y;
+ if (rect.max_x > visarea.max_x)
+ rect.max_x = visarea.max_x;
+ if (rect.max_y > visarea.max_y)
+ rect.max_y = visarea.max_y;
- if (flip_screen_x_get(screen.machine()))
- {
- flipx2 = !flipx2;
- sx2 = 240 - sx2;
- }
+ // check collision sprite - sprite
+
+ state->m_helper.fill(0, rect);
+ state->m_helper2.fill(0, rect);
- if (flip_screen_y_get(screen.machine()))
+ for (offs2 = state->m_spriteram_size - 4; offs2 >= 0; offs2 -= 4)
+ if (offs != offs2)
{
- flipy2 = !flipy2;
- sy2 = 240 - sy2;
+ int attr2 = spriteram[offs2 + 2];
+ int bank2 = (attr2 & 0x30) >> 4;
+ int coll2 = (attr2 & 0xc0) >> 6;
+ int code2 = (spriteram[offs2] & 0x3f) | (bank2 << 6);
+ int flipx2 = spriteram[offs2] & 0x40;
+ int flipy2 = spriteram[offs2] & 0x80;
+ int sx2 = spriteram[offs2 + 3] + 1;
+ int sy2 = 240 - spriteram[offs2 + 1];
+
+ if (coll2 != 2) continue;
+
+ code2 |= state->m_rougien_gfxbank1 * 0x2800;
+ code2 |= state->m_rougien_gfxbank2 * 0x2400;
+
+ if (flip_screen_x_get(screen.machine()))
+ {
+ flipx2 = !flipx2;
+ sx2 = 240 - sx2;
+ }
+
+ if (flip_screen_y_get(screen.machine()))
+ {
+ flipy2 = !flipy2;
+ sy2 = 240 - sy2;
+ }
+
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
}
- drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1], code2, 0, flipx2, flipy2, sx2, sy2, 0);
- }
-
- drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
+ drawgfx_transpen(state->m_helper2, rect, screen.machine().gfx[1], code, 0, flipx, flipy, sx, sy, 0);
- state->m_coll_bit6 |= collision_check(screen.machine(), rect);
+ state->m_coll_bit6 |= collision_check(screen.machine(), rect);
+ }
}
-
}
diff --git a/src/mame/video/model1.c b/src/mame/video/model1.c
index d220cc64623..433fb2e1077 100644
--- a/src/mame/video/model1.c
+++ b/src/mame/video/model1.c
@@ -1537,9 +1537,13 @@ SCREEN_UPDATE_RGB32(model1)
return 0;
}
-SCREEN_EOF(model1)
+SCREEN_VBLANK(model1)
{
- tgp_scan(screen.machine());
- end_frame(screen.machine());
- LOG_TGP(("TGP: vsync\n"));
+ // on falling edge
+ if (!vblank_on)
+ {
+ tgp_scan(screen.machine());
+ end_frame(screen.machine());
+ LOG_TGP(("TGP: vsync\n"));
+ }
}
diff --git a/src/mame/video/mw8080bw.c b/src/mame/video/mw8080bw.c
index be74432687a..b998e09cdb7 100644
--- a/src/mame/video/mw8080bw.c
+++ b/src/mame/video/mw8080bw.c
@@ -311,14 +311,18 @@ SCREEN_UPDATE_RGB32( phantom2 )
}
-SCREEN_EOF( phantom2 )
+SCREEN_VBLANK( phantom2 )
{
- mw8080bw_state *state = screen.machine().driver_data<mw8080bw_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ mw8080bw_state *state = screen.machine().driver_data<mw8080bw_state>();
- state->m_phantom2_cloud_counter += MW8080BW_VTOTAL;
+ state->m_phantom2_cloud_counter += MW8080BW_VTOTAL;
- if (state->m_phantom2_cloud_counter >= PHANTOM2_CLOUD_COUNTER_END)
- state->m_phantom2_cloud_counter = PHANTOM2_CLOUD_COUNTER_START + (state->m_phantom2_cloud_counter - PHANTOM2_CLOUD_COUNTER_END);
+ if (state->m_phantom2_cloud_counter >= PHANTOM2_CLOUD_COUNTER_END)
+ state->m_phantom2_cloud_counter = PHANTOM2_CLOUD_COUNTER_START + (state->m_phantom2_cloud_counter - PHANTOM2_CLOUD_COUNTER_END);
+ }
}
diff --git a/src/mame/video/n8080.c b/src/mame/video/n8080.c
index 582bf87df62..9622f3307a5 100644
--- a/src/mame/video/n8080.c
+++ b/src/mame/video/n8080.c
@@ -352,40 +352,44 @@ SCREEN_UPDATE_IND16( helifire )
}
-SCREEN_EOF( helifire )
+SCREEN_VBLANK( helifire )
{
- n8080_state *state = screen.machine().driver_data<n8080_state>();
- int n = (screen.machine().primary_screen->frame_number() >> 1) % sizeof state->m_helifire_LSFR;
-
- int i;
-
- for (i = 0; i < 8; i++)
+ // rising edge
+ if (vblank_on)
{
- int R = (i & 1);
- int G = (i & 2);
- int B = (i & 4);
+ n8080_state *state = screen.machine().driver_data<n8080_state>();
+ int n = (screen.machine().primary_screen->frame_number() >> 1) % sizeof state->m_helifire_LSFR;
- if (state->m_helifire_flash)
+ int i;
+
+ for (i = 0; i < 8; i++)
{
- if (state->m_helifire_LSFR[n] & 0x20)
- {
- G |= B;
- }
+ int R = (i & 1);
+ int G = (i & 2);
+ int B = (i & 4);
- if (screen.machine().primary_screen->frame_number() & 0x04)
+ if (state->m_helifire_flash)
{
- R |= G;
+ if (state->m_helifire_LSFR[n] & 0x20)
+ {
+ G |= B;
+ }
+
+ if (screen.machine().primary_screen->frame_number() & 0x04)
+ {
+ R |= G;
+ }
}
- }
- palette_set_color_rgb(screen.machine(),i,
- R ? 255 : 0,
- G ? 255 : 0,
- B ? 255 : 0);
- }
+ palette_set_color_rgb(screen.machine(),i,
+ R ? 255 : 0,
+ G ? 255 : 0,
+ B ? 255 : 0);
+ }
- for (i = 0; i < 256; i++)
- {
- helifire_next_line(screen.machine());
+ for (i = 0; i < 256; i++)
+ {
+ helifire_next_line(screen.machine());
+ }
}
}
diff --git a/src/mame/video/namcos1.c b/src/mame/video/namcos1.c
index 799c0e3a501..46918510115 100644
--- a/src/mame/video/namcos1.c
+++ b/src/mame/video/namcos1.c
@@ -440,20 +440,24 @@ SCREEN_UPDATE_IND16( namcos1 )
}
-SCREEN_EOF( namcos1 )
+SCREEN_VBLANK( namcos1 )
{
- namcos1_state *state = screen.machine().driver_data<namcos1_state>();
- if (state->m_copy_sprites)
+ // rising edge
+ if (vblank_on)
{
- UINT8 *spriteram = state->m_spriteram + 0x800;
- int i,j;
-
- for (i = 0;i < 0x800;i += 16)
+ namcos1_state *state = screen.machine().driver_data<namcos1_state>();
+ if (state->m_copy_sprites)
{
- for (j = 10;j < 16;j++)
- spriteram[i+j] = spriteram[i+j - 6];
- }
+ UINT8 *spriteram = state->m_spriteram + 0x800;
+ int i,j;
- state->m_copy_sprites = 0;
+ for (i = 0;i < 0x800;i += 16)
+ {
+ for (j = 10;j < 16;j++)
+ spriteram[i+j] = spriteram[i+j - 6];
+ }
+
+ state->m_copy_sprites = 0;
+ }
}
}
diff --git a/src/mame/video/namcos86.c b/src/mame/video/namcos86.c
index adeaa225a46..51982a9c12a 100644
--- a/src/mame/video/namcos86.c
+++ b/src/mame/video/namcos86.c
@@ -396,20 +396,24 @@ SCREEN_UPDATE_IND16( namcos86 )
}
-SCREEN_EOF( namcos86 )
+SCREEN_VBLANK( namcos86 )
{
- namcos86_state *state = screen.machine().driver_data<namcos86_state>();
- if (state->m_copy_sprites)
+ // rising edge
+ if (vblank_on)
{
- UINT8 *spriteram = state->m_spriteram;
- int i,j;
-
- for (i = 0;i < 0x800;i += 16)
+ namcos86_state *state = screen.machine().driver_data<namcos86_state>();
+ if (state->m_copy_sprites)
{
- for (j = 10;j < 16;j++)
- spriteram[i+j] = spriteram[i+j - 6];
- }
+ UINT8 *spriteram = state->m_spriteram;
+ int i,j;
- state->m_copy_sprites = 0;
+ for (i = 0;i < 0x800;i += 16)
+ {
+ for (j = 10;j < 16;j++)
+ spriteram[i+j] = spriteram[i+j - 6];
+ }
+
+ state->m_copy_sprites = 0;
+ }
}
}
diff --git a/src/mame/video/ninjakd2.c b/src/mame/video/ninjakd2.c
index 6fc807047c0..88039db0885 100644
--- a/src/mame/video/ninjakd2.c
+++ b/src/mame/video/ninjakd2.c
@@ -546,11 +546,15 @@ SCREEN_UPDATE_IND16( omegaf )
}
-SCREEN_EOF( ninjakd2 )
+SCREEN_VBLANK( ninjakd2 )
{
- ninjakd2_state *state = screen.machine().driver_data<ninjakd2_state>();
- if (!state->m_sprites_updated)
- update_sprites(screen.machine());
+ // rising edge
+ if (vblank_on)
+ {
+ ninjakd2_state *state = screen.machine().driver_data<ninjakd2_state>();
+ if (!state->m_sprites_updated)
+ update_sprites(screen.machine());
- state->m_sprites_updated = 0;
+ state->m_sprites_updated = 0;
+ }
}
diff --git a/src/mame/video/nmk16.c b/src/mame/video/nmk16.c
index f87d62397e7..e3919be0ac0 100644
--- a/src/mame/video/nmk16.c
+++ b/src/mame/video/nmk16.c
@@ -791,31 +791,39 @@ SCREEN_UPDATE_IND16( bjtwin )
return 0;
}
-SCREEN_EOF( nmk )
+SCREEN_VBLANK( nmk )
{
- nmk16_state *state = screen.machine().driver_data<nmk16_state>();
- /* sprites are DMA'd from Main RAM to a private buffer automatically
- (or at least this is how I interpret the datasheet) */
+ // rising edge
+ if (vblank_on)
+ {
+ nmk16_state *state = screen.machine().driver_data<nmk16_state>();
+ /* sprites are DMA'd from Main RAM to a private buffer automatically
+ (or at least this is how I interpret the datasheet) */
- /* -- I actually see little evidence to support this, sprite lag
- in some games should be checked on real boards */
+ /* -- I actually see little evidence to support this, sprite lag
+ in some games should be checked on real boards */
-// memcpy(state->m_spriteram_old2,state->m_spriteram_old,0x1000);
- memcpy(state->m_spriteram_old2,state->m_mainram+0x8000/2,0x1000);
+ // memcpy(state->m_spriteram_old2,state->m_spriteram_old,0x1000);
+ memcpy(state->m_spriteram_old2,state->m_mainram+0x8000/2,0x1000);
+ }
}
-SCREEN_EOF( strahl )
+SCREEN_VBLANK( strahl )
{
- nmk16_state *state = screen.machine().driver_data<nmk16_state>();
- /* sprites are DMA'd from Main RAM to a private buffer automatically
- (or at least this is how I interpret the datasheet) */
+ // rising edge
+ if (vblank_on)
+ {
+ nmk16_state *state = screen.machine().driver_data<nmk16_state>();
+ /* sprites are DMA'd from Main RAM to a private buffer automatically
+ (or at least this is how I interpret the datasheet) */
- /* -- I actually see little evidence to support this, sprite lag
- in some games should be checked on real boards */
+ /* -- I actually see little evidence to support this, sprite lag
+ in some games should be checked on real boards */
- /* strahl sprites are allocated in memory range FF000-FFFFF */
+ /* strahl sprites are allocated in memory range FF000-FFFFF */
- memcpy(state->m_spriteram_old2,state->m_mainram+0xF000/2,0x1000);
+ memcpy(state->m_spriteram_old2,state->m_mainram+0xF000/2,0x1000);
+ }
}
diff --git a/src/mame/video/othldrby.c b/src/mame/video/othldrby.c
index 92d341d582f..48ace537b63 100644
--- a/src/mame/video/othldrby.c
+++ b/src/mame/video/othldrby.c
@@ -224,11 +224,15 @@ SCREEN_UPDATE_IND16( othldrby )
return 0;
}
-SCREEN_EOF( othldrby )
+SCREEN_VBLANK( othldrby )
{
- othldrby_state *state = screen.machine().driver_data<othldrby_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ othldrby_state *state = screen.machine().driver_data<othldrby_state>();
- /* sprites need to be delayed two frames */
- memcpy(state->m_buf_spriteram, state->m_buf_spriteram2, SPRITERAM_SIZE * sizeof(state->m_buf_spriteram[0]));
- memcpy(state->m_buf_spriteram2, &state->m_vram[SPRITERAM_START], SPRITERAM_SIZE * sizeof(state->m_buf_spriteram[0]));
+ /* sprites need to be delayed two frames */
+ memcpy(state->m_buf_spriteram, state->m_buf_spriteram2, SPRITERAM_SIZE * sizeof(state->m_buf_spriteram[0]));
+ memcpy(state->m_buf_spriteram2, &state->m_vram[SPRITERAM_START], SPRITERAM_SIZE * sizeof(state->m_buf_spriteram[0]));
+ }
}
diff --git a/src/mame/video/pgm.c b/src/mame/video/pgm.c
index 414aa9df7af..27afc868f8a 100644
--- a/src/mame/video/pgm.c
+++ b/src/mame/video/pgm.c
@@ -673,10 +673,14 @@ SCREEN_UPDATE_IND16( pgm )
}
-SCREEN_EOF( pgm )
+SCREEN_VBLANK( pgm )
{
- pgm_state *state = screen.machine().driver_data<pgm_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ pgm_state *state = screen.machine().driver_data<pgm_state>();
- /* first 0xa00 of main ram = sprites, seems to be buffered, DMA? */
- memcpy(state->m_spritebufferram, pgm_mainram, 0xa00);
+ /* first 0xa00 of main ram = sprites, seems to be buffered, DMA? */
+ memcpy(state->m_spritebufferram, pgm_mainram, 0xa00);
+ }
}
diff --git a/src/mame/video/psikyo.c b/src/mame/video/psikyo.c
index 8397e5164a0..f2de0755494 100644
--- a/src/mame/video/psikyo.c
+++ b/src/mame/video/psikyo.c
@@ -865,9 +865,13 @@ SCREEN_UPDATE_IND16( psikyo_bootleg )
}
-SCREEN_EOF( psikyo )
+SCREEN_VBLANK( psikyo )
{
- psikyo_state *state = screen.machine().driver_data<psikyo_state>();
- memcpy(state->m_spritebuf2, state->m_spritebuf1, 0x2000);
- memcpy(state->m_spritebuf1, state->m_spriteram, 0x2000);
+ // rising edge
+ if (vblank_on)
+ {
+ psikyo_state *state = screen.machine().driver_data<psikyo_state>();
+ memcpy(state->m_spritebuf2, state->m_spritebuf1, 0x2000);
+ memcpy(state->m_spritebuf1, state->m_spriteram, 0x2000);
+ }
}
diff --git a/src/mame/video/psikyosh.c b/src/mame/video/psikyosh.c
index ff2ebf4df61..1b1c12374a9 100644
--- a/src/mame/video/psikyosh.c
+++ b/src/mame/video/psikyosh.c
@@ -1313,9 +1313,13 @@ popmessage ("%08x %08x %08x %08x\n%08x %08x %08x %08x",
return 0;
}
-SCREEN_EOF( psikyosh )
+SCREEN_VBLANK( psikyosh )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram32_w(space, 0, 0, 0xffffffff);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ buffer_spriteram32_w(space, 0, 0, 0xffffffff);
+ }
}
diff --git a/src/mame/video/redclash.c b/src/mame/video/redclash.c
index f167c0f1a02..0fcff897ce8 100644
--- a/src/mame/video/redclash.c
+++ b/src/mame/video/redclash.c
@@ -315,7 +315,7 @@ void redclash_set_stars_enable( running_machine &machine, UINT8 on )
}
/* This sets up which starfield to draw and the offset, */
-/* To be called from SCREEN_EOF() */
+/* To be called from SCREEN_VBLANK() */
void redclash_update_stars_state( running_machine &machine )
{
@@ -418,9 +418,11 @@ void redclash_draw_stars( running_machine &machine, bitmap_ind16 &bitmap, const
}
}
-SCREEN_EOF( redclash )
+SCREEN_VBLANK( redclash )
{
- redclash_update_stars_state(screen.machine());
+ // rising edge
+ if (vblank_on)
+ redclash_update_stars_state(screen.machine());
}
SCREEN_UPDATE_IND16( redclash )
diff --git a/src/mame/video/seta.c b/src/mame/video/seta.c
index b5adeda3012..3f63a374f1b 100644
--- a/src/mame/video/seta.c
+++ b/src/mame/video/seta.c
@@ -1065,9 +1065,11 @@ SCREEN_UPDATE_IND16( setaroul )
return 0;
}
-SCREEN_EOF( setaroul )
+SCREEN_VBLANK( setaroul )
{
- screen.machine().device<seta001_device>("spritegen")->tnzs_eof();
+ // rising edge
+ if (vblank_on)
+ screen.machine().device<seta001_device>("spritegen")->tnzs_eof();
}
diff --git a/src/mame/video/seta2.c b/src/mame/video/seta2.c
index cf0a0769e5f..27914c25eab 100644
--- a/src/mame/video/seta2.c
+++ b/src/mame/video/seta2.c
@@ -491,10 +491,14 @@ SCREEN_UPDATE_IND16( seta2 )
return 0;
}
-SCREEN_EOF( seta2 )
+SCREEN_VBLANK( seta2 )
{
- seta2_state *state = screen.machine().driver_data<seta2_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ seta2_state *state = screen.machine().driver_data<seta2_state>();
- // Buffer sprites by 1 frame
- memcpy(state->m_buffered_spriteram, state->m_spriteram, state->m_spriteram_size);
+ // Buffer sprites by 1 frame
+ memcpy(state->m_buffered_spriteram, state->m_spriteram, state->m_spriteram_size);
+ }
}
diff --git a/src/mame/video/shadfrce.c b/src/mame/video/shadfrce.c
index 5b551821175..3c5c2b19d70 100644
--- a/src/mame/video/shadfrce.c
+++ b/src/mame/video/shadfrce.c
@@ -182,10 +182,14 @@ SCREEN_UPDATE_IND16( shadfrce )
return 0;
}
-SCREEN_EOF( shadfrce )
+SCREEN_VBLANK( shadfrce )
{
- shadfrce_state *state = screen.machine().driver_data<shadfrce_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ shadfrce_state *state = screen.machine().driver_data<shadfrce_state>();
- /* looks like sprites are *two* frames ahead */
- memcpy(state->m_spvideoram_old, state->m_spvideoram, state->m_spvideoram_size);
+ /* looks like sprites are *two* frames ahead */
+ memcpy(state->m_spvideoram_old, state->m_spvideoram, state->m_spvideoram_size);
+ }
}
diff --git a/src/mame/video/sidearms.c b/src/mame/video/sidearms.c
index 41b0dae92f8..ab8cea31c54 100644
--- a/src/mame/video/sidearms.c
+++ b/src/mame/video/sidearms.c
@@ -366,9 +366,13 @@ SCREEN_UPDATE_IND16( sidearms )
return 0;
}
-SCREEN_EOF( sidearms )
+SCREEN_VBLANK( sidearms )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram_w(space, 0, 0);
+ buffer_spriteram_w(space, 0, 0);
+ }
}
diff --git a/src/mame/video/slapshot.c b/src/mame/video/slapshot.c
index 8bf3b56f36e..6706f96cb7d 100644
--- a/src/mame/video/slapshot.c
+++ b/src/mame/video/slapshot.c
@@ -428,13 +428,17 @@ static void taito_update_sprites_active_area( running_machine &machine )
}
}
-SCREEN_EOF( taito_no_buffer )
+SCREEN_VBLANK( taito_no_buffer )
{
- slapshot_state *state = screen.machine().driver_data<slapshot_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ slapshot_state *state = screen.machine().driver_data<slapshot_state>();
- taito_update_sprites_active_area(screen.machine());
+ taito_update_sprites_active_area(screen.machine());
- state->m_prepare_sprites = 1;
+ state->m_prepare_sprites = 1;
+ }
}
diff --git a/src/mame/video/sprint2.c b/src/mame/video/sprint2.c
index 08164dcca59..90c57aa6dd9 100644
--- a/src/mame/video/sprint2.c
+++ b/src/mame/video/sprint2.c
@@ -144,73 +144,77 @@ SCREEN_UPDATE_IND16( sprint2 )
}
-SCREEN_EOF( sprint2 )
+SCREEN_VBLANK( sprint2 )
{
- sprint2_state *state = screen.machine().driver_data<sprint2_state>();
- UINT8 *video_ram = state->m_video_ram;
- int i;
- int j;
- const rectangle &visarea = screen.machine().primary_screen->visible_area();
-
- /*
- * Collisions are detected for both player cars:
- *
- * D7 => state->m_collision w/ white playfield
- * D6 => state->m_collision w/ black playfield or another car
- *
- */
-
- for (i = 0; i < 2; i++)
+ // rising edge
+ if (vblank_on)
{
- rectangle rect;
-
- rect.min_x = get_sprite_x(video_ram, i);
- rect.min_y = get_sprite_y(video_ram, i);
- rect.max_x = get_sprite_x(video_ram, i) + screen.machine().gfx[1]->width - 1;
- rect.max_y = get_sprite_y(video_ram, i) + screen.machine().gfx[1]->height - 1;
-
- if (rect.min_x < visarea.min_x)
- rect.min_x = visarea.min_x;
- if (rect.min_y < visarea.min_y)
- rect.min_y = visarea.min_y;
- if (rect.max_x > visarea.max_x)
- rect.max_x = visarea.max_x;
- if (rect.max_y > visarea.max_y)
- rect.max_y = visarea.max_y;
-
- /* check for sprite-tilemap collisions */
-
- tilemap_draw(state->m_helper, rect, state->m_bg_tilemap, 0, 0);
-
- drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
- get_sprite_code(video_ram, i),
- 0,
- 0, 0,
- get_sprite_x(video_ram, i),
- get_sprite_y(video_ram, i), 1);
-
- state->m_collision[i] |= collision_check(state, screen.machine().colortable, rect);
-
- /* check for sprite-sprite collisions */
-
- for (j = 0; j < 4; j++)
- if (j != i)
- {
- drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
- get_sprite_code(video_ram, j),
- 1,
- 0, 0,
- get_sprite_x(video_ram, j),
- get_sprite_y(video_ram, j), 0);
- }
-
- drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
- get_sprite_code(video_ram, i),
- 0,
- 0, 0,
- get_sprite_x(video_ram, i),
- get_sprite_y(video_ram, i), 1);
-
- state->m_collision[i] |= collision_check(state, screen.machine().colortable, rect);
+ sprint2_state *state = screen.machine().driver_data<sprint2_state>();
+ UINT8 *video_ram = state->m_video_ram;
+ int i;
+ int j;
+ const rectangle &visarea = screen.machine().primary_screen->visible_area();
+
+ /*
+ * Collisions are detected for both player cars:
+ *
+ * D7 => state->m_collision w/ white playfield
+ * D6 => state->m_collision w/ black playfield or another car
+ *
+ */
+
+ for (i = 0; i < 2; i++)
+ {
+ rectangle rect;
+
+ rect.min_x = get_sprite_x(video_ram, i);
+ rect.min_y = get_sprite_y(video_ram, i);
+ rect.max_x = get_sprite_x(video_ram, i) + screen.machine().gfx[1]->width - 1;
+ rect.max_y = get_sprite_y(video_ram, i) + screen.machine().gfx[1]->height - 1;
+
+ if (rect.min_x < visarea.min_x)
+ rect.min_x = visarea.min_x;
+ if (rect.min_y < visarea.min_y)
+ rect.min_y = visarea.min_y;
+ if (rect.max_x > visarea.max_x)
+ rect.max_x = visarea.max_x;
+ if (rect.max_y > visarea.max_y)
+ rect.max_y = visarea.max_y;
+
+ /* check for sprite-tilemap collisions */
+
+ tilemap_draw(state->m_helper, rect, state->m_bg_tilemap, 0, 0);
+
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
+ get_sprite_code(video_ram, i),
+ 0,
+ 0, 0,
+ get_sprite_x(video_ram, i),
+ get_sprite_y(video_ram, i), 1);
+
+ state->m_collision[i] |= collision_check(state, screen.machine().colortable, rect);
+
+ /* check for sprite-sprite collisions */
+
+ for (j = 0; j < 4; j++)
+ if (j != i)
+ {
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
+ get_sprite_code(video_ram, j),
+ 1,
+ 0, 0,
+ get_sprite_x(video_ram, j),
+ get_sprite_y(video_ram, j), 0);
+ }
+
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
+ get_sprite_code(video_ram, i),
+ 0,
+ 0, 0,
+ get_sprite_x(video_ram, i),
+ get_sprite_y(video_ram, i), 1);
+
+ state->m_collision[i] |= collision_check(state, screen.machine().colortable, rect);
+ }
}
}
diff --git a/src/mame/video/sprint4.c b/src/mame/video/sprint4.c
index 60b04295fca..ecbaf0cd1b8 100644
--- a/src/mame/video/sprint4.c
+++ b/src/mame/video/sprint4.c
@@ -88,60 +88,64 @@ SCREEN_UPDATE_IND16( sprint4 )
}
-SCREEN_EOF( sprint4 )
+SCREEN_VBLANK( sprint4 )
{
- sprint4_state *state = screen.machine().driver_data<sprint4_state>();
- UINT8 *videoram = state->m_videoram;
- int i;
+ // rising edge
+ if (vblank_on)
+ {
+ sprint4_state *state = screen.machine().driver_data<sprint4_state>();
+ UINT8 *videoram = state->m_videoram;
+ int i;
- /* check for sprite-playfield collisions */
+ /* check for sprite-playfield collisions */
- device_t *discrete = screen.machine().device("discrete");
+ device_t *discrete = screen.machine().device("discrete");
- for (i = 0; i < 4; i++)
- {
- rectangle rect;
+ for (i = 0; i < 4; i++)
+ {
+ rectangle rect;
- int x;
- int y;
+ int x;
+ int y;
- int bank = 0;
+ int bank = 0;
- UINT8 horz = videoram[0x390 + 2 * i + 0];
- UINT8 vert = videoram[0x398 + 2 * i + 0];
- UINT8 code = videoram[0x398 + 2 * i + 1];
+ UINT8 horz = videoram[0x390 + 2 * i + 0];
+ UINT8 vert = videoram[0x398 + 2 * i + 0];
+ UINT8 code = videoram[0x398 + 2 * i + 1];
- rect.min_x = horz - 15;
- rect.min_y = vert - 15;
- rect.max_x = horz - 15 + screen.machine().gfx[1]->width - 1;
- rect.max_y = vert - 15 + screen.machine().gfx[1]->height - 1;
+ rect.min_x = horz - 15;
+ rect.min_y = vert - 15;
+ rect.max_x = horz - 15 + screen.machine().gfx[1]->width - 1;
+ rect.max_y = vert - 15 + screen.machine().gfx[1]->height - 1;
- rect &= screen.machine().primary_screen->visible_area();
+ rect &= screen.machine().primary_screen->visible_area();
- tilemap_draw(state->m_helper, rect, state->m_playfield, 0, 0);
+ tilemap_draw(state->m_helper, rect, state->m_playfield, 0, 0);
- if (i & 1)
- bank = 32;
+ if (i & 1)
+ bank = 32;
- drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
- (code >> 3) | bank,
- 4,
- 0, 0,
- horz - 15,
- vert - 15, 1);
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
+ (code >> 3) | bank,
+ 4,
+ 0, 0,
+ horz - 15,
+ vert - 15, 1);
- for (y = rect.min_y; y <= rect.max_y; y++)
- for (x = rect.min_x; x <= rect.max_x; x++)
- if (colortable_entry_get_value(screen.machine().colortable, state->m_helper.pix16(y, x)) != 0)
- state->m_collision[i] = 1;
- }
+ for (y = rect.min_y; y <= rect.max_y; y++)
+ for (x = rect.min_x; x <= rect.max_x; x++)
+ if (colortable_entry_get_value(screen.machine().colortable, state->m_helper.pix16(y, x)) != 0)
+ state->m_collision[i] = 1;
+ }
- /* update sound status */
+ /* update sound status */
- discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_1, videoram[0x391] & 15);
- discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_2, videoram[0x393] & 15);
- discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_3, videoram[0x395] & 15);
- discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_4, videoram[0x397] & 15);
+ discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_1, videoram[0x391] & 15);
+ discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_2, videoram[0x393] & 15);
+ discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_3, videoram[0x395] & 15);
+ discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_4, videoram[0x397] & 15);
+ }
}
diff --git a/src/mame/video/sprint8.c b/src/mame/video/sprint8.c
index efa219d2c1d..dc1af359267 100644
--- a/src/mame/video/sprint8.c
+++ b/src/mame/video/sprint8.c
@@ -168,28 +168,32 @@ SCREEN_UPDATE_IND16( sprint8 )
}
-SCREEN_EOF( sprint8 )
+SCREEN_VBLANK( sprint8 )
{
- sprint8_state *state = screen.machine().driver_data<sprint8_state>();
- int x;
- int y;
- const rectangle &visarea = screen.machine().primary_screen->visible_area();
+ // rising edge
+ if (vblank_on)
+ {
+ sprint8_state *state = screen.machine().driver_data<sprint8_state>();
+ int x;
+ int y;
+ const rectangle &visarea = screen.machine().primary_screen->visible_area();
- tilemap_draw(state->m_helper2, visarea, state->m_tilemap2, 0, 0);
+ tilemap_draw(state->m_helper2, visarea, state->m_tilemap2, 0, 0);
- state->m_helper1.fill(0x20, visarea);
+ state->m_helper1.fill(0x20, visarea);
- draw_sprites(screen.machine(), state->m_helper1, visarea);
+ draw_sprites(screen.machine(), state->m_helper1, visarea);
- for (y = visarea.min_y; y <= visarea.max_y; y++)
- {
- const UINT16* p1 = &state->m_helper1.pix16(y);
- const UINT16* p2 = &state->m_helper2.pix16(y);
-
- for (x = visarea.min_x; x <= visarea.max_x; x++)
- if (p1[x] != 0x20 && p2[x] == 0x23)
- screen.machine().scheduler().timer_set(screen.machine().primary_screen->time_until_pos(y + 24, x),
- FUNC(sprint8_collision_callback),
- colortable_entry_get_value(screen.machine().colortable, p1[x]));
+ for (y = visarea.min_y; y <= visarea.max_y; y++)
+ {
+ const UINT16* p1 = &state->m_helper1.pix16(y);
+ const UINT16* p2 = &state->m_helper2.pix16(y);
+
+ for (x = visarea.min_x; x <= visarea.max_x; x++)
+ if (p1[x] != 0x20 && p2[x] == 0x23)
+ screen.machine().scheduler().timer_set(screen.machine().primary_screen->time_until_pos(y + 24, x),
+ FUNC(sprint8_collision_callback),
+ colortable_entry_get_value(screen.machine().colortable, p1[x]));
+ }
}
}
diff --git a/src/mame/video/srumbler.c b/src/mame/video/srumbler.c
index e960feddc49..86cf9305dcb 100644
--- a/src/mame/video/srumbler.c
+++ b/src/mame/video/srumbler.c
@@ -170,9 +170,13 @@ SCREEN_UPDATE_IND16( srumbler )
return 0;
}
-SCREEN_EOF( srumbler )
+SCREEN_VBLANK( srumbler )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram_w(space,0,0);
+ buffer_spriteram_w(space,0,0);
+ }
}
diff --git a/src/mame/video/sspeedr.c b/src/mame/video/sspeedr.c
index ec051d52a3e..8b559592807 100644
--- a/src/mame/video/sspeedr.c
+++ b/src/mame/video/sspeedr.c
@@ -267,8 +267,12 @@ SCREEN_UPDATE_IND16( sspeedr )
}
-SCREEN_EOF( sspeedr )
+SCREEN_VBLANK( sspeedr )
{
- sspeedr_state *state = screen.machine().driver_data<sspeedr_state>();
- state->m_toggle ^= 1;
+ // rising edge
+ if (vblank_on)
+ {
+ sspeedr_state *state = screen.machine().driver_data<sspeedr_state>();
+ state->m_toggle ^= 1;
+ }
}
diff --git a/src/mame/video/ssrj.c b/src/mame/video/ssrj.c
index f09352ef488..af2931734e5 100644
--- a/src/mame/video/ssrj.c
+++ b/src/mame/video/ssrj.c
@@ -294,9 +294,13 @@ SCREEN_UPDATE_IND16( ssrj )
return 0;
}
-SCREEN_EOF( ssrj )
+SCREEN_VBLANK( ssrj )
{
- ssrj_state *state = screen.machine().driver_data<ssrj_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ ssrj_state *state = screen.machine().driver_data<ssrj_state>();
- memcpy(state->m_buffer_spriteram, state->m_scrollram, 0x800);
+ memcpy(state->m_buffer_spriteram, state->m_scrollram, 0x800);
+ }
}
diff --git a/src/mame/video/starshp1.c b/src/mame/video/starshp1.c
index 882138f42dc..aff2b5e7975 100644
--- a/src/mame/video/starshp1.c
+++ b/src/mame/video/starshp1.c
@@ -386,33 +386,37 @@ SCREEN_UPDATE_IND16( starshp1 )
}
-SCREEN_EOF( starshp1 )
+SCREEN_VBLANK( starshp1 )
{
- starshp1_state *state = screen.machine().driver_data<starshp1_state>();
- rectangle rect;
- const rectangle &visarea = screen.machine().primary_screen->visible_area();
+ // rising edge
+ if (vblank_on)
+ {
+ starshp1_state *state = screen.machine().driver_data<starshp1_state>();
+ rectangle rect;
+ const rectangle &visarea = screen.machine().primary_screen->visible_area();
- rect.min_x = get_sprite_hpos(state, 13);
- rect.min_y = get_sprite_vpos(state, 13);
- rect.max_x = rect.min_x + screen.machine().gfx[1]->width - 1;
- rect.max_y = rect.min_y + screen.machine().gfx[1]->height - 1;
-
- rect &= state->m_helper.cliprect();
+ rect.min_x = get_sprite_hpos(state, 13);
+ rect.min_y = get_sprite_vpos(state, 13);
+ rect.max_x = rect.min_x + screen.machine().gfx[1]->width - 1;
+ rect.max_y = rect.min_y + screen.machine().gfx[1]->height - 1;
+
+ rect &= state->m_helper.cliprect();
- state->m_helper.fill(0, visarea);
+ state->m_helper.fill(0, visarea);
- if (state->m_attract == 0)
- draw_spaceship(screen.machine(), state->m_helper, visarea);
+ if (state->m_attract == 0)
+ draw_spaceship(screen.machine(), state->m_helper, visarea);
- if (circle_collision(state, visarea))
- state->m_collision_latch |= 1;
+ if (circle_collision(state, visarea))
+ state->m_collision_latch |= 1;
- if (circle_collision(state, rect))
- state->m_collision_latch |= 2;
+ if (circle_collision(state, rect))
+ state->m_collision_latch |= 2;
- if (spaceship_collision(screen.machine(), state->m_helper, rect))
- state->m_collision_latch |= 4;
+ if (spaceship_collision(screen.machine(), state->m_helper, rect))
+ state->m_collision_latch |= 4;
- if (spaceship_collision(screen.machine(), state->m_helper, visarea))
- state->m_collision_latch |= 8;
+ if (spaceship_collision(screen.machine(), state->m_helper, visarea))
+ state->m_collision_latch |= 8;
+ }
}
diff --git a/src/mame/video/suprnova.c b/src/mame/video/suprnova.c
index 308e9d43434..2aca0448672 100644
--- a/src/mame/video/suprnova.c
+++ b/src/mame/video/suprnova.c
@@ -637,7 +637,7 @@ SCREEN_UPDATE_RGB32(skns)
return 0;
}
-SCREEN_EOF(skns)
+SCREEN_VBLANK(skns)
{
}
diff --git a/src/mame/video/taito_b.c b/src/mame/video/taito_b.c
index 1581e19ebdf..96c72694095 100644
--- a/src/mame/video/taito_b.c
+++ b/src/mame/video/taito_b.c
@@ -503,20 +503,24 @@ SCREEN_UPDATE_RGB32( realpunc )
-SCREEN_EOF( taitob )
+SCREEN_VBLANK( taitob )
{
- taitob_state *state = screen.machine().driver_data<taitob_state>();
- UINT8 video_control = tc0180vcu_get_videoctrl(state->m_tc0180vcu, 0);
- UINT8 framebuffer_page = tc0180vcu_get_fb_page(state->m_tc0180vcu, 0);
+ // rising edge
+ if (vblank_on)
+ {
+ taitob_state *state = screen.machine().driver_data<taitob_state>();
+ UINT8 video_control = tc0180vcu_get_videoctrl(state->m_tc0180vcu, 0);
+ UINT8 framebuffer_page = tc0180vcu_get_fb_page(state->m_tc0180vcu, 0);
- if (~video_control & 0x01)
- state->m_framebuffer[framebuffer_page]->fill(0, screen.machine().primary_screen->visible_area());
+ if (~video_control & 0x01)
+ state->m_framebuffer[framebuffer_page]->fill(0, screen.machine().primary_screen->visible_area());
- if (~video_control & 0x80)
- {
- framebuffer_page ^= 1;
- tc0180vcu_set_fb_page(state->m_tc0180vcu, 0, framebuffer_page);
- }
+ if (~video_control & 0x80)
+ {
+ framebuffer_page ^= 1;
+ tc0180vcu_set_fb_page(state->m_tc0180vcu, 0, framebuffer_page);
+ }
- draw_sprites(screen.machine(), *state->m_framebuffer[framebuffer_page], screen.machine().primary_screen->visible_area());
+ draw_sprites(screen.machine(), *state->m_framebuffer[framebuffer_page], screen.machine().primary_screen->visible_area());
+ }
}
diff --git a/src/mame/video/taito_f2.c b/src/mame/video/taito_f2.c
index 481da2f0c30..d9053391298 100644
--- a/src/mame/video/taito_f2.c
+++ b/src/mame/video/taito_f2.c
@@ -891,87 +891,107 @@ static void taitof2_update_sprites_active_area( running_machine &machine )
}
-SCREEN_EOF( taitof2_no_buffer )
+SCREEN_VBLANK( taitof2_no_buffer )
{
- taitof2_state *state = screen.machine().driver_data<taitof2_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ taitof2_state *state = screen.machine().driver_data<taitof2_state>();
- taitof2_update_sprites_active_area(screen.machine());
+ taitof2_update_sprites_active_area(screen.machine());
- state->m_prepare_sprites = 1;
+ state->m_prepare_sprites = 1;
+ }
}
-SCREEN_EOF( taitof2_full_buffer_delayed )
+SCREEN_VBLANK( taitof2_full_buffer_delayed )
{
- taitof2_state *state = screen.machine().driver_data<taitof2_state>();
- UINT16 *spriteram = state->m_spriteram;
- int i;
+ // rising edge
+ if (vblank_on)
+ {
+ taitof2_state *state = screen.machine().driver_data<taitof2_state>();
+ UINT16 *spriteram = state->m_spriteram;
+ int i;
- taitof2_update_sprites_active_area(screen.machine());
+ taitof2_update_sprites_active_area(screen.machine());
- state->m_prepare_sprites = 0;
- memcpy(state->m_spriteram_buffered, state->m_spriteram_delayed, state->m_spriteram_size);
- for (i = 0; i < state->m_spriteram_size / 2; i++)
- state->m_spriteram_buffered[i] = spriteram[i];
- memcpy(state->m_spriteram_delayed, spriteram, state->m_spriteram_size);
+ state->m_prepare_sprites = 0;
+ memcpy(state->m_spriteram_buffered, state->m_spriteram_delayed, state->m_spriteram_size);
+ for (i = 0; i < state->m_spriteram_size / 2; i++)
+ state->m_spriteram_buffered[i] = spriteram[i];
+ memcpy(state->m_spriteram_delayed, spriteram, state->m_spriteram_size);
+ }
}
-SCREEN_EOF( taitof2_partial_buffer_delayed )
+SCREEN_VBLANK( taitof2_partial_buffer_delayed )
{
- taitof2_state *state = screen.machine().driver_data<taitof2_state>();
- UINT16 *spriteram = state->m_spriteram;
- int i;
+ // rising edge
+ if (vblank_on)
+ {
+ taitof2_state *state = screen.machine().driver_data<taitof2_state>();
+ UINT16 *spriteram = state->m_spriteram;
+ int i;
- taitof2_update_sprites_active_area(screen.machine());
+ taitof2_update_sprites_active_area(screen.machine());
- state->m_prepare_sprites = 0;
- memcpy(state->m_spriteram_buffered, state->m_spriteram_delayed, state->m_spriteram_size);
- for (i = 0;i < state->m_spriteram_size / 2; i += 4)
- state->m_spriteram_buffered[i] = spriteram[i];
- memcpy(state->m_spriteram_delayed, spriteram, state->m_spriteram_size);
+ state->m_prepare_sprites = 0;
+ memcpy(state->m_spriteram_buffered, state->m_spriteram_delayed, state->m_spriteram_size);
+ for (i = 0;i < state->m_spriteram_size / 2; i += 4)
+ state->m_spriteram_buffered[i] = spriteram[i];
+ memcpy(state->m_spriteram_delayed, spriteram, state->m_spriteram_size);
+ }
}
-SCREEN_EOF( taitof2_partial_buffer_delayed_thundfox )
+SCREEN_VBLANK( taitof2_partial_buffer_delayed_thundfox )
{
- taitof2_state *state = screen.machine().driver_data<taitof2_state>();
- UINT16 *spriteram = state->m_spriteram;
- int i;
+ // rising edge
+ if (vblank_on)
+ {
+ taitof2_state *state = screen.machine().driver_data<taitof2_state>();
+ UINT16 *spriteram = state->m_spriteram;
+ int i;
- taitof2_update_sprites_active_area(screen.machine());
+ taitof2_update_sprites_active_area(screen.machine());
- state->m_prepare_sprites = 0;
- memcpy(state->m_spriteram_buffered, state->m_spriteram_delayed, state->m_spriteram_size);
- for (i = 0; i < state->m_spriteram_size / 2; i += 8)
- {
- state->m_spriteram_buffered[i] = spriteram[i];
- state->m_spriteram_buffered[i + 1] = spriteram[i + 1];
- state->m_spriteram_buffered[i + 4] = spriteram[i + 4];
+ state->m_prepare_sprites = 0;
+ memcpy(state->m_spriteram_buffered, state->m_spriteram_delayed, state->m_spriteram_size);
+ for (i = 0; i < state->m_spriteram_size / 2; i += 8)
+ {
+ state->m_spriteram_buffered[i] = spriteram[i];
+ state->m_spriteram_buffered[i + 1] = spriteram[i + 1];
+ state->m_spriteram_buffered[i + 4] = spriteram[i + 4];
+ }
+ memcpy(state->m_spriteram_delayed, spriteram, state->m_spriteram_size);
}
- memcpy(state->m_spriteram_delayed, spriteram, state->m_spriteram_size);
}
-SCREEN_EOF( taitof2_partial_buffer_delayed_qzchikyu )
+SCREEN_VBLANK( taitof2_partial_buffer_delayed_qzchikyu )
{
- /* spriteram[2] and [3] are 1 frame behind...
- probably thundfox_eof_callback would work fine */
+ // rising edge
+ if (vblank_on)
+ {
+ /* spriteram[2] and [3] are 1 frame behind...
+ probably thundfox_eof_callback would work fine */
- taitof2_state *state = screen.machine().driver_data<taitof2_state>();
- UINT16 *spriteram = state->m_spriteram;
- int i;
+ taitof2_state *state = screen.machine().driver_data<taitof2_state>();
+ UINT16 *spriteram = state->m_spriteram;
+ int i;
- taitof2_update_sprites_active_area(screen.machine());
+ taitof2_update_sprites_active_area(screen.machine());
- state->m_prepare_sprites = 0;
- memcpy(state->m_spriteram_buffered, state->m_spriteram_delayed, state->m_spriteram_size);
- for (i = 0; i < state->m_spriteram_size / 2; i += 8)
- {
- state->m_spriteram_buffered[i] = spriteram[i];
- state->m_spriteram_buffered[i + 1] = spriteram[i + 1];
- state->m_spriteram_buffered[i + 4] = spriteram[i + 4];
- state->m_spriteram_buffered[i + 5] = spriteram[i + 5]; // not needed?
- state->m_spriteram_buffered[i + 6] = spriteram[i + 6]; // not needed?
- state->m_spriteram_buffered[i + 7] = spriteram[i + 7]; // not needed?
+ state->m_prepare_sprites = 0;
+ memcpy(state->m_spriteram_buffered, state->m_spriteram_delayed, state->m_spriteram_size);
+ for (i = 0; i < state->m_spriteram_size / 2; i += 8)
+ {
+ state->m_spriteram_buffered[i] = spriteram[i];
+ state->m_spriteram_buffered[i + 1] = spriteram[i + 1];
+ state->m_spriteram_buffered[i + 4] = spriteram[i + 4];
+ state->m_spriteram_buffered[i + 5] = spriteram[i + 5]; // not needed?
+ state->m_spriteram_buffered[i + 6] = spriteram[i + 6]; // not needed?
+ state->m_spriteram_buffered[i + 7] = spriteram[i + 7]; // not needed?
+ }
+ memcpy(state->m_spriteram_delayed, spriteram, state->m_spriteram_size);
}
- memcpy(state->m_spriteram_delayed, spriteram, state->m_spriteram_size);
}
diff --git a/src/mame/video/taito_f3.c b/src/mame/video/taito_f3.c
index fbceb5773d9..3fab2207a4d 100644
--- a/src/mame/video/taito_f3.c
+++ b/src/mame/video/taito_f3.c
@@ -515,22 +515,25 @@ static TILE_GET_INFO( get_tile_info_pixel )
/******************************************************************************/
-SCREEN_EOF( f3 )
+SCREEN_VBLANK( f3 )
{
- taito_f3_state *state = screen.machine().driver_data<taito_f3_state>();
- if (state->m_sprite_lag==2)
+ if (vblank_on)
{
- if (screen.machine().video().skip_this_frame() == 0)
+ taito_f3_state *state = screen.machine().driver_data<taito_f3_state>();
+ if (state->m_sprite_lag==2)
{
- get_sprite_info(screen.machine(), state->m_spriteram16_buffered);
+ if (screen.machine().video().skip_this_frame() == 0)
+ {
+ get_sprite_info(screen.machine(), state->m_spriteram16_buffered);
+ }
+ memcpy(state->m_spriteram16_buffered,state->m_spriteram,0x10000);
}
- memcpy(state->m_spriteram16_buffered,state->m_spriteram,0x10000);
- }
- else if (state->m_sprite_lag==1)
- {
- if (screen.machine().video().skip_this_frame() == 0)
+ else if (state->m_sprite_lag==1)
{
- get_sprite_info(screen.machine(), state->m_spriteram);
+ if (screen.machine().video().skip_this_frame() == 0)
+ {
+ get_sprite_info(screen.machine(), state->m_spriteram);
+ }
}
}
}
diff --git a/src/mame/video/taito_l.c b/src/mame/video/taito_l.c
index 2da67756cde..20c024fea5d 100644
--- a/src/mame/video/taito_l.c
+++ b/src/mame/video/taito_l.c
@@ -327,10 +327,14 @@ SCREEN_UPDATE_IND16( taitol )
-SCREEN_EOF( taitol )
+SCREEN_VBLANK( taitol )
{
- taitol_state *state = screen.machine().driver_data<taitol_state>();
- UINT8 *spriteram = state->m_rambanks + 0xb000;
+ // rising edge
+ if (vblank_on)
+ {
+ taitol_state *state = screen.machine().driver_data<taitol_state>();
+ UINT8 *spriteram = state->m_rambanks + 0xb000;
- memcpy(state->m_buff_spriteram, spriteram, TAITOL_SPRITERAM_SIZE);
+ memcpy(state->m_buff_spriteram, spriteram, TAITOL_SPRITERAM_SIZE);
+ }
}
diff --git a/src/mame/video/tank8.c b/src/mame/video/tank8.c
index 199cdcca45b..ff1a0fadf24 100644
--- a/src/mame/video/tank8.c
+++ b/src/mame/video/tank8.c
@@ -202,91 +202,95 @@ SCREEN_UPDATE_IND16( tank8 )
}
-SCREEN_EOF( tank8 )
+SCREEN_VBLANK( tank8 )
{
- tank8_state *state = screen.machine().driver_data<tank8_state>();
- int x;
- int y;
- const rectangle &visarea = screen.machine().primary_screen->visible_area();
-
- tilemap_draw(state->m_helper1, visarea, state->m_tilemap, 0, 0);
-
- state->m_helper2.fill(8, visarea);
- state->m_helper3.fill(8, visarea);
-
- draw_sprites(screen.machine(), state->m_helper2, visarea);
- draw_bullets(screen.machine(), state->m_helper3, visarea);
-
- for (y = visarea.min_y; y <= visarea.max_y; y++)
+ // on falling edge
+ if (!vblank_on)
{
- int _state = 0;
-
- const UINT16* p1 = &state->m_helper1.pix16(y);
- const UINT16* p2 = &state->m_helper2.pix16(y);
- const UINT16* p3 = &state->m_helper3.pix16(y);
-
- if (y % 2 != screen.machine().primary_screen->frame_number() % 2)
- continue; /* video display is interlaced */
-
- for (x = visarea.min_x; x <= visarea.max_x; x++)
- {
- UINT8 index;
-
- /* neither wall nor mine */
- if ((p1[x] != 0x11) && (p1[x] != 0x13))
- {
- _state = 0;
- continue;
- }
+ tank8_state *state = screen.machine().driver_data<tank8_state>();
+ int x;
+ int y;
+ const rectangle &visarea = screen.machine().primary_screen->visible_area();
- /* neither tank nor bullet */
- if ((p2[x] == 8) && (p3[x] == 8))
- {
- _state = 0;
- continue;
- }
+ tilemap_draw(state->m_helper1, visarea, state->m_tilemap, 0, 0);
- /* bullets cannot hit mines */
- if ((p3[x] != 8) && (p1[x] == 0x13))
- {
- _state = 0;
- continue;
- }
+ state->m_helper2.fill(8, visarea);
+ state->m_helper3.fill(8, visarea);
- if (_state)
- continue;
+ draw_sprites(screen.machine(), state->m_helper2, visarea);
+ draw_bullets(screen.machine(), state->m_helper3, visarea);
- if (p3[x] != 8)
- {
- index = ((p3[x] & ~0x01) >> 1) | 0x18;
+ for (y = visarea.min_y; y <= visarea.max_y; y++)
+ {
+ int _state = 0;
- if (1)
- index |= 0x20;
+ const UINT16* p1 = &state->m_helper1.pix16(y);
+ const UINT16* p2 = &state->m_helper2.pix16(y);
+ const UINT16* p3 = &state->m_helper3.pix16(y);
- if (0)
- index |= 0x40;
+ if (y % 2 != screen.machine().primary_screen->frame_number() % 2)
+ continue; /* video display is interlaced */
- if (1)
- index |= 0x80;
- }
- else
+ for (x = visarea.min_x; x <= visarea.max_x; x++)
{
- int sprite_num = (p2[x] & ~0x01) >> 1;
- index = sprite_num | 0x10;
-
- if (p1[x] == 0x11)
- index |= 0x20;
-
- if (y - get_y_pos(state, sprite_num) >= 8)
- index |= 0x40; /* collision on bottom side */
-
- if (x - get_x_pos(state, sprite_num) >= 8)
- index |= 0x80; /* collision on right side */
+ UINT8 index;
+
+ /* neither wall nor mine */
+ if ((p1[x] != 0x11) && (p1[x] != 0x13))
+ {
+ _state = 0;
+ continue;
+ }
+
+ /* neither tank nor bullet */
+ if ((p2[x] == 8) && (p3[x] == 8))
+ {
+ _state = 0;
+ continue;
+ }
+
+ /* bullets cannot hit mines */
+ if ((p3[x] != 8) && (p1[x] == 0x13))
+ {
+ _state = 0;
+ continue;
+ }
+
+ if (_state)
+ continue;
+
+ if (p3[x] != 8)
+ {
+ index = ((p3[x] & ~0x01) >> 1) | 0x18;
+
+ if (1)
+ index |= 0x20;
+
+ if (0)
+ index |= 0x40;
+
+ if (1)
+ index |= 0x80;
+ }
+ else
+ {
+ int sprite_num = (p2[x] & ~0x01) >> 1;
+ index = sprite_num | 0x10;
+
+ if (p1[x] == 0x11)
+ index |= 0x20;
+
+ if (y - get_y_pos(state, sprite_num) >= 8)
+ index |= 0x40; /* collision on bottom side */
+
+ if (x - get_x_pos(state, sprite_num) >= 8)
+ index |= 0x80; /* collision on right side */
+ }
+
+ screen.machine().scheduler().timer_set(screen.time_until_pos(y, x), FUNC(tank8_collision_callback), index);
+
+ _state = 1;
}
-
- screen.machine().scheduler().timer_set(screen.time_until_pos(y, x), FUNC(tank8_collision_callback), index);
-
- _state = 1;
}
}
}
diff --git a/src/mame/video/taotaido.c b/src/mame/video/taotaido.c
index a2bc687618d..f12ccc9561c 100644
--- a/src/mame/video/taotaido.c
+++ b/src/mame/video/taotaido.c
@@ -227,14 +227,18 @@ SCREEN_UPDATE_IND16(taotaido)
return 0;
}
-SCREEN_EOF( taotaido )
+SCREEN_VBLANK( taotaido )
{
- taotaido_state *state = screen.machine().driver_data<taotaido_state>();
- /* sprites need to be delayed by 2 frames? */
+ // rising edge
+ if (vblank_on)
+ {
+ taotaido_state *state = screen.machine().driver_data<taotaido_state>();
+ /* sprites need to be delayed by 2 frames? */
- memcpy(state->m_spriteram2_older,state->m_spriteram2_old,0x10000);
- memcpy(state->m_spriteram2_old,state->m_spriteram2,0x10000);
+ memcpy(state->m_spriteram2_older,state->m_spriteram2_old,0x10000);
+ memcpy(state->m_spriteram2_old,state->m_spriteram2,0x10000);
- memcpy(state->m_spriteram_older,state->m_spriteram_old,0x2000);
- memcpy(state->m_spriteram_old,state->m_spriteram,0x2000);
+ memcpy(state->m_spriteram_older,state->m_spriteram_old,0x2000);
+ memcpy(state->m_spriteram_old,state->m_spriteram,0x2000);
+ }
}
diff --git a/src/mame/video/tceptor.c b/src/mame/video/tceptor.c
index c1129251c2f..78483b8c4b1 100644
--- a/src/mame/video/tceptor.c
+++ b/src/mame/video/tceptor.c
@@ -567,8 +567,12 @@ SCREEN_UPDATE_IND16( tceptor_3d_right )
}
-SCREEN_EOF( tceptor )
+SCREEN_VBLANK( tceptor )
{
- tceptor_state *state = screen.machine().driver_data<tceptor_state>();
- memcpy(state->m_sprite_ram_buffered, state->m_sprite_ram, 0x200);
+ // rising edge
+ if (vblank_on)
+ {
+ tceptor_state *state = screen.machine().driver_data<tceptor_state>();
+ memcpy(state->m_sprite_ram_buffered, state->m_sprite_ram, 0x200);
+ }
}
diff --git a/src/mame/video/tigeroad.c b/src/mame/video/tigeroad.c
index 176f5e645f1..305f90a797d 100644
--- a/src/mame/video/tigeroad.c
+++ b/src/mame/video/tigeroad.c
@@ -171,9 +171,13 @@ SCREEN_UPDATE_IND16( tigeroad )
return 0;
}
-SCREEN_EOF( tigeroad )
+SCREEN_VBLANK( tigeroad )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space, 0, 0, 0xffff);
+ buffer_spriteram16_w(space, 0, 0, 0xffff);
+ }
}
diff --git a/src/mame/video/tmnt.c b/src/mame/video/tmnt.c
index fa1a8144d5d..f3a7ca038e4 100644
--- a/src/mame/video/tmnt.c
+++ b/src/mame/video/tmnt.c
@@ -831,8 +831,12 @@ SCREEN_UPDATE_IND16( thndrx2 )
***************************************************************************/
-SCREEN_EOF( blswhstl )
+SCREEN_VBLANK( blswhstl )
{
- tmnt_state *state = screen.machine().driver_data<tmnt_state>();
- k053245_clear_buffer(state->m_k053245);
+ // on falling edge
+ if (!vblank_on)
+ {
+ tmnt_state *state = screen.machine().driver_data<tmnt_state>();
+ k053245_clear_buffer(state->m_k053245);
+ }
}
diff --git a/src/mame/video/tnzs.c b/src/mame/video/tnzs.c
index 17cd1dc35d0..f6c2c8b65cf 100644
--- a/src/mame/video/tnzs.c
+++ b/src/mame/video/tnzs.c
@@ -53,7 +53,9 @@ SCREEN_UPDATE_IND16( tnzs )
return 0;
}
-SCREEN_EOF( tnzs )
+SCREEN_VBLANK( tnzs )
{
- screen.machine().device<seta001_device>("spritegen")->tnzs_eof();
+ // rising edge
+ if (vblank_on)
+ screen.machine().device<seta001_device>("spritegen")->tnzs_eof();
}
diff --git a/src/mame/video/toaplan1.c b/src/mame/video/toaplan1.c
index 4da96e4bdd2..12f00a438fa 100644
--- a/src/mame/video/toaplan1.c
+++ b/src/mame/video/toaplan1.c
@@ -1217,26 +1217,38 @@ SCREEN_UPDATE_IND16( toaplan1 )
assume it happens automatically every frame, at the end of vblank
****************************************************************************/
-SCREEN_EOF( rallybik )
+SCREEN_VBLANK( rallybik )
{
- toaplan1_state *state = screen.machine().driver_data<toaplan1_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ toaplan1_state *state = screen.machine().driver_data<toaplan1_state>();
- memcpy(state->m_buffered_spriteram, state->m_spriteram, state->m_spriteram_size);
+ memcpy(state->m_buffered_spriteram, state->m_spriteram, state->m_spriteram_size);
+ }
}
-SCREEN_EOF( toaplan1 )
+SCREEN_VBLANK( toaplan1 )
{
- toaplan1_state *state = screen.machine().driver_data<toaplan1_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ toaplan1_state *state = screen.machine().driver_data<toaplan1_state>();
- memcpy(state->m_buffered_spriteram, state->m_spriteram, state->m_spriteram_size);
- memcpy(state->m_buffered_spritesizeram16, state->m_spritesizeram16, TOAPLAN1_SPRITESIZERAM_SIZE);
+ memcpy(state->m_buffered_spriteram, state->m_spriteram, state->m_spriteram_size);
+ memcpy(state->m_buffered_spritesizeram16, state->m_spritesizeram16, TOAPLAN1_SPRITESIZERAM_SIZE);
+ }
}
-SCREEN_EOF( samesame )
+SCREEN_VBLANK( samesame )
{
- toaplan1_state *state = screen.machine().driver_data<toaplan1_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ toaplan1_state *state = screen.machine().driver_data<toaplan1_state>();
- memcpy(state->m_buffered_spriteram, state->m_spriteram, state->m_spriteram_size);
- memcpy(state->m_buffered_spritesizeram16, state->m_spritesizeram16, TOAPLAN1_SPRITESIZERAM_SIZE);
- cputag_set_input_line(screen.machine(), "maincpu", M68K_IRQ_2, HOLD_LINE); /* Frame done */
+ memcpy(state->m_buffered_spriteram, state->m_spriteram, state->m_spriteram_size);
+ memcpy(state->m_buffered_spritesizeram16, state->m_spritesizeram16, TOAPLAN1_SPRITESIZERAM_SIZE);
+ cputag_set_input_line(screen.machine(), "maincpu", M68K_IRQ_2, HOLD_LINE); /* Frame done */
+ }
}
diff --git a/src/mame/video/toaplan2.c b/src/mame/video/toaplan2.c
index 32a5ad0e78d..d212849be2b 100644
--- a/src/mame/video/toaplan2.c
+++ b/src/mame/video/toaplan2.c
@@ -485,9 +485,13 @@ SCREEN_UPDATE_IND16( batsugun )
return 0;
}
-SCREEN_EOF( toaplan2 )
+SCREEN_VBLANK( toaplan2 )
{
- toaplan2_state *state = screen.machine().driver_data<toaplan2_state>();
- if (state->m_vdp0) state->m_vdp0->gp9001_screen_eof();
- if (state->m_vdp1) state->m_vdp1->gp9001_screen_eof();
+ // rising edge
+ if (vblank_on)
+ {
+ toaplan2_state *state = screen.machine().driver_data<toaplan2_state>();
+ if (state->m_vdp0) state->m_vdp0->gp9001_screen_eof();
+ if (state->m_vdp1) state->m_vdp1->gp9001_screen_eof();
+ }
}
diff --git a/src/mame/video/toki.c b/src/mame/video/toki.c
index 81f9d78b073..722b9a23da4 100644
--- a/src/mame/video/toki.c
+++ b/src/mame/video/toki.c
@@ -33,14 +33,18 @@ WRITE16_HANDLER( toki_control_w )
COMBINE_DATA(&state->m_scrollram16[offset]);
}
-SCREEN_EOF( toki )
+SCREEN_VBLANK( toki )
{
- buffer_spriteram16_w(screen.machine().device("maincpu")->memory().space(AS_PROGRAM), 0, 0, 0xffff);
+ // rising edge
+ if (vblank_on)
+ buffer_spriteram16_w(screen.machine().device("maincpu")->memory().space(AS_PROGRAM), 0, 0, 0xffff);
}
-SCREEN_EOF( tokib )
+SCREEN_VBLANK( tokib )
{
- buffer_spriteram16_w(screen.machine().device("maincpu")->memory().space(AS_PROGRAM), 0, 0, 0xffff);
+ // rising edge
+ if (vblank_on)
+ buffer_spriteram16_w(screen.machine().device("maincpu")->memory().space(AS_PROGRAM), 0, 0, 0xffff);
}
static TILE_GET_INFO( get_text_tile_info )
diff --git a/src/mame/video/twin16.c b/src/mame/video/twin16.c
index d0aeb2256cb..e5e3d181744 100644
--- a/src/mame/video/twin16.c
+++ b/src/mame/video/twin16.c
@@ -537,24 +537,28 @@ SCREEN_UPDATE_IND16( twin16 )
return 0;
}
-SCREEN_EOF( twin16 )
+SCREEN_VBLANK( twin16 )
{
- twin16_state *state = screen.machine().driver_data<twin16_state>();
- twin16_set_sprite_timer(screen.machine());
-
- if (twin16_spriteram_process_enable(screen.machine())) {
- if (state->m_need_process_spriteram) twin16_spriteram_process(screen.machine());
- state->m_need_process_spriteram = 1;
-
- /* if the sprite preprocessor is used, sprite ram is copied to an external buffer first,
- as evidenced by 1-frame sprite lag in gradius2 and devilw otherwise, though there's probably
- more to it than that */
- memcpy(&screen.machine().generic.buffered_spriteram.u16[0x1800],state->m_sprite_buffer,0x800*sizeof(UINT16));
- memcpy(state->m_sprite_buffer,&screen.machine().generic.spriteram.u16[0x1800],0x800*sizeof(UINT16));
- }
- else {
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- buffer_spriteram16_w(space,0,0,0xffff);
+ // rising edge
+ if (vblank_on)
+ {
+ twin16_state *state = screen.machine().driver_data<twin16_state>();
+ twin16_set_sprite_timer(screen.machine());
+
+ if (twin16_spriteram_process_enable(screen.machine())) {
+ if (state->m_need_process_spriteram) twin16_spriteram_process(screen.machine());
+ state->m_need_process_spriteram = 1;
+
+ /* if the sprite preprocessor is used, sprite ram is copied to an external buffer first,
+ as evidenced by 1-frame sprite lag in gradius2 and devilw otherwise, though there's probably
+ more to it than that */
+ memcpy(&screen.machine().generic.buffered_spriteram.u16[0x1800],state->m_sprite_buffer,0x800*sizeof(UINT16));
+ memcpy(state->m_sprite_buffer,&screen.machine().generic.spriteram.u16[0x1800],0x800*sizeof(UINT16));
+ }
+ else {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ buffer_spriteram16_w(space,0,0,0xffff);
+ }
}
}
diff --git a/src/mame/video/twincobr.c b/src/mame/video/twincobr.c
index 4f5012ecf19..45fc04751e8 100644
--- a/src/mame/video/twincobr.c
+++ b/src/mame/video/twincobr.c
@@ -516,12 +516,16 @@ SCREEN_UPDATE_IND16( toaplan0 )
}
-SCREEN_EOF( toaplan0 )
+SCREEN_VBLANK( toaplan0 )
{
- address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
+ // rising edge
+ if (vblank_on)
+ {
+ address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
- /* Spriteram is always 1 frame ahead, suggesting spriteram buffering.
- There are no CPU output registers that control this so we
- assume it happens automatically every frame, at the end of vblank */
- buffer_spriteram16_w(space,0,0,0xffff);
+ /* Spriteram is always 1 frame ahead, suggesting spriteram buffering.
+ There are no CPU output registers that control this so we
+ assume it happens automatically every frame, at the end of vblank */
+ buffer_spriteram16_w(space,0,0,0xffff);
+ }
}
diff --git a/src/mame/video/tx1.c b/src/mame/video/tx1.c
index 3e484a7a048..dd5435c4e28 100644
--- a/src/mame/video/tx1.c
+++ b/src/mame/video/tx1.c
@@ -1124,7 +1124,7 @@ VIDEO_START( tx1 )
state->m_interrupt_timer->adjust(machine.primary_screen->time_until_pos(CURSOR_YPOS, CURSOR_XPOS));
}
-SCREEN_EOF( tx1 )
+SCREEN_VBLANK( tx1 )
{
tx1_state *state = screen.machine().driver_data<tx1_state>();
/* /VSYNC: Update TZ113 */
@@ -3027,15 +3027,19 @@ VIDEO_START( buggybjr )
state->m_interrupt_timer->adjust(machine.primary_screen->time_until_pos(CURSOR_YPOS, CURSOR_XPOS));
}
-SCREEN_EOF( buggyboy )
+SCREEN_VBLANK( buggyboy )
{
- tx1_state *state = screen.machine().driver_data<tx1_state>();
+ // rising edge
+ if (vblank_on)
+ {
+ tx1_state *state = screen.machine().driver_data<tx1_state>();
- /* /VSYNC: Update TZ113 @ 219 */
- state->m_vregs.slin_val += state->m_vregs.slin_inc;
+ /* /VSYNC: Update TZ113 @ 219 */
+ state->m_vregs.slin_val += state->m_vregs.slin_inc;
- /* /VSYNC: Clear wave LFSR */
- state->m_vregs.wave_lfsr = 0;
+ /* /VSYNC: Clear wave LFSR */
+ state->m_vregs.wave_lfsr = 0;
+ }
}
diff --git a/src/mame/video/ultratnk.c b/src/mame/video/ultratnk.c
index 4302d28b6ac..8ed661f26be 100644
--- a/src/mame/video/ultratnk.c
+++ b/src/mame/video/ultratnk.c
@@ -90,58 +90,62 @@ SCREEN_UPDATE_IND16( ultratnk )
}
-SCREEN_EOF( ultratnk )
+SCREEN_VBLANK( ultratnk )
{
- ultratnk_state *state = screen.machine().driver_data<ultratnk_state>();
- int i;
- UINT16 BG = colortable_entry_get_value(screen.machine().colortable, 0);
- device_t *discrete = screen.machine().device("discrete");
- UINT8 *videoram = state->m_videoram;
+ // rising edge
+ if (vblank_on)
+ {
+ ultratnk_state *state = screen.machine().driver_data<ultratnk_state>();
+ int i;
+ UINT16 BG = colortable_entry_get_value(screen.machine().colortable, 0);
+ device_t *discrete = screen.machine().device("discrete");
+ UINT8 *videoram = state->m_videoram;
- /* check for sprite-playfield collisions */
+ /* check for sprite-playfield collisions */
- for (i = 0; i < 4; i++)
- {
- rectangle rect;
+ for (i = 0; i < 4; i++)
+ {
+ rectangle rect;
- int x;
- int y;
+ int x;
+ int y;
- int bank = 0;
+ int bank = 0;
- UINT8 horz = videoram[0x390 + 2 * i + 0];
- UINT8 vert = videoram[0x398 + 2 * i + 0];
- UINT8 code = videoram[0x398 + 2 * i + 1];
+ UINT8 horz = videoram[0x390 + 2 * i + 0];
+ UINT8 vert = videoram[0x398 + 2 * i + 0];
+ UINT8 code = videoram[0x398 + 2 * i + 1];
- rect.min_x = horz - 15;
- rect.min_y = vert - 15;
- rect.max_x = horz - 15 + screen.machine().gfx[1]->width - 1;
- rect.max_y = vert - 15 + screen.machine().gfx[1]->height - 1;
+ rect.min_x = horz - 15;
+ rect.min_y = vert - 15;
+ rect.max_x = horz - 15 + screen.machine().gfx[1]->width - 1;
+ rect.max_y = vert - 15 + screen.machine().gfx[1]->height - 1;
- rect &= screen.machine().primary_screen->visible_area();
+ rect &= screen.machine().primary_screen->visible_area();
- tilemap_draw(state->m_helper, rect, state->m_playfield, 0, 0);
+ tilemap_draw(state->m_helper, rect, state->m_playfield, 0, 0);
- if (code & 4)
- bank = 32;
+ if (code & 4)
+ bank = 32;
- drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
- (code >> 3) | bank,
- 4,
- 0, 0,
- horz - 15,
- vert - 15, 1);
-
- for (y = rect.min_y; y <= rect.max_y; y++)
- for (x = rect.min_x; x <= rect.max_x; x++)
- if (colortable_entry_get_value(screen.machine().colortable, state->m_helper.pix16(y, x)) != BG)
- state->m_collision[i] = 1;
- }
+ drawgfx_transpen(state->m_helper, rect, screen.machine().gfx[1],
+ (code >> 3) | bank,
+ 4,
+ 0, 0,
+ horz - 15,
+ vert - 15, 1);
- /* update sound status */
+ for (y = rect.min_y; y <= rect.max_y; y++)
+ for (x = rect.min_x; x <= rect.max_x; x++)
+ if (colortable_entry_get_value(screen.machine().colortable, state->m_helper.pix16(y, x)) != BG)
+ state->m_collision[i] = 1;
+ }
- discrete_sound_w(discrete, ULTRATNK_MOTOR_DATA_1, videoram[0x391] & 15);
- discrete_sound_w(discrete, ULTRATNK_MOTOR_DATA_2, videoram[0x393] & 15);
+ /* update sound status */
+
+ discrete_sound_w(discrete, ULTRATNK_MOTOR_DATA_1, videoram[0x391] & 15);
+ discrete_sound_w(discrete, ULTRATNK_MOTOR_DATA_2, videoram[0x393] & 15);
+ }
}
diff --git a/src/mame/video/wolfpack.c b/src/mame/video/wolfpack.c
index 48745e0e484..c3dd86880f0 100644
--- a/src/mame/video/wolfpack.c
+++ b/src/mame/video/wolfpack.c
@@ -291,33 +291,37 @@ SCREEN_UPDATE_IND16( wolfpack )
}
-SCREEN_EOF( wolfpack )
+SCREEN_VBLANK( wolfpack )
{
- wolfpack_state *state = screen.machine().driver_data<wolfpack_state>();
-
- int x;
- int y;
+ // rising edge
+ if (vblank_on)
+ {
+ wolfpack_state *state = screen.machine().driver_data<wolfpack_state>();
- state->m_helper.fill(0);
+ int x;
+ int y;
- draw_ship(screen.machine(), state->m_helper, state->m_helper.cliprect());
+ state->m_helper.fill(0);
- for (y = 128; y < 224 - state->m_torpedo_v; y++)
- {
- int x1 = 248 - state->m_torpedo_h - 1;
- int x2 = 248 - state->m_torpedo_h + 1;
+ draw_ship(screen.machine(), state->m_helper, state->m_helper.cliprect());
- for (x = 2 * x1; x < 2 * x2; x++)
+ for (y = 128; y < 224 - state->m_torpedo_v; y++)
{
- if (x < 0 || x >= state->m_helper.width())
- continue;
- if (y < 0 || y >= state->m_helper.height())
- continue;
-
- if (state->m_helper.pix16(y, x))
- state->m_collision = 1;
+ int x1 = 248 - state->m_torpedo_h - 1;
+ int x2 = 248 - state->m_torpedo_h + 1;
+
+ for (x = 2 * x1; x < 2 * x2; x++)
+ {
+ if (x < 0 || x >= state->m_helper.width())
+ continue;
+ if (y < 0 || y >= state->m_helper.height())
+ continue;
+
+ if (state->m_helper.pix16(y, x))
+ state->m_collision = 1;
+ }
}
- }
- state->m_current_index += 0x300 * 262;
+ state->m_current_index += 0x300 * 262;
+ }
}
diff --git a/src/mame/video/xmen.c b/src/mame/video/xmen.c
index e1402cb8f03..402c8d9f988 100644
--- a/src/mame/video/xmen.c
+++ b/src/mame/video/xmen.c
@@ -142,91 +142,95 @@ SCREEN_UPDATE_IND16( xmen6p_right )
}
/* my lefts and rights are mixed up in several places.. */
-SCREEN_EOF( xmen6p )
+SCREEN_VBLANK( xmen6p )
{
- xmen_state *state = screen.machine().driver_data<xmen_state>();
- int layer[3], bg_colorbase;
- bitmap_ind16 * renderbitmap;
- rectangle cliprect;
- int offset;
-
-// const rectangle *visarea = screen.machine().primary_screen->visible_area();
-// cliprect.min_x = visarea->min_x;
-// cliprect.max_x = visarea->max_x;
-// cliprect.min_y = visarea->min_y;
-// cliprect.max_y = visarea->max_y;
+ // rising edge
+ if (vblank_on)
+ {
+ xmen_state *state = screen.machine().driver_data<xmen_state>();
+ int layer[3], bg_colorbase;
+ bitmap_ind16 * renderbitmap;
+ rectangle cliprect;
+ int offset;
- cliprect.min_x = 0;
- cliprect.max_x = 64 * 8 - 1;
- cliprect.min_y = 2 * 8;
- cliprect.max_y = 30 * 8 - 1;
+ // const rectangle *visarea = screen.machine().primary_screen->visible_area();
+ // cliprect.min_x = visarea->min_x;
+ // cliprect.max_x = visarea->max_x;
+ // cliprect.min_y = visarea->min_y;
+ // cliprect.max_y = visarea->max_y;
+ cliprect.min_x = 0;
+ cliprect.max_x = 64 * 8 - 1;
+ cliprect.min_y = 2 * 8;
+ cliprect.max_y = 30 * 8 - 1;
- if (screen.machine().primary_screen->frame_number() & 0x01)
- {
- /* copy the desired spritelist to the chip */
- memcpy(state->m_k053247_ram, state->m_xmen6p_spriteramright, 0x1000);
-
- /* we write the entire content of the tileram to the chip to ensure
- everything gets marked as dirty and the desired tilemap is rendered
- this is not very efficient!
- */
- for (offset = 0; offset < (0xc000 / 2); offset++)
+ if (screen.machine().primary_screen->frame_number() & 0x01)
{
-// K052109_lsb_w
- k052109_w(state->m_k052109, offset, state->m_xmen6p_tilemapright[offset] & 0x00ff);
- }
+ /* copy the desired spritelist to the chip */
+ memcpy(state->m_k053247_ram, state->m_xmen6p_spriteramright, 0x1000);
- renderbitmap = state->m_screen_right;
- }
- else
- {
- /* copy the desired spritelist to the chip */
- memcpy(state->m_k053247_ram, state->m_xmen6p_spriteramleft, 0x1000);
+ /* we write the entire content of the tileram to the chip to ensure
+ everything gets marked as dirty and the desired tilemap is rendered
+ this is not very efficient!
+ */
+ for (offset = 0; offset < (0xc000 / 2); offset++)
+ {
+ // K052109_lsb_w
+ k052109_w(state->m_k052109, offset, state->m_xmen6p_tilemapright[offset] & 0x00ff);
+ }
- /* we write the entire content of the tileram to the chip to ensure
- everything gets marked as dirty and the desired tilemap is rendered
- this is not very efficient!
- */
- for (offset = 0; offset < (0xc000 / 2); offset++)
- {
-// K052109_lsb_w
- k052109_w(state->m_k052109, offset, state->m_xmen6p_tilemapleft[offset] & 0x00ff);
+ renderbitmap = state->m_screen_right;
}
+ else
+ {
+ /* copy the desired spritelist to the chip */
+ memcpy(state->m_k053247_ram, state->m_xmen6p_spriteramleft, 0x1000);
+ /* we write the entire content of the tileram to the chip to ensure
+ everything gets marked as dirty and the desired tilemap is rendered
- renderbitmap = state->m_screen_left;
- }
+ this is not very efficient!
+ */
+ for (offset = 0; offset < (0xc000 / 2); offset++)
+ {
+ // K052109_lsb_w
+ k052109_w(state->m_k052109, offset, state->m_xmen6p_tilemapleft[offset] & 0x00ff);
+ }
- bg_colorbase = k053251_get_palette_index(state->m_k053251, K053251_CI4);
- state->m_sprite_colorbase = k053251_get_palette_index(state->m_k053251, K053251_CI1);
- state->m_layer_colorbase[0] = k053251_get_palette_index(state->m_k053251, K053251_CI3);
- state->m_layer_colorbase[1] = k053251_get_palette_index(state->m_k053251, K053251_CI0);
- state->m_layer_colorbase[2] = k053251_get_palette_index(state->m_k053251, K053251_CI2);
+ renderbitmap = state->m_screen_left;
+ }
- k052109_tilemap_update(state->m_k052109);
- layer[0] = 0;
- state->m_layerpri[0] = k053251_get_priority(state->m_k053251, K053251_CI3);
- layer[1] = 1;
- state->m_layerpri[1] = k053251_get_priority(state->m_k053251, K053251_CI0);
- layer[2] = 2;
- state->m_layerpri[2] = k053251_get_priority(state->m_k053251, K053251_CI2);
+ bg_colorbase = k053251_get_palette_index(state->m_k053251, K053251_CI4);
+ state->m_sprite_colorbase = k053251_get_palette_index(state->m_k053251, K053251_CI1);
+ state->m_layer_colorbase[0] = k053251_get_palette_index(state->m_k053251, K053251_CI3);
+ state->m_layer_colorbase[1] = k053251_get_palette_index(state->m_k053251, K053251_CI0);
+ state->m_layer_colorbase[2] = k053251_get_palette_index(state->m_k053251, K053251_CI2);
- konami_sortlayers3(layer, state->m_layerpri);
+ k052109_tilemap_update(state->m_k052109);
- screen.machine().priority_bitmap.fill(0, cliprect);
- /* note the '+1' in the background color!!! */
- renderbitmap->fill(16 * bg_colorbase + 1, cliprect);
- k052109_tilemap_draw(state->m_k052109, *renderbitmap, cliprect, layer[0], 0, 1);
- k052109_tilemap_draw(state->m_k052109, *renderbitmap, cliprect, layer[1], 0, 2);
- k052109_tilemap_draw(state->m_k052109, *renderbitmap, cliprect, layer[2], 0, 4);
+ layer[0] = 0;
+ state->m_layerpri[0] = k053251_get_priority(state->m_k053251, K053251_CI3);
+ layer[1] = 1;
+ state->m_layerpri[1] = k053251_get_priority(state->m_k053251, K053251_CI0);
+ layer[2] = 2;
+ state->m_layerpri[2] = k053251_get_priority(state->m_k053251, K053251_CI2);
-/* this isn't supported anymore and it is unsure if still needed; keeping here for reference
- pdrawgfx_shadow_lowpri = 1; fix shadows of boulders in front of feet */
- k053247_sprites_draw(state->m_k053246, *renderbitmap, cliprect);
+ konami_sortlayers3(layer, state->m_layerpri);
+
+ screen.machine().priority_bitmap.fill(0, cliprect);
+ /* note the '+1' in the background color!!! */
+ renderbitmap->fill(16 * bg_colorbase + 1, cliprect);
+ k052109_tilemap_draw(state->m_k052109, *renderbitmap, cliprect, layer[0], 0, 1);
+ k052109_tilemap_draw(state->m_k052109, *renderbitmap, cliprect, layer[1], 0, 2);
+ k052109_tilemap_draw(state->m_k052109, *renderbitmap, cliprect, layer[2], 0, 4);
+
+ /* this isn't supported anymore and it is unsure if still needed; keeping here for reference
+ pdrawgfx_shadow_lowpri = 1; fix shadows of boulders in front of feet */
+ k053247_sprites_draw(state->m_k053246, *renderbitmap, cliprect);
+ }
}