From dbe50501811ed424ea727edca2b4666b89599a82 Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 12 May 2022 09:31:03 -0400 Subject: [PATCH] cheekyms: Add screen raw parameters; modernize VBLANK interrupt --- src/mame/drivers/cheekyms.cpp | 16 ++++++---------- src/mame/includes/cheekyms.h | 2 +- src/mame/video/cheekyms.cpp | 4 +++- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/mame/drivers/cheekyms.cpp b/src/mame/drivers/cheekyms.cpp index e1d29578682..05ed301bba6 100644 --- a/src/mame/drivers/cheekyms.cpp +++ b/src/mame/drivers/cheekyms.cpp @@ -114,30 +114,26 @@ void cheekyms_state::machine_start() save_item(NAME(m_irq_mask)); } -INTERRUPT_GEN_MEMBER(cheekyms_state::vblank_irq) +WRITE_LINE_MEMBER(cheekyms_state::vblank_int_w) { - if(m_irq_mask) - device.execute().set_input_line(0, HOLD_LINE); + if (m_irq_mask) + m_maincpu->set_input_line(0, ASSERT_LINE); } void cheekyms_state::cheekyms(machine_config &config) { /* basic machine hardware */ - Z80(config, m_maincpu, 5000000/2); /* 2.5 MHz */ + Z80(config, m_maincpu, 5_MHz_XTAL / 2); /* 2.5 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &cheekyms_state::main_map); m_maincpu->set_addrmap(AS_IO, &cheekyms_state::io_map); - m_maincpu->set_vblank_int("screen", FUNC(cheekyms_state::vblank_irq)); - /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_refresh_hz(60); - m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); - m_screen->set_size(32*8, 32*8); - m_screen->set_visarea(0*8, 32*8-1, 4*8, 28*8-1); + m_screen->set_raw(10.816_MHz_XTAL / 2, 352, 0, 256, 262, 32, 224); m_screen->set_screen_update(FUNC(cheekyms_state::screen_update)); m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(cheekyms_state::vblank_int_w)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_cheekyms); PALETTE(config, m_palette, FUNC(cheekyms_state::cheekyms_palette), 0xc0); diff --git a/src/mame/includes/cheekyms.h b/src/mame/includes/cheekyms.h index f92dceb5f7d..cd3d6c03de7 100644 --- a/src/mame/includes/cheekyms.h +++ b/src/mame/includes/cheekyms.h @@ -44,7 +44,7 @@ private: void port_40_w(uint8_t data); void port_80_w(uint8_t data); - INTERRUPT_GEN_MEMBER(vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_int_w); TILE_GET_INFO_MEMBER(get_tile_info); diff --git a/src/mame/video/cheekyms.cpp b/src/mame/video/cheekyms.cpp index 438084a922d..dbada8340e8 100644 --- a/src/mame/video/cheekyms.cpp +++ b/src/mame/video/cheekyms.cpp @@ -63,7 +63,9 @@ void cheekyms_state::port_80_w(uint8_t data) *m_port_80 = data; /* d2 - interrupt enable */ - m_irq_mask = data & 4; + m_irq_mask = BIT(data, 2); + if (!m_irq_mask) + m_maincpu->set_input_line(0, CLEAR_LINE); }