mirror of
https://github.com/holub/mame
synced 2025-05-09 15:51:48 +03:00
galaga.cpp, pacland.cpp, tceptor.cpp: Replace MCFG_CPU_VBLANK_INT with line callbacks (nw)
This commit is contained in:
parent
28e8cc6674
commit
293c6bd627
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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 );
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user