Fixes for MT#00413 and MT#01232 Bugs [Mamesick]

This commit is contained in:
Scott Stone 2012-04-25 01:05:53 +00:00
parent c3cab67518
commit 389d12b57c
2 changed files with 50 additions and 34 deletions

View File

@ -19,12 +19,15 @@ Preliminary driver by:
/* prototypes */
static KONAMI_SETLINES_CALLBACK( aliens_banking );
static INTERRUPT_GEN( aliens_interrupt )
static TIMER_DEVICE_CALLBACK( aliens_scanline )
{
aliens_state *state = device->machine().driver_data<aliens_state>();
aliens_state *state = timer.machine().driver_data<aliens_state>();
int scanline = param;
if (k051960_is_irq_enabled(state->m_k051960))
device_set_input_line(device, KONAMI_IRQ_LINE, HOLD_LINE);
if(scanline == 240 && k051960_is_irq_enabled(state->m_k051960)) // vblank irq
cputag_set_input_line(timer.machine(), "maincpu", KONAMI_IRQ_LINE, HOLD_LINE);
else if(((scanline % 32) == 0) && (k051960_is_nmi_enabled(state->m_k051960))) // timer irq
cputag_set_input_line(timer.machine(), "maincpu", INPUT_LINE_NMI, PULSE_LINE);
}
READ8_MEMBER(aliens_state::bankedram_r)
@ -70,7 +73,7 @@ WRITE8_MEMBER(aliens_state::aliens_sh_irqtrigger_w)
{
soundlatch_byte_w(space, offset, data);
device_set_input_line_and_vector(m_audiocpu, 0, HOLD_LINE, 0xff);
device_set_input_line(m_audiocpu, 0, HOLD_LINE);
}
static WRITE8_DEVICE_HANDLER( aliens_snd_bankswitch_w )
@ -257,15 +260,15 @@ static MACHINE_CONFIG_START( aliens, aliens_state )
/* basic machine hardware */
/* external clock should be 12MHz probably, CPU internal divider and precise cycle timings */
/* are unknown though. 3MHz is too low, sprites flicker in the pseudo-3D levels */
MCFG_CPU_ADD("maincpu", KONAMI, 6000000) /* ? */
MCFG_CPU_ADD("maincpu", KONAMI,XTAL_24MHz/8) /* 052001 (verified on pcb) */
MCFG_CPU_PROGRAM_MAP(aliens_map)
MCFG_CPU_VBLANK_INT("screen", aliens_interrupt)
MCFG_TIMER_ADD_SCANLINE("scantimer", aliens_scanline, "screen", 0, 1)
MCFG_CPU_ADD("audiocpu", Z80, 3579545)
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(aliens_sound_map)
MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_START(aliens)
MCFG_MACHINE_RESET(aliens)
@ -273,7 +276,7 @@ static MACHINE_CONFIG_START( aliens, aliens_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
@ -289,12 +292,12 @@ static MACHINE_CONFIG_START( aliens, aliens_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
MCFG_SOUND_CONFIG(ym2151_config)
MCFG_SOUND_ROUTE(0, "mono", 0.60)
MCFG_SOUND_ROUTE(1, "mono", 0.60)
MCFG_SOUND_ADD("k007232", K007232, 3579545)
MCFG_SOUND_ADD("k007232", K007232, XTAL_3_579545MHz) /* verified on pcb */
MCFG_SOUND_CONFIG(k007232_config)
MCFG_SOUND_ROUTE(0, "mono", 0.20)
MCFG_SOUND_ROUTE(1, "mono", 0.20)

View File

@ -24,6 +24,17 @@
static KONAMI_SETLINES_CALLBACK( crimfght_banking );
static TIMER_DEVICE_CALLBACK( crimfght_scanline )
{
crimfght_state *state = timer.machine().driver_data<crimfght_state>();
int scanline = param;
if(scanline == 240 && k051960_is_irq_enabled(state->m_k051960)) // vblank irq
cputag_set_input_line(timer.machine(), "maincpu", KONAMI_IRQ_LINE, HOLD_LINE);
else if(((scanline % 32) == 0) && (k051960_is_nmi_enabled(state->m_k051960))) // timer irq
cputag_set_input_line(timer.machine(), "maincpu", INPUT_LINE_NMI, PULSE_LINE);
}
WRITE8_MEMBER(crimfght_state::crimfght_coin_w)
{
coin_counter_w(machine(), 0, data & 1);
@ -33,7 +44,7 @@ WRITE8_MEMBER(crimfght_state::crimfght_coin_w)
WRITE8_MEMBER(crimfght_state::crimfght_sh_irqtrigger_w)
{
soundlatch_byte_w(space, offset, data);
device_set_input_line_and_vector(m_audiocpu, 0, HOLD_LINE, 0xff);
device_set_input_line(m_audiocpu, 0, HOLD_LINE);
}
static WRITE8_DEVICE_HANDLER( crimfght_snd_bankswitch_w )
@ -275,13 +286,15 @@ static MACHINE_RESET( crimfght )
static MACHINE_CONFIG_START( crimfght, crimfght_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", KONAMI, 3000000) /* ? */
MCFG_CPU_ADD("maincpu", KONAMI,XTAL_24MHz/8) /* 052001 (verified on pcb) */
MCFG_CPU_PROGRAM_MAP(crimfght_map)
MCFG_CPU_VBLANK_INT("screen", irq0_line_hold)
MCFG_TIMER_ADD_SCANLINE("scantimer", crimfght_scanline, "screen", 0, 1)
MCFG_CPU_ADD("audiocpu", Z80, 3579545) /* verified with PCB */
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(crimfght_sound_map)
MCFG_QUANTUM_TIME(attotime::from_hz(600))
MCFG_MACHINE_START(crimfght)
MCFG_MACHINE_RESET(crimfght)
@ -289,7 +302,7 @@ static MACHINE_CONFIG_START( crimfght, crimfght_state )
MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(54) /* adjusted - compared with PCB speed */
MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
@ -305,12 +318,12 @@ static MACHINE_CONFIG_START( crimfght, crimfght_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("ymsnd", YM2151, 3579545) /* verified with PCB */
MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
MCFG_SOUND_CONFIG(ym2151_config)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_SOUND_ADD("k007232", K007232, 3579545)
MCFG_SOUND_ADD("k007232", K007232, XTAL_3_579545MHz) /* verified on pcb */
MCFG_SOUND_CONFIG(k007232_config)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)
MCFG_SOUND_ROUTE(0, "rspeaker", 0.20)