From 82703a165f4bdcf2ad2b8c062fb827d59fe84590 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 28 Aug 2022 01:12:57 -0500 Subject: [PATCH] fix non-STD instruments in C64/GB/PCE converting to the wrong type --- src/engine/fileOps.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index fe220aae8..a5ce1d095 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -4155,7 +4155,25 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { // safety check if (!isFMSystem(sys) && i->type!=DIV_INS_STD && i->type!=DIV_INS_FDS) { - i->type=DIV_INS_STD; + switch (song.system[0]) { + case DIV_SYSTEM_GB: + i->type=DIV_INS_GB; + break; + case DIV_SYSTEM_C64_6581: + case DIV_SYSTEM_C64_8580: + i->type=DIV_INS_C64; + break; + case DIV_SYSTEM_PCE: + i->type=DIV_INS_PCE; + break; + case DIV_SYSTEM_YM2610: + case DIV_SYSTEM_YM2610_EXT: + i->type=DIV_INS_AY; + break; + default: + i->type=DIV_INS_STD; + break; + } } if (!isSTDSystem(sys) && i->type!=DIV_INS_FM) { i->type=DIV_INS_FM;