This commit is contained in:
angelosa 2017-11-22 04:42:43 +01:00
parent 4cb6ff1e4c
commit 25565246d8
2 changed files with 28 additions and 6 deletions

View File

@ -108,7 +108,6 @@ driver modified by Hau
#include "sound/ym2413.h"
#include "sound/2610intf.h"
#include "sound/ymf278b.h"
#include "speaker.h"
@ -226,6 +225,25 @@ INTERRUPT_GEN_MEMBER(metro_state::metro_periodic_interrupt)
update_irq_state();
}
TIMER_DEVICE_CALLBACK_MEMBER(metro_state::bangball_scanline)
{
int scanline = param;
// vblank irq
if(scanline == 224)
{
m_requested_int[m_vblank_bit] = 1;
m_requested_int[4] = 1; // ???
update_irq_state();
}
else if(scanline < 224 && (*m_irq_enable & 2) == 0)
{
// pretty likely hblank irq (pressing a button when clearing a stage)
m_requested_int[1] = 1;
update_irq_state();
}
}
/* lev 2-7 (lev 1 seems sound related) */
INTERRUPT_GEN_MEMBER(metro_state::karatour_interrupt)
{
@ -3152,9 +3170,10 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bangball, msgogo )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(bangball_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 60) // ?
MCFG_CPU_VBLANK_INT_REMOVE()
MCFG_CPU_PERIODIC_INT_REMOVE()
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", metro_state, bangball_scanline, "screen", 0, 1)
// doesn't like 58.2 Hz
MCFG_DEVICE_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(60)
@ -3163,8 +3182,9 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( batlbubl, msgogo )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(batlbubl_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt)
MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 60) // ?
MCFG_CPU_VBLANK_INT_REMOVE()
MCFG_CPU_PERIODIC_INT_REMOVE()
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", metro_state, bangball_scanline, "screen", 0, 1)
// doesn't like 58.2 Hz
MCFG_DEVICE_MODIFY("screen")

View File

@ -13,6 +13,7 @@
#include "video/imagetek_i4100.h"
#include "machine/eepromser.h"
#include "machine/gen_latch.h"
#include "machine/timer.h"
#include "screen.h"
class metro_state : public driver_device
@ -102,6 +103,7 @@ public:
uint32_t screen_update_psac_vdp2_mix(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(metro_vblank_interrupt);
INTERRUPT_GEN_MEMBER(metro_periodic_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(bangball_scanline);
INTERRUPT_GEN_MEMBER(karatour_interrupt);
INTERRUPT_GEN_MEMBER(puzzlet_interrupt);
IRQ_CALLBACK_MEMBER(metro_irq_callback);