diff --git a/src/engine/platform/pokey.cpp b/src/engine/platform/pokey.cpp index 06e8b98c..654ceaf4 100644 --- a/src/engine/platform/pokey.cpp +++ b/src/engine/platform/pokey.cpp @@ -92,6 +92,10 @@ void DivPlatformPOKEY::tick(bool sysTick) { } chan[i].freqChanged=true; } + if (chan[i].std.duty.had) { + audctl=chan[i].std.duty.val; + audctlChanged=true; + } if (chan[i].std.wave.had) { chan[i].wave=chan[i].std.wave.val; chan[i].ctlChanged=true; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index eaf8f77d..b5e1cf71 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -255,6 +255,10 @@ const char* c64SpecialBits[3]={ "sync", "ring", NULL }; +const char* pokeyCtlBits[9]={ + "15KHz", "filter 2+4", "filter 1+3", "16-bit 3+4", "16-bit 1+2", "high3", "high1", "poly9", NULL +}; + const char* mikeyFeedbackBits[11] = { "0", "1", "2", "3", "4", "5", "7", "10", "11", "int", NULL }; @@ -4979,6 +4983,10 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_FM || ins->type==DIV_INS_OPM) { dutyLabel="Noise Freq"; } + if (ins->type==DIV_INS_POKEY) { + dutyLabel="AUDCTL"; + dutyMax=8; + } if (ins->type==DIV_INS_MIKEY) { dutyLabel="Duty/Int"; dutyMax=ins->amiga.useSample?0:10; @@ -5000,8 +5008,7 @@ void FurnaceGUI::drawInsEdit() { } if (ins->type==DIV_INS_TIA || ins->type==DIV_INS_AMIGA || ins->type==DIV_INS_SCC || ins->type==DIV_INS_PET || ins->type==DIV_INS_VIC || ins->type==DIV_INS_SEGAPCM || - ins->type==DIV_INS_FM || ins->type==DIV_INS_K007232 || ins->type==DIV_INS_GA20 || - ins->type==DIV_INS_POKEY) { + ins->type==DIV_INS_FM || ins->type==DIV_INS_K007232 || ins->type==DIV_INS_GA20) { dutyMax=0; } if (ins->type==DIV_INS_VBOY) { @@ -5221,6 +5228,8 @@ void FurnaceGUI::drawInsEdit() { if (dutyMax>0) { if (ins->type==DIV_INS_MIKEY) { macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,0,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,mikeyFeedbackBits)); + } else if (ins->type==DIV_INS_POKEY) { + macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,0,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,pokeyCtlBits)); } else if (ins->type==DIV_INS_MSM5232) { macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,0,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,msm5232ControlBits)); } else if (ins->type==DIV_INS_ES5506) {