From 50b314bd77005a7a313cd1b60059973e43b66872 Mon Sep 17 00:00:00 2001 From: LTVA1 <87536432+LTVA1@users.noreply.github.com> Date: Fri, 27 Oct 2023 17:20:32 +0300 Subject: [PATCH] Make separate macros for each ADSR param --- src/engine/platform/c64.cpp | 14 +++++++++++--- src/gui/insEdit.cpp | 14 ++++---------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/engine/platform/c64.cpp b/src/engine/platform/c64.cpp index 9b3364ce6..30aec4e2f 100644 --- a/src/engine/platform/c64.cpp +++ b/src/engine/platform/c64.cpp @@ -235,13 +235,21 @@ void DivPlatformC64::tick(bool sysTick) { } if (chan[i].std.ex5.had) { - chan[i].attack = chan[i].std.ex5.val >> 4; - chan[i].decay = chan[i].std.ex5.val & 15; + chan[i].attack = chan[i].std.ex5.val & 15; rWrite(i * 7 + 5, (chan[i].attack << 4) | (chan[i].decay)); } if (chan[i].std.ex6.had) { - chan[i].sustain = chan[i].std.ex6.val >> 4; + chan[i].decay = chan[i].std.ex5.val & 15; + rWrite(i * 7 + 6, (chan[i].sustain << 4) | (chan[i].release)); + } + + if (chan[i].std.ex7.had) { + chan[i].sustain = chan[i].std.ex6.val & 15; + rWrite(i * 7 + 6, (chan[i].sustain << 4) | (chan[i].release)); + } + + if (chan[i].std.ex8.had) { chan[i].release = chan[i].std.ex6.val & 15; rWrite(i * 7 + 6, (chan[i].sustain << 4) | (chan[i].release)); } diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 241badab9..e93367424 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -260,14 +260,6 @@ const char* c64TestGateBits[3]={ "test", "gate", NULL }; -const char* c64AttackDecayBits[9] = { - "Decay 1", "Decay 2", "Decay 3", "Decay 4", "Attack 1", "Attack 2", "Attack 3", "Attack 4", NULL -}; - -const char* c64SustainReleaseBits[9] = { - "Release 1", "Release 2", "Release 3", "Release 4", "Sustain 1", "Sustain 2", "Sustain 3", "Sustain 4", NULL -}; - const char* pokeyCtlBits[9]={ "15KHz", "filter 2+4", "filter 1+3", "16-bit 3+4", "16-bit 1+2", "high3", "high1", "poly9", NULL }; @@ -6493,8 +6485,10 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc("Special",&ins->std.ex3Macro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,c64SpecialBits)); //macroList.push_back(FurnaceGUIMacroDesc("Test/Gate",&ins->std.ex4Macro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); macroList.push_back(FurnaceGUIMacroDesc("Test/Gate",&ins->std.ex4Macro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL, true, c64TestGateBits)); - macroList.push_back(FurnaceGUIMacroDesc("Attack/Decay", &ins->std.ex5Macro, 0, 8, 128, uiColors[GUI_COLOR_MACRO_OTHER], false, NULL, NULL, true, c64AttackDecayBits)); - macroList.push_back(FurnaceGUIMacroDesc("Sustain/Release", &ins->std.ex6Macro, 0, 8, 128, uiColors[GUI_COLOR_MACRO_OTHER], false, NULL, NULL, true, c64SustainReleaseBits)); + macroList.push_back(FurnaceGUIMacroDesc("Attack", &ins->std.ex5Macro, 0, 15, 128, uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("Decay", &ins->std.ex6Macro, 0, 15, 128, uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("Sustain", &ins->std.ex7Macro, 0, 15, 128, uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("Release", &ins->std.ex8Macro, 0, 15, 128, uiColors[GUI_COLOR_MACRO_OTHER])); } if (ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || (ins->type==DIV_INS_X1_010 && !ins->amiga.useSample)) { macroList.push_back(FurnaceGUIMacroDesc("AutoEnv Num",&ins->std.ex3Macro,0,15,160,uiColors[GUI_COLOR_MACRO_OTHER]));