diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index d034c8d4d..98263321a 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -492,23 +492,29 @@ void DivPlatformYM2608::acquire_ymfm(short** buf, size_t len) { void DivPlatformYM2608::acquire_lle(short** buf, size_t len) { for (size_t h=0; h0) { - fm_lle.input.cs=0; - fm_lle.input.rd=0; - fm_lle.input.wr=1; - fm_lle.input.a0=0; - fm_lle.input.a1=0; - delay=1; + if (delay==3) { + delay=0; + } else { + fm_lle.input.cs=0; + fm_lle.input.rd=0; + fm_lle.input.wr=1; + fm_lle.input.a0=0; + fm_lle.input.a1=0; + fm_lle.input.data=0; + delay=1; + } } else if (!writes.empty()) { QueuedWrite& w=writes.front(); if (w.addrOrVal) { @@ -521,7 +527,7 @@ void DivPlatformYM2608::acquire_lle(short** buf, size_t len) { delay=2; - //logV("%.3x = %.2x",w.addr,w.val); + //logV("%.2x",w.val); regPool[w.addr&0x1ff]=w.val; writes.pop_front(); @@ -535,6 +541,8 @@ void DivPlatformYM2608::acquire_lle(short** buf, size_t len) { delay=2; + //logV("%.2x =",w.addr); + w.addrOrVal=true; } } else { @@ -561,8 +569,6 @@ void DivPlatformYM2608::acquire_lle(short** buf, size_t len) { } } - canWeWrite=false; - if (fm_lle.o_s && !lastS) { dacVal>>=1; dacVal|=(fm_lle.o_opo&1)<<23; @@ -586,13 +592,14 @@ void DivPlatformYM2608::acquire_lle(short** buf, size_t len) { if (have0 && have1) break; // ADPCM data bus - //if (fm_lle.input.!=0) { - //logV("%x",fm_lle.input.ad); - //} + if (fm_lle.o_dm!=0) { + //logV("%x",fm_lle.o_dm); + } } - // TODO: o_analog - if (howLong!=48) logW("NOT 48! %d",howLong); + if (howLong!=48) { + //logW("NOT 48! %d",howLong); + } // DAC int accm1=dacOut[0]-0x4000;