summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/metro.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/metro.cpp')
-rw-r--r--src/mame/drivers/metro.cpp37
1 files changed, 15 insertions, 22 deletions
diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp
index 4d81248f82c..8ca1da5ee47 100644
--- a/src/mame/drivers/metro.cpp
+++ b/src/mame/drivers/metro.cpp
@@ -131,18 +131,11 @@ void metro_state::cpu_space_map(address_map &map)
}
-void metro_state::device_timer(emu_timer &timer, device_timer_id id, int param)
+TIMER_CALLBACK_MEMBER(metro_state::mouja_irq)
{
- switch (id)
- {
- case TIMER_MOUJA_IRQ:
- if (m_vdp) m_vdp->set_irq(0);
- if (m_vdp2) m_vdp2->set_irq(0);
- if (m_vdp3) m_vdp3->set_irq(0);
- break;
- default:
- throw emu_fatalerror("Unknown id in metro_state::device_timer");
- }
+ if (m_vdp) m_vdp->set_irq(0);
+ if (m_vdp2) m_vdp2->set_irq(0);
+ if (m_vdp3) m_vdp3->set_irq(0);
}
WRITE_LINE_MEMBER(metro_state::vblank_irq)
@@ -210,7 +203,7 @@ WRITE_LINE_MEMBER(metro_state::ext_irq5_enable_w)
m_ext_irq_enable = state;
}
-void metro_state::mouja_irq_timer_ctrl_w(uint16_t data)
+void metro_state::mouja_irq_timer_ctrl_w(u16 data)
{
double freq = 58.0 + (0xff - (data & 0xff)) / 2.2; /* 0xff=58Hz, 0x80=116Hz? */
@@ -414,7 +407,7 @@ void metro_state::coin_lockout_1word_w(u8 data)
// value written doesn't matter, also each counted coin gets reported after one full second.
// TODO: maybe the counter also controls lockout?
-void metro_state::coin_lockout_4words_w(offs_t offset, uint16_t data)
+void metro_state::coin_lockout_4words_w(offs_t offset, u16 data)
{
machine().bookkeeping().coin_counter_w((offset >> 1) & 1, offset & 1);
// machine().bookkeeping().coin_lockout_w((offset >> 1) & 1, offset & 1);
@@ -458,11 +451,11 @@ void metro_state::ymf278_map(address_map &map)
***************************************************************************/
/* Really weird way of mapping 3 DSWs */
-uint16_t metro_state::balcube_dsw_r(offs_t offset)
+u16 metro_state::balcube_dsw_r(offs_t offset)
{
- uint16_t dsw1 = ioport("DSW0")->read() >> 0;
- uint16_t dsw2 = ioport("DSW0")->read() >> 8;
- uint16_t dsw3 = ioport("IN2")->read();
+ u16 dsw1 = ioport("DSW0")->read() >> 0;
+ u16 dsw2 = ioport("DSW0")->read() >> 8;
+ u16 dsw3 = ioport("IN2")->read();
switch (offset * 2)
{
@@ -721,9 +714,9 @@ void metro_state::gakusai_oki_bank_lo_w(u8 data)
}
-uint16_t metro_state::gakusai_input_r()
+u16 metro_state::gakusai_input_r()
{
- uint16_t input_sel = (*m_input_sel) ^ 0x3e;
+ u16 input_sel = (*m_input_sel) ^ 0x3e;
// Bit 0 ??
if (input_sel & 0x0002) return ioport("KEY0")->read();
if (input_sel & 0x0004) return ioport("KEY1")->read();
@@ -1040,7 +1033,7 @@ void metro_state::mouja_okimap(address_map &map)
Puzzlet
***************************************************************************/
-void metro_state::puzzlet_irq_enable_w(uint8_t data)
+void metro_state::puzzlet_irq_enable_w(u8 data)
{
m_vdp2->irq_enable_w(data ^ 0xff);
}
@@ -1070,7 +1063,7 @@ void metro_state::puzzlet_map(address_map &map)
}
-void metro_state::puzzlet_portb_w(uint16_t data)
+void metro_state::puzzlet_portb_w(u16 data)
{
// popmessage("PORTB %02x", data);
}
@@ -5422,7 +5415,7 @@ void metro_state::init_vmetal()
void metro_state::init_mouja()
{
- m_mouja_irq_timer = timer_alloc(TIMER_MOUJA_IRQ);
+ m_mouja_irq_timer = timer_alloc(FUNC(metro_state::mouja_irq), this);
m_okibank->configure_entries(0, 8, memregion("oki")->base(), 0x20000);
}