now fix the volume slides in FM as well

This commit is contained in:
tildearrow 2021-05-17 15:51:12 -05:00
parent ceda9a8058
commit 98180c3d23
2 changed files with 4 additions and 4 deletions

View file

@ -160,7 +160,7 @@ int DivPlatformGenesis::dispatch(DivCommand c) {
unsigned short baseAddr=chanOffs[c.chan]|opOffs[i]; unsigned short baseAddr=chanOffs[c.chan]|opOffs[i];
DivInstrumentFM::Operator op=ins->fm.op[i]; DivInstrumentFM::Operator op=ins->fm.op[i];
if (isOutput[ins->fm.alg][i]) { if (isOutput[ins->fm.alg][i]) {
rWrite(baseAddr+0x40,127-(((127-op.tl)*chan[c.chan].vol)/127)); rWrite(baseAddr+0x40,127-(((127-op.tl)*(chan[c.chan].vol&0x7f))/127));
} else { } else {
if (chan[c.chan].insChanged) { if (chan[c.chan].insChanged) {
rWrite(baseAddr+0x40,op.tl); rWrite(baseAddr+0x40,op.tl);
@ -198,7 +198,7 @@ int DivPlatformGenesis::dispatch(DivCommand c) {
unsigned short baseAddr=chanOffs[c.chan]|opOffs[i]; unsigned short baseAddr=chanOffs[c.chan]|opOffs[i];
DivInstrumentFM::Operator op=ins->fm.op[i]; DivInstrumentFM::Operator op=ins->fm.op[i];
if (isOutput[ins->fm.alg][i]) { if (isOutput[ins->fm.alg][i]) {
rWrite(baseAddr+0x40,127-(((127-op.tl)*chan[c.chan].vol)/127)); rWrite(baseAddr+0x40,127-(((127-op.tl)*(chan[c.chan].vol&0x7f))/127));
} else { } else {
rWrite(baseAddr+0x40,op.tl); rWrite(baseAddr+0x40,op.tl);
} }
@ -279,7 +279,7 @@ int DivPlatformGenesis::dispatch(DivCommand c) {
unsigned short baseAddr=chanOffs[c.chan]|opOffs[orderedOps[c.value]]; unsigned short baseAddr=chanOffs[c.chan]|opOffs[orderedOps[c.value]];
DivInstrument* ins=parent->getIns(chan[c.chan].ins); DivInstrument* ins=parent->getIns(chan[c.chan].ins);
if (isOutput[ins->fm.alg][c.value]) { if (isOutput[ins->fm.alg][c.value]) {
rWrite(baseAddr+0x40,127-(((127-c.value2)*chan[c.chan].vol)/127)); rWrite(baseAddr+0x40,127-(((127-c.value2)*(chan[c.chan].vol&0x7f))/127));
} else { } else {
rWrite(baseAddr+0x40,c.value2); rWrite(baseAddr+0x40,c.value2);
} }

View file

@ -14,7 +14,7 @@ class DivPlatformGenesis: public DivDispatch {
unsigned char ins; unsigned char ins;
signed char konCycles; signed char konCycles;
bool active, insChanged, freqChanged, keyOn, keyOff; bool active, insChanged, freqChanged, keyOn, keyOff;
signed char vol; int vol;
unsigned char pan; unsigned char pan;
Channel(): freqH(0), freqL(0), freq(0), baseFreq(0), pitch(0), ins(-1), active(false), insChanged(true), freqChanged(false), keyOn(false), keyOff(false), vol(0), pan(3) {} Channel(): freqH(0), freqL(0), freq(0), baseFreq(0), pitch(0), ins(-1), active(false), insChanged(true), freqChanged(false), keyOn(false), keyOff(false), vol(0), pan(3) {}
}; };