From c9df4f7cf869aa2203ba52991d81e0f759cf1470 Mon Sep 17 00:00:00 2001 From: mamehaze <140764005+mamehaze@users.noreply.github.com> Date: Wed, 23 Oct 2024 17:08:40 +0100 Subject: igs/igs_m027_023vid.cpp: Trigger FIQ at start of vertical blanking and IRQ at end of vertical blanking. (#12895) --- src/mame/igs/igs_m027_023vid.cpp | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/src/mame/igs/igs_m027_023vid.cpp b/src/mame/igs/igs_m027_023vid.cpp index 5ffc4ecc865..bf690cec2b2 100644 --- a/src/mame/igs/igs_m027_023vid.cpp +++ b/src/mame/igs/igs_m027_023vid.cpp @@ -118,8 +118,6 @@ private: void gpio_w(u8 data); - TIMER_DEVICE_CALLBACK_MEMBER(interrupt); - u16 sprites_r(offs_t offset); void screen_vblank(int state); @@ -164,6 +162,13 @@ void igs_m027_023vid_state::screen_vblank(int state) { // first 0xa00 of main ram = sprites, seems to be buffered, DMA? m_video->get_sprites(); + + m_maincpu->pulse_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, m_maincpu->minimum_quantum_time()); + } + else + { + // this handles palette transfers, what scanline should it happen on? incorrect frame timing causes some graphics to be missing in service mode + igs_m027_023vid_state::irq_w<0>(ASSERT_LINE); } } @@ -358,24 +363,6 @@ void igs_m027_023vid_state::gpio_w(u8 data) m_gpio_out = data; } - -TIMER_DEVICE_CALLBACK_MEMBER(igs_m027_023vid_state::interrupt) -{ - int const scanline = param; - - switch (scanline) - { - case 0: - m_maincpu->pulse_input_line(arm7_cpu_device::ARM7_FIRQ_LINE, m_maincpu->minimum_quantum_time()); // vbl? - break; - - case 192: - igs_m027_023vid_state::irq_w<0>(ASSERT_LINE); - break; - } -} - - u16 igs_m027_023vid_state::sprites_r(offs_t offset) { // there does seem to be a spritelist at the start of mainram like PGM @@ -417,8 +404,6 @@ void igs_m027_023vid_state::m027_023vid(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1200/2); - TIMER(config, "scantimer").configure_scanline(FUNC(igs_m027_023vid_state::interrupt), "screen", 0, 1); - // PGM video IGS023_VIDEO(config, m_video, 0); m_video->set_palette(m_palette); -- cgit v1.2.3