Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt

* 'master' of https://github.com/tildearrow/furnace:
  maybe uninitialized
  GUI: prepare for a per-channel oscilloscope?
  GUI: add backdrop if system file picker is open
  GUI: add ability to customize startup system
  GUI: finally implement "don't scroll when moving c ursor" setting
  new panning effects (80/81/82)
  GUI: fix sample paste crash
  GUI: implement sample scroll with mouse wheel
  sysDef oopsie

# Conflicts:
#	src/gui/guiConst.cpp
This commit is contained in:
cam900 2022-05-01 00:25:21 +09:00
commit 5414213710
52 changed files with 1021 additions and 342 deletions

View file

@ -1070,6 +1070,7 @@ void DivEngine::processRow(int i, bool afterDelay) {
short lastSlide=-1;
bool calledPorta=false;
bool panChanged=false;
// effects
for (int j=0; j<song.pat[i].effectCols; j++) {
@ -1098,8 +1099,25 @@ void DivEngine::processRow(int i, bool afterDelay) {
changePos=effectVal;
}
break;
case 0x08: // panning
dispatchCmd(DivCommand(DIV_CMD_PANNING,i,effectVal));
case 0x08: // panning (split 4-bit)
chan[i].panL=(effectVal>>4)|(effectVal&0xf0);
chan[i].panR=(effectVal&15)|((effectVal&15)<<4);
panChanged=true;
break;
case 0x80: { // panning (linear)
unsigned short pan=convertPanLinearToSplit(effectVal,8,255);
chan[i].panL=pan>>8;
chan[i].panR=pan&0xff;
panChanged=true;
break;
}
case 0x81: // panning left (split 8-bit)
chan[i].panL=effectVal;
panChanged=true;
break;
case 0x82: // panning right (split 8-bit)
chan[i].panR=effectVal;
panChanged=true;
break;
case 0x01: // ramp up
if (song.ignoreDuplicateSlides && (lastSlide==0x01 || lastSlide==0x1337)) break;
@ -1354,6 +1372,10 @@ void DivEngine::processRow(int i, bool afterDelay) {
}
}
if (panChanged) {
dispatchCmd(DivCommand(DIV_CMD_PANNING,i,chan[i].panL,chan[i].panR));
}
if (insChanged && (chan[i].inPorta || calledPorta) && song.newInsTriggersInPorta) {
dispatchCmd(DivCommand(DIV_CMD_NOTE_ON,i,DIV_NOTE_NULL));
}