From 5a961a5485a76dceb65a7e37234526dda4312e11 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 23 Jul 2024 14:44:14 -0500 Subject: [PATCH] Revert "effects for controlling volume slides" This reverts commit 629667d460235b71602fd3479cb34dd6ad1e68fe. --- doc/3-pattern/effects.md | 6 ------ src/engine/engine.cpp | 5 ----- src/engine/engine.h | 4 +--- src/engine/playback.cpp | 22 +++++++--------------- src/gui/guiConst.cpp | 4 ++-- 5 files changed, 10 insertions(+), 31 deletions(-) diff --git a/doc/3-pattern/effects.md b/doc/3-pattern/effects.md index 021638026..c7f3cd7fd 100644 --- a/doc/3-pattern/effects.md +++ b/doc/3-pattern/effects.md @@ -15,12 +15,6 @@ however, effects are continuous (unless specified), which means you only need to - `F8xx`: **Single tick volume slide up.** adds `x` to volume on first tick only. - `F9xx`: **Single tick volume slide down.** subtracts `x` from volume on first tick only. - --- -- `D8xx`: **Set volume slide bottom boundary.** - - the default is 0. -- `D9xx`: **Set volume slide top boundary.** - - the default is the channel's maximum volume. -- `DCxx`: **Delayed mute.** sets volume to 0 after `xx` ticks. - - --- - `07xy`: **Tremolo.** changes volume to be "wavy" with a sine LFO. `x` is the speed. `y` is the depth. - tremolo is downward only. - maximum tremolo depth is -60 volume steps. diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 3f0fbe7eb..1a382b85e 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -98,10 +98,6 @@ const char* DivEngine::getEffectDesc(unsigned char effect, int chan, bool notNul break; case 0xc0: case 0xc1: case 0xc2: case 0xc3: return _("Cxxx: Set tick rate (hz)"); - case 0xd8: - return _("D8xx: Set volume slide bottom boundary"); - case 0xd9: - return _("D9xx: Set volume slide top boundary"); case 0xdc: return _("DCxx: Delayed mute"); case 0xe0: @@ -2114,7 +2110,6 @@ void DivEngine::reset() { chan[i]=DivChannelState(); if (idispatch(DivCommand(DIV_CMD_GET_VOLMAX,dispatchChanOfChan[i]))<<8)|0xff; chan[i].volume=chan[i].volMax; - chan[i].volTop=chan[i].volMax; if (song.linearPitch==0) chan[i].vibratoFine=4; } extValue=0; diff --git a/src/engine/engine.h b/src/engine/engine.h index e4da99f91..2a7718c1d 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -133,7 +133,7 @@ struct DivAudioExportOptions { struct DivChannelState { std::vector delayed; int note, oldNote, lastIns, pitch, portaSpeed, portaNote; - int volume, volSpeed, cut, volCut, legatoDelay, legatoTarget, rowDelay, volMax, volBottom, volTop; + int volume, volSpeed, cut, volCut, legatoDelay, legatoTarget, rowDelay, volMax; int delayOrder, delayRow, retrigSpeed, retrigTick; int vibratoDepth, vibratoRate, vibratoPos, vibratoPosGiant, vibratoShape, vibratoFine; int tremoloDepth, tremoloRate, tremoloPos; @@ -163,8 +163,6 @@ struct DivChannelState { legatoTarget(0), rowDelay(0), volMax(0), - volBottom(0), - volTop(0), delayOrder(0), delayRow(0), retrigSpeed(0), diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 4f1e04ae3..b7b8098b6 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -932,14 +932,6 @@ void DivEngine::processRow(int i, bool afterDelay) { clockDrift=0; subticks=0; break; - case 0xd8: // vol slide bottom - chan[i].volBottom=(effectVal<<8)|0xff; - if (chan[i].volBottom>chan[i].volMax) chan[i].volBottom=chan[i].volMax; - break; - case 0xd9: // vol slide top - chan[i].volTop=(effectVal<<8)|0xff; - if (chan[i].volTop>chan[i].volMax) chan[i].volTop=chan[i].volMax; - break; case 0xdc: // delayed mute if (effectVal>0 && (song.delayBehavior==2 || effectVal>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,chan[i].volBottom); + 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)); break; @@ -1596,19 +1588,19 @@ bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { if (chan[i].volSpeed!=0) { chan[i].volume=(chan[i].volume&0xff)|(dispatchCmd(DivCommand(DIV_CMD_GET_VOLUME,i))<<8); chan[i].volume+=chan[i].volSpeed; - if (chan[i].volume>chan[i].volTop) { - chan[i].volume=chan[i].volTop; + if (chan[i].volume>chan[i].volMax) { + chan[i].volume=chan[i].volMax; chan[i].volSpeed=0; dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8)); dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE,i,0)); - } else if (chan[i].volume>8)); dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8)); diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index e442d7a36..2595827b0 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -478,8 +478,8 @@ const FurnaceGUIColors fxColors[256]={ GUI_COLOR_PATTERN_EFFECT_INVALID, GUI_COLOR_PATTERN_EFFECT_INVALID, GUI_COLOR_PATTERN_EFFECT_INVALID, - GUI_COLOR_PATTERN_EFFECT_VOLUME, // D8 - GUI_COLOR_PATTERN_EFFECT_VOLUME, // D9 + GUI_COLOR_PATTERN_EFFECT_INVALID, + GUI_COLOR_PATTERN_EFFECT_INVALID, GUI_COLOR_PATTERN_EFFECT_INVALID, GUI_COLOR_PATTERN_EFFECT_INVALID, GUI_COLOR_PATTERN_EFFECT_VOLUME, // DC