From 0407fa2d3eb169fca87443682356b7544190a015 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 10 Oct 2022 22:17:31 -0500 Subject: [PATCH] GUI: add Virtual Boy mod table editor --- src/gui/insEdit.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 7da70ad0..60403d6b 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4191,6 +4191,37 @@ void FurnaceGUI::drawInsEdit() { } ImGui::EndTabItem(); } + if (ins->type==DIV_INS_VBOY) if (ImGui::BeginTabItem("Virtual Boy")) { + float modTable[32]; + P(ImGui::Checkbox("Set modulation table (channel 5 only)",&ins->fds.initModTableWithFirstWave)); + + ImGui::BeginDisabled(!ins->fds.initModTableWithFirstWave); + for (int i=0; i<32; i++) { + modTable[i]=ins->fds.modTable[i]; + } + ImVec2 modTableSize=ImVec2(ImGui::GetContentRegionAvail().x,256.0f*dpiScale); + PlotCustom("ModTable",modTable,32,0,NULL,-128,127,modTableSize,sizeof(float),ImVec4(1.0f,1.0f,1.0f,1.0f),0,NULL,NULL,true); + if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { + macroDragStart=ImGui::GetItemRectMin(); + macroDragAreaSize=modTableSize; + macroDragMin=-128; + macroDragMax=127; + macroDragBitOff=0; + macroDragBitMode=false; + macroDragInitialValueSet=false; + macroDragInitialValue=false; + macroDragLen=32; + macroDragActive=true; + macroDragCTarget=(unsigned char*)ins->fds.modTable; + macroDragChar=true; + macroDragLineMode=false; + macroDragLineInitial=ImVec2(0,0); + processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y); + } + + ImGui::EndDisabled(); + ImGui::EndTabItem(); + } if (ins->type==DIV_INS_ES5506) if (ImGui::BeginTabItem("ES5506")) { if (ImGui::BeginTable("ESParams",2,ImGuiTableFlags_SizingStretchSame)) { ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthStretch,0.0);