mirror of
https://github.com/holub/mame
synced 2025-04-16 21:44:32 +03:00
champbas.cpp, lwings.cpp: VBLANK IRQ modernization (nw)
This commit is contained in:
parent
48d67ae6be
commit
56326e9fe8
@ -512,10 +512,10 @@ void champbas_state::machine_start()
|
||||
save_item(NAME(m_gfx_bank));
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(champbas_state::vblank_irq)
|
||||
WRITE_LINE_MEMBER(champbas_state::vblank_irq)
|
||||
{
|
||||
if (m_irq_mask)
|
||||
device.execute().set_input_line(0, ASSERT_LINE);
|
||||
if (state && m_irq_mask)
|
||||
m_maincpu->set_input_line(0, ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -524,7 +524,6 @@ void champbas_state::talbot(machine_config &config)
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(18'432'000)/6);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &champbas_state::champbasj_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(champbas_state::vblank_irq));
|
||||
|
||||
LS259(config, m_mainlatch);
|
||||
m_mainlatch->q_out_cb<0>().set(FUNC(champbas_state::irq_enable_w));
|
||||
@ -548,6 +547,7 @@ void champbas_state::talbot(machine_config &config)
|
||||
screen.set_visarea(0, 32*8-1, 2*8, 30*8-1);
|
||||
screen.set_screen_update(FUNC(champbas_state::screen_update_champbas));
|
||||
screen.set_palette(m_palette);
|
||||
screen.screen_vblank().set(FUNC(champbas_state::vblank_irq));
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_talbot);
|
||||
PALETTE(config, m_palette, FUNC(champbas_state::champbas_palette), 512, 32);
|
||||
@ -566,7 +566,6 @@ void champbas_state::champbas(machine_config &config)
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(18'432'000)/6);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &champbas_state::champbas_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(champbas_state::vblank_irq));
|
||||
|
||||
LS259(config, m_mainlatch); // 9D; 8G on Champion Baseball II Double Board Configuration
|
||||
m_mainlatch->q_out_cb<0>().set(FUNC(champbas_state::irq_enable_w));
|
||||
@ -590,6 +589,7 @@ void champbas_state::champbas(machine_config &config)
|
||||
screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
|
||||
screen.set_screen_update(FUNC(champbas_state::screen_update_champbas));
|
||||
screen.set_palette(m_palette);
|
||||
screen.screen_vblank().set(FUNC(champbas_state::vblank_irq));
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_champbas);
|
||||
PALETTE(config, m_palette, FUNC(champbas_state::champbas_palette), 512, 32);
|
||||
@ -668,7 +668,6 @@ void exctsccr_state::exctsccr(machine_config &config)
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(18'432'000)/6);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &exctsccr_state::exctsccr_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(exctsccr_state::vblank_irq));
|
||||
|
||||
LS259(config, m_mainlatch);
|
||||
m_mainlatch->q_out_cb<0>().set(FUNC(exctsccr_state::irq_enable_w));
|
||||
@ -701,6 +700,7 @@ void exctsccr_state::exctsccr(machine_config &config)
|
||||
screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
|
||||
screen.set_screen_update(FUNC(exctsccr_state::screen_update_exctsccr));
|
||||
screen.set_palette(m_palette);
|
||||
screen.screen_vblank().set(FUNC(exctsccr_state::vblank_irq));
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_exctsccr);
|
||||
PALETTE(config, m_palette, FUNC(exctsccr_state::exctsccr_palette), 512, 32);
|
||||
@ -732,7 +732,6 @@ void exctsccr_state::exctsccrb(machine_config &config)
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(18'432'000)/6);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &exctsccr_state::exctsccrb_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(exctsccr_state::vblank_irq));
|
||||
|
||||
LS259(config, m_mainlatch);
|
||||
m_mainlatch->q_out_cb<0>().set(FUNC(exctsccr_state::irq_enable_w));
|
||||
@ -759,6 +758,7 @@ void exctsccr_state::exctsccrb(machine_config &config)
|
||||
screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
|
||||
screen.set_screen_update(FUNC(exctsccr_state::screen_update_exctsccr));
|
||||
screen.set_palette(m_palette);
|
||||
screen.screen_vblank().set(FUNC(exctsccr_state::vblank_irq));
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_exctsccr);
|
||||
PALETTE(config, m_palette, FUNC(exctsccr_state::exctsccr_palette), 512, 32);
|
||||
|
@ -103,16 +103,16 @@ WRITE8_MEMBER(lwings_state::lwings_bankswitch_w)
|
||||
machine().bookkeeping().coin_counter_w(0, data & 0x80);
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(lwings_state::lwings_interrupt)
|
||||
WRITE_LINE_MEMBER(lwings_state::lwings_interrupt)
|
||||
{
|
||||
if(m_nmi_mask)
|
||||
device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xd7); /* Z80 - RST 10h */
|
||||
if (state && m_nmi_mask)
|
||||
m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xd7); /* Z80 - RST 10h */
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(lwings_state::avengers_interrupt)
|
||||
WRITE_LINE_MEMBER(lwings_state::avengers_interrupt)
|
||||
{
|
||||
if(m_nmi_mask)
|
||||
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
if (state && m_nmi_mask)
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
|
||||
@ -936,7 +936,6 @@ void lwings_state::lwings(machine_config &config)
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on PCB */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(lwings_state::lwings_interrupt));
|
||||
|
||||
Z80(config, m_soundcpu, XTAL(12'000'000)/4); /* verified on PCB */
|
||||
m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_sound_map);
|
||||
@ -955,6 +954,7 @@ void lwings_state::lwings(machine_config &config)
|
||||
screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
|
||||
screen.set_screen_update(FUNC(lwings_state::screen_update_lwings));
|
||||
screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
|
||||
screen.screen_vblank().append(FUNC(lwings_state::lwings_interrupt));
|
||||
screen.set_palette(m_palette);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings);
|
||||
@ -983,7 +983,6 @@ void lwings_state::fball(machine_config &config)
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(12'000'000)/2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt));
|
||||
|
||||
Z80(config, m_soundcpu, XTAL(12'000'000)/4); // ?
|
||||
m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_sound_map);
|
||||
@ -1001,6 +1000,7 @@ void lwings_state::fball(machine_config &config)
|
||||
screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1); // the 16-pixel black border on left edge is correct, test mode actually uses that area
|
||||
screen.set_screen_update(FUNC(lwings_state::screen_update_lwings));
|
||||
screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
|
||||
screen.screen_vblank().append(FUNC(lwings_state::avengers_interrupt));
|
||||
screen.set_palette(m_palette);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings);
|
||||
@ -1051,7 +1051,10 @@ void lwings_state::avengers(machine_config &config)
|
||||
|
||||
/* basic machine hardware */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::avengers_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt)); // RST 38h triggered by software
|
||||
|
||||
screen_device &screen(*subdevice<screen_device>("screen"));
|
||||
screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
|
||||
screen.screen_vblank().append(FUNC(lwings_state::avengers_interrupt)); // RST 38h triggered by software
|
||||
|
||||
subdevice<cpu_device>("adpcm")->set_addrmap(AS_IO, &lwings_state::avengers_adpcm_io_map);
|
||||
|
||||
|
@ -56,7 +56,7 @@ protected:
|
||||
DECLARE_WRITE_LINE_MEMBER(mcu_start_w);
|
||||
DECLARE_READ8_MEMBER(champbja_protection_r);
|
||||
|
||||
INTERRUPT_GEN_MEMBER(vblank_irq);
|
||||
DECLARE_WRITE_LINE_MEMBER(vblank_irq);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(tilemap_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(gfxbank_w);
|
||||
|
@ -86,8 +86,8 @@ private:
|
||||
DECLARE_VIDEO_START(avengersb);
|
||||
uint32_t screen_update_lwings(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
uint32_t screen_update_trojan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(lwings_interrupt);
|
||||
INTERRUPT_GEN_MEMBER(avengers_interrupt);
|
||||
DECLARE_WRITE_LINE_MEMBER(lwings_interrupt);
|
||||
DECLARE_WRITE_LINE_MEMBER(avengers_interrupt);
|
||||
inline int is_sprite_on( uint8_t *buffered_spriteram, int offs );
|
||||
void lwings_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
void trojan_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
|
Loading…
Reference in New Issue
Block a user