parent
60f384f0b0
commit
a862a8ae59
5 changed files with 65 additions and 7 deletions
|
|
@ -56,8 +56,8 @@ class DivWorkPool;
|
|||
|
||||
#define DIV_UNSTABLE
|
||||
|
||||
#define DIV_VERSION "dev241"
|
||||
#define DIV_ENGINE_VERSION 241
|
||||
#define DIV_VERSION "dev242"
|
||||
#define DIV_ENGINE_VERSION 242
|
||||
// for imports
|
||||
#define DIV_VERSION_MOD 0xff01
|
||||
#define DIV_VERSION_FC 0xff02
|
||||
|
|
|
|||
|
|
@ -2395,6 +2395,18 @@ bool DivEngine::loadFur(unsigned char* file, size_t len, int variantID) {
|
|||
}
|
||||
}
|
||||
|
||||
// OPL4 default mix levels
|
||||
if (ds.version<242) {
|
||||
for (int i=0; i<ds.systemLen; i++) {
|
||||
if (ds.system[i]==DIV_SYSTEM_OPL4 || ds.system[i]==DIV_SYSTEM_OPL4_DRUMS) {
|
||||
ds.systemFlags[i].set("fmMixL",7);
|
||||
ds.systemFlags[i].set("fmMixR",7);
|
||||
ds.systemFlags[i].set("pcmMixL",7);
|
||||
ds.systemFlags[i].set("pcmMixR",7);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// warn on partial pitch linearity
|
||||
if (ds.compatFlags.linearPitch>1) {
|
||||
ds.compatFlags.linearPitch=1;
|
||||
|
|
|
|||
|
|
@ -2903,10 +2903,10 @@ void DivPlatformOPL::reset() {
|
|||
// Reset wavetable header
|
||||
immWrite(0x202,PCM_IN_RAM?0x10:0x00);
|
||||
// initialize mixer volume
|
||||
fmMixL=7;
|
||||
fmMixR=7;
|
||||
pcmMixL=7;
|
||||
pcmMixR=7;
|
||||
fmMixL=fmMixLDef;
|
||||
fmMixR=fmMixRDef;
|
||||
pcmMixL=pcmMixLDef;
|
||||
pcmMixR=pcmMixRDef;
|
||||
immWrite(PCM_ADDR_MIX_FM,((7-fmMixR)<<3)|(7-fmMixL));
|
||||
immWrite(PCM_ADDR_MIX_PCM,((7-pcmMixR)<<3)|(7-pcmMixL));
|
||||
} else {
|
||||
|
|
@ -3190,6 +3190,19 @@ void DivPlatformOPL::setFlags(const DivConfig& flags) {
|
|||
compatPan=flags.getBool("compatPan",false);
|
||||
compatYPitch=flags.getBool("compatYPitch",false);
|
||||
|
||||
fmMixLDef=flags.getInt("fmMixL",4);
|
||||
fmMixRDef=flags.getInt("fmMixR",4);
|
||||
pcmMixLDef=flags.getInt("pcmMixL",7);
|
||||
pcmMixRDef=flags.getInt("pcmMixR",7);
|
||||
if (fmMixLDef<0) fmMixLDef=0;
|
||||
if (fmMixLDef>7) fmMixLDef=7;
|
||||
if (fmMixRDef<0) fmMixRDef=0;
|
||||
if (fmMixRDef>7) fmMixRDef=7;
|
||||
if (pcmMixLDef<0) pcmMixLDef=0;
|
||||
if (pcmMixLDef>7) pcmMixLDef=7;
|
||||
if (pcmMixRDef<0) pcmMixRDef=0;
|
||||
if (pcmMixRDef>7) pcmMixRDef=7;
|
||||
|
||||
for (int i=0; i<44; i++) {
|
||||
oscBuf[i]->setRate(rate);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -133,7 +133,8 @@ class DivPlatformOPL: public DivDispatch {
|
|||
const unsigned char* outChanMap;
|
||||
int chipFreqBase, chipRateBase;
|
||||
int delay, chipType, oplType, chans, melodicChans, totalChans, adpcmChan=-1, pcmChanOffs=-1, totalOutputs, ramSize;
|
||||
int fmMixL=7, fmMixR=7, pcmMixL=7, pcmMixR=7;
|
||||
int fmMixL, fmMixR, pcmMixL, pcmMixR;
|
||||
int fmMixLDef, fmMixRDef, pcmMixLDef, pcmMixRDef;
|
||||
unsigned char lastBusy;
|
||||
unsigned char drumState;
|
||||
unsigned char drumVol[5];
|
||||
|
|
|
|||
|
|
@ -2670,6 +2670,10 @@ bool FurnaceGUI::drawSysConf(int chan, int sysPos, DivSystem type, DivConfig& fl
|
|||
case DIV_SYSTEM_OPL4_DRUMS: {
|
||||
int clockSel=flags.getInt("clockSel",0);
|
||||
int ramSize=flags.getInt("ramSize",0);
|
||||
int fmMixL=flags.getInt("fmMixL",4);
|
||||
int fmMixR=flags.getInt("fmMixR",4);
|
||||
int pcmMixL=flags.getInt("pcmMixL",7);
|
||||
int pcmMixR=flags.getInt("pcmMixR",7);
|
||||
|
||||
ImGui::Text(_("Clock rate:"));
|
||||
ImGui::Indent();
|
||||
|
|
@ -2726,10 +2730,38 @@ bool FurnaceGUI::drawSysConf(int chan, int sysPos, DivSystem type, DivConfig& fl
|
|||
}
|
||||
ImGui::Unindent();
|
||||
|
||||
ImGui::Text("FM volume:");
|
||||
if (CWSliderInt(_("Left##FMMixL"),&fmMixL,0,7)) {
|
||||
if (fmMixL<0) fmMixL=0;
|
||||
if (fmMixL>7) fmMixL=7;
|
||||
altered=true;
|
||||
} rightClickable
|
||||
if (CWSliderInt(_("Right##FMMixR"),&fmMixR,0,7)) {
|
||||
if (fmMixR<0) fmMixR=0;
|
||||
if (fmMixR>7) fmMixR=7;
|
||||
altered=true;
|
||||
} rightClickable
|
||||
|
||||
ImGui::Text("PCM volume:");
|
||||
if (CWSliderInt(_("Left##PCMMixL"),&pcmMixL,0,7)) {
|
||||
if (pcmMixL<0) pcmMixL=0;
|
||||
if (pcmMixL>7) pcmMixL=7;
|
||||
altered=true;
|
||||
} rightClickable
|
||||
if (CWSliderInt(_("Right##PCMMixR"),&pcmMixR,0,7)) {
|
||||
if (pcmMixR<0) pcmMixR=0;
|
||||
if (pcmMixR>7) pcmMixR=7;
|
||||
altered=true;
|
||||
} rightClickable
|
||||
|
||||
if (altered) {
|
||||
e->lockSave([&]() {
|
||||
flags.set("clockSel",clockSel);
|
||||
flags.set("ramSize",ramSize);
|
||||
flags.set("fmMixL",fmMixL);
|
||||
flags.set("fmMixR",fmMixR);
|
||||
flags.set("pcmMixL",pcmMixL);
|
||||
flags.set("pcmMixR",pcmMixR);
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue