From d3718ccaf0e42d2f0d3db5ce5e17f85c567b34e4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 8 Oct 2022 02:03:09 -0500 Subject: [PATCH] YMU759: fix 4-op ins loading in .dmf --- src/engine/fileOps.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 41ec55e62..a13182e32 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -494,6 +494,19 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { ins->fm.op[j].ssgEnv ); } + + // swap alg operator 2 and 3 if YMU759 + if (ds.system[0]==DIV_SYSTEM_YMU759 && ins->fm.ops==4) { + DivInstrumentFM::Operator oldOp=ins->fm.op[2]; + ins->fm.op[2]=ins->fm.op[1]; + ins->fm.op[1]=oldOp; + + if (ins->fm.alg==1) { + ins->fm.alg=2; + } else if (ins->fm.alg==2) { + ins->fm.alg=1; + } + } } else { // STD if (ds.system[0]!=DIV_SYSTEM_GB || ds.version<0x12) { ins->std.volMacro.len=reader.readC();