prepare for 0.6pre3

OPN: add flag to make ExtCh op 1 be the only one controlling FB
GUI: move Arcade presets to top
GUI: fix YM2612 CSM not having flags
This commit is contained in:
tildearrow 2022-12-28 18:11:30 -05:00
parent 72ff7ad11a
commit a09ad00e48
17 changed files with 549 additions and 499 deletions

View file

@ -154,7 +154,7 @@ class DivPlatformOPN: public DivPlatformFMBase {
unsigned int ayDiv;
unsigned char csmChan;
unsigned char lfoValue;
bool extSys, useCombo;
bool extSys, useCombo, fbAllOps;
DivConfig ayFlags;
@ -173,7 +173,8 @@ class DivPlatformOPN: public DivPlatformFMBase {
csmChan(cc),
lfoValue(0),
extSys(isExtSys),
useCombo(false) {}
useCombo(false),
fbAllOps(false) {}
public:
void setCombo(bool combo) {
useCombo=combo;

View file

@ -1250,6 +1250,7 @@ void DivPlatformGenesis::setFlags(const DivConfig& flags) {
}
ladder=flags.getBool("ladderEffect",false);
noExtMacros=flags.getBool("noExtMacros",false);
fbAllOps=flags.getBool("fbAllOps",false);
OPN2_SetChipType(&fm,ladder?ym3438_mode_ym2612:0);
CHECK_CUSTOM_CLOCK;
if (useYMFM) {

View file

@ -46,7 +46,9 @@ int DivPlatformGenesisExt::dispatch(DivCommand c) {
if (opChan[ch].insChanged) {
chan[2].state.alg=ins->fm.alg;
chan[2].state.fb=ins->fm.fb;
if (ch==0 || fbAllOps) {
chan[2].state.fb=ins->fm.fb;
}
chan[2].state.fms=ins->fm.fms;
chan[2].state.ams=ins->fm.ams;
chan[2].state.op[ordch]=ins->fm.op[ordch];

View file

@ -1041,6 +1041,7 @@ void DivPlatformYM2203::setFlags(const DivConfig& flags) {
}
CHECK_CUSTOM_CLOCK;
noExtMacros=flags.getBool("noExtMacros",false);
fbAllOps=flags.getBool("fbAllOps",false);
rate=fm->sample_rate(chipClock);
for (int i=0; i<6; i++) {
oscBuf[i]->rate=rate;

View file

@ -44,7 +44,9 @@ int DivPlatformYM2203Ext::dispatch(DivCommand c) {
if (opChan[ch].insChanged) {
chan[2].state.alg=ins->fm.alg;
chan[2].state.fb=ins->fm.fb;
if (ch==0 || fbAllOps) {
chan[2].state.fb=ins->fm.fb;
}
chan[2].state.op[ordch]=ins->fm.op[ordch];
}

View file

@ -1538,6 +1538,7 @@ void DivPlatformYM2608::setFlags(const DivConfig& flags) {
}
CHECK_CUSTOM_CLOCK;
noExtMacros=flags.getBool("noExtMacros",false);
fbAllOps=flags.getBool("fbAllOps",false);
rate=fm->sample_rate(chipClock);
for (int i=0; i<16; i++) {
oscBuf[i]->rate=rate;

View file

@ -44,7 +44,9 @@ int DivPlatformYM2608Ext::dispatch(DivCommand c) {
if (opChan[ch].insChanged) {
chan[2].state.alg=ins->fm.alg;
chan[2].state.fb=ins->fm.fb;
if (ch==0 || fbAllOps) {
chan[2].state.fb=ins->fm.fb;
}
chan[2].state.fms=ins->fm.fms;
chan[2].state.ams=ins->fm.ams;
chan[2].state.op[ordch]=ins->fm.op[ordch];

View file

@ -40,7 +40,9 @@ int DivPlatformYM2610BExt::dispatch(DivCommand c) {
if (opChan[ch].insChanged) {
chan[extChanOffs].state.alg=ins->fm.alg;
chan[extChanOffs].state.fb=ins->fm.fb;
if (ch==0 || fbAllOps) {
chan[extChanOffs].state.fb=ins->fm.fb;
}
chan[extChanOffs].state.fms=ins->fm.fms;
chan[extChanOffs].state.ams=ins->fm.ams;
chan[extChanOffs].state.op[ordch]=ins->fm.op[ordch];

View file

@ -40,7 +40,9 @@ int DivPlatformYM2610Ext::dispatch(DivCommand c) {
if (opChan[ch].insChanged) {
chan[extChanOffs].state.alg=ins->fm.alg;
chan[extChanOffs].state.fb=ins->fm.fb;
if (ch==0 || fbAllOps) {
chan[extChanOffs].state.fb=ins->fm.fb;
}
chan[extChanOffs].state.fms=ins->fm.fms;
chan[extChanOffs].state.ams=ins->fm.ams;
chan[extChanOffs].state.op[ordch]=ins->fm.op[ordch];

View file

@ -221,6 +221,7 @@ class DivPlatformYM2610Base: public DivPlatformOPN {
}
CHECK_CUSTOM_CLOCK;
noExtMacros=flags.getBool("noExtMacros",false);
fbAllOps=flags.getBool("fbAllOps",false);
rate=fm->sample_rate(chipClock);
for (int i=0; i<16; i++) {
oscBuf[i]->rate=rate;