From 1dcb9e809ba4aead91a0d5bbc78a3d300ec0a632 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 16 Mar 2025 16:28:36 -0500 Subject: [PATCH] XM import: improve envelope conversion again issue #2026 --- src/engine/fileOps/xm.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/engine/fileOps/xm.cpp b/src/engine/fileOps/xm.cpp index 71d583932..1e7330489 100644 --- a/src/engine/fileOps/xm.cpp +++ b/src/engine/fileOps/xm.cpp @@ -76,12 +76,16 @@ void readEnvelope(DivInstrument* ins, int env, unsigned char flags, unsigned cha if (flags&4) { // loop if (loopStart!=loopEnd && loopStartloop=CLAMP(pointTime[loopStart],0,254); + target->len=MIN(pointTime[numPoints-1],255); + } else { + target->len=MIN(pointTime[numPoints-1]+1,255); } + } else { + target->len=MIN(pointTime[numPoints-1]+1,255); } if (flags&2 && susPointrel=CLAMP(pointTime[susPoint]-1,0,254); } - target->len=MIN(pointTime[numPoints-1]+1,255); if (((flags&4) && (!(flags&2))) || ((flags&6)==0)) { target->rel=target->len-1; } @@ -565,6 +569,7 @@ bool DivEngine::loadXM(unsigned char* file, size_t len) { if (volType&1) { // add fade-out + logV("volFade: %d",volFade); if (volFade!=0) { int cur=64; int macroLen=ins->std.volMacro.len;