mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
(MESS) nes.c: Reduce some tagmap lookups (nw)
This commit is contained in:
parent
d22bf6e26f
commit
711106a283
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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++;
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user