Eliminate some dumb nmi_line_pulse usage (nw)

mainevt.cpp, superwng.cpp, zodiack.cpp: Modernize VBLANK interrupts (nw)
This commit is contained in:
AJR 2019-10-31 20:31:04 -04:00
parent 47d938b149
commit 58c420eeb7
7 changed files with 20 additions and 21 deletions

View File

@ -90,7 +90,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(espial_state::espial_scanline)
INTERRUPT_GEN_MEMBER(espial_state::espial_sound_nmi_gen)
{
if (m_sound_nmi_enabled)
nmi_line_pulse(device);
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}

View File

@ -796,7 +796,7 @@ TIMER_CALLBACK_MEMBER(galaga_state::cpu3_interrupt_callback)
int scanline = param;
if(m_sub2_nmi_mask)
nmi_line_pulse(*m_subcpu2);
m_subcpu2->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
scanline = scanline + 128;
if (scanline >= 272)

View File

@ -52,10 +52,10 @@ WRITE8_MEMBER(mainevt_state::dv_nmienable_w)
m_nmi_enable = data;
}
INTERRUPT_GEN_MEMBER(mainevt_state::dv_interrupt)
WRITE_LINE_MEMBER(mainevt_state::dv_vblank_w)
{
if (m_nmi_enable)
nmi_line_pulse(device);
if (state && m_nmi_enable)
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
@ -409,13 +409,13 @@ void mainevt_state::machine_reset()
INTERRUPT_GEN_MEMBER(mainevt_state::mainevt_sound_timer_irq)
{
if(m_sound_irq_mask)
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
INTERRUPT_GEN_MEMBER(mainevt_state::devstors_sound_timer_irq)
{
if(m_sound_irq_mask)
device.execute().set_input_line(0, HOLD_LINE);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
void mainevt_state::mainevt(machine_config &config)
@ -471,7 +471,6 @@ void mainevt_state::devstors(machine_config &config)
/* basic machine hardware */
HD6309E(config, m_maincpu, 24_MHz_XTAL / 8); // E & Q generated by 052109
m_maincpu->set_addrmap(AS_PROGRAM, &mainevt_state::devstors_map);
m_maincpu->set_vblank_int("screen", FUNC(mainevt_state::dv_interrupt));
Z80(config, m_audiocpu, 3.579545_MHz_XTAL);
m_audiocpu->set_addrmap(AS_PROGRAM, &mainevt_state::devstors_sound_map);
@ -486,6 +485,7 @@ void mainevt_state::devstors(machine_config &config)
screen.set_raw(XTAL(24'000'000)/3, 528, 13*8, (64-13)*8, 256, 16, 240); // measured 59.17
screen.set_screen_update(FUNC(mainevt_state::screen_update_dv));
screen.set_palette("palette");
screen.screen_vblank().set(FUNC(mainevt_state::dv_vblank_w));
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 256).enable_shadows();

View File

@ -102,7 +102,7 @@ private:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
void superwng_palette(palette_device &palette) const;
uint32_t screen_update_superwng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(superwng_nmi_interrupt);
DECLARE_WRITE_LINE_MEMBER(main_nmi_interrupt);
INTERRUPT_GEN_MEMBER(superwng_sound_nmi_assert);
void superwng_map(address_map &map);
@ -242,10 +242,10 @@ WRITE8_MEMBER(superwng_state::superwng_nmi_enable_w)
m_nmi_enable = data;
}
INTERRUPT_GEN_MEMBER(superwng_state::superwng_nmi_interrupt)
WRITE_LINE_MEMBER(superwng_state::main_nmi_interrupt)
{
if (BIT(m_nmi_enable, 0))
nmi_line_pulse(device);
if (state && BIT(m_nmi_enable, 0))
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
WRITE8_MEMBER(superwng_state::superwng_sound_interrupt_w)
@ -483,7 +483,6 @@ void superwng_state::superwng(machine_config &config)
/* basic machine hardware */
Z80(config, m_maincpu, MASTER_CLOCK/4);
m_maincpu->set_addrmap(AS_PROGRAM, &superwng_state::superwng_map);
m_maincpu->set_vblank_int("screen", FUNC(superwng_state::superwng_nmi_interrupt));
Z80(config, m_audiocpu, MASTER_CLOCK/4);
m_audiocpu->set_addrmap(AS_PROGRAM, &superwng_state::superwng_sound_map);
@ -497,6 +496,7 @@ void superwng_state::superwng(machine_config &config)
screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(superwng_state::screen_update_superwng));
screen.set_palette(m_palette);
screen.screen_vblank().set(FUNC(superwng_state::main_nmi_interrupt));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_superwng);

View File

@ -114,16 +114,16 @@ WRITE8_MEMBER( zodiack_state::sound_nmi_enable_w )
m_sound_nmi_enabled = data & 1;
}
INTERRUPT_GEN_MEMBER(zodiack_state::zodiack_main_nmi_gen)
WRITE_LINE_MEMBER(zodiack_state::vblank_main_nmi_w)
{
if (m_main_nmi_enabled)
nmi_line_pulse(device);
if (state && m_main_nmi_enabled)
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
INTERRUPT_GEN_MEMBER(zodiack_state::zodiack_sound_nmi_gen)
{
if (m_sound_nmi_enabled)
nmi_line_pulse(device);
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
@ -510,7 +510,6 @@ void zodiack_state::zodiack(machine_config &config)
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(18'432'000)/6);
m_maincpu->set_addrmap(AS_PROGRAM, &zodiack_state::main_map);
m_maincpu->set_vblank_int("screen", FUNC(zodiack_state::zodiack_main_nmi_gen));
m_maincpu->set_periodic_int(FUNC(zodiack_state::irq0_line_hold), attotime::from_hz(1*60)); // sound related - unknown source, timing is guessed
Z80(config, m_audiocpu, XTAL(18'432'000)/6);
@ -520,7 +519,7 @@ void zodiack_state::zodiack(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
SCREEN(config, "screen", SCREEN_TYPE_RASTER).screen_vblank().set(FUNC(zodiack_state::vblank_main_nmi_w));
orca_ovg_40c_device &videopcb(ORCA_OVG_40C(config, "videopcb", 0));
videopcb.set_screen("screen");

View File

@ -49,7 +49,7 @@ private:
DECLARE_WRITE8_MEMBER(dv_sh_bankswitch_w);
uint32_t screen_update_mainevt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_dv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(dv_interrupt);
DECLARE_WRITE_LINE_MEMBER(dv_vblank_w);
INTERRUPT_GEN_MEMBER(mainevt_sound_timer_irq);
INTERRUPT_GEN_MEMBER(devstors_sound_timer_irq);
DECLARE_WRITE8_MEMBER(volume_callback);

View File

@ -37,7 +37,7 @@ private:
uint8_t m_sound_nmi_enabled;
INTERRUPT_GEN_MEMBER(zodiack_sound_nmi_gen);
INTERRUPT_GEN_MEMBER(zodiack_main_nmi_gen);
DECLARE_WRITE_LINE_MEMBER(vblank_main_nmi_w);
void io_map(address_map &map);
void main_map(address_map &map);