the first step to deprecating Defle compat
Furnace will support .dmf loading/saving however in a far future, compatibility may not be guaranteed... I am not sure this setting is off by default (for now)
This commit is contained in:
parent
9d567d8cca
commit
1aef0079d1
|
@ -142,76 +142,78 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// compatibility flags
|
// compatibility flags
|
||||||
ds.limitSlides=true;
|
if (!getConfInt("noDMFCompat",0)) {
|
||||||
ds.linearPitch=1;
|
ds.limitSlides=true;
|
||||||
ds.loopModality=0;
|
ds.linearPitch=1;
|
||||||
ds.properNoiseLayout=false;
|
ds.loopModality=0;
|
||||||
ds.waveDutyIsVol=false;
|
ds.properNoiseLayout=false;
|
||||||
// TODO: WHAT?! geodude.dmf fails when this is true
|
ds.waveDutyIsVol=false;
|
||||||
// but isn't that how Defle behaves???
|
// TODO: WHAT?! geodude.dmf fails when this is true
|
||||||
ds.resetMacroOnPorta=false;
|
// but isn't that how Defle behaves???
|
||||||
ds.legacyVolumeSlides=true;
|
ds.resetMacroOnPorta=false;
|
||||||
ds.compatibleArpeggio=true;
|
ds.legacyVolumeSlides=true;
|
||||||
ds.noteOffResetsSlides=true;
|
ds.compatibleArpeggio=true;
|
||||||
ds.targetResetsSlides=true;
|
ds.noteOffResetsSlides=true;
|
||||||
ds.arpNonPorta=false;
|
ds.targetResetsSlides=true;
|
||||||
ds.algMacroBehavior=false;
|
ds.arpNonPorta=false;
|
||||||
ds.brokenShortcutSlides=false;
|
ds.algMacroBehavior=false;
|
||||||
ds.ignoreDuplicateSlides=true;
|
ds.brokenShortcutSlides=false;
|
||||||
ds.brokenDACMode=true;
|
ds.ignoreDuplicateSlides=true;
|
||||||
ds.oneTickCut=false;
|
ds.brokenDACMode=true;
|
||||||
ds.newInsTriggersInPorta=true;
|
ds.oneTickCut=false;
|
||||||
ds.arp0Reset=true;
|
ds.newInsTriggersInPorta=true;
|
||||||
ds.brokenSpeedSel=true;
|
ds.arp0Reset=true;
|
||||||
ds.noSlidesOnFirstTick=false;
|
ds.brokenSpeedSel=true;
|
||||||
ds.rowResetsArpPos=false;
|
ds.noSlidesOnFirstTick=false;
|
||||||
ds.ignoreJumpAtEnd=true;
|
ds.rowResetsArpPos=false;
|
||||||
ds.buggyPortaAfterSlide=true;
|
ds.ignoreJumpAtEnd=true;
|
||||||
ds.gbInsAffectsEnvelope=true;
|
ds.buggyPortaAfterSlide=true;
|
||||||
ds.ignoreDACModeOutsideIntendedChannel=false;
|
ds.gbInsAffectsEnvelope=true;
|
||||||
ds.e1e2AlsoTakePriority=true;
|
ds.ignoreDACModeOutsideIntendedChannel=false;
|
||||||
ds.fbPortaPause=true;
|
ds.e1e2AlsoTakePriority=true;
|
||||||
ds.snDutyReset=true;
|
ds.fbPortaPause=true;
|
||||||
ds.oldOctaveBoundary=false;
|
ds.snDutyReset=true;
|
||||||
ds.noOPN2Vol=true;
|
ds.oldOctaveBoundary=false;
|
||||||
ds.newVolumeScaling=false;
|
ds.noOPN2Vol=true;
|
||||||
ds.volMacroLinger=false;
|
ds.newVolumeScaling=false;
|
||||||
ds.brokenOutVol=true;
|
ds.volMacroLinger=false;
|
||||||
ds.brokenOutVol2=true;
|
ds.brokenOutVol=true;
|
||||||
ds.e1e2StopOnSameNote=true;
|
ds.brokenOutVol2=true;
|
||||||
ds.brokenPortaArp=false;
|
ds.e1e2StopOnSameNote=true;
|
||||||
ds.snNoLowPeriods=true;
|
ds.brokenPortaArp=false;
|
||||||
ds.disableSampleMacro=true;
|
ds.snNoLowPeriods=true;
|
||||||
ds.delayBehavior=0;
|
ds.disableSampleMacro=true;
|
||||||
ds.jumpTreatment=2;
|
ds.delayBehavior=0;
|
||||||
|
ds.jumpTreatment=2;
|
||||||
|
|
||||||
// 1.1 compat flags
|
// 1.1 compat flags
|
||||||
if (ds.version>24) {
|
if (ds.version>24) {
|
||||||
ds.waveDutyIsVol=true;
|
ds.waveDutyIsVol=true;
|
||||||
ds.legacyVolumeSlides=false;
|
ds.legacyVolumeSlides=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Neo Geo detune is caused by Defle running Neo Geo at the wrong clock.
|
// Neo Geo detune is caused by Defle running Neo Geo at the wrong clock.
|
||||||
/*
|
/*
|
||||||
if (ds.system[0]==DIV_SYSTEM_YM2610 || ds.system[0]==DIV_SYSTEM_YM2610_EXT
|
if (ds.system[0]==DIV_SYSTEM_YM2610 || ds.system[0]==DIV_SYSTEM_YM2610_EXT
|
||||||
|| ds.system[0]==DIV_SYSTEM_YM2610_FULL || ds.system[0]==DIV_SYSTEM_YM2610_FULL_EXT
|
|| ds.system[0]==DIV_SYSTEM_YM2610_FULL || ds.system[0]==DIV_SYSTEM_YM2610_FULL_EXT
|
||||||
|| ds.system[0]==DIV_SYSTEM_YM2610B || ds.system[0]==DIV_SYSTEM_YM2610B_EXT) {
|
|| ds.system[0]==DIV_SYSTEM_YM2610B || ds.system[0]==DIV_SYSTEM_YM2610B_EXT) {
|
||||||
ds.tuning=443.23;
|
ds.tuning=443.23;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Genesis detuned on Defle v10 and earlier
|
// Genesis detuned on Defle v10 and earlier
|
||||||
/*if (ds.version<19 && ds.system[0]==DIV_SYSTEM_GENESIS) {
|
/*if (ds.version<19 && ds.system[0]==DIV_SYSTEM_GENESIS) {
|
||||||
ds.tuning=443.23;
|
ds.tuning=443.23;
|
||||||
}*/
|
}*/
|
||||||
// C64 detuned on Defle v11 and earlier
|
// C64 detuned on Defle v11 and earlier
|
||||||
/*if (ds.version<21 && (ds.system[0]==DIV_SYSTEM_C64_6581 || ds.system[0]==DIV_SYSTEM_C64_8580)) {
|
/*if (ds.version<21 && (ds.system[0]==DIV_SYSTEM_C64_6581 || ds.system[0]==DIV_SYSTEM_C64_8580)) {
|
||||||
ds.tuning=433.2;
|
ds.tuning=433.2;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
// Game Boy arp+soundLen screwery
|
// Game Boy arp+soundLen screwery
|
||||||
if (ds.system[0]==DIV_SYSTEM_GB) {
|
if (ds.system[0]==DIV_SYSTEM_GB) {
|
||||||
ds.systemFlags[0].set("enoughAlready",true);
|
ds.systemFlags[0].set("enoughAlready",true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
logI("reading module data...");
|
logI("reading module data...");
|
||||||
|
|
|
@ -1523,6 +1523,7 @@ class FurnaceGUI {
|
||||||
int newSongBehavior;
|
int newSongBehavior;
|
||||||
int memUsageUnit;
|
int memUsageUnit;
|
||||||
int cursorFollowsWheel;
|
int cursorFollowsWheel;
|
||||||
|
int noDMFCompat;
|
||||||
unsigned int maxUndoSteps;
|
unsigned int maxUndoSteps;
|
||||||
String mainFontPath;
|
String mainFontPath;
|
||||||
String patFontPath;
|
String patFontPath;
|
||||||
|
@ -1677,6 +1678,7 @@ class FurnaceGUI {
|
||||||
newSongBehavior(0),
|
newSongBehavior(0),
|
||||||
memUsageUnit(1),
|
memUsageUnit(1),
|
||||||
cursorFollowsWheel(0),
|
cursorFollowsWheel(0),
|
||||||
|
noDMFCompat(0),
|
||||||
maxUndoSteps(100),
|
maxUndoSteps(100),
|
||||||
mainFontPath(""),
|
mainFontPath(""),
|
||||||
patFontPath(""),
|
patFontPath(""),
|
||||||
|
|
|
@ -676,6 +676,14 @@ void FurnaceGUI::drawSettings() {
|
||||||
settings.blankIns=blankInsB;
|
settings.blankIns=blankInsB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool noDMFCompatB=settings.noDMFCompat;
|
||||||
|
if (ImGui::Checkbox("Don't apply compatibility flags when loading .dmf",&noDMFCompatB)) {
|
||||||
|
settings.noDMFCompat=noDMFCompatB;
|
||||||
|
}
|
||||||
|
if (ImGui::IsItemHovered()) {
|
||||||
|
ImGui::SetTooltip("do not report any issues arising from the use of this option!");
|
||||||
|
}
|
||||||
|
|
||||||
bool saveUnusedPatternsB=settings.saveUnusedPatterns;
|
bool saveUnusedPatternsB=settings.saveUnusedPatterns;
|
||||||
if (ImGui::Checkbox("Save unused patterns",&saveUnusedPatternsB)) {
|
if (ImGui::Checkbox("Save unused patterns",&saveUnusedPatternsB)) {
|
||||||
settings.saveUnusedPatterns=saveUnusedPatternsB;
|
settings.saveUnusedPatterns=saveUnusedPatternsB;
|
||||||
|
@ -2821,6 +2829,7 @@ void FurnaceGUI::syncSettings() {
|
||||||
settings.newSongBehavior=e->getConfInt("newSongBehavior",0);
|
settings.newSongBehavior=e->getConfInt("newSongBehavior",0);
|
||||||
settings.memUsageUnit=e->getConfInt("memUsageUnit",1);
|
settings.memUsageUnit=e->getConfInt("memUsageUnit",1);
|
||||||
settings.cursorFollowsWheel=e->getConfInt("cursorFollowsWheel",0);
|
settings.cursorFollowsWheel=e->getConfInt("cursorFollowsWheel",0);
|
||||||
|
settings.noDMFCompat=e->getConfInt("noDMFCompat",0);
|
||||||
|
|
||||||
clampSetting(settings.mainFontSize,2,96);
|
clampSetting(settings.mainFontSize,2,96);
|
||||||
clampSetting(settings.patFontSize,2,96);
|
clampSetting(settings.patFontSize,2,96);
|
||||||
|
@ -2950,6 +2959,7 @@ void FurnaceGUI::syncSettings() {
|
||||||
clampSetting(settings.newSongBehavior,0,1);
|
clampSetting(settings.newSongBehavior,0,1);
|
||||||
clampSetting(settings.memUsageUnit,0,1);
|
clampSetting(settings.memUsageUnit,0,1);
|
||||||
clampSetting(settings.cursorFollowsWheel,0,1);
|
clampSetting(settings.cursorFollowsWheel,0,1);
|
||||||
|
clampSetting(settings.noDMFCompat,0,1);
|
||||||
|
|
||||||
if (settings.exportLoops<0.0) settings.exportLoops=0.0;
|
if (settings.exportLoops<0.0) settings.exportLoops=0.0;
|
||||||
if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0;
|
if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0;
|
||||||
|
@ -3175,6 +3185,7 @@ void FurnaceGUI::commitSettings() {
|
||||||
e->setConf("newSongBehavior",settings.newSongBehavior);
|
e->setConf("newSongBehavior",settings.newSongBehavior);
|
||||||
e->setConf("memUsageUnit",settings.memUsageUnit);
|
e->setConf("memUsageUnit",settings.memUsageUnit);
|
||||||
e->setConf("cursorFollowsWheel",settings.cursorFollowsWheel);
|
e->setConf("cursorFollowsWheel",settings.cursorFollowsWheel);
|
||||||
|
e->setConf("noDMFCompat",settings.noDMFCompat);
|
||||||
|
|
||||||
// colors
|
// colors
|
||||||
for (int i=0; i<GUI_COLOR_MAX; i++) {
|
for (int i=0; i<GUI_COLOR_MAX; i++) {
|
||||||
|
|
Loading…
Reference in New Issue