From 098be490ce0e1a60286bcdf888b9970e0e88b08e Mon Sep 17 00:00:00 2001 From: JOTEGO Date: Wed, 26 Feb 2025 13:38:52 +0100 Subject: [PATCH] taito/flstory.cpp, taito/nycaptor.cpp: Corrected sound CPU interrupt frequency. (#13408) Interrupt is generated by dividing down the output of the 8 MHz crystal oscillator. --- src/mame/taito/flstory.cpp | 7 ++++--- src/mame/taito/nycaptor.cpp | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/mame/taito/flstory.cpp b/src/mame/taito/flstory.cpp index d06ff813b57..1d56aae90df 100644 --- a/src/mame/taito/flstory.cpp +++ b/src/mame/taito/flstory.cpp @@ -1140,10 +1140,11 @@ void flstory_state::common(machine_config &config) Z80(config, m_maincpu, XTAL(10'733'000)/2); // verified on PCB m_maincpu->set_vblank_int("screen", FUNC(flstory_state::irq0_line_hold)); - Z80(config, m_audiocpu, XTAL(8'000'000)/2); // verified on PCB + Z80(config, m_audiocpu, 8_MHz_XTAL/2); // verified on PCB m_audiocpu->set_addrmap(AS_PROGRAM, &flstory_state::sound_map); - // IRQ generated by ???, NMI generated by the main CPU - m_audiocpu->set_periodic_int(FUNC(flstory_state::irq0_line_hold), attotime::from_hz(2*60)); + // IRQ generated with discrete-logic counter + const attotime audio_irq_period = attotime::from_ticks(0x10000, 8_MHz_XTAL); + m_audiocpu->set_periodic_int(FUNC(flstory_state::irq0_line_hold), audio_irq_period); // 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs config.set_maximum_quantum(attotime::from_hz(6000)); diff --git a/src/mame/taito/nycaptor.cpp b/src/mame/taito/nycaptor.cpp index f721ca0bebb..2c20325d9b6 100644 --- a/src/mame/taito/nycaptor.cpp +++ b/src/mame/taito/nycaptor.cpp @@ -742,9 +742,10 @@ void nycaptor_state::nycaptor(machine_config &config) m_subcpu->set_addrmap(AS_PROGRAM, &nycaptor_state::nycaptor_slave_map); m_subcpu->set_vblank_int("screen", FUNC(nycaptor_state::irq0_line_hold)); /* IRQ generated by ??? */ - Z80(config, m_audiocpu, 8000000/2); + Z80(config, m_audiocpu, 8_MHz_XTAL/2); m_audiocpu->set_addrmap(AS_PROGRAM, &nycaptor_state::sound_map); - m_audiocpu->set_periodic_int(FUNC(nycaptor_state::irq0_line_hold), attotime::from_hz(2*60)); /* IRQ generated by ??? */ + const attotime audio_irq_period = attotime::from_ticks(0x10000, 8_MHz_XTAL); + m_audiocpu->set_periodic_int(FUNC(nycaptor_state::irq0_line_hold), audio_irq_period); /* IRQ generated with discrete logic */ TAITO68705_MCU(config, m_bmcu, 2000000);