parent
54934dcfc9
commit
251893c5f8
|
@ -238,7 +238,9 @@ void DivPlatformLynx::tick(bool sysTick) {
|
||||||
chan[i].fd=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,true,0,chan[i].pitch2,chipClock,CHIP_DIVIDER);
|
chan[i].fd=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,true,0,chan[i].pitch2,chipClock,CHIP_DIVIDER);
|
||||||
if (chan[i].std.duty.had) {
|
if (chan[i].std.duty.had) {
|
||||||
chan[i].duty=chan[i].std.duty.val;
|
chan[i].duty=chan[i].std.duty.val;
|
||||||
WRITE_FEEDBACK(i, chan[i].duty.feedback);
|
if (!chan[i].pcm) {
|
||||||
|
WRITE_FEEDBACK(i, chan[i].duty.feedback);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
WRITE_CONTROL(i, (chan[i].fd.clockDivider|0x18|chan[i].duty.int_feedback7));
|
WRITE_CONTROL(i, (chan[i].fd.clockDivider|0x18|chan[i].duty.int_feedback7));
|
||||||
WRITE_BACKUP( i, chan[i].fd.backup );
|
WRITE_BACKUP( i, chan[i].fd.backup );
|
||||||
|
@ -257,9 +259,21 @@ void DivPlatformLynx::tick(bool sysTick) {
|
||||||
int DivPlatformLynx::dispatch(DivCommand c) {
|
int DivPlatformLynx::dispatch(DivCommand c) {
|
||||||
switch (c.cmd) {
|
switch (c.cmd) {
|
||||||
case DIV_CMD_NOTE_ON: {
|
case DIV_CMD_NOTE_ON: {
|
||||||
|
bool prevPCM=chan[c.chan].pcm;
|
||||||
DivInstrument* ins=parent->getIns(chan[c.chan].ins,DIV_INS_MIKEY);
|
DivInstrument* ins=parent->getIns(chan[c.chan].ins,DIV_INS_MIKEY);
|
||||||
chan[c.chan].macroVolMul=ins->type==DIV_INS_AMIGA?64:127;
|
chan[c.chan].macroVolMul=ins->type==DIV_INS_AMIGA?64:127;
|
||||||
chan[c.chan].pcm=(ins->type==DIV_INS_AMIGA || ins->amiga.useSample);
|
chan[c.chan].pcm=(ins->type==DIV_INS_AMIGA || ins->amiga.useSample);
|
||||||
|
if (chan[c.chan].pcm!=prevPCM) {
|
||||||
|
if (chan[c.chan].pcm) {
|
||||||
|
WRITE_FEEDBACK(c.chan,0);
|
||||||
|
WRITE_CONTROL(c.chan,0x18);
|
||||||
|
WRITE_BACKUP(c.chan,0);
|
||||||
|
} else {
|
||||||
|
WRITE_FEEDBACK(c.chan,chan[c.chan].duty.feedback);
|
||||||
|
WRITE_CONTROL(c.chan,(chan[c.chan].fd.clockDivider|0x18|chan[c.chan].duty.int_feedback7));
|
||||||
|
WRITE_BACKUP(c.chan,chan[c.chan].fd.backup);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (c.value!=DIV_NOTE_NULL) {
|
if (c.value!=DIV_NOTE_NULL) {
|
||||||
if (chan[c.chan].pcm) {
|
if (chan[c.chan].pcm) {
|
||||||
chan[c.chan].sample=ins->amiga.getSample(c.value);
|
chan[c.chan].sample=ins->amiga.getSample(c.value);
|
||||||
|
|
Loading…
Reference in a new issue