From 00e9ca29fa2aed6b608717391d77c6626cf7c2f0 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sat, 13 Jul 2024 16:28:20 +0900 Subject: [PATCH] Revert "Re-split OPL4 PCM instruments due to hardware differences" This reverts commit 87ac12e14319c3e40483988eabf62dc4e826a0a2. --- src/engine/engine.cpp | 3 +-- src/engine/instrument.cpp | 52 +++++++------------------------------ src/engine/instrument.h | 24 +++-------------- src/engine/platform/opl.cpp | 8 +++--- src/engine/sysDef.cpp | 4 +-- src/engine/vgmOps.cpp | 4 +-- src/gui/doAction.cpp | 6 ++--- src/gui/gui.h | 1 - src/gui/guiConst.cpp | 2 -- src/gui/insEdit.cpp | 46 +++++++++++++++----------------- src/gui/settings.cpp | 1 - 11 files changed, 45 insertions(+), 106 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 8f631bc6c..7ca58611b 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -938,8 +938,7 @@ void DivEngine::delUnusedSamples() { i->type==DIV_INS_C219 || i->type==DIV_INS_NDS || i->type==DIV_INS_GBA_DMA || - i->type==DIV_INS_GBA_MINMOD || - i->type==DIV_INS_OPL4_PCM) { + i->type==DIV_INS_GBA_MINMOD) { if (i->amiga.initSample>=0 && i->amiga.initSampleamiga.initSample]=true; } diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index e568754f5..a44572ab8 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -175,6 +175,9 @@ bool DivInstrumentMultiPCM::operator==(const DivInstrumentMultiPCM& other) { _C(lfo) && _C(vib) && _C(am) && + _C(damp) && + _C(pseudoReverb) && + _C(lfoReset) && _C(levelDirect) ); } @@ -267,14 +270,6 @@ bool DivInstrumentSID2::operator==(const DivInstrumentSID2& other) { ); } -bool DivInstrumentOPL4PCM::operator==(const DivInstrumentOPL4PCM& other) { - return ( - _C(damp) && - _C(pseudoReverb) && - _C(lfoReset) - ); -} - #undef _C #define CONSIDER(x,t) \ @@ -767,6 +762,9 @@ void DivInstrument::writeFeatureMP(SafeWriter* w) { w->writeC(multipcm.am); /* + w->writeC(multipcm.damp); + w->writeC(multipcm.pseudoReverb); + w->writeC(multipcm.lfoReset); w->writeC(multipcm.levelDirect); */ @@ -861,16 +859,6 @@ void DivInstrument::writeFeatureS2(SafeWriter* w) { FEATURE_END; } -void DivInstrument::writeFeatureOP(SafeWriter* w) { - FEATURE_BEGIN("OP"); - - w->writeC(opl4pcm.damp); - w->writeC(opl4pcm.pseudoReverb); - w->writeC(opl4pcm.lfoReset); - - FEATURE_END; -} - void DivInstrument::putInsData2(SafeWriter* w, bool fui, const DivSong* song, bool insName) { size_t blockStartSeek=0; size_t blockEndSeek=0; @@ -917,7 +905,6 @@ void DivInstrument::putInsData2(SafeWriter* w, bool fui, const DivSong* song, bo bool featureEF=false; bool featurePN=false; bool featureS2=false; - bool featureOP=false; bool checkForWL=false; @@ -1161,12 +1148,6 @@ void DivInstrument::putInsData2(SafeWriter* w, bool fui, const DivSong* song, bo feature64=true; featureS2=true; break; - case DIV_INS_OPL4_PCM: - featureSM=true; - featureSL=true; - featureMP=true; - featureOP=true; - break; case DIV_INS_MAX: break; case DIV_INS_NULL: @@ -1223,9 +1204,6 @@ void DivInstrument::putInsData2(SafeWriter* w, bool fui, const DivSong* song, bo if (sid2!=defaultIns.sid2) { featureS2=true; } - if (opl4pcm!=defaultIns.opl4pcm) { - featureOP=true; - } } // check ins name @@ -1377,9 +1355,6 @@ void DivInstrument::putInsData2(SafeWriter* w, bool fui, const DivSong* song, bo if (featureS2) { writeFeatureS2(w); } - if (featureOP) { - writeFeatureOP(w); - } if (fui && (featureSL || featureWL)) { w->write("EN",2); @@ -2102,6 +2077,9 @@ void DivInstrument::readFeatureMP(SafeReader& reader, short version) { multipcm.am=reader.readC(); /* + multipcm.damp=reader.readC(); + multipcm.pseudoReverb=reader.readC(); + multipcm.lfoReset=reader.readC(); multipcm.levelDirect=reader.readC(); */ @@ -2212,16 +2190,6 @@ void DivInstrument::readFeatureS2(SafeReader& reader, short version) { READ_FEAT_END; } -void DivInstrument::readFeatureOP(SafeReader& reader, short version) { - READ_FEAT_BEGIN; - - opl4pcm.damp=reader.readC(); - opl4pcm.pseudoReverb=reader.readC(); - opl4pcm.lfoReset=reader.readC(); - - READ_FEAT_END; -} - DivDataErrors DivInstrument::readInsDataNew(SafeReader& reader, short version, bool fui, DivSong* song) { unsigned char featCode[2]; @@ -2297,8 +2265,6 @@ DivDataErrors DivInstrument::readInsDataNew(SafeReader& reader, short version, b readFeaturePN(reader,version); } else if (memcmp(featCode,"S2",2)==0) { // SID2 readFeatureS2(reader,version); - } else if (memcmp(featCode,"OP",2)==0) { // OPL4 PCM - readFeatureOP(reader,version); } else { if (song==NULL && (memcmp(featCode,"SL",2)==0 || (memcmp(featCode,"WL",2)==0))) { // nothing diff --git a/src/engine/instrument.h b/src/engine/instrument.h index 16f690a35..95a86755a 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -94,7 +94,6 @@ enum DivInstrumentType: unsigned short { DIV_INS_GBA_MINMOD=61, DIV_INS_BIFURCATOR=62, DIV_INS_SID2=63, // coincidence! - DIV_INS_OPL4_PCM=64, DIV_INS_MAX, DIV_INS_NULL }; @@ -609,7 +608,7 @@ struct DivInstrumentFDS { struct DivInstrumentMultiPCM { unsigned char ar, d1r, dl, d2r, rr, rc; unsigned char lfo, vib, am; - bool levelDirect; + bool damp, pseudoReverb, lfoReset, levelDirect; bool operator==(const DivInstrumentMultiPCM& other); bool operator!=(const DivInstrumentMultiPCM& other) { @@ -619,6 +618,9 @@ struct DivInstrumentMultiPCM { DivInstrumentMultiPCM(): ar(15), d1r(15), dl(0), d2r(0), rr(15), rc(15), lfo(0), vib(0), am(0), + damp(false), + pseudoReverb(false), + lfoReset(false), levelDirect(true) { } }; @@ -863,21 +865,6 @@ struct DivInstrumentSID2 { noiseMode(0) {} }; -struct DivInstrumentOPL4PCM { - bool damp, pseudoReverb, lfoReset; - - bool operator==(const DivInstrumentOPL4PCM& other); - bool operator!=(const DivInstrumentOPL4PCM& other) { - return !(*this==other); - } - - DivInstrumentOPL4PCM(): - damp(false), - pseudoReverb(false), - lfoReset(false) { - } -}; - struct DivInstrument { String name; DivInstrumentType type; @@ -897,7 +884,6 @@ struct DivInstrument { DivInstrumentESFM esfm; DivInstrumentPowerNoise powernoise; DivInstrumentSID2 sid2; - DivInstrumentOPL4PCM opl4pcm; /** * these are internal functions. @@ -925,7 +911,6 @@ struct DivInstrument { void writeFeatureEF(SafeWriter* w); void writeFeaturePN(SafeWriter* w); void writeFeatureS2(SafeWriter* w); - void writeFeatureOP(SafeWriter* w); void readFeatureNA(SafeReader& reader, short version); void readFeatureFM(SafeReader& reader, short version); @@ -949,7 +934,6 @@ struct DivInstrument { void readFeatureEF(SafeReader& reader, short version); void readFeaturePN(SafeReader& reader, short version); void readFeatureS2(SafeReader& reader, short version); - void readFeatureOP(SafeReader& reader, short version); DivDataErrors readInsDataOld(SafeReader& reader, short version); DivDataErrors readInsDataNew(SafeReader& reader, short version, bool fui, DivSong* song); diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 8a4c1916c..f048af2c0 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1711,7 +1711,7 @@ int DivPlatformOPL::dispatch(DivCommand c) { chan[c.chan].freqChanged=true; chan[c.chan].note=c.value; } - if (ins->type==DIV_INS_OPL4_PCM) { + if (ins->type==DIV_INS_MULTIPCM) { chan[c.chan].lfo=ins->multipcm.lfo; chan[c.chan].vib=ins->multipcm.vib; chan[c.chan].am=ins->multipcm.am; @@ -1721,10 +1721,10 @@ int DivPlatformOPL::dispatch(DivCommand c) { chan[c.chan].d2r=ins->multipcm.d2r; chan[c.chan].rc=ins->multipcm.rc; chan[c.chan].rr=ins->multipcm.rr; + chan[c.chan].damp=ins->multipcm.damp; + chan[c.chan].pseudoReverb=ins->multipcm.pseudoReverb; chan[c.chan].levelDirect=ins->multipcm.levelDirect; - chan[c.chan].damp=ins->opl4pcm.damp; - chan[c.chan].pseudoReverb=ins->opl4pcm.pseudoReverb; - chan[c.chan].lfoReset=ins->opl4pcm.lfoReset; + chan[c.chan].lfoReset=ins->multipcm.lfoReset; } else { chan[c.chan].lfo=0; chan[c.chan].vib=0; diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index b7562277b..94a699754 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1640,7 +1640,7 @@ void DivEngine::registerSystems() { {_("4OP 1"), _("FM 2"), _("4OP 3"), _("FM 4"), _("4OP 5"), _("FM 6"), _("4OP 7"), _("FM 8"), _("4OP 9"), _("FM 10"), _("4OP 11"), _("FM 12"), _("FM 13"), _("FM 14"), _("FM 15"), _("FM 16"), _("FM 17"), _("FM 18"), _("PCM 1"), _("PCM 2"), _("PCM 3"), _("PCM 4"), _("PCM 5"), _("PCM 6"), _("PCM 7"), _("PCM 8"), _("PCM 9"), _("PCM 10"), _("PCM 11"), _("PCM 12"), _("PCM 13"), _("PCM 14"), _("PCM 15"), _("PCM 16"), _("PCM 17"), _("PCM 18"), _("PCM 19"), _("PCM 20"), _("PCM 21"), _("PCM 22"), _("PCM 23"), _("PCM 24")}, {"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16", "F17", "F18", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "P10", "P11", "P12", "P13", "P14", "P15", "P16", "P17", "P18", "P19", "P20", "P21", "P22", "P23", "P24"}, {DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, - {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM}, + {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, fmEffectHandlerMap, fmOPL4PostEffectHandlerMap @@ -1653,7 +1653,7 @@ void DivEngine::registerSystems() { {_("4OP 1"), _("FM 2"), _("4OP 3"), _("FM 4"), _("4OP 5"), _("FM 6"), _("4OP 7"), _("FM 8"), _("4OP 9"), _("FM 10"), _("4OP 11"), _("FM 12"), _("FM 13"), _("FM 14"), _("FM 15"), _("Kick/FM 16"), _("Snare"), _("Tom"), _("Top"), _("HiHat"), _("PCM 1"), _("PCM 2"), _("PCM 3"), _("PCM 4"), _("PCM 5"), _("PCM 6"), _("PCM 7"), _("PCM 8"), _("PCM 9"), _("PCM 10"), _("PCM 11"), _("PCM 12"), _("PCM 13"), _("PCM 14"), _("PCM 15"), _("PCM 16"), _("PCM 17"), _("PCM 18"), _("PCM 19"), _("PCM 20"), _("PCM 21"), _("PCM 22"), _("PCM 23"), _("PCM 24")}, {"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "BD", "SD", "TM", "TP", "HH", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "P10", "P11", "P12", "P13", "P14", "P15", "P16", "P17", "P18", "P19", "P20", "P21", "P22", "P23", "P24"}, {DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, - {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM, DIV_INS_OPL4_PCM}, + {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM, DIV_INS_MULTIPCM}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, fmOPLDrumsEffectHandlerMap, fmOPL4PostEffectHandlerMap diff --git a/src/engine/vgmOps.cpp b/src/engine/vgmOps.cpp index 60a22ff86..d4f8a8495 100644 --- a/src/engine/vgmOps.cpp +++ b/src/engine/vgmOps.cpp @@ -1967,12 +1967,12 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p case DIV_SYSTEM_OPL4_DRUMS: if (!hasOPL4) { hasOPL4=disCont[i].dispatch->chipClock; - CHIP_VOL(12,1.0); + CHIP_VOL(13,1.0); willExport[i]=true; writePCM_OPL4[0]=disCont[i].dispatch; } else if (!(hasOPL4&0x40000000)) { isSecond[i]=true; - CHIP_VOL_SECOND(12,1.0); + CHIP_VOL_SECOND(13,1.0); willExport[i]=true; writePCM_OPL4[1]=disCont[i].dispatch; hasOPL4|=0x40000000; diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index ffcbcce5a..d6d8ea434 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -1043,8 +1043,7 @@ void FurnaceGUI::doAction(int what) { i==DIV_INS_K053260 || i==DIV_INS_C140 || i==DIV_INS_C219 || - i==DIV_INS_NDS || - i==DIV_INS_OPL4_PCM) { + i==DIV_INS_NDS) { makeInsTypeList.push_back(i); } } @@ -1573,8 +1572,7 @@ void FurnaceGUI::doAction(int what) { i==DIV_INS_C219 || i==DIV_INS_NDS || i==DIV_INS_GBA_DMA || - i==DIV_INS_GBA_MINMOD || - i==DIV_INS_OPL4_PCM) { + i==DIV_INS_GBA_MINMOD) { makeInsTypeList.push_back(i); } } diff --git a/src/gui/gui.h b/src/gui/gui.h index 4ad5f6649..51161c224 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -351,7 +351,6 @@ enum FurnaceGUIColors { GUI_COLOR_INSTR_GBA_MINMOD, GUI_COLOR_INSTR_BIFURCATOR, GUI_COLOR_INSTR_SID2, - GUI_COLOR_INSTR_OPL4_PCM, GUI_COLOR_INSTR_UNKNOWN, GUI_COLOR_CHANNEL_BG, diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index d05e84e7d..b9d9ae85d 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -184,7 +184,6 @@ const char* insTypes[DIV_INS_MAX+1][3]={ {"GBA MinMod",ICON_FA_VOLUME_UP,ICON_FUR_INS_GBA_MINMOD}, {"Bifurcator",ICON_FA_LINE_CHART,ICON_FUR_INS_BIFURCATOR}, {"SID2",ICON_FA_KEYBOARD_O,ICON_FUR_INS_SID2}, - {"OPL4 PCM",ICON_FA_VOLUME_UP,ICON_FUR_INS_MULTIPCM}, {NULL,ICON_FA_QUESTION,ICON_FA_QUESTION} }; @@ -1013,7 +1012,6 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_INSTR_GBA_MINMOD,"",ImVec4(0.5f,0.45f,0.7f,1.0f)), D(GUI_COLOR_INSTR_BIFURCATOR,"",ImVec4(0.8925f,0.8925f,0.8925f,1.0f)), D(GUI_COLOR_INSTR_SID2,"",ImVec4(0.6f,0.75f,1.0f,1.0f)), - D(GUI_COLOR_INSTR_OPL4_PCM,"",ImVec4(1.0f,0.8f,0.1f,1.0f)), D(GUI_COLOR_INSTR_UNKNOWN,"",ImVec4(0.3f,0.3f,0.3f,1.0f)), D(GUI_COLOR_CHANNEL_BG,"",ImVec4(0.4f,0.6f,0.8f,1.0f)), diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 4c0bed32a..974188e96 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -6205,8 +6205,7 @@ void FurnaceGUI::drawInsEdit() { ins->type==DIV_INS_C219 || ins->type==DIV_INS_NDS || ins->type==DIV_INS_GBA_DMA || - ins->type==DIV_INS_GBA_MINMOD || - ins->type==DIV_INS_OPL4_PCM) { + ins->type==DIV_INS_GBA_MINMOD) { insTabSample(ins); } if (ins->type==DIV_INS_N163) if (ImGui::BeginTabItem("Namco 163")) { @@ -6438,8 +6437,8 @@ void FurnaceGUI::drawInsEdit() { } ImGui::EndTabItem(); } - if (ins->type==DIV_INS_MULTIPCM || ins->type==DIV_INS_OPL4_PCM) { - if (ImGui::BeginTabItem(ins->type==DIV_INS_OPL4_PCM?"OPL4 PCM":"MultiPCM")) { + if (ins->type==DIV_INS_MULTIPCM) { + if (ImGui::BeginTabItem("MultiPCM")) { ImVec2 sliderSize=ImVec2(20.0f*dpiScale,128.0*dpiScale); if (ImGui::BeginTable("MultiPCMADSRParams",7,ImGuiTableFlags_NoHostExtendX)) { ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,sliderSize.x); @@ -6520,12 +6519,19 @@ void FurnaceGUI::drawInsEdit() { P(CWSliderScalar(_("AM Depth"),ImGuiDataType_U8,&ins->multipcm.am,&_ZERO,&_SEVEN)); rightClickable ImGui::EndTable(); } - P(ImGui::Checkbox(_("Level Direct"),&ins->multipcm.levelDirect)); - if (ins->type==DIV_INS_OPL4_PCM) { - P(ImGui::Checkbox(_("Damp"),&ins->opl4pcm.damp)); - P(ImGui::Checkbox(_("Pseudo Reverb"),&ins->opl4pcm.pseudoReverb)); - P(ImGui::Checkbox(_("LFO Reset"),&ins->opl4pcm.lfoReset)); + P(ImGui::Checkbox(_("Damp"),&ins->multipcm.damp)); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_("Only for OPL4 PCM.")); } + P(ImGui::Checkbox(_("Pseudo Reverb"),&ins->multipcm.pseudoReverb)); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_("Only for OPL4 PCM.")); + } + P(ImGui::Checkbox(_("LFO Reset"),&ins->multipcm.lfoReset)); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip(_("Only for OPL4 PCM.")); + } + P(ImGui::Checkbox(_("Level Direct"),&ins->multipcm.levelDirect)); ImGui::EndTabItem(); } } @@ -7220,6 +7226,12 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc(_("LFO speed"),&ins->std.ex1Macro,0,7,160,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(_("LFO vibrato depth"),&ins->std.fmsMacro,0,7,160,uiColors[GUI_COLOR_MACRO_PITCH])); macroList.push_back(FurnaceGUIMacroDesc(_("LFO AM depth"),&ins->std.amsMacro,0,7,160,uiColors[GUI_COLOR_MACRO_VOLUME])); + macroList.push_back(FurnaceGUIMacroDesc(_("AR"),&ins->std.ex2Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); + macroList.push_back(FurnaceGUIMacroDesc(_("D1R"),&ins->std.ex3Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); + macroList.push_back(FurnaceGUIMacroDesc(_("DL"),&ins->std.ex4Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); + macroList.push_back(FurnaceGUIMacroDesc(_("D2R"),&ins->std.ex5Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); + macroList.push_back(FurnaceGUIMacroDesc(_("Rate correction"),&ins->std.ex6Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); + macroList.push_back(FurnaceGUIMacroDesc(_("RR"),&ins->std.ex7Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); break; case DIV_INS_SNES: macroList.push_back(FurnaceGUIMacroDesc(_("Volume"),&ins->std.volMacro,0,127,160,uiColors[GUI_COLOR_MACRO_VOLUME])); @@ -7513,22 +7525,6 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc(_("Noise Mode"),&ins->std.fmsMacro,0,3,64,uiColors[GUI_COLOR_MACRO_NOISE])); macroList.push_back(FurnaceGUIMacroDesc(_("Wave Mix"),&ins->std.amsMacro,0,3,64,uiColors[GUI_COLOR_MACRO_OTHER])); break; - case DIV_INS_OPL4_PCM: - macroList.push_back(FurnaceGUIMacroDesc(_("Volume"),&ins->std.volMacro,0,127,160,uiColors[GUI_COLOR_MACRO_VOLUME])); - macroList.push_back(FurnaceGUIMacroDesc(_("Arpeggio"),&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,NULL,macroHoverNote,false,NULL,true,ins->std.arpMacro.val)); - macroList.push_back(FurnaceGUIMacroDesc(_("Panning"),&ins->std.panLMacro,-7,7,45,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL)); - macroList.push_back(FurnaceGUIMacroDesc(_("Pitch"),&ins->std.pitchMacro,-2048,2047,160,uiColors[GUI_COLOR_MACRO_PITCH],true,macroRelativeMode)); - macroList.push_back(FurnaceGUIMacroDesc(_("Phase Reset"),&ins->std.phaseResetMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(_("LFO speed"),&ins->std.ex1Macro,0,7,160,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc(_("LFO vibrato depth"),&ins->std.fmsMacro,0,7,160,uiColors[GUI_COLOR_MACRO_PITCH])); - macroList.push_back(FurnaceGUIMacroDesc(_("LFO AM depth"),&ins->std.amsMacro,0,7,160,uiColors[GUI_COLOR_MACRO_VOLUME])); - macroList.push_back(FurnaceGUIMacroDesc(_("AR"),&ins->std.ex2Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); - macroList.push_back(FurnaceGUIMacroDesc(_("D1R"),&ins->std.ex3Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); - macroList.push_back(FurnaceGUIMacroDesc(_("DL"),&ins->std.ex4Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); - macroList.push_back(FurnaceGUIMacroDesc(_("D2R"),&ins->std.ex5Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); - macroList.push_back(FurnaceGUIMacroDesc(_("Rate correction"),&ins->std.ex6Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); - macroList.push_back(FurnaceGUIMacroDesc(_("RR"),&ins->std.ex7Macro,0,15,160,uiColors[GUI_COLOR_MACRO_ENVELOPE])); - break; case DIV_INS_MAX: case DIV_INS_NULL: diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 30b3c5212..239d550bb 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -4107,7 +4107,6 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_INSTR_GBA_MINMOD,_("GBA MinMod")); UI_COLOR_CONFIG(GUI_COLOR_INSTR_BIFURCATOR,_("Bifurcator")); UI_COLOR_CONFIG(GUI_COLOR_INSTR_SID2,_("SID2")); - UI_COLOR_CONFIG(GUI_COLOR_INSTR_OPL4_PCM,_("OPL4 PCM")); UI_COLOR_CONFIG(GUI_COLOR_INSTR_UNKNOWN,_("Other/Unknown")); ImGui::TreePop(); }