From 96d45dafb2fa9c2ae31cca7126d9201d5fde8f18 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 7 Apr 2022 01:04:35 -0500 Subject: [PATCH] OPZ: same --- src/engine/platform/sound/ymfm/ymfm_opz.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/sound/ymfm/ymfm_opz.cpp b/src/engine/platform/sound/ymfm/ymfm_opz.cpp index 7ca69dda4..62a3d4d9c 100644 --- a/src/engine/platform/sound/ymfm/ymfm_opz.cpp +++ b/src/engine/platform/sound/ymfm/ymfm_opz.cpp @@ -338,8 +338,12 @@ int32_t opz_registers::clock_noise_and_lfo() // manual, though it might not be implemented exactly this way on chip uint32_t rate0 = lfo_rate(); uint32_t rate1 = lfo2_rate(); - m_lfo_counter[0] += (0x10 | bitfield(rate0, 0, 4)) << bitfield(rate0, 4, 4); - m_lfo_counter[1] += (0x10 | bitfield(rate1, 0, 4)) << bitfield(rate1, 4, 4); + if (rate0 != 0) { + m_lfo_counter[0] += (0x10 | bitfield(rate0, 0, 4)) << bitfield(rate0, 4, 4); + } + if (rate1 != 0) { + m_lfo_counter[1] += (0x10 | bitfield(rate1, 0, 4)) << bitfield(rate1, 4, 4); + } uint32_t lfo0 = bitfield(m_lfo_counter[0], 22, 8); uint32_t lfo1 = bitfield(m_lfo_counter[1], 22, 8);