(MESS) nes.c: Reduce some tagmap lookups (nw)

This commit is contained in:
Wilbert Pol 2014-09-19 19:54:14 +00:00
parent d22bf6e26f
commit 711106a283
28 changed files with 112 additions and 108 deletions

View File

@ -129,7 +129,7 @@ void nes_fcg_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -150,7 +150,7 @@ void nes_lz93d50_24c01_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -173,7 +173,7 @@ void nes_fjump2_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_reg));
}
@ -306,7 +306,7 @@ void nes_fcg_device::device_timer(emu_timer &timer, device_timer_id id, int para
if (!m_irq_count)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_enable = 0;
}
}
@ -337,7 +337,7 @@ WRITE8_MEMBER(nes_fcg_device::fcg_write)
break;
case 0x0a:
m_irq_enable = data & 0x01;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x0b:
m_irq_count = (m_irq_count & 0xff00) | data;

View File

@ -208,7 +208,7 @@ void nes_mbaby_device::device_start()
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->reset();
timer_freq = machine().device<cpu_device>("maincpu")->cycles_to_attotime(24576);
timer_freq = m_maincpu->cycles_to_attotime(24576);
save_item(NAME(m_irq_enable));
save_item(NAME(m_latch));
@ -243,7 +243,7 @@ void nes_smb3p_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -297,7 +297,7 @@ void nes_smb2j_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -320,7 +320,7 @@ void nes_smb2ja_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -343,7 +343,7 @@ void nes_smb2jb_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -429,7 +429,7 @@ void nes_lh53_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -510,7 +510,7 @@ void nes_shuiguan_device::device_start()
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
// always running and checking for IRQ every 114 cycles? or resetting every frame?
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(114));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(114));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -627,7 +627,7 @@ void nes_sc127_device::hblank_irq(int scanline, int vblank, int blanked)
{
LOG_MMC(("irq fired, scanline: %d (MAME %d, beam pos: %d)\n", scanline,
machine().first_screen()->vpos(), machine().first_screen()->hpos()));
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_irq_enable = 0;
}
}
@ -691,7 +691,7 @@ void nes_mbaby_device::device_timer(emu_timer &timer, device_timer_id id, int pa
{
if (id == TIMER_IRQ)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
irq_timer->adjust(attotime::never);
}
}
@ -783,7 +783,7 @@ void nes_smb3p_device::device_timer(emu_timer &timer, device_timer_id id, int pa
{
if (m_irq_count == 0xffff)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_irq_enable = 0;
}
else
@ -857,7 +857,7 @@ void nes_btl_dn_device::hblank_irq(int scanline, int vblank, int blanked )
return;
m_irq_count = 0;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
WRITE8_MEMBER(nes_btl_dn_device::write_h)
@ -946,7 +946,7 @@ void nes_smb2j_device::device_timer(emu_timer &timer, device_timer_id id, int pa
{
if (m_irq_count == 0xfff)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_irq_enable = 0;
m_irq_count = 0;
}
@ -1028,7 +1028,7 @@ void nes_smb2ja_device::device_timer(emu_timer &timer, device_timer_id id, int p
{
if (m_irq_count == 0xfff)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_irq_enable = 0;
m_irq_count = 0;
}
@ -1085,7 +1085,7 @@ void nes_smb2jb_device::device_timer(emu_timer &timer, device_timer_id id, int p
{
if (m_irq_count == 0xfff)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_irq_enable = 0;
m_irq_count = 0;
}
@ -1330,7 +1330,7 @@ void nes_lh53_device::device_timer(emu_timer &timer, device_timer_id id, int par
if (m_irq_count > 7560)//value from FCEUMM...
{
m_irq_count = 0;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
}
}
}
@ -1367,7 +1367,7 @@ WRITE8_MEMBER(nes_lh53_device::write_h)
m_irq_enable = BIT(data, 1);
m_irq_count = 0;
if (!m_irq_enable)
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x7000:
m_reg = data & 0x0f;
@ -1572,7 +1572,7 @@ void nes_shuiguan_device::device_timer(emu_timer &timer, device_timer_id id, int
m_irq_count &= 0xff;
if (m_irq_enable && !m_irq_count)
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
}

View File

@ -62,7 +62,7 @@ void nes_cony_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -98,7 +98,7 @@ void nes_yoko_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -161,7 +161,7 @@ void nes_cony_device::device_timer(emu_timer &timer, device_timer_id id, int par
{
if (!m_irq_count)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_irq_enable = 0;
m_irq_count = 0xffff;
}

View File

@ -242,8 +242,8 @@ void nes_datach_device::device_start()
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
serial_timer = timer_alloc(TIMER_SERIAL);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
serial_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1000));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
serial_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1000));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -409,7 +409,7 @@ void nes_datach_device::device_timer(emu_timer &timer, device_timer_id id, int p
if (!m_irq_count)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_enable = 0;
}
}

View File

@ -123,7 +123,7 @@ void nes_disksys_device::device_start()
m_disk->floppy_install_unload_proc(nes_disksys_device::unload_proc);
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_fds_motor_on));
save_item(NAME(m_fds_door_closed));
@ -212,7 +212,7 @@ READ8_MEMBER(nes_disksys_device::read_m)
void nes_disksys_device::hblank_irq(int scanline, int vblank, int blanked)
{
if (m_irq_transfer)
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
WRITE8_MEMBER(nes_disksys_device::write_ex)
@ -378,7 +378,7 @@ void nes_disksys_device::device_timer(emu_timer &timer, device_timer_id id, int
m_irq_count--;
if (!m_irq_count)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_irq_enable = 0;
m_fds_status0 |= 0x01;
m_irq_count_latch = 0; // used in Kaettekita Mario Bros

View File

@ -48,7 +48,7 @@ void nes_event_device::device_start()
common_start();
event_timer = timer_alloc(TIMER_EVENT);
event_timer->adjust(attotime::never);
timer_freq = machine().device<cpu_device>("maincpu")->cycles_to_attotime(1);
timer_freq = m_maincpu->cycles_to_attotime(1);
save_item(NAME(m_latch));
save_item(NAME(m_count));
@ -150,7 +150,7 @@ void nes_event_device::set_prg()
if (m_reg[1] & 0x10)
{
m_timer_enabled = 1;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
}
else
{
@ -233,7 +233,7 @@ void nes_event_device::device_timer(emu_timer &timer, device_timer_id id, int pa
m_timer_count--;
if (!m_timer_count)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
event_timer->reset();
}
}

View File

@ -119,7 +119,7 @@ WRITE8_MEMBER(nes_ggenie_device::write_h)
if (offset == 0 && data == 0)
{
m_gg_bypass = 1;
machine().device<cpu_device>("maincpu")->set_pc(0xfffc);
m_maincpu->set_pc(0xfffc);
}
else
{

View File

@ -196,7 +196,7 @@ void nes_hengg_shjy3_device::hblank_irq(int scanline, int vblank, int blanked)
{
m_irq_count = m_irq_count_latch;
m_irq_enable = m_irq_enable | ((m_irq_enable & 0x01) << 1);
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
else
m_irq_count++;

View File

@ -96,7 +96,7 @@ void nes_hosenkan_device::hblank_irq( int scanline, int vblank, int blanked )
{
LOG_MMC(("irq fired, scanline: %d (MAME %d, beam pos: %d)\n", scanline,
machine().first_screen()->vpos(), machine().first_screen()->hpos()));
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
}
m_irq_clear = 0;

View File

@ -131,7 +131,7 @@ void nes_h3001_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -295,7 +295,7 @@ void nes_h3001_device::device_timer(emu_timer &timer, device_timer_id id, int pa
if (!m_irq_count)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_enable = 0;
}
}
@ -318,12 +318,12 @@ WRITE8_MEMBER(nes_h3001_device::write_h)
case 0x1003:
m_irq_enable = data & 0x80;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x1004:
m_irq_count = m_irq_count_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x1005:

View File

@ -209,7 +209,7 @@ void nes_ss88006_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_mmc_prg_bank));
save_item(NAME(m_mmc_vrom_bank));
@ -434,7 +434,7 @@ void nes_ss88006_device::device_timer(emu_timer &timer, device_timer_id id, int
{
if (!(m_irq_count & 0x000f))
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_count = (m_irq_count & 0xfff0) | 0x000f;
}
else
@ -444,7 +444,7 @@ void nes_ss88006_device::device_timer(emu_timer &timer, device_timer_id id, int
{
if (!(m_irq_count & 0x00ff))
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_count = (m_irq_count & 0xff00) | 0x00ff;
}
else
@ -454,7 +454,7 @@ void nes_ss88006_device::device_timer(emu_timer &timer, device_timer_id id, int
{
if (!(m_irq_count & 0x0fff))
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_count = (m_irq_count & 0xf000) | 0x0fff;
}
else
@ -464,7 +464,7 @@ void nes_ss88006_device::device_timer(emu_timer &timer, device_timer_id id, int
{
if (!m_irq_count)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_count = 0xffff;
}
else
@ -536,12 +536,12 @@ WRITE8_MEMBER(nes_ss88006_device::ss88006_write)
break;
case 0x7000:
m_irq_count = m_irq_count_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x7001:
m_irq_enable = data & 0x01;
m_irq_mode = data & 0x0e;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x7002:

View File

@ -76,7 +76,7 @@ void nes_jy_typea_device::device_start()
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->reset();
timer_freq = machine().device<cpu_device>("maincpu")->cycles_to_attotime(1);
timer_freq = m_maincpu->cycles_to_attotime(1);
save_item(NAME(m_mul));
save_item(NAME(m_latch));
@ -221,7 +221,7 @@ void nes_jy_typea_device::irq_clock(int mode, int blanked)
// if count wraps, check if IRQ is enabled
if (fire && m_irq_enable && !blanked)
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
}
}
@ -478,7 +478,7 @@ WRITE8_MEMBER(nes_jy_typea_device::write_h)
m_irq_enable = 1;
else
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_irq_enable = 0;
}
break;
@ -493,7 +493,7 @@ WRITE8_MEMBER(nes_jy_typea_device::write_h)
irq_timer->adjust(attotime::never);
break;
case 2:
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_irq_enable = 0;
break;
case 3:

View File

@ -138,7 +138,7 @@ void nes_ks7032_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_latch));
save_item(NAME(m_irq_enable));
@ -164,7 +164,7 @@ void nes_ks7017_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_latch));
save_item(NAME(m_irq_enable));
@ -329,7 +329,7 @@ void nes_ks7032_device::device_timer(emu_timer &timer, device_timer_id id, int p
{
m_irq_enable = 0;
m_irq_count = 0;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
else
m_irq_count++;
@ -445,7 +445,7 @@ void nes_ks7017_device::device_timer(emu_timer &timer, device_timer_id id, int p
{
if (!m_irq_count)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_irq_enable = 0;
m_irq_status |= 0x01;
}

View File

@ -129,7 +129,7 @@ void nes_konami_vrc3_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_mode));
save_item(NAME(m_irq_enable));
@ -157,7 +157,7 @@ void nes_konami_vrc4_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_mode));
save_item(NAME(m_irq_prescale));
@ -198,7 +198,7 @@ void nes_konami_vrc7_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_mode));
save_item(NAME(m_irq_prescale));
@ -369,7 +369,7 @@ void nes_konami_vrc3_device::device_timer(emu_timer &timer, device_timer_id id,
{
if ((m_irq_count & 0x00ff) == 0xff)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_count = m_irq_count_latch;
}
else
@ -379,7 +379,7 @@ void nes_konami_vrc3_device::device_timer(emu_timer &timer, device_timer_id id,
{
if (m_irq_count == 0xffff)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_count = m_irq_count_latch;
}
else
@ -413,11 +413,11 @@ WRITE8_MEMBER(nes_konami_vrc3_device::write_h)
m_irq_enable_latch = data & 0x01;
if (data & 0x02)
m_irq_count = m_irq_count_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x5000:
m_irq_enable = m_irq_enable_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x7000:
prg16_89ab(data);
@ -441,7 +441,7 @@ void nes_konami_vrc4_device::irq_tick()
if (m_irq_count == 0xff)
{
m_irq_count = m_irq_count_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
}
else
m_irq_count++;
@ -543,11 +543,11 @@ WRITE8_MEMBER(nes_konami_vrc4_device::write_h)
m_irq_enable_latch = data & 0x01;
if (data & 0x02)
m_irq_count = m_irq_count_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x300:
m_irq_enable = m_irq_enable_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
}
break;
@ -619,11 +619,11 @@ WRITE8_MEMBER(nes_konami_vrc6_device::write_h)
m_irq_enable_latch = data & 0x01;
if (data & 0x02)
m_irq_count = m_irq_count_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x200:
m_irq_enable = m_irq_enable_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
default:
logerror("VRC-6 write_h uncaught write, addr: %04x value: %02x\n", ((offset & 0x7000) | add_lines) + 0x8000, data);
@ -734,11 +734,11 @@ WRITE8_MEMBER(nes_konami_vrc7_device::write_h)
m_irq_enable_latch = data & 0x01;
if (data & 0x02)
m_irq_count = m_irq_count_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x7008: case 0x7010: case 0x7018:
m_irq_enable = m_irq_enable_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
default:

View File

@ -79,7 +79,7 @@ void nes_ffe4_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_exram));
save_item(NAME(m_exram_enabled));
@ -167,7 +167,7 @@ void nes_ffe4_device::device_timer(emu_timer &timer, device_timer_id id, int par
{
if (m_irq_count == 0xffff)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_count = 0;
m_irq_enable = 0;
}
@ -193,7 +193,7 @@ WRITE8_MEMBER(nes_ffe4_device::write_l)
case 0x401:
m_irq_enable = 0;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x402:
m_irq_count = (m_irq_count & 0xff00) | data;
@ -275,7 +275,7 @@ WRITE8_MEMBER(nes_ffe8_device::write_l)
case 0x401:
m_irq_enable = 0;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x402:
m_irq_count = (m_irq_count & 0xff00) | data;

View File

@ -202,7 +202,7 @@ void nes_txrom_device::hblank_irq(int scanline, int vblank, int blanked)
{
LOG_MMC(("irq fired, scanline: %d (MAME %d, beam pos: %d)\n", scanline,
machine().first_screen()->vpos(), machine().first_screen()->hpos()));
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
}
}
m_irq_clear = 0;
@ -301,7 +301,7 @@ WRITE8_MEMBER(nes_txrom_device::txrom_write)
case 0x6000:
m_irq_enable = 0;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x6001:

View File

@ -235,7 +235,7 @@ void nes_exrom_device::hblank_irq(int scanline, int vblank, int blanked )
if (scanline == m_irq_count)
{
if (m_irq_enable)
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_status = 0xff;
}
@ -444,7 +444,7 @@ READ8_MEMBER(nes_exrom_device::read_l)
case 0x1204:
value = m_irq_status;
m_irq_status &= ~0x80;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
return value;
case 0x1205:

View File

@ -146,7 +146,7 @@ void nes_namcot340_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -172,7 +172,7 @@ void nes_namcot175_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -200,7 +200,7 @@ void nes_namcot163_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@ -403,7 +403,7 @@ void nes_namcot340_device::device_timer(emu_timer &timer, device_timer_id id, in
if (m_irq_enable)
{
if (m_irq_count == 0x7fff) // counter does not wrap to 0!
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
else
m_irq_count++;
}
@ -419,12 +419,12 @@ WRITE8_MEMBER(nes_namcot340_device::n340_lowrite)
{
case 0x1000: /* low byte of IRQ */
m_irq_count = (m_irq_count & 0x7f00) | data;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x1800: /* high byte of IRQ, IRQ enable in high bit */
m_irq_count = (m_irq_count & 0xff) | ((data & 0x7f) << 8);
m_irq_enable = data & 0x80;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
}
}
@ -438,10 +438,10 @@ READ8_MEMBER(nes_namcot340_device::n340_loread)
{
case 0x1000:
return m_irq_count & 0xff;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
case 0x1800:
return (m_irq_count >> 8) & 0xff;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
default:
return 0x00;
}

View File

@ -665,6 +665,9 @@ WRITE8_MEMBER(device_nes_cart_interface::write_h)
void device_nes_cart_interface::pcb_start(running_machine &machine, UINT8 *ciram_ptr, bool cart_mounted)
{
m_maincpu = machine.device<cpu_device>("maincpu");
if (cart_mounted) // disksys expansion can arrive here without the memory banks!
{
// Setup PRG

View File

@ -232,6 +232,7 @@ protected:
dynamic_buffer m_vram;
dynamic_buffer m_battery;
UINT8 *m_ciram;
cpu_device *m_maincpu;
// these are specific of some boards but must be accessible from the driver
// E.g. additional save ram for HKROM, X1-005 & X1-017 boards, or ExRAM for MMC5

View File

@ -427,7 +427,7 @@ void nes_cityfight_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_prg_reg));
save_item(NAME(m_prg_mode));
@ -580,7 +580,7 @@ void nes_futuremedia_device::hblank_irq(int scanline, int vblank, int blanked)
{
m_irq_count--;
if (!m_irq_count)
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
}
}
@ -904,7 +904,7 @@ void nes_t230_device::hblank_irq(int scanline, int vblank, int blanked)
{
m_irq_count = m_irq_count_latch;
m_irq_enable = m_irq_enable_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
}
@ -985,7 +985,7 @@ void nes_mk2_device::hblank_irq( int scanline, int vblank, int blanked )
{
LOG_MMC(("irq fired, scanline: %d (MAME %d, beam pos: %d)\n", scanline,
machine().first_screen()->vpos(), machine().first_screen()->hpos()));
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
}
m_irq_clear = 0;
@ -1039,7 +1039,7 @@ void nes_whero_device::hblank_irq(int scanline, int vblank, int blanked)
{
m_irq_count = m_irq_count_latch;
m_irq_enable = m_irq_enable_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
}
@ -1166,7 +1166,7 @@ void nes_tf1201_device::hblank_irq(int scanline, int vblank, int blanked)
{
m_irq_count++;
if ((m_irq_count & 0xff) == 238)
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
}
@ -1245,7 +1245,7 @@ void nes_cityfight_device::device_timer(emu_timer &timer, device_timer_id id, in
{
if (!m_irq_count)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_irq_count = 0xffff;
}
else

View File

@ -277,7 +277,7 @@ void nes_3dblock_device::hblank_irq(int scanline, int vblank, int blanked)
{
m_irq_count--;
if (!m_irq_count)
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
}

View File

@ -232,7 +232,7 @@ WRITE8_MEMBER(nes_somari_device::mmc3_w)
case 0x2001: break;
case 0x4000: m_irq_count_latch = data; break;
case 0x4001: m_irq_count = 0; break;
case 0x6000: m_irq_enable = 0; machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE); break;
case 0x6000: m_irq_enable = 0; m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); break;
case 0x6001: m_irq_enable = 1; break;
}
}

View File

@ -123,7 +123,7 @@ void nes_sunsoft_3_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_toggle));
@ -169,7 +169,7 @@ void nes_sunsoft_fme7_device::device_start()
irq_timer = timer_alloc(TIMER_IRQ);
// this has to be hardcoded because some some scanline code only suits NTSC... it will be fixed with PPU rewrite
irq_timer->adjust(attotime::zero, 0, attotime::from_hz((21477272.724 / 12)));
// irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
// irq_timer->adjust(attotime::zero, 0, m_maincpu->cycles_to_attotime(1));
save_item(NAME(m_wram_bank));
save_item(NAME(m_latch));
@ -272,7 +272,7 @@ void nes_sunsoft_3_device::device_timer(emu_timer &timer, device_timer_id id, in
{
if (!m_irq_count)
{
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_irq_count = 0xffff;
m_irq_enable = 0;
}
@ -311,7 +311,7 @@ WRITE8_MEMBER(nes_sunsoft_3_device::write_h)
case 0x5800:
m_irq_enable = BIT(data, 4);
m_irq_toggle = 0;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x6800:
switch (data & 3)
@ -467,7 +467,7 @@ void nes_sunsoft_fme7_device::device_timer(emu_timer &timer, device_timer_id id,
{
m_irq_count = 0xffff;
if (m_irq_enable & 0x01) // bit0, trigger enable
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
}
else
m_irq_count--;
@ -516,7 +516,7 @@ WRITE8_MEMBER(nes_sunsoft_fme7_device::fme7_write)
case 0x0d:
m_irq_enable = data;
if (!(m_irq_enable & 1))
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x0e:
m_irq_count = (m_irq_count & 0xff00) | data;

View File

@ -175,7 +175,7 @@ void nes_sunsoft_dcs_device::device_start()
common_start();
ntb_enable_timer = timer_alloc(TIMER_PROTECT);
ntb_enable_timer->reset();
timer_freq = machine().device<cpu_device>("maincpu")->cycles_to_attotime(107520);
timer_freq = m_maincpu->cycles_to_attotime(107520);
save_item(NAME(m_latch1));
save_item(NAME(m_latch2));

View File

@ -238,7 +238,7 @@ void nes_tc0190fmc_pal16r4_device::hblank_irq( int scanline, int vblank, int bla
m_irq_count--;
if (m_irq_enable && !blanked && (m_irq_count == 0) && prior_count)
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
}
}
@ -271,7 +271,7 @@ WRITE8_MEMBER(nes_tc0190fmc_pal16r4_device::write_h)
break;
case 0x4003:
m_irq_enable = 0;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x6000:
set_nt_mirroring(BIT(data, 6) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);

View File

@ -84,7 +84,7 @@ void nes_tengen032_device::device_start()
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->reset();
timer_freq = machine().device<cpu_device>("maincpu")->cycles_to_attotime(4);
timer_freq = m_maincpu->cycles_to_attotime(4);
save_item(NAME(m_mmc_prg_bank));
save_item(NAME(m_mmc_vrom_bank));
@ -177,7 +177,7 @@ inline void nes_tengen032_device::irq_clock(int blanked)
m_irq_count--;
if (m_irq_enable && !blanked && !m_irq_count)
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
}
// we use the HBLANK IRQ latch from PPU for the scanline based IRQ mode
@ -306,7 +306,7 @@ WRITE8_MEMBER(nes_tengen032_device::tengen032_write)
case 0x6000:
m_irq_enable = 0;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
break;
case 0x6001:

View File

@ -979,7 +979,7 @@ void nes_waixing_sgz_device::hblank_irq(int scanline, int vblank, int blanked)
{
m_irq_count = m_irq_count_latch;
m_irq_enable = m_irq_enable_latch;
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, HOLD_LINE);
m_maincpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
}