store OP macros

todo
This commit is contained in:
tildearrow 2022-02-28 18:16:05 -05:00
parent da55305c13
commit bd9289cfdd
6 changed files with 287 additions and 86 deletions

View file

@ -37,8 +37,8 @@
warnings+=(String("\n")+x); \
}
#define DIV_VERSION "dev60"
#define DIV_ENGINE_VERSION 60
#define DIV_VERSION "dev61"
#define DIV_ENGINE_VERSION 61
enum DivStatusView {
DIV_STATUS_NOTHING=0,

View file

@ -302,6 +302,75 @@ void DivInstrument::putInsData(SafeWriter* w) {
w->writeI(op.d2rMacroRel);
w->writeI(op.ssgMacroRel);
}
// extended op macros
for (int i=0; i<4; i++) {
DivInstrumentSTD::OpMacro& op=std.opMacros[i];
w->writeI(op.damMacroLen);
w->writeI(op.dvbMacroLen);
w->writeI(op.egtMacroLen);
w->writeI(op.kslMacroLen);
w->writeI(op.susMacroLen);
w->writeI(op.vibMacroLen);
w->writeI(op.wsMacroLen);
w->writeI(op.ksrMacroLen);
w->writeI(op.damMacroLoop);
w->writeI(op.dvbMacroLoop);
w->writeI(op.egtMacroLoop);
w->writeI(op.kslMacroLoop);
w->writeI(op.susMacroLoop);
w->writeI(op.vibMacroLoop);
w->writeI(op.wsMacroLoop);
w->writeI(op.ksrMacroLoop);
w->writeI(op.damMacroRel);
w->writeI(op.dvbMacroRel);
w->writeI(op.egtMacroRel);
w->writeI(op.kslMacroRel);
w->writeI(op.susMacroRel);
w->writeI(op.vibMacroRel);
w->writeI(op.wsMacroRel);
w->writeI(op.ksrMacroRel);
w->writeC(op.damMacroOpen);
w->writeC(op.dvbMacroOpen);
w->writeC(op.egtMacroOpen);
w->writeC(op.kslMacroOpen);
w->writeC(op.susMacroOpen);
w->writeC(op.vibMacroOpen);
w->writeC(op.wsMacroOpen);
w->writeC(op.ksrMacroOpen);
}
for (int i=0; i<4; i++) {
DivInstrumentSTD::OpMacro& op=std.opMacros[i];
for (int j=0; j<op.damMacroLen; j++) {
w->writeC(op.damMacro[j]);
}
for (int j=0; j<op.dvbMacroLen; j++) {
w->writeC(op.dvbMacro[j]);
}
for (int j=0; j<op.egtMacroLen; j++) {
w->writeC(op.egtMacro[j]);
}
for (int j=0; j<op.kslMacroLen; j++) {
w->writeC(op.kslMacro[j]);
}
for (int j=0; j<op.susMacroLen; j++) {
w->writeC(op.susMacro[j]);
}
for (int j=0; j<op.vibMacroLen; j++) {
w->writeC(op.vibMacro[j]);
}
for (int j=0; j<op.wsMacroLen; j++) {
w->writeC(op.wsMacro[j]);
}
for (int j=0; j<op.ksrMacroLen; j++) {
w->writeC(op.ksrMacro[j]);
}
}
}
DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) {
@ -570,6 +639,61 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) {
}
}
// extended op macros
if (version>=61) {
for (int i=0; i<4; i++) {
DivInstrumentSTD::OpMacro& op=std.opMacros[i];
op.damMacroLen=reader.readI();
op.dvbMacroLen=reader.readI();
op.egtMacroLen=reader.readI();
op.kslMacroLen=reader.readI();
op.susMacroLen=reader.readI();
op.vibMacroLen=reader.readI();
op.wsMacroLen=reader.readI();
op.ksrMacroLen=reader.readI();
op.damMacroLoop=reader.readI();
op.dvbMacroLoop=reader.readI();
op.egtMacroLoop=reader.readI();
op.kslMacroLoop=reader.readI();
op.susMacroLoop=reader.readI();
op.vibMacroLoop=reader.readI();
op.wsMacroLoop=reader.readI();
op.ksrMacroLoop=reader.readI();
op.damMacroRel=reader.readI();
op.dvbMacroRel=reader.readI();
op.egtMacroRel=reader.readI();
op.kslMacroRel=reader.readI();
op.susMacroRel=reader.readI();
op.vibMacroRel=reader.readI();
op.wsMacroRel=reader.readI();
op.ksrMacroRel=reader.readI();
op.damMacroOpen=reader.readC();
op.dvbMacroOpen=reader.readC();
op.egtMacroOpen=reader.readC();
op.kslMacroOpen=reader.readC();
op.susMacroOpen=reader.readC();
op.vibMacroOpen=reader.readC();
op.wsMacroOpen=reader.readC();
op.ksrMacroOpen=reader.readC();
}
for (int i=0; i<4; i++) {
DivInstrumentSTD::OpMacro& op=std.opMacros[i];
reader.read(op.damMacro,op.damMacroLen);
reader.read(op.dvbMacro,op.dvbMacroLen);
reader.read(op.egtMacro,op.egtMacroLen);
reader.read(op.kslMacro,op.kslMacroLen);
reader.read(op.susMacro,op.susMacroLen);
reader.read(op.vibMacro,op.vibMacroLen);
reader.read(op.wsMacro,op.wsMacroLen);
reader.read(op.ksrMacro,op.ksrMacroLen);
}
}
return DIV_DATA_SUCCESS;
}