mirror of
https://github.com/tildearrow/furnace.git
synced 2025-01-01 04:21:44 +00:00
GUI: prepare for modern macro view
This commit is contained in:
parent
5e2a827e68
commit
beeb074975
1 changed files with 230 additions and 222 deletions
|
@ -1092,6 +1092,55 @@ void FurnaceGUI::drawInsEdit() {
|
|||
int asInt[256];
|
||||
float loopIndicator[256];
|
||||
|
||||
int volMax=(ins->type==DIV_INS_PCE || ins->type==DIV_INS_AY8930)?31:15;
|
||||
int volMin=0;
|
||||
if (ins->type==DIV_INS_C64) {
|
||||
if (ins->c64.volIsCutoff) {
|
||||
if (ins->c64.filterIsAbs) {
|
||||
volMax=2047;
|
||||
} else {
|
||||
volMin=-18;
|
||||
volMax=18;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ins->type==DIV_INS_AMIGA) {
|
||||
volMax=64;
|
||||
}
|
||||
if (ins->type==DIV_INS_FM) {
|
||||
volMax=127;
|
||||
}
|
||||
|
||||
bool arpMode=ins->std.arpMacroMode;
|
||||
|
||||
int dutyMax=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930)?31:3;
|
||||
if (ins->type==DIV_INS_C64) {
|
||||
if (ins->c64.dutyIsAbs) {
|
||||
dutyMax=4095;
|
||||
} else {
|
||||
dutyMax=24;
|
||||
}
|
||||
}
|
||||
if (ins->type==DIV_INS_AY8930) {
|
||||
dutyMax=255;
|
||||
}
|
||||
if (ins->type==DIV_INS_TIA || ins->type==DIV_INS_PCE || ins->type==DIV_INS_FM) {
|
||||
dutyMax=0;
|
||||
}
|
||||
bool dutyIsRel=(ins->type==DIV_INS_C64 && !ins->c64.dutyIsAbs);
|
||||
|
||||
int waveMax=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930)?3:63;
|
||||
bool bitMode=false;
|
||||
if (ins->type==DIV_INS_TIA) waveMax=15;
|
||||
if (ins->type==DIV_INS_C64) waveMax=4;
|
||||
if (ins->type==DIV_INS_SAA1099) waveMax=2;
|
||||
if (ins->type==DIV_INS_FM) waveMax=0;
|
||||
|
||||
int ex1Max=(ins->type==DIV_INS_AY8930)?8:0;
|
||||
|
||||
if (settings.macroView==0) { // modern view
|
||||
|
||||
} else { // classic view
|
||||
// volume macro
|
||||
ImGui::Separator();
|
||||
if (ins->type==DIV_INS_C64 && ins->c64.volIsCutoff) {
|
||||
|
@ -1112,24 +1161,6 @@ void FurnaceGUI::drawInsEdit() {
|
|||
loopIndicator[i]=(ins->std.volMacroLoop!=-1 && i>=ins->std.volMacroLoop);
|
||||
}
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,ImVec2(0.0f,0.0f));
|
||||
int volMax=(ins->type==DIV_INS_PCE || ins->type==DIV_INS_AY8930)?31:15;
|
||||
int volMin=0;
|
||||
if (ins->type==DIV_INS_C64) {
|
||||
if (ins->c64.volIsCutoff) {
|
||||
if (ins->c64.filterIsAbs) {
|
||||
volMax=2047;
|
||||
} else {
|
||||
volMin=-18;
|
||||
volMax=18;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ins->type==DIV_INS_AMIGA) {
|
||||
volMax=64;
|
||||
}
|
||||
if (ins->type==DIV_INS_FM) {
|
||||
volMax=127;
|
||||
}
|
||||
macroDragScroll=0;
|
||||
ImGui::PlotHistogram("##IVolMacro",asFloat,ins->std.volMacroLen,0,NULL,volMin,volMax,ImVec2(400.0f*dpiScale,200.0f*dpiScale));
|
||||
if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) {
|
||||
|
@ -1163,7 +1194,6 @@ void FurnaceGUI::drawInsEdit() {
|
|||
// arp macro
|
||||
ImGui::Separator();
|
||||
ImGui::Text("Arpeggio Macro");
|
||||
bool arpMode=ins->std.arpMacroMode;
|
||||
for (int i=0; i<ins->std.arpMacroLen; i++) {
|
||||
asFloat[i]=arpMode?ins->std.arpMacro[i]:(ins->std.arpMacro[i]-12);
|
||||
loopIndicator[i]=(ins->std.arpMacroLoop!=-1 && i>=ins->std.arpMacroLoop);
|
||||
|
@ -1207,20 +1237,6 @@ void FurnaceGUI::drawInsEdit() {
|
|||
}
|
||||
|
||||
// duty macro
|
||||
int dutyMax=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930)?31:3;
|
||||
if (ins->type==DIV_INS_C64) {
|
||||
if (ins->c64.dutyIsAbs) {
|
||||
dutyMax=4095;
|
||||
} else {
|
||||
dutyMax=24;
|
||||
}
|
||||
}
|
||||
if (ins->type==DIV_INS_AY8930) {
|
||||
dutyMax=255;
|
||||
}
|
||||
if (ins->type==DIV_INS_TIA || ins->type==DIV_INS_PCE || ins->type==DIV_INS_FM) {
|
||||
dutyMax=0;
|
||||
}
|
||||
if (dutyMax>0) {
|
||||
ImGui::Separator();
|
||||
if (ins->type==DIV_INS_C64) {
|
||||
|
@ -1236,7 +1252,6 @@ void FurnaceGUI::drawInsEdit() {
|
|||
ImGui::Text("Duty/Noise Mode Macro");
|
||||
}
|
||||
}
|
||||
bool dutyIsRel=(ins->type==DIV_INS_C64 && !ins->c64.dutyIsAbs);
|
||||
for (int i=0; i<ins->std.dutyMacroLen; i++) {
|
||||
asFloat[i]=ins->std.dutyMacro[i]-(dutyIsRel?12:0);
|
||||
loopIndicator[i]=(ins->std.dutyMacroLoop!=-1 && i>=ins->std.dutyMacroLoop);
|
||||
|
@ -1274,12 +1289,6 @@ void FurnaceGUI::drawInsEdit() {
|
|||
}
|
||||
|
||||
// wave macro
|
||||
int waveMax=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930)?3:63;
|
||||
bool bitMode=false;
|
||||
if (ins->type==DIV_INS_TIA) waveMax=15;
|
||||
if (ins->type==DIV_INS_C64) waveMax=4;
|
||||
if (ins->type==DIV_INS_SAA1099) waveMax=2;
|
||||
if (ins->type==DIV_INS_FM) waveMax=0;
|
||||
if (waveMax>0) {
|
||||
ImGui::Separator();
|
||||
ImGui::Text("Waveform Macro");
|
||||
|
@ -1336,7 +1345,6 @@ void FurnaceGUI::drawInsEdit() {
|
|||
}
|
||||
|
||||
// extra 1 macro
|
||||
int ex1Max=(ins->type==DIV_INS_AY8930)?8:0;
|
||||
if (ex1Max>0) {
|
||||
ImGui::Separator();
|
||||
if (ins->type==DIV_INS_AY8930) {
|
||||
|
@ -1379,7 +1387,7 @@ void FurnaceGUI::drawInsEdit() {
|
|||
if (ins->std.ex1MacroLen>127) ins->std.ex1MacroLen=127;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
ImGui::EndTabBar();
|
||||
|
@ -2328,7 +2336,7 @@ void FurnaceGUI::drawSettings() {
|
|||
ImGui::Separator();
|
||||
|
||||
bool macroViewB=settings.macroView;
|
||||
if (ImGui::Checkbox("Legacy macro view (standard macros only)",¯oViewB)) {
|
||||
if (ImGui::Checkbox("Classic macro view (standard macros only)",¯oViewB)) {
|
||||
settings.macroView=macroViewB;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue