mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-23 21:15:11 +00:00
parent
c167066296
commit
1f6c25643b
3 changed files with 11 additions and 2 deletions
|
@ -247,7 +247,7 @@ void DivPlatformOPLL::tick(bool sysTick) {
|
||||||
if (chan[i].freq>65535) chan[i].freq=65535;
|
if (chan[i].freq>65535) chan[i].freq=65535;
|
||||||
int freqt=toFreq(chan[i].freq);
|
int freqt=toFreq(chan[i].freq);
|
||||||
chan[i].freqL=freqt&0xff;
|
chan[i].freqL=freqt&0xff;
|
||||||
if (i>=6 && properDrums) {
|
if (i>=6 && properDrums && (i<9 || !noTopHatFreq)) {
|
||||||
immWrite(0x10+drumSlot[i],freqt&0xff);
|
immWrite(0x10+drumSlot[i],freqt&0xff);
|
||||||
immWrite(0x20+drumSlot[i],freqt>>8);
|
immWrite(0x20+drumSlot[i],freqt>>8);
|
||||||
} else if (i<6 || !drums) {
|
} else if (i<6 || !drums) {
|
||||||
|
@ -963,6 +963,7 @@ void DivPlatformOPLL::setFlags(const DivConfig& flags) {
|
||||||
for (int i=0; i<11; i++) {
|
for (int i=0; i<11; i++) {
|
||||||
oscBuf[i]->rate=rate/2;
|
oscBuf[i]->rate=rate/2;
|
||||||
}
|
}
|
||||||
|
noTopHatFreq=flags.getBool("noTopHatFreq",false);
|
||||||
}
|
}
|
||||||
|
|
||||||
int DivPlatformOPLL::init(DivEngine* p, int channels, int sugRate, const DivConfig& flags) {
|
int DivPlatformOPLL::init(DivEngine* p, int channels, int sugRate, const DivConfig& flags) {
|
||||||
|
|
|
@ -82,7 +82,7 @@ class DivPlatformOPLL: public DivDispatch {
|
||||||
|
|
||||||
bool useYMFM;
|
bool useYMFM;
|
||||||
bool drums;
|
bool drums;
|
||||||
bool properDrums, properDrumsSys;
|
bool properDrums, properDrumsSys, noTopHatFreq;
|
||||||
bool vrc7;
|
bool vrc7;
|
||||||
|
|
||||||
unsigned char patchSet;
|
unsigned char patchSet;
|
||||||
|
|
|
@ -318,6 +318,7 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
||||||
case DIV_SYSTEM_VRC7: {
|
case DIV_SYSTEM_VRC7: {
|
||||||
int clockSel=flags.getInt("clockSel",0);
|
int clockSel=flags.getInt("clockSel",0);
|
||||||
int patchSet=flags.getInt("patchSet",0);
|
int patchSet=flags.getInt("patchSet",0);
|
||||||
|
bool noTopHatFreq=flags.getBool("noTopHatFreq",false);
|
||||||
|
|
||||||
ImGui::Text("Clock rate:");
|
ImGui::Text("Clock rate:");
|
||||||
if (ImGui::RadioButton("NTSC (3.58MHz)",clockSel==0)) {
|
if (ImGui::RadioButton("NTSC (3.58MHz)",clockSel==0)) {
|
||||||
|
@ -356,12 +357,19 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type==DIV_SYSTEM_OPLL_DRUMS) {
|
||||||
|
if (ImGui::Checkbox("Ignore top/hi-hat frequency changes",&noTopHatFreq)) {
|
||||||
|
altered=true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (altered) {
|
if (altered) {
|
||||||
e->lockSave([&]() {
|
e->lockSave([&]() {
|
||||||
flags.set("clockSel",clockSel);
|
flags.set("clockSel",clockSel);
|
||||||
if (type!=DIV_SYSTEM_VRC7) {
|
if (type!=DIV_SYSTEM_VRC7) {
|
||||||
flags.set("patchSet",patchSet);
|
flags.set("patchSet",patchSet);
|
||||||
}
|
}
|
||||||
|
flags.set("noTopHatFreq",noTopHatFreq);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue