From fd253c37f00587d3e7a8473b7aff716e3b7a79a1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 1 Jul 2024 04:04:04 -0500 Subject: [PATCH] XM import: why does this module have inverted loop --- src/engine/fileOps/xm.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/engine/fileOps/xm.cpp b/src/engine/fileOps/xm.cpp index 6d8324462..d0353bf77 100644 --- a/src/engine/fileOps/xm.cpp +++ b/src/engine/fileOps/xm.cpp @@ -234,6 +234,7 @@ bool DivEngine::loadXM(unsigned char* file, size_t len) { ds.system[i]=DIV_SYSTEM_ES5506; ds.systemFlags[i].set("amigaVol",true); ds.systemFlags[i].set("amigaPitch",(ds.linearPitch==0)); + ds.systemFlags[i].set("volScale",3900); } ds.systemLen=(totalChans+31)>>5; @@ -546,6 +547,12 @@ bool DivEngine::loadXM(unsigned char* file, size_t len) { s->loopStart=reader.readI(); s->loopEnd=reader.readI()+s->loopStart; + if (s->loopStart>s->loopEnd) { + s->loopStart^=s->loopEnd; + s->loopEnd^=s->loopStart; + s->loopStart^=s->loopEnd; + } + sampleVol[i][j]=reader.readC(); signed char fine=reader.readC();