Prepare to YMF289B OPL3-L support
This commit is contained in:
parent
560ec19176
commit
e5d81bd694
|
@ -1722,13 +1722,29 @@ void DivPlatformOPL::setFlags(const DivConfig& flags) {
|
||||||
case 0x04:
|
case 0x04:
|
||||||
chipClock=15000000.0;
|
chipClock=15000000.0;
|
||||||
break;
|
break;
|
||||||
|
case 0x05:
|
||||||
|
chipClock=33868800.0;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
chipClock=COLOR_NTSC*4.0;
|
chipClock=COLOR_NTSC*4.0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
CHECK_CUSTOM_CLOCK;
|
CHECK_CUSTOM_CLOCK;
|
||||||
rate=chipClock/288;
|
switch (flags.getInt("chipType",0)) {
|
||||||
chipRateBase=rate;
|
case 1: // YMF289B
|
||||||
|
chipFreqBase=32768*684;
|
||||||
|
rate=chipClock/684;
|
||||||
|
chipRateBase=chipClock/768;
|
||||||
|
downsample=true;
|
||||||
|
break;
|
||||||
|
default: // YMF262
|
||||||
|
chipFreqBase=32768*288;
|
||||||
|
rate=chipClock/288;
|
||||||
|
chipRateBase=rate;
|
||||||
|
downsample=false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
reset();
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
switch (flags.getInt("clockSel",0)) {
|
switch (flags.getInt("clockSel",0)) {
|
||||||
|
|
|
@ -2248,6 +2248,16 @@ void FurnaceGUI::initSystemPresets() {
|
||||||
CH(DIV_SYSTEM_OPL3_DRUMS, 64, 0, "")
|
CH(DIV_SYSTEM_OPL3_DRUMS, 64, 0, "")
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
ENTRY(
|
||||||
|
"Yamaha YMF289B (OPL3-L)", {
|
||||||
|
CH(DIV_SYSTEM_OPL3, 64, 0, "chipType=1")
|
||||||
|
}
|
||||||
|
);
|
||||||
|
ENTRY(
|
||||||
|
"Yamaha YMF289B (drums mode)", {
|
||||||
|
CH(DIV_SYSTEM_OPL3_DRUMS, 64, 0, "chipType=1")
|
||||||
|
}
|
||||||
|
);
|
||||||
if (settings.hiddenSystems) {
|
if (settings.hiddenSystems) {
|
||||||
ENTRY(
|
ENTRY(
|
||||||
"Yamaha YMU759 (MA-2)", {
|
"Yamaha YMU759 (MA-2)", {
|
||||||
|
|
|
@ -1182,6 +1182,7 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
||||||
case DIV_SYSTEM_OPL3:
|
case DIV_SYSTEM_OPL3:
|
||||||
case DIV_SYSTEM_OPL3_DRUMS: {
|
case DIV_SYSTEM_OPL3_DRUMS: {
|
||||||
int clockSel=flags.getInt("clockSel",0);
|
int clockSel=flags.getInt("clockSel",0);
|
||||||
|
int chipType=flags.getInt("chipType",0);
|
||||||
|
|
||||||
ImGui::Text("Clock rate:");
|
ImGui::Text("Clock rate:");
|
||||||
if (ImGui::RadioButton("14.32MHz (NTSC)",clockSel==0)) {
|
if (ImGui::RadioButton("14.32MHz (NTSC)",clockSel==0)) {
|
||||||
|
@ -1204,10 +1205,24 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
||||||
clockSel=4;
|
clockSel=4;
|
||||||
altered=true;
|
altered=true;
|
||||||
}
|
}
|
||||||
|
if (ImGui::RadioButton("33.8688MHz (OPL3-L)",clockSel==5)) {
|
||||||
|
clockSel=5;
|
||||||
|
altered=true;
|
||||||
|
}
|
||||||
|
ImGui::Text("Chip type:");
|
||||||
|
if (ImGui::RadioButton("OPL3 (YMF262)",chipType==0)) {
|
||||||
|
chipType=0;
|
||||||
|
altered=true;
|
||||||
|
}
|
||||||
|
if (ImGui::RadioButton("OPL3-L (YMF289B)",chipType==1)) {
|
||||||
|
chipType=1;
|
||||||
|
altered=true;
|
||||||
|
}
|
||||||
|
|
||||||
if (altered) {
|
if (altered) {
|
||||||
e->lockSave([&]() {
|
e->lockSave([&]() {
|
||||||
flags.set("clockSel",clockSel);
|
flags.set("clockSel",clockSel);
|
||||||
|
flags.set("chipType",chipType);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue