From 339bfa52d9e7bd2973db24db63d9d8fa7618f6b1 Mon Sep 17 00:00:00 2001 From: hap Date: Wed, 31 Aug 2022 12:31:47 +0200 Subject: zerohour_stars: remove need for trampoline --- src/mame/atari/atarisy2.cpp | 1 + src/mame/universal/sraider.cpp | 10 +--------- src/mame/universal/zerohour.cpp | 9 +-------- src/mame/universal/zerohour_stars.cpp | 5 +++-- src/mame/universal/zerohour_stars.h | 2 +- 5 files changed, 7 insertions(+), 20 deletions(-) diff --git a/src/mame/atari/atarisy2.cpp b/src/mame/atari/atarisy2.cpp index 16ce74a0bbd..7add4802a28 100644 --- a/src/mame/atari/atarisy2.cpp +++ b/src/mame/atari/atarisy2.cpp @@ -1259,6 +1259,7 @@ void atarisy2_state::atarisy2(machine_config &config) GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, m6502_device::NMI_LINE); + // apb3 fails the self-test with a 100 µs delay or less m_soundlatch->data_pending_callback().append([this](int state) { if (state) machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(200)); }); GENERIC_LATCH_8(config, m_mainlatch); diff --git a/src/mame/universal/sraider.cpp b/src/mame/universal/sraider.cpp index 421d10b7736..3c7591d27e9 100644 --- a/src/mame/universal/sraider.cpp +++ b/src/mame/universal/sraider.cpp @@ -59,7 +59,6 @@ protected: u8 rnd_r(); virtual void io_w(u8 data); void mrsdyna_palette(palette_device &palette) const; - DECLARE_WRITE_LINE_MEMBER(update_stars); virtual void machine_start() override; virtual u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -95,7 +94,6 @@ public: protected: virtual void io_w(u8 data) override; void sraider_palette(palette_device &palette) const; - DECLARE_WRITE_LINE_MEMBER(update_stars); TILE_GET_INFO_MEMBER(get_grid_tile_info); tilemap_t *m_grid_tilemap = nullptr; @@ -238,12 +236,6 @@ void sraider_state::video_start() m_grid_tilemap->set_transparent_pen(0); } -WRITE_LINE_MEMBER(sraider_state::update_stars) -{ - if (!state) - m_stars->update_state(); -} - u32 mrsdyna_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { // clear the bg bitmap @@ -678,7 +670,7 @@ void sraider_state::sraider(machine_config &config) PALETTE(config.replace(), m_palette, FUNC(sraider_state::sraider_palette), 4*8 + 4*16 + 32 + 2, 32 + 32 + 1); ZEROHOUR_STARS(config, m_stars).has_va_bit(false); - subdevice("screen")->screen_vblank().set(FUNC(sraider_state::update_stars)); + subdevice("screen")->screen_vblank().set(m_stars, FUNC(zerohour_stars_device::update_state)); } diff --git a/src/mame/universal/zerohour.cpp b/src/mame/universal/zerohour.cpp index 51a553d40ab..921b527ed37 100644 --- a/src/mame/universal/zerohour.cpp +++ b/src/mame/universal/zerohour.cpp @@ -76,7 +76,6 @@ protected: virtual void machine_start() override; virtual void video_start() override; - DECLARE_WRITE_LINE_MEMBER(update_stars); void videoram_w(offs_t offset, u8 data); DECLARE_WRITE_LINE_MEMBER(flipscreen_w); void irqack_w(u8 data) { m_maincpu->set_input_line(0, CLEAR_LINE); } @@ -289,12 +288,6 @@ void zerohour_state::star_reset_w(u8 data) m_stars->set_enable(true); } -WRITE_LINE_MEMBER(zerohour_state::update_stars) -{ - if (!state) - m_stars->update_state(); -} - TILE_GET_INFO_MEMBER(zerohour_state::get_fg_tile_info) { @@ -783,7 +776,7 @@ void zerohour_state::base(machine_config &config) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(9.828_MHz_XTAL / 2, 312, 8, 248, 262, 32, 224); screen.set_screen_update(FUNC(zerohour_state::screen_update)); - screen.screen_vblank().set(FUNC(zerohour_state::update_stars)); + screen.screen_vblank().set(m_stars, FUNC(zerohour_stars_device::update_state)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_zerohour); diff --git a/src/mame/universal/zerohour_stars.cpp b/src/mame/universal/zerohour_stars.cpp index ec541de5104..22c36008a6c 100644 --- a/src/mame/universal/zerohour_stars.cpp +++ b/src/mame/universal/zerohour_stars.cpp @@ -65,9 +65,10 @@ void zerohour_stars_device::set_enable(bool on) } // This sets up which starfield to draw and the offset, to be called from screen_vblank_*() -void zerohour_stars_device::update_state() +void zerohour_stars_device::update_state(int state) { - if (m_enable) + // end of vblank + if (!state && m_enable) { m_count = m_count ? 0 : 1; if (!m_count) diff --git a/src/mame/universal/zerohour_stars.h b/src/mame/universal/zerohour_stars.h index c5d00454bc5..eb4aa9d5d96 100644 --- a/src/mame/universal/zerohour_stars.h +++ b/src/mame/universal/zerohour_stars.h @@ -17,7 +17,7 @@ public: // public interface void set_enable(bool on); - void update_state(); + void update_state(int state); void set_speed(u8 speed, u8 mask); void draw(bitmap_ind16 &bitmap, rectangle const &cliprect); -- cgit v1.2.3