diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 5b8fa7289..d285e0ecc 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -308,19 +308,19 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { logI("reading instruments (%d)...",ds.insLen); for (int i=0; i0x05) { ins->name=reader.readString((unsigned char)reader.readC()); } logD("%d name: %s",i,ins->name.c_str()); if (ds.version<0x0b) { // instruments in ancient versions were all FM or STD. - ins->mode=1; + mode=1; } else { - unsigned char mode=reader.readC(); + mode=reader.readC(); if (mode>1) logW("%d: invalid instrument mode %d!",i,mode); - ins->mode=mode; } - ins->type=ins->mode?DIV_INS_FM:DIV_INS_STD; + ins->type=mode?DIV_INS_FM:DIV_INS_STD; if (ds.system[0]==DIV_SYSTEM_GB) { ins->type=DIV_INS_GB; } @@ -330,7 +330,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { 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_YM2610B || ds.system[0]==DIV_SYSTEM_YM2610B_EXT) { - if (!ins->mode) { + if (!mode) { ins->type=DIV_INS_AY; } } @@ -344,7 +344,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { ins->type=DIV_INS_OPL; } - if (ins->mode) { // FM + if (mode) { // FM if (ds.version>0x05) { ins->fm.alg=reader.readC(); if (ds.version<0x13) { @@ -3231,15 +3231,15 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { w->writeString(i->name,true); // safety check - if (!isFMSystem(sys) && i->mode) { - i->mode=0; + if (!isFMSystem(sys) && i->type!=DIV_INS_STD && i->type!=DIV_INS_FDS) { + i->type=DIV_INS_STD; } - if (!isSTDSystem(sys) && i->mode==0) { - i->mode=1; + if (!isSTDSystem(sys) && i->type!=DIV_INS_FM) { + i->type=DIV_INS_FM; } - w->writeC(i->mode); - if (i->mode) { // FM + w->writeC((i->type==DIV_INS_FM || i->type==DIV_INS_OPLL)?1:0); + if (i->type==DIV_INS_FM || i->type==DIV_INS_OPLL) { // FM w->writeC(i->fm.alg); w->writeC(i->fm.fb); w->writeC(i->fm.fms); diff --git a/src/engine/instrument.h b/src/engine/instrument.h index 88a1e3e76..f389233c3 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -465,7 +465,6 @@ struct DivInstrument { bool save(const char* path); DivInstrument(): name(""), - mode(false), type(DIV_INS_FM) { } };