Williams System 11 pinball boards: Fix audiocpu clock; this fixes the speed of music in High Speed and the pitch of the voices in Black Knight 2000. [Lord Nightmare]

This commit is contained in:
Jonathan Gevaryahu 2012-12-28 07:47:50 +00:00
parent ec177d66bc
commit 0dd39db3de
3 changed files with 20 additions and 21 deletions

View File

@ -7,7 +7,6 @@
ToDo:
- Background music is slow in High Speed
- Can coin up but not start
- Doesn't react to the Advance button very well
@ -236,7 +235,7 @@ void s11_state::device_timer(emu_timer &timer, device_timer_id id, int param, vo
if(param == 1)
{
m_maincpu->set_input_line(M6800_IRQ_LINE,ASSERT_LINE);
m_irq_timer->adjust(attotime::from_ticks(32,4000000/2),0);
m_irq_timer->adjust(attotime::from_ticks(32,XTAL_4MHz/2),0);
m_pias->cb1_w(0);
m_irq_active = true;
m_pia28->ca1_w(BIT(ioport("DIAGS")->read(), 2)); // Advance
@ -245,7 +244,7 @@ void s11_state::device_timer(emu_timer &timer, device_timer_id id, int param, vo
else
{
m_maincpu->set_input_line(M6800_IRQ_LINE,CLEAR_LINE);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,4000000/2),1);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,XTAL_4MHz/2),1);
m_pias->cb1_w(1);
m_irq_active = false;
m_pia28->ca1_w(1);
@ -280,7 +279,7 @@ WRITE_LINE_MEMBER( s11_state::pia_irq )
if(state == CLEAR_LINE)
{
// restart IRQ timer
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,4000000/2),1);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,XTAL_4MHz/2),1);
m_irq_active = false;
}
else
@ -592,13 +591,13 @@ DRIVER_INIT_MEMBER( s11_state, s11 )
membank("bank0")->set_entry(0);
membank("bank1")->set_entry(0);
m_irq_timer = timer_alloc(TIMER_IRQ);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,4000000/2),1);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,XTAL_4MHz/2),1);
m_irq_active = false;
}
static MACHINE_CONFIG_START( s11, s11_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6802, 4000000)
MCFG_CPU_ADD("maincpu", M6802, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(s11_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s11_state, s11)
@ -618,7 +617,7 @@ static MACHINE_CONFIG_START( s11, s11_state )
MCFG_NVRAM_ADD_1FILL("nvram")
/* Add the soundcard */
MCFG_CPU_ADD("audiocpu", M6808, 3580000)
MCFG_CPU_ADD("audiocpu", M6808, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(s11_audio_map)
MCFG_SPEAKER_STANDARD_MONO("mono")

View File

@ -245,7 +245,7 @@ void s11a_state::device_timer(emu_timer &timer, device_timer_id id, int param, v
if(param == 1)
{
m_maincpu->set_input_line(M6800_IRQ_LINE,ASSERT_LINE);
m_irq_timer->adjust(attotime::from_ticks(32,4000000/2),0);
m_irq_timer->adjust(attotime::from_ticks(32,XTAL_4MHz/2),0);
m_pias->cb1_w(0);
m_irq_active = true;
m_pia28->ca1_w(BIT(ioport("DIAGS")->read(), 2)); // Advance
@ -254,7 +254,7 @@ void s11a_state::device_timer(emu_timer &timer, device_timer_id id, int param, v
else
{
m_maincpu->set_input_line(M6800_IRQ_LINE,CLEAR_LINE);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,4000000/2),1);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,XTAL_4MHz/2),1);
m_pias->cb1_w(1);
m_irq_active = false;
m_pia28->ca1_w(1);
@ -290,7 +290,7 @@ WRITE_LINE_MEMBER( s11a_state::pia_irq )
if(state == CLEAR_LINE)
{
// restart IRQ timer
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,4000000/2),1);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,XTAL_4MHz/2),1);
m_irq_active = false;
}
else
@ -616,13 +616,13 @@ DRIVER_INIT_MEMBER( s11a_state, s11a )
membank("bank1")->set_entry(0);
membank("bgbank")->set_entry(0);
m_irq_timer = timer_alloc(TIMER_IRQ);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,4000000/2),1);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,XTAL_4MHz/2),1);
m_irq_active = false;
}
static MACHINE_CONFIG_START( s11a, s11a_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6808, 4000000)
MCFG_CPU_ADD("maincpu", M6808, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(s11a_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s11a_state, s11a)
@ -642,7 +642,7 @@ static MACHINE_CONFIG_START( s11a, s11a_state )
MCFG_NVRAM_ADD_1FILL("nvram")
/* Add the soundcard */
MCFG_CPU_ADD("audiocpu", M6802, 3580000)
MCFG_CPU_ADD("audiocpu", M6802, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(s11a_audio_map)
MCFG_SPEAKER_STANDARD_MONO("mono")

View File

@ -243,7 +243,7 @@ void s11b_state::device_timer(emu_timer &timer, device_timer_id id, int param, v
if(param == 1)
{
m_maincpu->set_input_line(M6800_IRQ_LINE,ASSERT_LINE);
m_irq_timer->adjust(attotime::from_ticks(32,4000000/2),0);
m_irq_timer->adjust(attotime::from_ticks(32,XTAL_4MHz/2),0);
m_pias->cb1_w(0);
m_irq_active = true;
m_pia28->ca1_w(BIT(ioport("DIAGS")->read(), 2)); // Advance
@ -252,7 +252,7 @@ void s11b_state::device_timer(emu_timer &timer, device_timer_id id, int param, v
else
{
m_maincpu->set_input_line(M6800_IRQ_LINE,CLEAR_LINE);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,4000000/2),1);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,XTAL_4MHz/2),1);
m_pias->cb1_w(1);
m_irq_active = false;
m_pia28->ca1_w(1);
@ -291,7 +291,7 @@ WRITE_LINE_MEMBER( s11b_state::pia_irq )
if(state == CLEAR_LINE)
{
// restart IRQ timer
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,4000000/2),1);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,XTAL_4MHz/2),1);
m_irq_active = false;
}
else
@ -651,7 +651,7 @@ DRIVER_INIT_MEMBER( s11b_state, s11b )
membank("bgbank")->set_entry(0);
m_invert = false;
m_irq_timer = timer_alloc(TIMER_IRQ);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,4000000/2),1);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,XTAL_4MHz/2),1);
m_irq_active = false;
}
@ -667,13 +667,13 @@ DRIVER_INIT_MEMBER( s11b_state, s11b_invert )
membank("bgbank")->set_entry(0);
m_invert = true;
m_irq_timer = timer_alloc(TIMER_IRQ);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,4000000/2),1);
m_irq_timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,XTAL_4MHz/2),1);
m_irq_active = false;
}
static MACHINE_CONFIG_START( s11b, s11b_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6808, 4000000)
MCFG_CPU_ADD("maincpu", M6808, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(s11b_main_map)
MCFG_MACHINE_RESET_OVERRIDE(s11b_state, s11b)
@ -693,7 +693,7 @@ static MACHINE_CONFIG_START( s11b, s11b_state )
MCFG_NVRAM_ADD_1FILL("nvram")
/* Add the soundcard */
MCFG_CPU_ADD("audiocpu", M6802, 3580000)
MCFG_CPU_ADD("audiocpu", M6802, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(s11b_audio_map)
MCFG_SPEAKER_STANDARD_MONO("mono")
@ -707,7 +707,7 @@ static MACHINE_CONFIG_START( s11b, s11b_state )
MCFG_PIA6821_ADD("pias", pias_intf)
/* Add the background music card */
MCFG_CPU_ADD("bgcpu", M6809E, 8000000) // MC68B09E
MCFG_CPU_ADD("bgcpu", M6809E, XTAL_8MHz) // MC68B09E (note: schematics show this as 8mhz/2, but games crash very quickly with that speed?)
MCFG_CPU_PROGRAM_MAP(s11b_bg_map)
MCFG_QUANTUM_TIME(attotime::from_hz(50))