@Mask of Destiny: yeah, one of the many fixes I'm gonna do. Might be tricky as no emulator exhibits this behaviour (but I got a modded MD2 that does)
@bastien: nice to hear, thanks
Regarding the z80 access timings, tests on a real MD revealed that what Mask of Destiny wrote seems to be correct. I played a low frequency sample so I could easily see missed writes in my audio editor after filtering the low frequency wave out.
68k delay / z80 T cycles / result
8 / <= 4 / lots of misses
12 / <= 4 / no misses at all
12 / <= 5 / a few misses (2 per second)
12 / <= 6 / lots of misses (50 per second)
Here's the transfer code with 12 cycles of delay:
Code: Select all
move.w #$100, (a1) ; Request Z80 bus
swap d6 ; some delay
move.l d7, (a4)+ ; Write 2 samples
move.w d6, (a1) ; Release Z80 bus
[Edit: more research on exodus bug to confirm that it's just an exodus bug and not a behaviour that occurs on real hardware too]