minor cleanup

This commit is contained in:
Adam Lederer 2024-08-23 11:24:24 -07:00
parent ae4adececd
commit 08f1381fee
3 changed files with 18 additions and 21 deletions

View file

@ -56,7 +56,7 @@ struct DivCSChannelState {
volume(0x7f00), volume(0x7f00),
volMax(0), volMax(0),
volSpeed(0), volSpeed(0),
volSpeedTarget(0), volSpeedTarget(-1),
vibratoDepth(0), vibratoDepth(0),
vibratoRate(0), vibratoRate(0),
vibratoPos(0), vibratoPos(0),

View file

@ -157,7 +157,7 @@ struct DivChannelState {
portaNote(-1), portaNote(-1),
volume(0x7f00), volume(0x7f00),
volSpeed(0), volSpeed(0),
volSpeedTarget(0), volSpeedTarget(-1),
cut(-1), cut(-1),
volCut(-1), volCut(-1),
legatoDelay(-1), legatoDelay(-1),

View file

@ -661,7 +661,6 @@ void DivEngine::processRow(int i, bool afterDelay) {
if (pat->data[whatRow][0]==0 && pat->data[whatRow][1]==0) { if (pat->data[whatRow][0]==0 && pat->data[whatRow][1]==0) {
chan[i].midiAftertouch=true; chan[i].midiAftertouch=true;
} }
chan[i].volume=pat->data[whatRow][3]<<8; chan[i].volume=pat->data[whatRow][3]<<8;
dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8));
dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8)); dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8));
@ -962,6 +961,22 @@ void DivEngine::processRow(int i, bool afterDelay) {
chan[i].cutType=0; chan[i].cutType=0;
} }
break; break;
case 0xd3: // volume portamento (vol porta)
// tremolo and vol slides are incompatible
chan[i].tremoloDepth=0;
chan[i].tremoloRate=0;
chan[i].volSpeed=volPortaTarget<0 ? 0 : volPortaTarget>chan[i].volume ? effectVal : -effectVal;
chan[i].volSpeedTarget=chan[i].volSpeed==0 ? -1 : volPortaTarget;
dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE_TARGET,i,chan[i].volSpeed,chan[i].volSpeedTarget));
break;
case 0xd4: // volume portamento fast (vol porta fast)
// tremolo and vol slides are incompatible
chan[i].tremoloDepth=0;
chan[i].tremoloRate=0;
chan[i].volSpeed=volPortaTarget<0 ? 0 : volPortaTarget>chan[i].volume ? 256*effectVal : -256*effectVal;
chan[i].volSpeedTarget=chan[i].volSpeed==0 ? -1 : volPortaTarget;
dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE_TARGET,i,chan[i].volSpeed,chan[i].volSpeedTarget));
break;
case 0xe0: // arp speed case 0xe0: // arp speed
if (effectVal>0) { if (effectVal>0) {
curSubSong->arpLen=effectVal; curSubSong->arpLen=effectVal;
@ -1149,24 +1164,6 @@ void DivEngine::processRow(int i, bool afterDelay) {
chan[i].volSpeedTarget=-1; chan[i].volSpeedTarget=-1;
dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE,i,chan[i].volSpeed)); dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE,i,chan[i].volSpeed));
break; break;
case 0xd3: { // volume portamento (vol porta)
// tremolo and vol slides are incompatible
chan[i].tremoloDepth=0;
chan[i].tremoloRate=0;
chan[i].volSpeed=volPortaTarget<0 ? 0 : volPortaTarget>chan[i].volume ? effectVal : -effectVal;
chan[i].volSpeedTarget=chan[i].volSpeed==0 ? -1 : volPortaTarget;
dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE_TARGET,i,chan[i].volSpeed,chan[i].volSpeedTarget));
break;
}
case 0xd4: { // volume portamento fast (vol porta fast)
// tremolo and vol slides are incompatible
chan[i].tremoloDepth=0;
chan[i].tremoloRate=0;
chan[i].volSpeed=volPortaTarget<0 ? 0 : volPortaTarget>chan[i].volume ? 256*effectVal : -256*effectVal;
chan[i].volSpeedTarget=chan[i].volSpeed==0 ? -1 : volPortaTarget;
dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE_TARGET,i,chan[i].volSpeed,chan[i].volSpeedTarget));
break;
}
case 0xfc: // delayed note release case 0xfc: // delayed note release
if (song.delayBehavior==2 || effectVal<nextSpeed) { if (song.delayBehavior==2 || effectVal<nextSpeed) {
chan[i].cut=effectVal+1; chan[i].cut=effectVal+1;