From 5cec39587c30931e20dff407252b49448850b1a9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 24 Jun 2024 02:50:44 -0500 Subject: [PATCH] S3M import: more stuff --- src/engine/fileOps/s3m.cpp | 3 +++ src/engine/playback.cpp | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/engine/fileOps/s3m.cpp b/src/engine/fileOps/s3m.cpp index 49008037b..f62f24aca 100644 --- a/src/engine/fileOps/s3m.cpp +++ b/src/engine/fileOps/s3m.cpp @@ -776,6 +776,9 @@ bool DivEngine::loadS3M(unsigned char* file, size_t len) { volSlideStatus[chan]=effectVal; volSlideStatusChanged[chan]=true; } + if (hasNoteIns) { + volSlideStatusChanged[chan]=true; + } volSliding[chan]=true; break; case 'E': // pitch down diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index e5f83a5b3..dd8b90f75 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1083,11 +1083,13 @@ void DivEngine::processRow(int i, bool afterDelay) { dispatchCmd(DivCommand(DIV_CMD_MACRO_RESTART,i,effectVal&0xff)); break; case 0xf8: // single volume ramp up + chan[i].volSpeed=0; // add compat flag? chan[i].volume=MIN(chan[i].volume+effectVal*256,chan[i].volMax); dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8)); break; case 0xf9: // single volume ramp down + chan[i].volSpeed=0; // add compat flag? chan[i].volume=MAX(chan[i].volume-effectVal*256,0); dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8));