fix broken DAC mode

adds new compat flag
This commit is contained in:
tildearrow 2022-03-11 22:11:33 -05:00
parent b73591970d
commit 2a0aa19b2b
6 changed files with 36 additions and 6 deletions

View file

@ -140,6 +140,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
ds.algMacroBehavior=false;
ds.brokenShortcutSlides=false;
ds.ignoreDuplicateSlides=true;
ds.brokenDACMode=true;
// 1.1 compat flags
if (ds.version>24) {
@ -799,6 +800,9 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
if (ds.version<62) {
ds.stopPortaOnNoteOff=true;
}
if (ds.version<64) {
ds.brokenDACMode=false;
}
ds.isDMF=false;
reader.readS(); // reserved
@ -975,7 +979,12 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
reader.readC();
reader.readC();
}
for (int i=0; i<4; i++) reader.readC();
if (ds.version>=64) {
ds.brokenDACMode=reader.readC();
} else {
reader.readC();
}
for (int i=0; i<3; i++) reader.readC();
} else {
for (int i=0; i<20; i++) reader.readC();
}
@ -1417,7 +1426,8 @@ SafeWriter* DivEngine::saveFur() {
w->writeC(song.ignoreDuplicateSlides);
w->writeC(song.stopPortaOnNoteOff);
w->writeC(song.continuousVibrato);
for (int i=0; i<4; i++) {
w->writeC(song.brokenDACMode);
for (int i=0; i<3; i++) {
w->writeC(0);
}