SID2, part 5

ready for upstream

differs from LTVA1/furnace a bit
This commit is contained in:
tildearrow 2024-04-21 13:18:44 -05:00
parent 50fa7fa012
commit 6d62f92f92
2 changed files with 19 additions and 21 deletions

View file

@ -142,19 +142,16 @@ void DivPlatformSID2::tick(bool sysTick) {
chan[i].freqChanged=true; //to update freq (if only noise was enabled/disabled)
}
// TODO: re-enable
/*
if (chan[i].std.ex10.had) {
chan[i].noise_mode=chan[i].std.ex10.val;
if (chan[i].std.fms.had) {
chan[i].noise_mode=chan[i].std.fms.val;
rWrite(0x1e, (chan[0].noise_mode) | (chan[1].noise_mode << 2) | (chan[2].noise_mode << 4) | ((chan[0].freq >> 16) << 6) | ((chan[1].freq >> 16) << 7));
chan[i].freqChanged=true; //to update freq (if only noise was enabled and periodic noise mode is set)
}
if (chan[i].std.ex11.had) {
chan[i].mix_mode=chan[i].std.ex11.val;
if (chan[i].std.ams.had) {
chan[i].mix_mode=chan[i].std.ams.val;
rWrite(0x1f, (chan[0].mix_mode) | (chan[1].mix_mode << 2) | (chan[2].mix_mode << 4) | ((chan[2].freq >> 16) << 6));
}
*/
if (chan[i].std.pitch.had) {
if (chan[i].std.pitch.mode) {
chan[i].pitch2+=chan[i].std.pitch.val;
@ -188,8 +185,9 @@ void DivPlatformSID2::tick(bool sysTick) {
willUpdateFilter=true;
}
if (chan[i].std.ex4.had) {
chan[i].sync=chan[i].std.ex4.val&1;
chan[i].ring=chan[i].std.ex4.val&2;
chan[i].gate=chan[i].std.ex4.val&1;
chan[i].sync=chan[i].std.ex4.val&2;
chan[i].ring=chan[i].std.ex4.val&4;
chan[i].freqChanged=true;
rWrite(i*7+4,(chan[i].wave<<4)|0|(chan[i].ring<<2)|(chan[i].sync<<1)|(int)(chan[i].active && chan[i].gate));
}
@ -201,14 +199,6 @@ void DivPlatformSID2::tick(bool sysTick) {
chan[i].test = false;
}
// TODO: re-enable
/*
if (chan[i].std.ex9.had) {
chan[i].gate=(chan[i].std.ex9.val&1);
rWrite(i*7+4,(chan[i].wave<<4)|0|(chan[i].ring<<2)|(chan[i].sync<<1)|(int)(chan[i].active && chan[i].gate));
}
*/
if (chan[i].std.ex5.had) {
chan[i].attack=chan[i].std.ex5.val&15;
rWrite(i*7+5,(chan[i].attack<<4)|(chan[i].decay));

View file

@ -179,7 +179,7 @@ const char* sid2WaveMixModes[5]={
};
const char* sid2ControlBits[4]={
"gate", "sync", "ring", NULL
};
const bool opIsOutput[8][4]={
@ -5689,7 +5689,7 @@ void FurnaceGUI::drawInsEdit() {
ImVec2 sliderSize=ImVec2(20.0f*dpiScale,128.0*dpiScale);
if (ImGui::BeginTable("C64EnvParams",5,ImGuiTableFlags_NoHostExtendX)) {
if (ImGui::BeginTable("C64EnvParams",(ins->type==DIV_INS_SID2)?6:5,ImGuiTableFlags_NoHostExtendX)) {
ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,sliderSize.x);
ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,sliderSize.x);
ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthFixed,sliderSize.x);
@ -7042,10 +7042,14 @@ void FurnaceGUI::drawInsEdit() {
int ex2Max=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930)?4:0;
bool ex2Bit=true;
if (ins->type==DIV_INS_C64 || ins->type==DIV_INS_SID2) {
if (ins->type==DIV_INS_C64) {
ex1Max=4;
ex2Max=15;
}
if (ins->type==DIV_INS_SID2) {
ex1Max=3;
ex2Max=15;
}
if (ins->type==DIV_INS_X1_010) {
dutyMax=0;
ex1Max=ins->amiga.useSample?0:7;
@ -7275,7 +7279,8 @@ void FurnaceGUI::drawInsEdit() {
ins->type==DIV_INS_DAVE ||
ins->type==DIV_INS_NDS ||
ins->type==DIV_INS_GBA_DMA ||
ins->type==DIV_INS_GBA_MINMOD) {
ins->type==DIV_INS_GBA_MINMOD ||
ins->type==DIV_INS_SID2) {
macroList.push_back(FurnaceGUIMacroDesc("Phase Reset",&ins->std.phaseResetMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true));
}
if (ex1Max>0) {
@ -7348,11 +7353,14 @@ void FurnaceGUI::drawInsEdit() {
macroList.push_back(FurnaceGUIMacroDesc("Release",&ins->std.ex8Macro,0,15,128,uiColors[GUI_COLOR_MACRO_OTHER]));
}
if (ins->type==DIV_INS_SID2) {
macroList.push_back(FurnaceGUIMacroDesc("Filter Toggle",&ins->std.ex3Macro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true));
macroList.push_back(FurnaceGUIMacroDesc("Special",&ins->std.ex4Macro,0,3,48,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,sid2ControlBits));
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]));
macroList.push_back(FurnaceGUIMacroDesc("Noise Mode",&ins->std.fmsMacro,0,3,64,uiColors[GUI_COLOR_MACRO_OTHER]));
macroList.push_back(FurnaceGUIMacroDesc("Wave Mix",&ins->std.amsMacro,0,3,64,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]));