dev199 - SID2: fix cut/res range

This commit is contained in:
tildearrow 2024-04-22 06:21:13 -05:00
parent d96244080d
commit d5633e7484
4 changed files with 34 additions and 9 deletions

View file

@ -54,8 +54,8 @@ class DivWorkPool;
#define DIV_UNSTABLE
#define DIV_VERSION "dev198"
#define DIV_ENGINE_VERSION 198
#define DIV_VERSION "dev199"
#define DIV_ENGINE_VERSION 199
// for imports
#define DIV_VERSION_MOD 0xff01
#define DIV_VERSION_FC 0xff02

View file

@ -481,7 +481,9 @@ void DivInstrument::writeFeature64(SafeWriter* w) {
w->writeC(((c64.a&15)<<4)|(c64.d&15));
w->writeC(((c64.s&15)<<4)|(c64.r&15));
w->writeS(c64.duty);
w->writeS((unsigned short)((c64.cut&2047)|(c64.res<<12)));
w->writeS((unsigned short)((c64.cut&4095)|((c64.res&15)<<12)));
w->writeC((c64.res>>4)&15);
FEATURE_END;
}
@ -1647,9 +1649,13 @@ void DivInstrument::readFeature64(SafeReader& reader, bool& volIsCutoff, short v
c64.duty=reader.readS()&4095;
unsigned short cr=reader.readS();
c64.cut=cr&2047;
c64.cut=cr&4095;
c64.res=cr>>12;
if (version>=199) {
c64.res|=((unsigned char)reader.readC())<<4;
}
READ_FEAT_END;
}