mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
cps1.cpp: Interrupt acknowledge routine based on schematics (nw)
This commit is contained in:
parent
08e7ef5682
commit
5de599fd94
@ -339,7 +339,7 @@ INTERRUPT_GEN_MEMBER(cps_state::cps1_interrupt)
|
||||
/* Strider also has a IRQ4 handler. It is input port related, but the game */
|
||||
/* works without it. It is the *only* CPS1 game to have that. */
|
||||
/* ...until we found out that ganbare relies on it, see below */
|
||||
device.execute().set_input_line(2, HOLD_LINE);
|
||||
device.execute().set_input_line(2, ASSERT_LINE);
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(cps_state::ganbare_interrupt)
|
||||
@ -347,7 +347,17 @@ TIMER_DEVICE_CALLBACK_MEMBER(cps_state::ganbare_interrupt)
|
||||
/* not sure on the timing or source of this - the game needs it once per frame, */
|
||||
/* otherwise you get a "HARD ERROR" after boot */
|
||||
if (param == 0)
|
||||
m_maincpu->set_input_line(4, HOLD_LINE);
|
||||
m_maincpu->set_input_line(4, ASSERT_LINE);
|
||||
}
|
||||
|
||||
IRQ_CALLBACK_MEMBER(cps_state::cps1_int_ack)
|
||||
{
|
||||
// clear the IPL1 and IPL2 flip-flops
|
||||
m_maincpu->set_input_line(2, CLEAR_LINE);
|
||||
m_maincpu->set_input_line(4, CLEAR_LINE);
|
||||
|
||||
// assert VPA
|
||||
return M68K_INT_ACK_AUTOVECTOR;
|
||||
}
|
||||
|
||||
|
||||
@ -3296,6 +3306,7 @@ static MACHINE_CONFIG_START( cps1_10MHz )
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz ) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(main_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(sub_map)
|
||||
@ -3367,6 +3378,7 @@ static MACHINE_CONFIG_DERIVED( qsound, cps1_12MHz )
|
||||
MCFG_CPU_REPLACE("maincpu", M68000, XTAL_12MHz ) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(qsound_main_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
|
||||
|
||||
MCFG_CPU_REPLACE("audiocpu", Z80, XTAL_8MHz) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(qsound_sub_map)
|
||||
|
@ -1565,6 +1565,7 @@ static MACHINE_CONFIG_START( fcrash )
|
||||
MCFG_CPU_ADD("maincpu", M68000, 10000000)
|
||||
MCFG_CPU_PROGRAM_MAP(fcrash_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 24000000/6) /* ? */
|
||||
MCFG_CPU_PROGRAM_MAP(sound_map)
|
||||
@ -1629,6 +1630,7 @@ static MACHINE_CONFIG_START( kodb )
|
||||
MCFG_CPU_ADD("maincpu", M68000, 10000000)
|
||||
MCFG_CPU_PROGRAM_MAP(fcrash_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 3579545)
|
||||
MCFG_CPU_PROGRAM_MAP(kodb_sound_map)
|
||||
@ -1725,6 +1727,7 @@ static MACHINE_CONFIG_START( knightsb )
|
||||
MCFG_CPU_ADD("maincpu", M68000, 24000000 / 2)
|
||||
MCFG_CPU_PROGRAM_MAP(knightsb_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 29821000 / 8)
|
||||
MCFG_CPU_PROGRAM_MAP(knightsb_z80map)
|
||||
@ -2107,6 +2110,7 @@ static MACHINE_CONFIG_START( dinopic )
|
||||
MCFG_CPU_ADD("maincpu", M68000, 12000000)
|
||||
MCFG_CPU_PROGRAM_MAP(dinopic_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
|
||||
|
||||
//MCFG_CPU_ADD("audiocpu", PIC16C57, 12000000)
|
||||
//MCFG_DEVICE_DISABLE() /* no valid dumps .. */
|
||||
@ -2266,6 +2270,7 @@ static MACHINE_CONFIG_START( sgyxz )
|
||||
MCFG_CPU_ADD("maincpu", M68000, 12000000)
|
||||
MCFG_CPU_PROGRAM_MAP(sgyxz_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 3579545)
|
||||
MCFG_CPU_PROGRAM_MAP(sgyxz_sound_map)
|
||||
@ -2360,6 +2365,7 @@ static MACHINE_CONFIG_START( punipic )
|
||||
MCFG_CPU_ADD("maincpu", M68000, 12000000)
|
||||
MCFG_CPU_PROGRAM_MAP(punipic_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
|
||||
|
||||
//MCFG_CPU_ADD("audiocpu", PIC16C57, 12000000)
|
||||
//MCFG_DEVICE_DISABLE() /* no valid dumps .. */
|
||||
@ -2555,6 +2561,7 @@ static MACHINE_CONFIG_START( sf2m1 )
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz )
|
||||
MCFG_CPU_PROGRAM_MAP(sf2m1_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(sgyxz_sound_map)
|
||||
@ -2888,6 +2895,7 @@ static MACHINE_CONFIG_START( slampic )
|
||||
MCFG_CPU_ADD("maincpu", M68000, 12000000)
|
||||
MCFG_CPU_PROGRAM_MAP(slampic_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
|
||||
|
||||
//MCFG_CPU_ADD("audiocpu", PIC16C57, 12000000)
|
||||
//MCFG_DEVICE_DISABLE() /* no valid dumps .. */
|
||||
@ -2989,6 +2997,7 @@ static MACHINE_CONFIG_START( varthb )
|
||||
MCFG_CPU_ADD("maincpu", M68000, 12000000)
|
||||
MCFG_CPU_PROGRAM_MAP(varthb_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 3579545)
|
||||
MCFG_CPU_PROGRAM_MAP(sgyxz_sound_map)
|
||||
|
@ -324,6 +324,7 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(screen_vblank_cps1);
|
||||
INTERRUPT_GEN_MEMBER(cps1_interrupt);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(ganbare_interrupt);
|
||||
IRQ_CALLBACK_MEMBER(cps1_int_ack);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(cps2_interrupt);
|
||||
TIMER_CALLBACK_MEMBER(cps2_update_digital_volume);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user