From 3b9de40b0eae2bdb23410cfa59e43b97258c058e Mon Sep 17 00:00:00 2001 From: hap Date: Wed, 13 Nov 2024 13:07:12 +0100 Subject: snk: add more side effect checks, tangramq: add sound nmi clear --- src/devices/sound/snkwave.cpp | 18 +++--- src/mame/nichibutsu/cclimber.cpp | 74 ++++++++++++------------- src/mame/nichibutsu/cclimber.h | 2 +- src/mame/snk/snk.cpp | 117 ++++++++++++++++++++------------------- 4 files changed, 103 insertions(+), 108 deletions(-) diff --git a/src/devices/sound/snkwave.cpp b/src/devices/sound/snkwave.cpp index 44e6ba51466..bab1a44611e 100644 --- a/src/devices/sound/snkwave.cpp +++ b/src/devices/sound/snkwave.cpp @@ -18,15 +18,15 @@ DEFINE_DEVICE_TYPE(SNKWAVE, snkwave_device, "snkwave", "SNK Wave") // snkwave_device - constructor //------------------------------------------------- -snkwave_device::snkwave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SNKWAVE, tag, owner, clock), - device_sound_interface(mconfig, *this), - m_stream(nullptr), - m_external_clock(0), - m_sample_rate(0), - m_frequency(0), - m_counter(0), - m_waveform_position(0) +snkwave_device::snkwave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, SNKWAVE, tag, owner, clock), + device_sound_interface(mconfig, *this), + m_stream(nullptr), + m_external_clock(0), + m_sample_rate(0), + m_frequency(0), + m_counter(0), + m_waveform_position(0) { std::fill(std::begin(m_waveform), std::end(m_waveform), 0); } diff --git a/src/mame/nichibutsu/cclimber.cpp b/src/mame/nichibutsu/cclimber.cpp index fa3f7c935cf..7f362308def 100644 --- a/src/mame/nichibutsu/cclimber.cpp +++ b/src/mame/nichibutsu/cclimber.cpp @@ -260,6 +260,30 @@ void cclimber_state::machine_start() save_item(NAME(m_nmi_mask)); } + +void cclimber_state::nmi_mask_w(int state) +{ + m_nmi_mask = state; +} + +void cclimber_state::vblank_irq(int state) +{ + if (state && m_nmi_mask) + m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); +} + +void cclimber_state::bagmanf_vblank_irq(int state) +{ + if (state && m_nmi_mask) + m_maincpu->set_input_line(0, HOLD_LINE); +} + +void cclimber_state::tangramq_sound_nmi_clear_w(uint8_t data) +{ + m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); +} + + void swimmer_state::swimmer_sh_soundlatch_w(uint8_t data) { m_soundlatch->write(data); @@ -312,19 +336,6 @@ void toprollr_state::toprollr_rombank_w(int state) } -void cclimber_state::nmi_mask_w(int state) -{ - m_nmi_mask = state; -} - - -uint8_t cclimber_state::bagmanf_a000_r() -{ - // Should this actually use the same PAL16R6 as the parent set? - return 0x3f; -} - - /* Note that River Patrol reads/writes to a000-a4f0. This is a bug in the code. The instruction at 0x0593 should say LD DE,$8000 */ @@ -493,7 +504,7 @@ void cclimber_state::bagmanf_map(address_map &map) map(0x9800, 0x9800).portr("SYSTEM"); map(0x98dc, 0x98df).ram().share("bigspritectrl"); // wrong map(0x9c00, 0x9fff).ram(); // not used, but initialized - map(0xa000, 0xa000).r(FUNC(cclimber_state::bagmanf_a000_r)); + map(0xa000, 0xa000).lr8(NAME([]() { return 0x3f; })); // should this actually use the same PAL16R6 as the parent set? map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0)); map(0xa800, 0xa800).nopr().w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w)); map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w)); @@ -589,7 +600,7 @@ void cclimber_state::tangramq_sound_map(address_map &map) map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w)); map(0x8002, 0x8007).w("wave", FUNC(snkwave_device::snkwave_w)); map(0x8008, 0x8009).w("ay2", FUNC(ay8910_device::address_data_w)); - map(0xa000, 0xa000).nopw(); // TODO: NMI related? + map(0xa000, 0xa000).w(FUNC(cclimber_state::tangramq_sound_nmi_clear_w)); map(0xe000, 0xe3ff).ram(); } @@ -840,8 +851,8 @@ static INPUT_PORTS_START( tangramq ) PORT_START("P1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) @@ -850,8 +861,8 @@ static INPUT_PORTS_START( tangramq ) PORT_START("P2") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) @@ -919,14 +930,8 @@ static INPUT_PORTS_START( tangramq ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("SYSTEM2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0xf7, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END static INPUT_PORTS_START( swimmer ) @@ -1316,17 +1321,6 @@ static GFXDECODE_START( gfx_au ) GFXDECODE_ENTRY( "bigsprite", 0x0000, swimmer_charlayout, 0, 8 ) // big sprites GFXDECODE_END -void cclimber_state::vblank_irq(int state) -{ - if (state && m_nmi_mask) - m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); -} - -void cclimber_state::bagmanf_vblank_irq(int state) -{ - if (state && m_nmi_mask) - m_maincpu->set_input_line(0, HOLD_LINE); -} void cclimber_state::root(machine_config &config) { @@ -1389,12 +1383,12 @@ void cclimber_state::tangramq(machine_config &config) Z80(config, m_audiocpu, 8_MHz_XTAL / 2); m_audiocpu->set_addrmap(AS_PROGRAM, &cclimber_state::tangramq_sound_map); - m_audiocpu->set_periodic_int(FUNC(cclimber_state::nmi_line_pulse), attotime::from_ticks(0x8000, 8_MHz_XTAL)); + m_audiocpu->set_periodic_int(FUNC(cclimber_state::nmi_line_assert), attotime::from_ticks(0x4000, 8_MHz_XTAL / 2)); // 244Hz // sound hardware SPEAKER(config, "speaker").front_center(); - GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0, HOLD_LINE); + GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0, HOLD_LINE); // auto ack AY8910(config, "ay1", 8_MHz_XTAL / 4).add_route(ALL_OUTPUTS, "speaker", 0.35); AY8910(config, "ay2", 8_MHz_XTAL / 4).add_route(ALL_OUTPUTS, "speaker", 0.35); @@ -2568,7 +2562,7 @@ ROM_START( tangramq ) ROM_REGION( 0x2000, "audiocpu", 0 ) ROM_LOAD( "s1.a6", 0x0000, 0x2000, CRC(05af38f6) SHA1(7bdbf798964aa4d603fca0178b3f8fc251d207f6) ) - // BTANB?: colors look glitchy when in this order, but matches PCB reference and flyers + // BTANB?: bigsprite colors look glitchy when in this order, but matches PCB reference and flyers ROM_REGION( 0x2000, "bigsprite", 0 ) ROM_LOAD( "b2.e17", 0x0000, 0x1000, CRC(77d21b84) SHA1(7f9bfbfbc7fd51a97f15fee54ac851ddfa97b213) ) // 1xxxxxxxxxxx = 0xFF ROM_LOAD( "b1.e19", 0x1000, 0x1000, CRC(f3ec2562) SHA1(859473c45b9d22c138b70ea649b93d41721e1e0d) ) // 1xxxxxxxxxxx = 0xFF diff --git a/src/mame/nichibutsu/cclimber.h b/src/mame/nichibutsu/cclimber.h index 51756076229..fa50ff80e58 100644 --- a/src/mame/nichibutsu/cclimber.h +++ b/src/mame/nichibutsu/cclimber.h @@ -97,8 +97,8 @@ private: bool m_nmi_mask = false; - uint8_t bagmanf_a000_r(); void bagmanf_vblank_irq(int state); + void tangramq_sound_nmi_clear_w(uint8_t data); void cclimber_palette(palette_device &palette) const; diff --git a/src/mame/snk/snk.cpp b/src/mame/snk/snk.cpp index e250d18c63e..44afe9481f0 100644 --- a/src/mame/snk/snk.cpp +++ b/src/mame/snk/snk.cpp @@ -700,10 +700,8 @@ void snk_state::machine_start() uint8_t snk_state::snk_cpuA_nmi_trigger_r() { - if(!machine().side_effects_disabled()) - { + if (!machine().side_effects_disabled()) m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); - } return 0xff; } @@ -714,10 +712,8 @@ void snk_state::snk_cpuA_nmi_ack_w(uint8_t data) uint8_t snk_state::snk_cpuB_nmi_trigger_r() { - if(!machine().side_effects_disabled()) - { + if (!machine().side_effects_disabled()) m_subcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); - } return 0xff; } @@ -743,7 +739,8 @@ enum uint8_t snk_state::marvins_sound_nmi_ack_r() { - m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + if (!machine().side_effects_disabled()) + m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); return 0xff; } @@ -778,19 +775,22 @@ void snk_state::sgladiat_soundlatch_w(uint8_t data) uint8_t snk_state::sgladiat_soundlatch_r() { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sgladiat_sndirq_update_callback),this), BUSY_CLEAR); + if (!machine().side_effects_disabled()) + machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sgladiat_sndirq_update_callback),this), BUSY_CLEAR); return m_soundlatch->read(); } uint8_t snk_state::sgladiat_sound_nmi_ack_r() { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sgladiat_sndirq_update_callback),this), CMDIRQ_CLEAR); + if (!machine().side_effects_disabled()) + machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sgladiat_sndirq_update_callback),this), CMDIRQ_CLEAR); return 0xff; } uint8_t snk_state::sgladiat_sound_irq_ack_r() { - m_audiocpu->set_input_line(0, CLEAR_LINE); + if (!machine().side_effects_disabled()) + m_audiocpu->set_input_line(0, CLEAR_LINE); return 0xff; } @@ -903,20 +903,23 @@ void snk_state::snk_sound_status_w(uint8_t data) uint8_t snk_state::tnk3_cmdirq_ack_r() { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sndirq_update_callback),this), CMDIRQ_CLEAR); + if (!machine().side_effects_disabled()) + machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sndirq_update_callback),this), CMDIRQ_CLEAR); return 0xff; } uint8_t snk_state::tnk3_ymirq_ack_r() { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sndirq_update_callback),this), YM1IRQ_CLEAR); + if (!machine().side_effects_disabled()) + machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sndirq_update_callback),this), YM1IRQ_CLEAR); return 0xff; } uint8_t snk_state::tnk3_busy_clear_r() { // it's uncertain whether the latch should be cleared here or when it's read - m_soundlatch->clear_w(); + if (!machine().side_effects_disabled()) + m_soundlatch->clear_w(); machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sndirq_update_callback),this), BUSY_CLEAR); return 0xff; } @@ -939,7 +942,6 @@ A trojan could be used on the board to verify the exact behaviour. *****************************************************************************/ - void snk_state::hardflags_scrollx_w(uint8_t data) { m_hf_posx = (m_hf_posx & ~0xff) | data; @@ -986,12 +988,12 @@ int snk_state::hardflags_check8(int num) (hardflags_check(num + 7) << 7); } -uint8_t snk_state::hardflags1_r(){ return hardflags_check8(0*8); } -uint8_t snk_state::hardflags2_r(){ return hardflags_check8(1*8); } -uint8_t snk_state::hardflags3_r(){ return hardflags_check8(2*8); } -uint8_t snk_state::hardflags4_r(){ return hardflags_check8(3*8); } -uint8_t snk_state::hardflags5_r(){ return hardflags_check8(4*8); } -uint8_t snk_state::hardflags6_r(){ return hardflags_check8(5*8); } +uint8_t snk_state::hardflags1_r() { return hardflags_check8(0*8); } +uint8_t snk_state::hardflags2_r() { return hardflags_check8(1*8); } +uint8_t snk_state::hardflags3_r() { return hardflags_check8(2*8); } +uint8_t snk_state::hardflags4_r() { return hardflags_check8(3*8); } +uint8_t snk_state::hardflags5_r() { return hardflags_check8(4*8); } +uint8_t snk_state::hardflags6_r() { return hardflags_check8(5*8); } uint8_t snk_state::hardflags7_r() { // apparently the startup tests use bits 0&1 while the game uses bits 4&5 @@ -1019,7 +1021,6 @@ A trojan could be used on the board to verify the exact behaviour. *****************************************************************************/ - void snk_state::turbocheck16_1_w(uint8_t data) { m_tc16_posy = (m_tc16_posy & ~0xff) | data; @@ -1078,18 +1079,18 @@ int snk_state::turbofront_check8(int small, int num) (turbofront_check(small, num + 7) << 7); } -uint8_t snk_state::turbocheck16_1_r(){ return turbofront_check8(1, 0*8); } -uint8_t snk_state::turbocheck16_2_r(){ return turbofront_check8(1, 1*8); } -uint8_t snk_state::turbocheck16_3_r(){ return turbofront_check8(1, 2*8); } -uint8_t snk_state::turbocheck16_4_r(){ return turbofront_check8(1, 3*8); } -uint8_t snk_state::turbocheck16_5_r(){ return turbofront_check8(1, 4*8); } -uint8_t snk_state::turbocheck16_6_r(){ return turbofront_check8(1, 5*8); } -uint8_t snk_state::turbocheck16_7_r(){ return turbofront_check8(1, 6*8); } -uint8_t snk_state::turbocheck16_8_r(){ return turbofront_check8(1, 7*8); } -uint8_t snk_state::turbocheck32_1_r(){ return turbofront_check8(0, 0*8); } -uint8_t snk_state::turbocheck32_2_r(){ return turbofront_check8(0, 1*8); } -uint8_t snk_state::turbocheck32_3_r(){ return turbofront_check8(0, 2*8); } -uint8_t snk_state::turbocheck32_4_r(){ return turbofront_check8(0, 3*8); } +uint8_t snk_state::turbocheck16_1_r() { return turbofront_check8(1, 0*8); } +uint8_t snk_state::turbocheck16_2_r() { return turbofront_check8(1, 1*8); } +uint8_t snk_state::turbocheck16_3_r() { return turbofront_check8(1, 2*8); } +uint8_t snk_state::turbocheck16_4_r() { return turbofront_check8(1, 3*8); } +uint8_t snk_state::turbocheck16_5_r() { return turbofront_check8(1, 4*8); } +uint8_t snk_state::turbocheck16_6_r() { return turbofront_check8(1, 5*8); } +uint8_t snk_state::turbocheck16_7_r() { return turbofront_check8(1, 6*8); } +uint8_t snk_state::turbocheck16_8_r() { return turbofront_check8(1, 7*8); } +uint8_t snk_state::turbocheck32_1_r() { return turbofront_check8(0, 0*8); } +uint8_t snk_state::turbocheck32_2_r() { return turbofront_check8(0, 1*8); } +uint8_t snk_state::turbocheck32_3_r() { return turbofront_check8(0, 2*8); } +uint8_t snk_state::turbocheck32_4_r() { return turbofront_check8(0, 3*8); } @@ -4033,18 +4034,18 @@ GFXDECODE_END void snk_state::marvins(machine_config &config) { /* basic machine hardware */ - Z80(config, m_maincpu, 3360000); /* 3.36 MHz */ + Z80(config, m_maincpu, 3360000); // 3.36 MHz m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::marvins_cpuA_map); m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - Z80(config, m_subcpu, 3360000); /* 3.36 MHz */ + Z80(config, m_subcpu, 3360000); // 3.36 MHz m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::marvins_cpuB_map); m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - Z80(config, m_audiocpu, 4000000); /* verified on schematics */ + Z80(config, m_audiocpu, 8_MHz_XTAL/2); // verified on schematics m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::marvins_sound_map); m_audiocpu->set_addrmap(AS_IO, &snk_state::marvins_sound_portmap); - m_audiocpu->set_periodic_int(FUNC(snk_state::nmi_line_assert), attotime::from_hz(244)); // schematics show a separate 244Hz timer + m_audiocpu->set_periodic_int(FUNC(snk_state::nmi_line_assert), attotime::from_ticks(0x4000, 8_MHz_XTAL/2)); // 244Hz config.set_maximum_quantum(attotime::from_hz(6000)); @@ -4067,11 +4068,11 @@ void snk_state::marvins(machine_config &config) SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); - m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0, HOLD_LINE); + m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0, HOLD_LINE); // auto ack - AY8910(config, "ay1", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35); /* verified on schematics */ - AY8910(config, "ay2", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35);/* verified on schematics */ - SNKWAVE(config, "wave", 8000000).add_route(ALL_OUTPUTS, "mono", 0.30); /* verified on schematics */ + AY8910(config, "ay1", 8_MHz_XTAL/4).add_route(ALL_OUTPUTS, "mono", 0.35); // verified on schematics + AY8910(config, "ay2", 8_MHz_XTAL/4).add_route(ALL_OUTPUTS, "mono", 0.35); // verified on schematics + SNKWAVE(config, "wave", 8_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 0.30); // verified on schematics } void snk_state::vangrd2(machine_config &config) @@ -4168,15 +4169,15 @@ void snk_state::hal21(machine_config &config) void snk_state::tnk3(machine_config &config) { /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(13'400'000)/4); /* verified on pcb */ + Z80(config, m_maincpu, 13.4_MHz_XTAL/4); /* verified on pcb */ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::tnk3_cpuA_map); m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - Z80(config, m_subcpu, XTAL(13'400'000)/4); /* verified on pcb */ + Z80(config, m_subcpu, 13.4_MHz_XTAL/4); /* verified on pcb */ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::tnk3_cpuB_map); m_subcpu->set_vblank_int("screen", FUNC(snk_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, &snk_state::tnk3_YM3526_sound_map); config.set_maximum_quantum(attotime::from_hz(6000)); @@ -4201,7 +4202,7 @@ void snk_state::tnk3(machine_config &config) GENERIC_LATCH_8(config, m_soundlatch); - ym3526_device &ym1(YM3526(config, "ym1", XTAL(8'000'000)/2)); /* verified on pcb */ + ym3526_device &ym1(YM3526(config, "ym1", 8_MHz_XTAL/2)); /* verified on pcb */ ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1)); ym1.add_route(ALL_OUTPUTS, "mono", 2.0); } @@ -4227,7 +4228,7 @@ void snk_state::athena(machine_config &config) m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_YM3526_sound_map); /* sound hardware */ - ym3526_device &ym2(YM3526(config, "ym2", XTAL(8'000'000)/2)); /* verified on pcb */ + ym3526_device &ym2(YM3526(config, "ym2", 8_MHz_XTAL/2)); /* verified on pcb */ ym2.irq_handler().set(FUNC(snk_state::ymirq_callback_2)); ym2.add_route(ALL_OUTPUTS, "mono", 2.0); } @@ -4241,7 +4242,7 @@ void snk_state::fitegolf(machine_config &config) m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3812_sound_map); /* sound hardware */ - ym3812_device &ym1(YM3812(config.replace(), "ym1", XTAL(4'000'000))); /* verified on pcb */ + ym3812_device &ym1(YM3812(config.replace(), "ym1", 4_MHz_XTAL)); /* verified on pcb */ ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1)); ym1.add_route(ALL_OUTPUTS, "mono", 2.0); } @@ -4261,15 +4262,15 @@ void snk_state::countryc(machine_config &config) void snk_state::ikari(machine_config &config) { /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(13'400'000)/4); /* verified on pcb */ + Z80(config, m_maincpu, 13.4_MHz_XTAL/4); /* verified on pcb */ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::ikari_cpuA_map); m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - Z80(config, m_subcpu, XTAL(13'400'000)/4); /* verified on pcb */ + Z80(config, m_subcpu, 13.4_MHz_XTAL/4); /* verified on pcb */ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::ikari_cpuB_map); m_subcpu->set_vblank_int("screen", FUNC(snk_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, &snk_state::YM3526_YM3526_sound_map); config.set_maximum_quantum(attotime::from_hz(6000)); @@ -4293,11 +4294,11 @@ void snk_state::ikari(machine_config &config) GENERIC_LATCH_8(config, m_soundlatch); - ym3526_device &ym1(YM3526(config, "ym1", XTAL(8'000'000)/2)); /* verified on pcb */ + ym3526_device &ym1(YM3526(config, "ym1", 8_MHz_XTAL/2)); /* verified on pcb */ ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1)); ym1.add_route(ALL_OUTPUTS, "mono", 2.0); - ym3526_device &ym2(YM3526(config, "ym2", XTAL(8'000'000)/2)); /* verified on pcb */ + ym3526_device &ym2(YM3526(config, "ym2", 8_MHz_XTAL/2)); /* verified on pcb */ ym2.irq_handler().set(FUNC(snk_state::ymirq_callback_2)); ym2.add_route(ALL_OUTPUTS, "mono", 2.0); } @@ -4310,7 +4311,7 @@ void snk_state::victroad(machine_config &config) m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_Y8950_sound_map); /* sound hardware */ - y8950_device &ym2(Y8950(config.replace(), "ym2", XTAL(8'000'000)/2)); /* verified on pcb */ + y8950_device &ym2(Y8950(config.replace(), "ym2", 8_MHz_XTAL/2)); /* verified on pcb */ ym2.irq_handler().set(FUNC(snk_state::ymirq_callback_2)); ym2.add_route(ALL_OUTPUTS, "mono", 2.0); } @@ -4318,15 +4319,15 @@ void snk_state::victroad(machine_config &config) void snk_state::bermudat(machine_config &config) { /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(8'000'000)/2); /* verified on pcb */ + Z80(config, m_maincpu, 8_MHz_XTAL/2); /* verified on pcb */ m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::bermudat_cpuA_map); m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - Z80(config, m_subcpu, XTAL(8'000'000)/2); /* verified on pcb */ + Z80(config, m_subcpu, 8_MHz_XTAL/2); /* verified on pcb */ m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::bermudat_cpuB_map); m_subcpu->set_vblank_int("screen", FUNC(snk_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, &snk_state::YM3526_Y8950_sound_map); config.set_maximum_quantum(attotime::from_hz(24000)); @@ -4350,11 +4351,11 @@ void snk_state::bermudat(machine_config &config) GENERIC_LATCH_8(config, m_soundlatch); - ym3526_device &ym1(YM3526(config, "ym1", XTAL(8'000'000)/2)); /* verified on pcb */ + ym3526_device &ym1(YM3526(config, "ym1", 8_MHz_XTAL/2)); /* verified on pcb */ ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1)); ym1.add_route(ALL_OUTPUTS, "mono", 2.0); - y8950_device &ym2(Y8950(config, "ym2", XTAL(8'000'000)/2)); /* verified on pcb */ + y8950_device &ym2(Y8950(config, "ym2", 8_MHz_XTAL/2)); /* verified on pcb */ ym2.irq_handler().set(FUNC(snk_state::ymirq_callback_2)); ym2.add_route(ALL_OUTPUTS, "mono", 2.0); } -- cgit v1.2.3