ES5506: fix volume slides

This commit is contained in:
tildearrow 2023-02-12 01:08:52 -05:00
parent 78d3f9d97f
commit 0427c01f31
2 changed files with 14 additions and 19 deletions

View file

@ -45,9 +45,7 @@ void es5506_core::tick_perf()
}
// update
voice_tick();
// rising edge
m_intf.e_pin(true);
voice_tick();
}
void es5506_core::voice_tick()

View file

@ -130,19 +130,8 @@ void DivPlatformES5506::acquire(short** buf, size_t len) {
}
hostIntf32.pop();
}
es5506.tick_perf();
for (int o=0; o<6; o++) {
buf[(o<<1)|0][h]=es5506.lout(o);
buf[(o<<1)|1][h]=es5506.rout(o);
}
for (int i=chanMax; i>=0; i--) {
oscBuf[i]->data[oscBuf[i]->needle++]=(es5506.voice_lout(i)+es5506.voice_rout(i))>>5;
}
}
}
void DivPlatformES5506::e_pin(bool state) {
if (state) { // host interface
es5506.tick_perf();
if (cycle>0) { // wait until delay
cycle-=2;
} else while (!hostIntf8.empty()) {
@ -173,9 +162,20 @@ void DivPlatformES5506::e_pin(bool state) {
if (cycle>0) break;
}
}
for (int o=0; o<6; o++) {
buf[(o<<1)|0][h]=es5506.lout(o);
buf[(o<<1)|1][h]=es5506.rout(o);
}
for (int i=chanMax; i>=0; i--) {
oscBuf[i]->data[oscBuf[i]->needle++]=(es5506.voice_lout(i)+es5506.voice_rout(i))>>5;
}
}
}
void DivPlatformES5506::e_pin(bool state) {
}
void DivPlatformES5506::irqb(bool state) {
/*
rRead(0x0e,0x80,&irqv,0x9f);
@ -799,10 +799,7 @@ int DivPlatformES5506::dispatch(DivCommand c) {
}
break;
case DIV_CMD_GET_VOLUME:
if (chan[c.chan].std.vol.has) {
return chan[c.chan].vol;
}
return chan[c.chan].outVol;
return chan[c.chan].vol;
break;
case DIV_CMD_PANNING: {
if (chan[c.chan].ca!=0) {