summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/dcheese.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/dcheese.cpp')
-rw-r--r--src/mame/drivers/dcheese.cpp30
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);