fastfred.cpp, mermaid.cpp, rollrace.cpp: Replace MCFG_CPU_VBLANK_INT with line callbacks (nw)

This commit is contained in:
AJR 2018-03-28 20:17:35 -04:00
parent ead9bc470a
commit 95dcb83844
7 changed files with 299 additions and 286 deletions

View File

@ -180,6 +180,8 @@ READ8_MEMBER(fastfred_state::imago_sprites_offset_r)
WRITE_LINE_MEMBER(fastfred_state::nmi_mask_w) WRITE_LINE_MEMBER(fastfred_state::nmi_mask_w)
{ {
m_nmi_mask = state; m_nmi_mask = state;
if (!m_nmi_mask)
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
} }
WRITE8_MEMBER(fastfred_state::sound_nmi_mask_w) WRITE8_MEMBER(fastfred_state::sound_nmi_mask_w)
@ -618,10 +620,10 @@ static GFXDECODE_START( imago )
GFXDECODE_ENTRY( "gfx4", 0, imago_char_1bpp, 0x140, 1 ) GFXDECODE_ENTRY( "gfx4", 0, imago_char_1bpp, 0x140, 1 )
GFXDECODE_END GFXDECODE_END
INTERRUPT_GEN_MEMBER(fastfred_state::vblank_irq) WRITE_LINE_MEMBER(fastfred_state::vblank_irq)
{ {
if(m_nmi_mask) if (state && m_nmi_mask)
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
} }
INTERRUPT_GEN_MEMBER(fastfred_state::sound_timer_irq) INTERRUPT_GEN_MEMBER(fastfred_state::sound_timer_irq)
@ -635,7 +637,6 @@ MACHINE_CONFIG_START(fastfred_state::fastfred)
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL(12'432'000)/4) /* 3.108 MHz; xtal from pcb pics, divider not verified */ MCFG_CPU_ADD("maincpu", Z80, XTAL(12'432'000)/4) /* 3.108 MHz; xtal from pcb pics, divider not verified */
MCFG_CPU_PROGRAM_MAP(fastfred_map) MCFG_CPU_PROGRAM_MAP(fastfred_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", fastfred_state, vblank_irq)
MCFG_CPU_ADD("audiocpu", Z80, XTAL(12'432'000)/8) /* 1.554 MHz; xtal from pcb pics, divider not verified */ MCFG_CPU_ADD("audiocpu", Z80, XTAL(12'432'000)/8) /* 1.554 MHz; xtal from pcb pics, divider not verified */
MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_PROGRAM_MAP(sound_map)
@ -660,6 +661,7 @@ MACHINE_CONFIG_START(fastfred_state::fastfred)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(fastfred_state, screen_update_fastfred) MCFG_SCREEN_UPDATE_DRIVER(fastfred_state, screen_update_fastfred)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(fastfred_state, vblank_irq))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", fastfred) MCFG_GFXDECODE_ADD("gfxdecode", "palette", fastfred)

View File

@ -153,6 +153,8 @@ WRITE_LINE_MEMBER(mermaid_state::ay2_enable_w)
WRITE_LINE_MEMBER(mermaid_state::nmi_mask_w) WRITE_LINE_MEMBER(mermaid_state::nmi_mask_w)
{ {
m_nmi_mask = state; m_nmi_mask = state;
if (!m_nmi_mask)
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
} }
/* Memory Map */ /* Memory Map */
@ -420,8 +422,6 @@ WRITE_LINE_MEMBER(mermaid_state::rougien_adpcm_int)
INTERRUPT_GEN_MEMBER(mermaid_state::vblank_irq) INTERRUPT_GEN_MEMBER(mermaid_state::vblank_irq)
{ {
if(m_nmi_mask)
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
MACHINE_CONFIG_START(mermaid_state::mermaid) MACHINE_CONFIG_START(mermaid_state::mermaid)

View File

@ -47,6 +47,8 @@ WRITE8_MEMBER(rollrace_state::fake_d800_w)
WRITE_LINE_MEMBER(rollrace_state::nmi_mask_w) WRITE_LINE_MEMBER(rollrace_state::nmi_mask_w)
{ {
m_nmi_mask = state; m_nmi_mask = state;
if (!m_nmi_mask)
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
} }
WRITE8_MEMBER(rollrace_state::sound_nmi_mask_w) WRITE8_MEMBER(rollrace_state::sound_nmi_mask_w)
@ -235,10 +237,10 @@ static GFXDECODE_START( rollrace )
GFXDECODE_ENTRY( "gfx5", 0x0000, spritelayout, 0, 32 ) GFXDECODE_ENTRY( "gfx5", 0x0000, spritelayout, 0, 32 )
GFXDECODE_END GFXDECODE_END
INTERRUPT_GEN_MEMBER(rollrace_state::vblank_irq) WRITE_LINE_MEMBER(rollrace_state::vblank_irq)
{ {
if(m_nmi_mask) if (state && m_nmi_mask)
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
} }
INTERRUPT_GEN_MEMBER(rollrace_state::sound_timer_irq) INTERRUPT_GEN_MEMBER(rollrace_state::sound_timer_irq)
@ -252,7 +254,6 @@ MACHINE_CONFIG_START(rollrace_state::rollrace)
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80,XTAL(24'000'000)/8) /* verified on pcb */ MCFG_CPU_ADD("maincpu", Z80,XTAL(24'000'000)/8) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(rollrace_map) MCFG_CPU_PROGRAM_MAP(rollrace_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", rollrace_state, vblank_irq)
MCFG_CPU_ADD("audiocpu", Z80,XTAL(24'000'000)/16) /* verified on pcb */ MCFG_CPU_ADD("audiocpu", Z80,XTAL(24'000'000)/16) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(rollrace_sound_map) MCFG_CPU_PROGRAM_MAP(rollrace_sound_map)
@ -275,6 +276,7 @@ MACHINE_CONFIG_START(rollrace_state::rollrace)
MCFG_SCREEN_VISIBLE_AREA(0,256-1,16, 255-16) MCFG_SCREEN_VISIBLE_AREA(0,256-1,16, 255-16)
MCFG_SCREEN_UPDATE_DRIVER(rollrace_state, screen_update) MCFG_SCREEN_UPDATE_DRIVER(rollrace_state, screen_update)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(rollrace_state, vblank_irq))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", rollrace) MCFG_GFXDECODE_ADD("gfxdecode", "palette", rollrace)
MCFG_PALETTE_ADD("palette", 256) MCFG_PALETTE_ADD("palette", 256)

View File

@ -74,7 +74,7 @@ public:
TILE_GET_INFO_MEMBER(imago_get_tile_info_fg); TILE_GET_INFO_MEMBER(imago_get_tile_info_fg);
TILE_GET_INFO_MEMBER(imago_get_tile_info_web); TILE_GET_INFO_MEMBER(imago_get_tile_info_web);
INTERRUPT_GEN_MEMBER(vblank_irq); DECLARE_WRITE_LINE_MEMBER(vblank_irq);
INTERRUPT_GEN_MEMBER(sound_timer_irq); INTERRUPT_GEN_MEMBER(sound_timer_irq);
virtual void machine_start() override; virtual void machine_start() override;

View File

@ -101,6 +101,7 @@ public:
INTERRUPT_GEN_MEMBER(vblank_irq); INTERRUPT_GEN_MEMBER(vblank_irq);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
uint8_t collision_check( rectangle& rect ); uint8_t collision_check( rectangle& rect );
void collision_update();
DECLARE_WRITE_LINE_MEMBER(rougien_adpcm_int); DECLARE_WRITE_LINE_MEMBER(rougien_adpcm_int);
void rougien(machine_config &config); void rougien(machine_config &config);
void mermaid(machine_config &config); void mermaid(machine_config &config);

View File

@ -58,7 +58,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);
INTERRUPT_GEN_MEMBER(vblank_irq); DECLARE_WRITE_LINE_MEMBER(vblank_irq);
INTERRUPT_GEN_MEMBER(sound_timer_irq); INTERRUPT_GEN_MEMBER(sound_timer_irq);
void rollace2(machine_config &config); void rollace2(machine_config &config);
void rollrace(machine_config &config); void rollrace(machine_config &config);

View File

@ -244,10 +244,7 @@ uint8_t mermaid_state::collision_check( rectangle& rect )
return data; return data;
} }
WRITE_LINE_MEMBER(mermaid_state::screen_vblank_mermaid) void mermaid_state::collision_update()
{
// rising edge
if (state)
{ {
const rectangle &visarea = m_screen->visible_area(); const rectangle &visarea = m_screen->visible_area();
uint8_t *spriteram = m_spriteram; uint8_t *spriteram = m_spriteram;
@ -525,4 +522,15 @@ WRITE_LINE_MEMBER(mermaid_state::screen_vblank_mermaid)
m_coll_bit6 |= collision_check(rect); m_coll_bit6 |= collision_check(rect);
} }
} }
WRITE_LINE_MEMBER(mermaid_state::screen_vblank_mermaid)
{
// rising edge
if (state)
{
collision_update();
if (m_nmi_mask)
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
} }