galaga.cpp, pacland.cpp, tceptor.cpp: Replace MCFG_CPU_VBLANK_INT with line callbacks (nw)

This commit is contained in:
AJR 2018-03-28 21:28:30 -04:00
parent 28e8cc6674
commit 293c6bd627
8 changed files with 39 additions and 55 deletions

View File

@ -1553,16 +1553,13 @@ static const char *const battles_sample_names[] =
nullptr /* end of array */
};
INTERRUPT_GEN_MEMBER(galaga_state::main_vblank_irq)
WRITE_LINE_MEMBER(galaga_state::vblank_irq)
{
if(m_main_irq_mask)
device.execute().set_input_line(0, ASSERT_LINE);
}
if (state && m_main_irq_mask)
m_maincpu->set_input_line(0, ASSERT_LINE);
INTERRUPT_GEN_MEMBER(galaga_state::sub_vblank_irq)
{
if(m_sub_irq_mask)
device.execute().set_input_line(0, ASSERT_LINE);
if (state && m_sub_irq_mask)
m_subcpu->set_input_line(0, ASSERT_LINE);
}
MACHINE_CONFIG_START(bosco_state::bosco)
@ -1570,11 +1567,9 @@ MACHINE_CONFIG_START(bosco_state::bosco)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(bosco_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", galaga_state, main_vblank_irq)
MCFG_CPU_ADD("sub", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(bosco_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", galaga_state, sub_vblank_irq)
MCFG_CPU_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(bosco_map)
@ -1643,6 +1638,7 @@ MACHINE_CONFIG_START(bosco_state::bosco)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 16, 224+16)
MCFG_SCREEN_UPDATE_DRIVER(bosco_state, screen_update_bosco)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(bosco_state, screen_vblank_bosco))
MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(galaga_state, vblank_irq))
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", bosco)
@ -1669,11 +1665,9 @@ MACHINE_CONFIG_START(galaga_state::galaga)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(galaga_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", galaga_state, main_vblank_irq)
MCFG_CPU_ADD("sub", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(galaga_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", galaga_state, sub_vblank_irq)
MCFG_CPU_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(galaga_map)
@ -1720,6 +1714,7 @@ MACHINE_CONFIG_START(galaga_state::galaga)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
MCFG_SCREEN_UPDATE_DRIVER(galaga_state, screen_update_galaga)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(galaga_state, screen_vblank_galaga))
MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(galaga_state, vblank_irq))
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", galaga)
@ -1776,11 +1771,9 @@ MACHINE_CONFIG_START(xevious_state::xevious)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(xevious_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", galaga_state, main_vblank_irq)
MCFG_CPU_ADD("sub", Z80,MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(xevious_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", galaga_state, sub_vblank_irq)
MCFG_CPU_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(xevious_map)
@ -1828,6 +1821,7 @@ MACHINE_CONFIG_START(xevious_state::xevious)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
MCFG_SCREEN_UPDATE_DRIVER(xevious_state, screen_update_xevious)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(galaga_state, vblank_irq))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", xevious)
MCFG_PALETTE_ADD("palette", 128*4+64*8+64*2)
@ -1865,7 +1859,10 @@ MACHINE_CONFIG_START(xevious_state::battles)
MCFG_CPU_ADD("sub3", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(battles_mem4)
MCFG_CPU_VBLANK_INT_DRIVER("screen", xevious_state, battles_interrupt_4)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(galaga_state, vblank_irq))
MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(xevious_state, battles_interrupt_4))
MCFG_TIMER_DRIVER_ADD("battles_nmi", xevious_state, battles_nmi_generate)
@ -1885,11 +1882,9 @@ MACHINE_CONFIG_START(digdug_state::digdug)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(digdug_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", galaga_state, main_vblank_irq)
MCFG_CPU_ADD("sub", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(digdug_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", galaga_state, sub_vblank_irq)
MCFG_CPU_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_CPU_PROGRAM_MAP(digdug_map)
@ -1948,6 +1943,7 @@ MACHINE_CONFIG_START(digdug_state::digdug)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
MCFG_SCREEN_UPDATE_DRIVER(digdug_state, screen_update_digdug)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(galaga_state, vblank_irq))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", digdug)
MCFG_PALETTE_ADD("palette", 16*2+64*4+64*4)

View File

@ -416,15 +416,12 @@ static GFXDECODE_START( pacland )
GFXDECODE_END
INTERRUPT_GEN_MEMBER(pacland_state::main_vblank_irq)
WRITE_LINE_MEMBER(pacland_state::vblank_irq)
{
if(m_main_irq_mask)
if (state && m_main_irq_mask)
m_maincpu->set_input_line(0, ASSERT_LINE);
}
INTERRUPT_GEN_MEMBER(pacland_state::mcu_vblank_irq)
{
if(m_mcu_irq_mask)
if (state && m_mcu_irq_mask)
m_mcu->set_input_line(0, ASSERT_LINE);
}
@ -433,12 +430,10 @@ MACHINE_CONFIG_START(pacland_state::pacland)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", MC6809E, XTAL(49'152'000)/32) /* 1.536 MHz */
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", pacland_state, main_vblank_irq)
MCFG_CPU_ADD("mcu", HD63701, XTAL(49'152'000)/8) /* 6.144 MHz? */
MCFG_CPU_PROGRAM_MAP(mcu_map)
MCFG_CPU_IO_MAP(mcu_port_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", pacland_state, mcu_vblank_irq)
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synching between the MCU and the CPU */
@ -449,6 +444,7 @@ MACHINE_CONFIG_START(pacland_state::pacland)
MCFG_SCREEN_RAW_PARAMS(XTAL(49'152'000)/8, 384, 3*8, 39*8, 264, 2*8, 30*8)
MCFG_SCREEN_UPDATE_DRIVER(pacland_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(pacland_state, vblank_irq))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", pacland)
MCFG_PALETTE_ADD("palette", 256*4+256*4+64*16)

View File

@ -40,14 +40,6 @@ WRITE8_MEMBER(tceptor_state::m68k_shared_w)
/*******************************************************************/
INTERRUPT_GEN_MEMBER(tceptor_state::m6809_vb_interrupt)
{
if (m_m6809_irq_enable)
device.execute().set_input_line(0, HOLD_LINE);
else
m_m6809_irq_enable = 1;
}
WRITE8_MEMBER(tceptor_state::m6809_irq_enable_w)
{
m_m6809_irq_enable = 1;
@ -59,26 +51,12 @@ WRITE8_MEMBER(tceptor_state::m6809_irq_disable_w)
}
INTERRUPT_GEN_MEMBER(tceptor_state::m68k_vb_interrupt)
{
if (m_m68k_irq_enable)
device.execute().set_input_line(M68K_IRQ_1, HOLD_LINE);
}
WRITE16_MEMBER(tceptor_state::m68k_irq_enable_w)
{
m_m68k_irq_enable = data;
}
INTERRUPT_GEN_MEMBER(tceptor_state::mcu_vb_interrupt)
{
if (m_mcu_irq_enable)
device.execute().set_input_line(0, HOLD_LINE);
else
m_mcu_irq_enable = 1;
}
WRITE8_MEMBER(tceptor_state::mcu_irq_enable_w)
{
m_mcu_irq_enable = 1;
@ -350,7 +328,6 @@ MACHINE_CONFIG_START(tceptor_state::tceptor)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6809, XTAL(49'152'000)/32)
MCFG_CPU_PROGRAM_MAP(m6809_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", tceptor_state, m6809_vb_interrupt)
MCFG_CPU_ADD("audiocpu", M65C02, XTAL(49'152'000)/24)
MCFG_CPU_PROGRAM_MAP(m6502_a_map)
@ -360,12 +337,10 @@ MACHINE_CONFIG_START(tceptor_state::tceptor)
MCFG_CPU_ADD("sub", M68000, XTAL(49'152'000)/4)
MCFG_CPU_PROGRAM_MAP(m68k_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", tceptor_state, m68k_vb_interrupt)
MCFG_CPU_ADD("mcu", HD63701, XTAL(49'152'000)/8) // or compatible 6808 with extra instructions
MCFG_CPU_PROGRAM_MAP(mcu_map)
MCFG_CPU_IO_MAP(mcu_io_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", tceptor_state, mcu_vb_interrupt)
MCFG_QUANTUM_TIME(attotime::from_hz(6000))

View File

@ -63,8 +63,7 @@ public:
virtual void video_start() override;
DECLARE_PALETTE_INIT(pacland);
INTERRUPT_GEN_MEMBER(main_vblank_irq);
INTERRUPT_GEN_MEMBER(mcu_vblank_irq);
DECLARE_WRITE_LINE_MEMBER(vblank_irq);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void switch_palette();

View File

@ -10,6 +10,8 @@ public:
tceptor_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_subcpu(*this, "sub"),
m_mcu(*this, "mcu"),
m_cus30(*this, "namco"),
m_tile_ram(*this, "tile_ram"),
m_tile_attr(*this, "tile_attr"),
@ -25,6 +27,8 @@ public:
uint8_t m_m68k_irq_enable;
uint8_t m_mcu_irq_enable;
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_subcpu;
required_device<cpu_device> m_mcu;
required_device<namco_cus30_device> m_cus30;
required_shared_ptr<uint8_t> m_tile_ram;
required_shared_ptr<uint8_t> m_tile_attr;

View File

@ -38,7 +38,7 @@ public:
DECLARE_MACHINE_RESET(xevios);
DECLARE_MACHINE_RESET(battles);
uint32_t screen_update_xevious(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(battles_interrupt_4);
DECLARE_WRITE_LINE_MEMBER(battles_interrupt_4);
TIMER_DEVICE_CALLBACK_MEMBER(battles_nmi_generate);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
DECLARE_WRITE8_MEMBER( xevious_fg_videoram_w );

View File

@ -175,7 +175,8 @@ READ8_MEMBER( xevious_state::battles_input_port_r )
}
INTERRUPT_GEN_MEMBER(xevious_state::battles_interrupt_4)
WRITE_LINE_MEMBER(xevious_state::battles_interrupt_4)
{
device.execute().set_input_line(0, HOLD_LINE);
if (state)
m_subcpu3->set_input_line(0, HOLD_LINE);
}

View File

@ -535,6 +535,19 @@ WRITE_LINE_MEMBER(tceptor_state::screen_vblank_tceptor)
if (state)
{
memcpy(m_sprite_ram_buffered.get(), m_sprite_ram, 0x200);
if (m_m6809_irq_enable)
m_maincpu->set_input_line(0, HOLD_LINE);
else
m_m6809_irq_enable = 1;
if (m_m68k_irq_enable)
m_subcpu->set_input_line(1, HOLD_LINE);
if (m_mcu_irq_enable)
m_mcu->set_input_line(0, HOLD_LINE);
else
m_mcu_irq_enable = 1;
}
}