From ae1aa998a37afcbc00bcc0ca6c3f3c2000958392 Mon Sep 17 00:00:00 2001 From: hap Date: Wed, 16 Oct 2019 18:01:03 +0200 Subject: [PATCH] mustache: game runs in IM1(no irq vector used), irq stays high during vblank, old regression from https://github.com/mamedev/mame/commit/0a7b50a0054aa8aa7218c5542f00cd4b6ec723dc (nw) --- src/mame/drivers/darkmist.cpp | 4 ++-- src/mame/drivers/metlfrzr.cpp | 4 ++-- src/mame/drivers/mustache.cpp | 15 ++------------- src/mame/drivers/pc8401a.cpp | 2 +- src/mame/includes/mustache.h | 1 - 5 files changed, 7 insertions(+), 19 deletions(-) diff --git a/src/mame/drivers/darkmist.cpp b/src/mame/drivers/darkmist.cpp index a0149a4c0ec..3e2e1c75864 100644 --- a/src/mame/drivers/darkmist.cpp +++ b/src/mame/drivers/darkmist.cpp @@ -231,10 +231,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(darkmist_state::scanline) int scanline = param; if(scanline == 240) // vblank-out irq - m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x10); /* Z80 - RST 10h */ + m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xd7); /* Z80 - RST 10h */ if(scanline == 0) // vblank-in irq - m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x08); /* Z80 - RST 08h */ + m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xcf); /* Z80 - RST 08h */ } diff --git a/src/mame/drivers/metlfrzr.cpp b/src/mame/drivers/metlfrzr.cpp index b436bdd6686..65fcaf95eac 100644 --- a/src/mame/drivers/metlfrzr.cpp +++ b/src/mame/drivers/metlfrzr.cpp @@ -359,11 +359,11 @@ TIMER_DEVICE_CALLBACK_MEMBER(metlfrzr_state::scanline) int scanline = param; if(scanline == 240) // vblank-out irq - m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x10); /* Z80 - RST 10h */ + m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xd7); /* Z80 - RST 10h */ // TODO: check this irq. if(scanline == 0) // vblank-in irq - m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x08); /* Z80 - RST 08h */ + m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xcf); /* Z80 - RST 08h */ } void metlfrzr_state::metlfrzr(machine_config &config) diff --git a/src/mame/drivers/mustache.cpp b/src/mame/drivers/mustache.cpp index f3fdf7c9232..f02df863948 100644 --- a/src/mame/drivers/mustache.cpp +++ b/src/mame/drivers/mustache.cpp @@ -166,17 +166,6 @@ static GFXDECODE_START( gfx_mustache ) GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x80, 8 ) GFXDECODE_END -TIMER_DEVICE_CALLBACK_MEMBER(mustache_state::scanline) -{ - int scanline = param; - - if(scanline == 240) // vblank-out irq - m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x10); /* Z80 - RST 10h */ - - if(scanline == 0) // vblank-in irq - m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x08); /* Z80 - RST 08h */ -} - void mustache_state::mustache(machine_config &config) @@ -185,7 +174,6 @@ void mustache_state::mustache(machine_config &config) Z80(config, m_maincpu, CPU_CLOCK); m_maincpu->set_addrmap(AS_PROGRAM, &mustache_state::memmap); m_maincpu->set_addrmap(AS_OPCODES, &mustache_state::decrypted_opcodes_map); - TIMER(config, "scantimer").configure_scanline(FUNC(mustache_state::scanline), "screen", 0, 1); SEI80BU(config, "sei80bu", 0).set_device_rom_tag("maincpu"); @@ -194,11 +182,12 @@ void mustache_state::mustache(machine_config &config) /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(56.747); - m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); m_screen->set_size(32*8, 32*8); m_screen->set_visarea(1*8, 31*8-1, 0, 31*8-1); m_screen->set_screen_update(FUNC(mustache_state::screen_update)); m_screen->set_palette(m_palette); + m_screen->screen_vblank().set_inputline(m_maincpu, INPUT_LINE_IRQ0); GFXDECODE(config, m_gfxdecode, m_palette, gfx_mustache); PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256); diff --git a/src/mame/drivers/pc8401a.cpp b/src/mame/drivers/pc8401a.cpp index d8e05c318ee..770e7ad0505 100644 --- a/src/mame/drivers/pc8401a.cpp +++ b/src/mame/drivers/pc8401a.cpp @@ -57,7 +57,7 @@ void pc8401a_state::scan_keyboard() if (!m_key_strobe && strobe) { /* trigger interrupt */ - m_maincpu->set_input_line_and_vector(INPUT_LINE_IRQ0, ASSERT_LINE, 0x28); // Z80 + m_maincpu->set_input_line_and_vector(INPUT_LINE_IRQ0, ASSERT_LINE, 0xef); // Z80 - RST 28h logerror("INTERRUPT\n"); } diff --git a/src/mame/includes/mustache.h b/src/mame/includes/mustache.h index 25f8d451377..fc55e34dcf6 100644 --- a/src/mame/includes/mustache.h +++ b/src/mame/includes/mustache.h @@ -54,7 +54,6 @@ private: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); - TIMER_DEVICE_CALLBACK_MEMBER(scanline); void decrypted_opcodes_map(address_map &map); void memmap(address_map &map); };