From 63dcacf33da5294593c0a90d57163cda4115c73f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 13:35:22 -0500 Subject: [PATCH] dev170 - YM2151: fix noise frequency on ymfm issue #1441 raising ver num to allow possible compat change --- src/engine/engine.h | 4 ++-- src/engine/platform/sound/ymfm/ymfm_opm.cpp | 2 +- src/engine/platform/sound/ymfm/ymfm_opz.cpp | 2 +- src/gui/editControls.cpp | 10 ++++++++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index 57696e94b..66d645291 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -56,8 +56,8 @@ #define DIV_UNSTABLE -#define DIV_VERSION "dev169" -#define DIV_ENGINE_VERSION 169 +#define DIV_VERSION "dev170" +#define DIV_ENGINE_VERSION 170 // for imports #define DIV_VERSION_MOD 0xff01 #define DIV_VERSION_FC 0xff02 diff --git a/src/engine/platform/sound/ymfm/ymfm_opm.cpp b/src/engine/platform/sound/ymfm/ymfm_opm.cpp index 958dae579..9876c2bce 100644 --- a/src/engine/platform/sound/ymfm/ymfm_opm.cpp +++ b/src/engine/platform/sound/ymfm/ymfm_opm.cpp @@ -176,7 +176,7 @@ int32_t opm_registers::clock_noise_and_lfo() { // base noise frequency is measured at 2x 1/2 FM frequency; this // means each tick counts as two steps against the noise counter - uint32_t freq = noise_frequency(); + uint32_t freq = noise_frequency() ^ 0x1f; for (int rep = 0; rep < 2; rep++) { // evidence seems to suggest the LFSR is clocked continually and just diff --git a/src/engine/platform/sound/ymfm/ymfm_opz.cpp b/src/engine/platform/sound/ymfm/ymfm_opz.cpp index b20bea3c1..0bfce6bc6 100644 --- a/src/engine/platform/sound/ymfm/ymfm_opz.cpp +++ b/src/engine/platform/sound/ymfm/ymfm_opz.cpp @@ -327,7 +327,7 @@ int32_t opz_registers::clock_noise_and_lfo() { // base noise frequency is measured at 2x 1/2 FM frequency; this // means each tick counts as two steps against the noise counter - uint32_t freq = noise_frequency(); + uint32_t freq = noise_frequency() ^ 0x1f; for (int rep = 0; rep < 2; rep++) { // evidence seems to suggest the LFSR is clocked continually and just diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index f08893b96..2786e536e 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -509,9 +509,15 @@ void FurnaceGUI::drawMobileControls() { doAction(GUI_ACTION_SAVE_AS); } - ImGui::Button("1.1+ .dmf"); + if (ImGui::Button("1.1+ .dmf")) { + mobileMenuOpen=false; + openFileDialog(GUI_FILE_SAVE_DMF); + } ImGui::SameLine(); - ImGui::Button("Legacy .dmf"); + if (ImGui::Button("Legacy .dmf")) { + mobileMenuOpen=false; + openFileDialog(GUI_FILE_SAVE_DMF_LEGACY); + } ImGui::SameLine(); if (ImGui::Button("Export Audio")) { openFileDialog(GUI_FILE_EXPORT_AUDIO_ONE);