diff options
Diffstat (limited to 'src/mame/drivers/dcheese.cpp')
-rw-r--r-- | src/mame/drivers/dcheese.cpp | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/mame/drivers/dcheese.cpp b/src/mame/drivers/dcheese.cpp index ae549e95787..2c13dd86b9a 100644 --- a/src/mame/drivers/dcheese.cpp +++ b/src/mame/drivers/dcheese.cpp @@ -58,14 +58,17 @@ void dcheese_state::update_irq_state() } -IRQ_CALLBACK_MEMBER(dcheese_state::irq_callback) +uint8_t dcheese_state::iack_r(offs_t offset) { - /* auto-ack the IRQ */ - m_irq_state[irqline] = 0; - update_irq_state(); + if (!machine().side_effects_disabled()) + { + /* auto-ack the IRQ */ + m_irq_state[offset] = 0; + update_irq_state(); + } /* vector is 0x40 + index */ - return 0x40 + irqline; + return 0x40 + offset; } @@ -76,10 +79,13 @@ void dcheese_state::signal_irq(u8 which) } -INTERRUPT_GEN_MEMBER(dcheese_state::vblank) +WRITE_LINE_MEMBER(dcheese_state::vblank) { - logerror("---- VBLANK ----\n"); - signal_irq(4); + if (state) + { + logerror("---- VBLANK ----\n"); + signal_irq(4); + } } @@ -185,6 +191,10 @@ void dcheese_state::main_cpu_map(address_map &map) map(0x300000, 0x300001).w(FUNC(dcheese_state::blitter_unknown_w)); } +void dcheese_state::main_fc7_map(address_map &map) +{ + map(0xfffff0, 0xfffff9).r(FUNC(dcheese_state::iack_r)).umask16(0x00ff); +} /************************************* @@ -376,8 +386,7 @@ void dcheese_state::dcheese(machine_config &config) /* basic machine hardware */ M68000(config, m_maincpu, MAIN_OSC); m_maincpu->set_addrmap(AS_PROGRAM, &dcheese_state::main_cpu_map); - m_maincpu->set_vblank_int("screen", FUNC(dcheese_state::vblank)); - m_maincpu->set_irq_acknowledge_callback(FUNC(dcheese_state::irq_callback)); + m_maincpu->set_addrmap(m68000_device::AS_CPU_SPACE, &dcheese_state::main_fc7_map); M6809(config, m_audiocpu, SOUND_OSC/16); // TODO : Unknown CPU type m_audiocpu->set_addrmap(AS_PROGRAM, &dcheese_state::sound_cpu_map); @@ -396,6 +405,7 @@ void dcheese_state::dcheese(machine_config &config) m_screen->set_visarea(0, 319, 0, 239); m_screen->set_screen_update(FUNC(dcheese_state::screen_update)); m_screen->set_palette("palette"); + m_screen->screen_vblank().set(FUNC(dcheese_state::vblank)); PALETTE(config, "palette", FUNC(dcheese_state::dcheese_palette), 65536); |