this might fix it

This commit is contained in:
tildearrow 2022-04-23 16:52:31 -05:00
parent 6493a0481c
commit 0e3dbdc1b2
2 changed files with 29 additions and 14 deletions

View File

@ -130,6 +130,9 @@ int DivPlatformGenesisExt::dispatch(DivCommand c) {
int destFreq=NOTE_FNUM_BLOCK(c.value2,11);
int newFreq;
bool return2=false;
if (opChan[ch].portaPause) {
opChan[ch].baseFreq=opChan[ch].portaPauseFreq;
}
if (destFreq>opChan[ch].baseFreq) {
newFreq=opChan[ch].baseFreq+c.value;
if (newFreq>=destFreq) {
@ -144,23 +147,20 @@ int DivPlatformGenesisExt::dispatch(DivCommand c) {
}
}
// what the heck!
// TODO: rework!
if (!opChan[ch].portaPause) {
if ((newFreq&0x7ff)>1288) {
newFreq=(644)|((newFreq+0x800)&0xf800);
opChan[ch].portaPauseFreq=(644)|((newFreq+0x800)&0xf800);
opChan[ch].portaPause=true;
return2=false;
} else if ((newFreq&0x7ff)<644) {
newFreq=(1287)|((newFreq-0x800)&0xf800);
opChan[ch].portaPause=true;
return2=false;
} else {
opChan[ch].freqChanged=true;
break;
}
if ((newFreq&0x7ff)<644) {
opChan[ch].portaPauseFreq=newFreq=(1287)|((newFreq-0x800)&0xf800);
opChan[ch].portaPause=true;
break;
}
} else {
opChan[ch].portaPause=false;
opChan[ch].freqChanged=true;
}
opChan[ch].portaPause=false;
opChan[ch].freqChanged=true;
opChan[ch].baseFreq=newFreq;
if (return2) return 2;
break;

View File

@ -25,13 +25,28 @@ class DivPlatformGenesisExt: public DivPlatformGenesis {
struct OpChannel {
DivMacroInt std;
unsigned char freqH, freqL;
int freq, baseFreq, pitch;
int freq, baseFreq, pitch, portaPauseFreq;
unsigned char ins;
signed char konCycles;
bool active, insChanged, freqChanged, keyOn, keyOff, portaPause;
int vol;
unsigned char pan;
OpChannel(): freqH(0), freqL(0), freq(0), baseFreq(0), pitch(0), ins(-1), active(false), insChanged(true), freqChanged(false), keyOn(false), keyOff(false), portaPause(false), vol(0), pan(3) {}
OpChannel():
freqH(0),
freqL(0),
freq(0),
baseFreq(0),
pitch(0),
portaPauseFreq(0),
ins(-1),
active(false),
insChanged(true),
freqChanged(false),
keyOn(false),
keyOff(false),
portaPause(false),
vol(0),
pan(3) {}
};
OpChannel opChan[4];
bool isOpMuted[4];