20pacgal.cpp, baraduke.cpp, gaplus.cpp, skykid.cpp, toypop.cpp: Replace MCFG_CPU_VBLANK_INT with line callbacks (nw)

This commit is contained in:
AJR 2018-03-28 20:52:35 -04:00
parent addb138c03
commit 1e5666734d
11 changed files with 54 additions and 54 deletions

View File

@ -387,10 +387,10 @@ void _20pacgal_state::machine_reset()
m_game_selected = 0; m_game_selected = 0;
} }
INTERRUPT_GEN_MEMBER(_20pacgal_state::vblank_irq) WRITE_LINE_MEMBER(_20pacgal_state::vblank_irq)
{ {
if(m_irq_mask) if (state && m_irq_mask)
device.execute().set_input_line(0, HOLD_LINE); // TODO: assert breaks the inputs in 25pacman test mode m_maincpu->set_input_line(0, HOLD_LINE); // TODO: assert breaks the inputs in 25pacman test mode
} }
MACHINE_CONFIG_START(_20pacgal_state::_20pacgal) MACHINE_CONFIG_START(_20pacgal_state::_20pacgal)
@ -399,7 +399,6 @@ MACHINE_CONFIG_START(_20pacgal_state::_20pacgal)
MCFG_CPU_ADD("maincpu", Z180, MAIN_CPU_CLOCK) MCFG_CPU_ADD("maincpu", Z180, MAIN_CPU_CLOCK)
MCFG_CPU_PROGRAM_MAP(_20pacgal_map) MCFG_CPU_PROGRAM_MAP(_20pacgal_map)
MCFG_CPU_IO_MAP(_20pacgal_io_map) MCFG_CPU_IO_MAP(_20pacgal_io_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", _20pacgal_state, vblank_irq)
MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")

View File

@ -378,12 +378,10 @@ MACHINE_CONFIG_START(baraduke_state::baraduke)
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", MC6809E, XTAL(49'152'000)/32) // 68A09E MCFG_CPU_ADD("maincpu", MC6809E, XTAL(49'152'000)/32) // 68A09E
MCFG_CPU_PROGRAM_MAP(baraduke_map) MCFG_CPU_PROGRAM_MAP(baraduke_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", baraduke_state, irq0_line_assert)
MCFG_CPU_ADD("mcu", HD63701, XTAL(49'152'000)/8) MCFG_CPU_ADD("mcu", HD63701, XTAL(49'152'000)/8)
MCFG_CPU_PROGRAM_MAP(mcu_map) MCFG_CPU_PROGRAM_MAP(mcu_map)
MCFG_CPU_IO_MAP(mcu_port_map) MCFG_CPU_IO_MAP(mcu_port_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", baraduke_state, irq0_line_hold)
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synch */ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synch */

View File

@ -235,9 +235,12 @@ TIMER_CALLBACK_MEMBER(gaplus_state::namcoio1_run)
m_namco56xx->customio_run(); m_namco56xx->customio_run();
} }
INTERRUPT_GEN_MEMBER(gaplus_state::vblank_main_irq) WRITE_LINE_MEMBER(gaplus_state::vblank_irq)
{ {
if(m_main_irq_mask) if (!state)
return;
if (m_main_irq_mask)
m_maincpu->set_input_line(0, ASSERT_LINE); m_maincpu->set_input_line(0, ASSERT_LINE);
if (!m_namco58xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */ if (!m_namco58xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */
@ -245,29 +248,32 @@ INTERRUPT_GEN_MEMBER(gaplus_state::vblank_main_irq)
if (!m_namco56xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */ if (!m_namco56xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */
m_namcoio1_run_timer->adjust(attotime::from_usec(50)); m_namcoio1_run_timer->adjust(attotime::from_usec(50));
}
INTERRUPT_GEN_MEMBER(gaplus_state::gapluso_vblank_main_irq) if (m_sub_irq_mask)
{
if(m_main_irq_mask)
m_maincpu->set_input_line(0, ASSERT_LINE);
if (!m_namco58xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */
m_namcoio1_run_timer->adjust(attotime::from_usec(50));
if (!m_namco56xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */
m_namcoio0_run_timer->adjust(attotime::from_usec(50));
}
INTERRUPT_GEN_MEMBER(gaplus_state::vblank_sub_irq)
{
if(m_sub_irq_mask)
m_subcpu->set_input_line(0, ASSERT_LINE); m_subcpu->set_input_line(0, ASSERT_LINE);
if (m_sub2_irq_mask)
m_subcpu2->set_input_line(0, ASSERT_LINE);
} }
INTERRUPT_GEN_MEMBER(gaplus_state::vblank_sub2_irq) WRITE_LINE_MEMBER(gaplus_state::gapluso_vblank_irq)
{ {
if(m_sub2_irq_mask) if (!state)
return;
if (m_main_irq_mask)
m_maincpu->set_input_line(0, ASSERT_LINE);
if (!m_namco58xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */
m_namcoio1_run_timer->adjust(attotime::from_usec(50));
if (!m_namco56xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */
m_namcoio0_run_timer->adjust(attotime::from_usec(50));
if (m_sub_irq_mask)
m_subcpu->set_input_line(0, ASSERT_LINE);
if (m_sub2_irq_mask)
m_subcpu2->set_input_line(0, ASSERT_LINE); m_subcpu2->set_input_line(0, ASSERT_LINE);
} }
@ -520,15 +526,12 @@ MACHINE_CONFIG_START(gaplus_state::gaplus)
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", MC6809E, XTAL(24'576'000)/16) /* 1.536 MHz */ MCFG_CPU_ADD("maincpu", MC6809E, XTAL(24'576'000)/16) /* 1.536 MHz */
MCFG_CPU_PROGRAM_MAP(cpu1_map) MCFG_CPU_PROGRAM_MAP(cpu1_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gaplus_state, vblank_main_irq)
MCFG_CPU_ADD("sub", MC6809E, XTAL(24'576'000)/16) /* 1.536 MHz */ MCFG_CPU_ADD("sub", MC6809E, XTAL(24'576'000)/16) /* 1.536 MHz */
MCFG_CPU_PROGRAM_MAP(cpu2_map) MCFG_CPU_PROGRAM_MAP(cpu2_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gaplus_state, vblank_sub_irq)
MCFG_CPU_ADD("sub2", MC6809E, XTAL(24'576'000)/16) /* 1.536 MHz */ MCFG_CPU_ADD("sub2", MC6809E, XTAL(24'576'000)/16) /* 1.536 MHz */
MCFG_CPU_PROGRAM_MAP(cpu3_map) MCFG_CPU_PROGRAM_MAP(cpu3_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", gaplus_state, vblank_sub2_irq)
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* a high value to ensure proper synchronization of the CPUs */ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* a high value to ensure proper synchronization of the CPUs */
@ -564,6 +567,7 @@ MACHINE_CONFIG_START(gaplus_state::gaplus)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(gaplus_state, screen_update) MCFG_SCREEN_UPDATE_DRIVER(gaplus_state, screen_update)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(gaplus_state, screen_vblank)) MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(gaplus_state, screen_vblank))
MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(gaplus_state, vblank_irq))
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", gaplus) MCFG_GFXDECODE_ADD("gfxdecode", "palette", gaplus)
@ -604,8 +608,9 @@ MACHINE_CONFIG_START(gaplus_state::gapluso)
gaplusd(config); gaplusd(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_MODIFY("maincpu") MCFG_DEVICE_MODIFY("screen")
MCFG_CPU_VBLANK_INT_DRIVER("screen", gaplus_state, gapluso_vblank_main_irq) MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(gaplus_state, screen_vblank))
MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(gaplus_state, gapluso_vblank_irq))
MCFG_DEVICE_REPLACE("namcoio_1", NAMCO_56XX, 0) MCFG_DEVICE_REPLACE("namcoio_1", NAMCO_56XX, 0)
MCFG_NAMCO56XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO56XX_IN_0_CB(IOPORT("COINS"))

View File

@ -423,17 +423,13 @@ static GFXDECODE_START( skykid )
GFXDECODE_END GFXDECODE_END
INTERRUPT_GEN_MEMBER(skykid_state::main_vblank_irq) WRITE_LINE_MEMBER(skykid_state::vblank_irq)
{ {
if(m_main_irq_mask) if (state && m_main_irq_mask)
device.execute().set_input_line(0, ASSERT_LINE); m_maincpu->set_input_line(0, ASSERT_LINE);
}
if (state && m_mcu_irq_mask)
INTERRUPT_GEN_MEMBER(skykid_state::mcu_vblank_irq) m_mcu->set_input_line(0, ASSERT_LINE);
{
if(m_mcu_irq_mask)
device.execute().set_input_line(0, ASSERT_LINE);
} }
@ -442,12 +438,10 @@ MACHINE_CONFIG_START(skykid_state::skykid)
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", MC6809E, XTAL(49'152'000)/32) MCFG_CPU_ADD("maincpu", MC6809E, XTAL(49'152'000)/32)
MCFG_CPU_PROGRAM_MAP(skykid_map) MCFG_CPU_PROGRAM_MAP(skykid_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", skykid_state, main_vblank_irq)
MCFG_CPU_ADD("mcu", HD63701, XTAL(49'152'000)/8) /* or compatible 6808 with extra instructions */ MCFG_CPU_ADD("mcu", HD63701, XTAL(49'152'000)/8) /* or compatible 6808 with extra instructions */
MCFG_CPU_PROGRAM_MAP(mcu_map) MCFG_CPU_PROGRAM_MAP(mcu_map)
MCFG_CPU_IO_MAP(mcu_port_map) MCFG_CPU_IO_MAP(mcu_port_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", skykid_state, mcu_vblank_irq)
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synch */ MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synch */
@ -461,6 +455,7 @@ MACHINE_CONFIG_START(skykid_state::skykid)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(skykid_state, screen_update_skykid) MCFG_SCREEN_UPDATE_DRIVER(skykid_state, screen_update_skykid)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(skykid_state, vblank_irq))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", skykid) MCFG_GFXDECODE_ADD("gfxdecode", "palette", skykid)
MCFG_PALETTE_ADD("palette", 64*4+128*4+64*8) MCFG_PALETTE_ADD("palette", 64*4+128*4+64*8)

View File

@ -80,7 +80,7 @@ public:
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(master_scanline); TIMER_DEVICE_CALLBACK_MEMBER(master_scanline);
INTERRUPT_GEN_MEMBER(slave_vblank_irq); DECLARE_WRITE_LINE_MEMBER(slave_vblank_irq);
DECLARE_READ8_MEMBER(irq_enable_r); DECLARE_READ8_MEMBER(irq_enable_r);
DECLARE_WRITE8_MEMBER(irq_disable_w); DECLARE_WRITE8_MEMBER(irq_disable_w);
@ -658,10 +658,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos16_state::master_scanline)
} }
} }
INTERRUPT_GEN_MEMBER(namcos16_state::slave_vblank_irq) WRITE_LINE_MEMBER(namcos16_state::slave_vblank_irq)
{ {
if(m_slave_irq_enable == true) if (state && m_slave_irq_enable == true)
device.execute().set_input_line(6,HOLD_LINE); m_slave_cpu->set_input_line(6, HOLD_LINE);
} }
MACHINE_CONFIG_START(namcos16_state::liblrabl) MACHINE_CONFIG_START(namcos16_state::liblrabl)
@ -671,7 +671,6 @@ MACHINE_CONFIG_START(namcos16_state::liblrabl)
MCFG_CPU_ADD("slave", M68000, MASTER_CLOCK) MCFG_CPU_ADD("slave", M68000, MASTER_CLOCK)
MCFG_CPU_PROGRAM_MAP(slave_map) MCFG_CPU_PROGRAM_MAP(slave_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", namcos16_state, slave_vblank_irq)
MCFG_CPU_ADD("audiocpu", MC6809E, MASTER_CLOCK/4) MCFG_CPU_ADD("audiocpu", MC6809E, MASTER_CLOCK/4)
MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_PROGRAM_MAP(sound_map)
@ -700,6 +699,7 @@ MACHINE_CONFIG_START(namcos16_state::liblrabl)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK,384,0,288,264,0,224) // derived from Galaxian HW, 60.606060 MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK,384,0,288,264,0,224) // derived from Galaxian HW, 60.606060
MCFG_SCREEN_UPDATE_DRIVER(namcos16_state, screen_update) MCFG_SCREEN_UPDATE_DRIVER(namcos16_state, screen_update)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(namcos16_state, slave_vblank_irq))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", toypop) MCFG_GFXDECODE_ADD("gfxdecode", "palette", toypop)
MCFG_PALETTE_ADD("palette", 128*4+64*4+16*2) MCFG_PALETTE_ADD("palette", 128*4+64*4+16*2)

View File

@ -61,7 +61,7 @@ public:
virtual void machine_start() override; virtual void machine_start() override;
virtual void machine_reset() override; virtual void machine_reset() override;
uint32_t screen_update_20pacgal(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_20pacgal(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq); DECLARE_WRITE_LINE_MEMBER(vblank_irq);
void get_pens(pen_t *pens); void get_pens(pen_t *pens);
void do_pen_lookup(bitmap_rgb32 &bitmap, const rectangle &cliprect); void do_pen_lookup(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_rgb32 &bitmap); void draw_sprites(bitmap_rgb32 &bitmap);

View File

@ -11,6 +11,7 @@ public:
m_videoram(*this, "videoram"), m_videoram(*this, "videoram"),
m_textram(*this, "textram"), m_textram(*this, "textram"),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_mcu(*this, "mcu"),
m_cus30(*this, "namco"), m_cus30(*this, "namco"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { } m_palette(*this, "palette") { }
@ -21,6 +22,7 @@ public:
required_shared_ptr<uint8_t> m_videoram; required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_textram; required_shared_ptr<uint8_t> m_textram;
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_mcu;
required_device<namco_cus30_device> m_cus30; required_device<namco_cus30_device> m_cus30;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;

View File

@ -93,10 +93,8 @@ public:
TILEMAP_MAPPER_MEMBER(tilemap_scan); TILEMAP_MAPPER_MEMBER(tilemap_scan);
TILE_GET_INFO_MEMBER(get_tile_info); TILE_GET_INFO_MEMBER(get_tile_info);
INTERRUPT_GEN_MEMBER(vblank_main_irq); DECLARE_WRITE_LINE_MEMBER(vblank_irq);
INTERRUPT_GEN_MEMBER(gapluso_vblank_main_irq); DECLARE_WRITE_LINE_MEMBER(gapluso_vblank_irq);
INTERRUPT_GEN_MEMBER(vblank_sub_irq);
INTERRUPT_GEN_MEMBER(vblank_sub2_irq);
TIMER_CALLBACK_MEMBER(namcoio0_run); TIMER_CALLBACK_MEMBER(namcoio0_run);
TIMER_CALLBACK_MEMBER(namcoio1_run); TIMER_CALLBACK_MEMBER(namcoio1_run);

View File

@ -56,8 +56,7 @@ public:
virtual void video_start() override; virtual void video_start() override;
DECLARE_PALETTE_INIT(skykid); DECLARE_PALETTE_INIT(skykid);
uint32_t screen_update_skykid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_skykid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(main_vblank_irq); DECLARE_WRITE_LINE_MEMBER(vblank_irq);
INTERRUPT_GEN_MEMBER(mcu_vblank_irq);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
void skykid(machine_config &config); void skykid(machine_config &config);
void mcu_map(address_map &map); void mcu_map(address_map &map);

View File

@ -435,4 +435,5 @@ MACHINE_CONFIG_START(_20pacgal_state::_20pacgal_video)
MCFG_SCREEN_SIZE(SCREEN_WIDTH, SCREEN_HEIGHT) MCFG_SCREEN_SIZE(SCREEN_WIDTH, SCREEN_HEIGHT)
MCFG_SCREEN_VISIBLE_AREA(0, SCREEN_WIDTH - 1, 0, SCREEN_HEIGHT - 1) MCFG_SCREEN_VISIBLE_AREA(0, SCREEN_WIDTH - 1, 0, SCREEN_HEIGHT - 1)
MCFG_SCREEN_UPDATE_DRIVER(_20pacgal_state, screen_update_20pacgal) MCFG_SCREEN_UPDATE_DRIVER(_20pacgal_state, screen_update_20pacgal)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(_20pacgal_state, vblank_irq))
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -343,5 +343,8 @@ WRITE_LINE_MEMBER(baraduke_state::screen_vblank_baraduke)
m_copy_sprites = 0; m_copy_sprites = 0;
} }
m_maincpu->set_input_line(0, ASSERT_LINE);
m_mcu->set_input_line(0, HOLD_LINE);
} }
} }