Persist new volume rounding option to furnace module when saving

This commit is contained in:
Zeta 2023-11-14 03:51:51 -05:00
parent 24ff5b240c
commit 67d6f44947
2 changed files with 13 additions and 3 deletions

View file

@ -363,7 +363,8 @@ size | description
1 | pre note (C64) does not compensate for portamento or legato (>=168)
1 | disable new NES DPCM features (>=183)
1 | reset arp effect phase on new note (>=184)
3 | reserved
1 | linear volume scaling rounds up (>=187)
2 | reserved
--- | **speed pattern of first song** (>=139)
1 | length of speed pattern (fail if this is lower than 0 or higher than 16)
16 | speed pattern (this overrides speed 1 and speed 2 settings)

View file

@ -1873,6 +1873,9 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
if (ds.version<184) {
ds.resetArpPhaseOnNewNote=false;
}
if (ds.version<187) {
ds.ceilVolumeScaling=false;
}
ds.isDMF=false;
reader.readS(); // reserved
@ -2409,7 +2412,12 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
} else {
reader.readC();
}
for (int i=0; i<3; i++) {
if (ds.version>=187) {
ds.ceilVolumeScaling=reader.readC();
} else {
reader.readC();
}
for (int i=0; i<2; i++) {
reader.readC();
}
}
@ -5494,7 +5502,8 @@ SafeWriter* DivEngine::saveFur(bool notPrimary, bool newPatternFormat) {
w->writeC(song.preNoteNoEffect);
w->writeC(song.oldDPCM);
w->writeC(song.resetArpPhaseOnNewNote);
for (int i=0; i<3; i++) {
w->writeC(song.ceilVolumeScaling);
for (int i=0; i<2; i++) {
w->writeC(0);
}