mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-27 15:03:01 +00:00
C64: partially fix wave after gate
This commit is contained in:
parent
a73ccdae41
commit
80f8ccf627
1 changed files with 13 additions and 12 deletions
|
@ -129,18 +129,6 @@ void DivPlatformC64::tick(bool sysTick) {
|
||||||
rWrite(i*7+2,chan[i].duty&0xff);
|
rWrite(i*7+2,chan[i].duty&0xff);
|
||||||
rWrite(i*7+3,chan[i].duty>>8);
|
rWrite(i*7+3,chan[i].duty>>8);
|
||||||
}
|
}
|
||||||
if (sysTick) {
|
|
||||||
if (chan[i].testWhen>0) {
|
|
||||||
if (--chan[i].testWhen<1) {
|
|
||||||
if (!chan[i].resetMask && !chan[i].inPorta) {
|
|
||||||
DivInstrument* ins=parent->getIns(chan[i].ins,DIV_INS_C64);
|
|
||||||
rWrite(i*7+5,0);
|
|
||||||
rWrite(i*7+6,0);
|
|
||||||
rWrite(i*7+4,(chan[i].wave<<4)|(ins->c64.noTest?0:8)|(chan[i].test<<3)|(chan[i].ring<<2)|(chan[i].sync<<1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (chan[i].std.wave.had) {
|
if (chan[i].std.wave.had) {
|
||||||
chan[i].wave=chan[i].std.wave.val;
|
chan[i].wave=chan[i].std.wave.val;
|
||||||
rWrite(i*7+4,(chan[i].wave<<4)|(chan[i].test<<3)|(chan[i].ring<<2)|(chan[i].sync<<1)|(int)(chan[i].active));
|
rWrite(i*7+4,(chan[i].wave<<4)|(chan[i].test<<3)|(chan[i].ring<<2)|(chan[i].sync<<1)|(int)(chan[i].active));
|
||||||
|
@ -173,6 +161,19 @@ void DivPlatformC64::tick(bool sysTick) {
|
||||||
rWrite(i*7+4,(chan[i].wave<<4)|(chan[i].test<<3)|(chan[i].ring<<2)|(chan[i].sync<<1)|(int)(chan[i].active));
|
rWrite(i*7+4,(chan[i].wave<<4)|(chan[i].test<<3)|(chan[i].ring<<2)|(chan[i].sync<<1)|(int)(chan[i].active));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sysTick) {
|
||||||
|
if (chan[i].testWhen>0) {
|
||||||
|
if (--chan[i].testWhen<1) {
|
||||||
|
if (!chan[i].resetMask && !chan[i].inPorta) {
|
||||||
|
DivInstrument* ins=parent->getIns(chan[i].ins,DIV_INS_C64);
|
||||||
|
rWrite(i*7+5,0);
|
||||||
|
rWrite(i*7+6,0);
|
||||||
|
rWrite(i*7+4,(chan[i].wave<<4)|(ins->c64.noTest?0:8)|(chan[i].test<<3)|(chan[i].ring<<2)|(chan[i].sync<<1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) {
|
if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) {
|
||||||
chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,false,8,chan[i].pitch2,chipClock,CHIP_FREQBASE);
|
chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,false,8,chan[i].pitch2,chipClock,CHIP_FREQBASE);
|
||||||
if (chan[i].freq>0xffff) chan[i].freq=0xffff;
|
if (chan[i].freq>0xffff) chan[i].freq=0xffff;
|
||||||
|
|
Loading…
Reference in a new issue