diff --git a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp index 548202a29..11cb44499 100644 --- a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp +++ b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp @@ -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() diff --git a/src/engine/platform/es5506.cpp b/src/engine/platform/es5506.cpp index 556c54926..e7b7ee5ce 100644 --- a/src/engine/platform/es5506.cpp +++ b/src/engine/platform/es5506.cpp @@ -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) {