diff --git a/src/mess/drivers/spectrum.c b/src/mess/drivers/spectrum.c index 163308645ff..f32f95c6ec5 100644 --- a/src/mess/drivers/spectrum.c +++ b/src/mess/drivers/spectrum.c @@ -645,10 +645,15 @@ static GFXDECODE_START( spectrum ) GFXDECODE_ENTRY( "maincpu", 0x3d00, spectrum_charlayout, 0, 8 ) GFXDECODE_END +void spectrum_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +{ + m_maincpu->set_input_line(0, CLEAR_LINE); +} INTERRUPT_GEN_MEMBER(spectrum_state::spec_interrupt) { - device.execute().set_input_line(0, HOLD_LINE); + m_maincpu->set_input_line(0, HOLD_LINE); + timer_set(attotime::from_ticks(32, m_maincpu->clock()), 0, 0); } DEVICE_IMAGE_LOAD_MEMBER(spectrum_state, spectrum_cart) diff --git a/src/mess/includes/spectrum.h b/src/mess/includes/spectrum.h index dd86e8f242b..25064cffbd7 100644 --- a/src/mess/includes/spectrum.h +++ b/src/mess/includes/spectrum.h @@ -242,6 +242,7 @@ protected: void ts2068_hires_scanline(bitmap_ind16 &bitmap, int y, int borderlines); void ts2068_64col_scanline(bitmap_ind16 &bitmap, int y, int borderlines, unsigned short inkcolor); void ts2068_lores_scanline(bitmap_ind16 &bitmap, int y, int borderlines, int screen); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); }; diff --git a/src/mess/video/spectrum.c b/src/mess/video/spectrum.c index d3640db4ce6..a39699c758b 100644 --- a/src/mess/video/spectrum.c +++ b/src/mess/video/spectrum.c @@ -21,7 +21,7 @@ ***************************************************************************/ VIDEO_START_MEMBER(spectrum_state,spectrum) { - m_frame_invert_count = 25; + m_frame_invert_count = 16; m_frame_number = 0; m_flash_invert = 0; @@ -37,7 +37,7 @@ VIDEO_START_MEMBER(spectrum_state,spectrum) VIDEO_START_MEMBER(spectrum_state,spectrum_128) { - m_frame_invert_count = 25; + m_frame_invert_count = 16; m_frame_number = 0; m_flash_invert = 0;