diff --git a/src/engine/fileOps/dmf.cpp b/src/engine/fileOps/dmf.cpp index 88c146a39..fcd63628c 100644 --- a/src/engine/fileOps/dmf.cpp +++ b/src/engine/fileOps/dmf.cpp @@ -1185,6 +1185,9 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_FDS) { isFlat=true; } + if (song.system[0]==DIV_SYSTEM_AY8910 && song.system[1]==DIV_SYSTEM_SCC) { + isFlat=true; + } } // fail if more than one system if (!isFlat && song.systemLen!=1) { @@ -1216,6 +1219,12 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { lastError="FDS not supported in 1.0/legacy .dmf!"; return NULL; } + // fail if the system is SCC and version<25 + if (version<25 && song.system[0]==DIV_SYSTEM_AY8910 && song.system[1]==DIV_SYSTEM_SCC) { + logE("AY + SCC not supported in 1.0/legacy .dmf!"); + lastError="AY + SCC not supported in 1.0/legacy .dmf!"; + return NULL; + } // fail if the system is Furnace-exclusive if (!isFlat && systemToFileDMF(song.system[0])==0) { logE("cannot save Furnace-exclusive system song!"); @@ -1277,6 +1286,9 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { } else if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_FDS) { w->writeC(systemToFileDMF(DIV_SYSTEM_NES_FDS)); sys=DIV_SYSTEM_NES_FDS; + } else if (song.system[0]==DIV_SYSTEM_AY8910 && song.system[1]==DIV_SYSTEM_SCC) { + w->writeC(systemToFileDMF(DIV_SYSTEM_MSX2)); + sys=DIV_SYSTEM_MSX2; } else { w->writeC(systemToFileDMF(song.system[0])); sys=song.system[0];