From 58edecb9f9ab6994b9096f1e92b19f4db1693c83 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 10 Sep 2023 11:53:31 -0500 Subject: [PATCH] GUI: fix SNES echo filter input in chip manager --- src/gui/gui.cpp | 2 +- src/gui/gui.h | 5 +++-- src/gui/settings.cpp | 2 +- src/gui/sysConf.cpp | 8 ++++---- src/gui/sysManager.cpp | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 5dc3d5c36..d734037a4 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4195,7 +4195,7 @@ bool FurnaceGUI::loop() { exitDisabledTimer=1; for (int i=0; isong.systemLen; i++) { if (ImGui::TreeNode(fmt::sprintf("%d. %s##_SYSP%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { - drawSysConf(i,e->song.system[i],e->song.systemFlags[i],true,true); + drawSysConf(i,i,e->song.system[i],e->song.systemFlags[i],true,true); ImGui::TreePop(); } } diff --git a/src/gui/gui.h b/src/gui/gui.h index a4bf28caa..cf5000708 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1317,7 +1317,8 @@ class FurnaceGUI { String workingDirVGMExport, workingDirZSMExport, workingDirROMExport, workingDirFont, workingDirColors, workingDirKeybinds; String workingDirLayout, workingDirROM, workingDirTest; String mmlString[32]; - String mmlStringW, mmlStringSNES, grooveString, grooveListString, mmlStringModTable; + String mmlStringW, grooveString, grooveListString, mmlStringModTable; + String mmlStringSNES[DIV_MAX_CHIPS]; String folderString; std::vector sysSearchResults; @@ -2176,7 +2177,7 @@ class FurnaceGUI { void drawAlgorithm(unsigned char alg, FurnaceGUIFMAlgs algType, const ImVec2& size); void drawFMEnv(unsigned char tl, unsigned char ar, unsigned char dr, unsigned char d2r, unsigned char rr, unsigned char sl, unsigned char sus, unsigned char egt, unsigned char algOrGlobalSus, float maxTl, float maxArDr, float maxRr, const ImVec2& size, unsigned short instType); void drawGBEnv(unsigned char vol, unsigned char len, unsigned char sLen, bool dir, const ImVec2& size); - bool drawSysConf(int chan, DivSystem type, DivConfig& flags, bool modifyOnChange, bool fromMenu=false); + bool drawSysConf(int chan, int sysPos, DivSystem type, DivConfig& flags, bool modifyOnChange, bool fromMenu=false); void kvsConfig(DivInstrument* ins, bool supportsKVS=true); void drawFMPreview(const ImVec2& size); void renderFMPreview(const DivInstrument* ins, int pos=0); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 5d49c021e..419ff91b4 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -653,7 +653,7 @@ void FurnaceGUI::drawSettings() { String sysFlagsS=settings.initialSys.getString(fmt::sprintf("flags%d",i),""); DivConfig sysFlags; sysFlags.loadFromBase64(sysFlagsS.c_str()); - if (drawSysConf(-1,sysID,sysFlags,false)) { + if (drawSysConf(-1,i,sysID,sysFlags,false)) { settings.initialSys.set(fmt::sprintf("flags%d",i),sysFlags.toBase64()); } ImGui::TreePop(); diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index f23583128..b1abfca16 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -22,7 +22,7 @@ #include "misc/cpp/imgui_stdlib.h" #include -bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool modifyOnChange, bool fromMenu) { +bool FurnaceGUI::drawSysConf(int chan, int sysPos, DivSystem type, DivConfig& flags, bool modifyOnChange, bool fromMenu) { bool altered=false; bool restart=modifyOnChange; bool supportsCustomRate=true; @@ -1750,11 +1750,11 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo } ImGui::SameLine(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); // wavetable text input size found here - if (ImGui::InputText("##MMLWave",&mmlStringSNES)) { + if (ImGui::InputText("##MMLWave",&mmlStringSNES[sysPos])) { int actualData[256]; int discardIt=0; memset(actualData,0,256*sizeof(int)); - decodeMMLStrW(mmlStringSNES,actualData,discardIt,snesFilterHex?0:-128,snesFilterHex?255:127,snesFilterHex); + decodeMMLStrW(mmlStringSNES[sysPos],actualData,discardIt,snesFilterHex?0:-128,snesFilterHex?255:127,snesFilterHex); if (snesFilterHex) { for (int i=0; i<8; i++) { if (actualData[i]>=128) actualData[i]-=256; @@ -1772,7 +1772,7 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo actualData[i]=echoFilter[i]; } } - encodeMMLStr(mmlStringSNES,actualData,8,-1,-1,snesFilterHex); + encodeMMLStr(mmlStringSNES[sysPos],actualData,8,-1,-1,snesFilterHex); } int filterSum=( diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index ad71e0e86..80f9c001a 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -79,7 +79,7 @@ void FurnaceGUI::drawSysManager() { } ImGui::TableNextColumn(); if (ImGui::TreeNode(fmt::sprintf("%d. %s##_SYSM%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { - drawSysConf(i,e->song.system[i],e->song.systemFlags[i],true); + drawSysConf(i,i,e->song.system[i],e->song.systemFlags[i],true); ImGui::TreePop(); } ImGui::TableNextColumn();