OPN/OPNA: fix timer FX on ymfm core

issue #2738
don't delay PSG writes
This commit is contained in:
tildearrow 2026-01-12 14:12:03 -05:00
parent 378ba6fe80
commit 2c9251945f
2 changed files with 6 additions and 4 deletions

View file

@ -279,7 +279,7 @@ void DivPlatformYM2203::acquire_ymfm(short** buf, size_t len) {
ay->getRegisterWrites().clear();
os=0;
if (!writes.empty()) {
while (!writes.empty()) {
if (--delay<1) {
QueuedWrite& w=writes.front();
if (w.addr==0xfffffffe) {
@ -288,10 +288,11 @@ void DivPlatformYM2203::acquire_ymfm(short** buf, size_t len) {
fm->write(0x0,w.addr);
fm->write(0x1,w.val);
regPool[w.addr&0xff]=w.val;
delay=6;
if (w.addr>15) delay=6;
}
writes.pop_front();
}
if (delay>0) break;
}
fm->generate(&fmout);

View file

@ -463,7 +463,7 @@ void DivPlatformYM2608::acquire_ymfm(short** buf, size_t len) {
ay->getRegisterWrites().clear();
os[0]=0; os[1]=0;
if (!writes.empty()) {
while (!writes.empty()) {
if (--delay<1) {
QueuedWrite& w=writes.front();
if (w.addr==0xfffffffe) {
@ -472,10 +472,11 @@ void DivPlatformYM2608::acquire_ymfm(short** buf, size_t len) {
fm->write(0x0+((w.addr>>8)<<1),w.addr);
fm->write(0x1+((w.addr>>8)<<1),w.val);
regPool[w.addr&0x1ff]=w.val;
delay=4;
if (w.addr>15) delay=4;
}
writes.pop_front();
}
if (delay>0) break;
}
fm->generate(&fmout);