mirror of
https://github.com/holub/mame
synced 2025-04-20 15:32:45 +03:00
gah, this causes a regression here too, avoid (nw)
This commit is contained in:
parent
4f96fdf9b5
commit
fb989bb821
@ -200,6 +200,38 @@ other supported games as well.
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
// bchopper doesn't like the proper IRQ controller hookup, title screen jumps around, as does ingame at times
|
||||
// like m92.c I think this is because we don't clear things at the right time.
|
||||
#define USE_HACKED_IRQS
|
||||
|
||||
#ifdef USE_HACKED_IRQS
|
||||
|
||||
#define M72_TRIGGER_IRQ0 m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_upd71059c->HACK_get_base_vector()+0 ); /* VBL interrupt */
|
||||
#define M72_TRIGGER_IRQ1 m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_upd71059c->HACK_get_base_vector()+1 ); /* Sprite buffer complete interrupt */
|
||||
#define M72_TRIGGER_IRQ2 m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_upd71059c->HACK_get_base_vector()+2 ); /* Raster interrupt */
|
||||
#define M72_TRIGGER_IRQ3 m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_upd71059c->HACK_get_base_vector()+3 ); /* Sound cpu->Main cpu interrupt */
|
||||
// not used due to HOLD LINE logic
|
||||
#define M72_CLEAR_IRQ0 ;
|
||||
#define M72_CLEAR_IRQ1 ;
|
||||
#define M72_CLEAR_IRQ2 ;
|
||||
#define M72_CLEAR_IRQ3 ;
|
||||
|
||||
#else
|
||||
|
||||
#define M72_TRIGGER_IRQ0 m_upd71059c->ir0_w(1);
|
||||
#define M72_TRIGGER_IRQ1 m_upd71059c->ir1_w(1);
|
||||
#define M72_TRIGGER_IRQ2 m_upd71059c->ir2_w(1);
|
||||
#define M72_TRIGGER_IRQ3 m_upd71059c->ir3_w(1);
|
||||
// not sure when these should happen, probably the source of our issues
|
||||
#define M72_CLEAR_IRQ0 m_upd71059c->ir0_w(0);
|
||||
#define M72_CLEAR_IRQ1 m_upd71059c->ir1_w(0);
|
||||
#define M72_CLEAR_IRQ2 m_upd71059c->ir2_w(0);
|
||||
#define M72_CLEAR_IRQ3 m_upd71059c->ir3_w(0);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
void m72_state::machine_start()
|
||||
{
|
||||
m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m72_state::scanline_interrupt),this));
|
||||
@ -237,20 +269,22 @@ TIMER_CALLBACK_MEMBER(m72_state::scanline_interrupt)
|
||||
/* raster interrupt - visible area only? */
|
||||
if (scanline < 256 && scanline == m_raster_irq_position - 128)
|
||||
{
|
||||
m_screen->update_partial(scanline);
|
||||
m_upd71059c->ir2_w(1);
|
||||
M72_TRIGGER_IRQ2
|
||||
}
|
||||
else
|
||||
m_upd71059c->ir2_w(0);
|
||||
{
|
||||
M72_CLEAR_IRQ2
|
||||
}
|
||||
|
||||
/* VBLANK interrupt */
|
||||
if (scanline == 256)
|
||||
{
|
||||
m_screen->update_partial(scanline);
|
||||
m_upd71059c->ir0_w(1);
|
||||
M72_TRIGGER_IRQ0
|
||||
}
|
||||
else
|
||||
m_upd71059c->ir0_w(0);
|
||||
{
|
||||
M72_CLEAR_IRQ0
|
||||
}
|
||||
|
||||
/* adjust for next scanline */
|
||||
if (++scanline >= m_screen->height())
|
||||
@ -1857,8 +1891,9 @@ static MACHINE_CONFIG_START( m72_base, m72_state )
|
||||
MCFG_CPU_ADD("maincpu",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MCFG_CPU_PROGRAM_MAP(m72_map)
|
||||
MCFG_CPU_IO_MAP(m72_portmap)
|
||||
#ifndef USE_HACKED_IRQS
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
|
||||
|
||||
#endif
|
||||
MCFG_CPU_ADD("soundcpu",Z80, SOUND_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(sound_ram_map)
|
||||
MCFG_CPU_IO_MAP(sound_portmap)
|
||||
@ -1968,7 +2003,9 @@ static MACHINE_CONFIG_START( rtype2, m72_state )
|
||||
MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MCFG_CPU_PROGRAM_MAP(rtype2_map)
|
||||
MCFG_CPU_IO_MAP(m84_portmap)
|
||||
#ifndef USE_HACKED_IRQS
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
|
||||
#endif
|
||||
|
||||
MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(sound_rom_map)
|
||||
@ -2011,7 +2048,9 @@ static MACHINE_CONFIG_START( cosmccop, m72_state )
|
||||
MCFG_CPU_ADD("maincpu", V35,MASTER_CLOCK/2)
|
||||
MCFG_CPU_PROGRAM_MAP(kengo_map)
|
||||
MCFG_CPU_IO_MAP(m84_v33_portmap)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
|
||||
//#ifndef USE_HACKED_IRQS
|
||||
// MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
|
||||
//#endif
|
||||
|
||||
MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(sound_rom_map)
|
||||
@ -2019,7 +2058,7 @@ static MACHINE_CONFIG_START( cosmccop, m72_state )
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
|
||||
/* IRQs are generated by main Z80 and YM2151 */
|
||||
|
||||
MCFG_PIC8259_ADD( "upd71059c", INPUTLINE("maincpu", 0), VCC, NULL)
|
||||
// MCFG_PIC8259_ADD( "upd71059c", INPUTLINE("maincpu", 0), VCC, NULL)
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(m72_state,kengo)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(m72_state,kengo)
|
||||
@ -2058,8 +2097,9 @@ static MACHINE_CONFIG_START( m82, m72_state )
|
||||
MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MCFG_CPU_PROGRAM_MAP(m82_map)
|
||||
MCFG_CPU_IO_MAP(m82_portmap)
|
||||
#ifndef USE_HACKED_IRQS
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
|
||||
|
||||
#endif
|
||||
MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(sound_rom_map)
|
||||
MCFG_CPU_IO_MAP(rtype2_sound_portmap)
|
||||
@ -2093,8 +2133,9 @@ static MACHINE_CONFIG_START( poundfor, m72_state )
|
||||
MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MCFG_CPU_PROGRAM_MAP(rtype2_map)
|
||||
MCFG_CPU_IO_MAP(poundfor_portmap)
|
||||
#ifndef USE_HACKED_IRQS
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb)
|
||||
|
||||
#endif
|
||||
MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(sound_rom_map)
|
||||
MCFG_CPU_IO_MAP(poundfor_sound_portmap)
|
||||
|
@ -345,25 +345,30 @@ WRITE16_MEMBER(m72_state::videoram2_w)
|
||||
WRITE16_MEMBER(m72_state::irq_line_w)
|
||||
{
|
||||
COMBINE_DATA(&m_raster_irq_position);
|
||||
// printf("m_raster_irq_position %04x\n", m_raster_irq_position);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::scrollx1_w)
|
||||
{
|
||||
m_screen->update_partial(m_screen->vpos());
|
||||
COMBINE_DATA(&m_scrollx1);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::scrollx2_w)
|
||||
{
|
||||
m_screen->update_partial(m_screen->vpos());
|
||||
COMBINE_DATA(&m_scrollx2);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::scrolly1_w)
|
||||
{
|
||||
m_screen->update_partial(m_screen->vpos());
|
||||
COMBINE_DATA(&m_scrolly1);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::scrolly2_w)
|
||||
{
|
||||
m_screen->update_partial(m_screen->vpos());
|
||||
COMBINE_DATA(&m_scrolly2);
|
||||
}
|
||||
|
||||
@ -437,7 +442,7 @@ WRITE16_MEMBER(m72_state::m82_gfx_ctrl_w)
|
||||
WRITE16_MEMBER(m72_state::m82_tm_ctrl_w)
|
||||
{
|
||||
COMBINE_DATA(&m_m82_tmcontrol);
|
||||
printf("tmcontrol %04x\n", m_m82_tmcontrol);
|
||||
// printf("tmcontrol %04x\n", m_m82_tmcontrol);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user