diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index 692c12354..77dc22490 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -66,12 +66,31 @@ void DivPlatformPCE::acquireDirect(blip_buffer_t** bb, size_t off, size_t len) { pce->bb[1]=bb[1]; size_t pos=off; - for (size_t h=0; hResetTS(pos); + + while (!writes.empty()) { + QueuedWrite w=writes.front(); + pce->Write(pos,w.addr,w.val); + regPool[w.addr&0x0f]=w.val; + writes.pop(); + } + + for (size_t h=0; hrate) { DivSample* s=parent->getSample(chan[i].dacSample); if (s->samples<=0 || chan[i].dacPos>=s->samples) { @@ -97,25 +116,25 @@ void DivPlatformPCE::acquireDirect(blip_buffer_t** bb, size_t off, size_t len) { chan[i].dacPeriod-=rate; } } - }*/ + } // PCE part // WHAT????????? - pce->ResetTS(pos); + pos+=advance; + while (!writes.empty()) { QueuedWrite w=writes.front(); pce->Write(pos,w.addr,w.val); regPool[w.addr&0x0f]=w.val; writes.pop(); } - pce->Update(len+pos); - break; + pce->Update(pos); /* for (int i=0; i<6; i++) { oscBuf[i]->putSample(h,CLAMP(pce->channel[i].blip_prev_samp[0]+pce->channel[i].blip_prev_samp[1],-32768,32767)); }*/ - pos++; + h+=advance; } for (int i=0; i<6; i++) {