The VGM file format has streaming commands, which act as a sort of DMA used for sample playback. Used in for example Rusty, Skate or Die, and Black Knight 2000.
VGM commands 0x90 to 0x95 specify writes to the DAC Stream Control Driver. These are used to stream data from data blocks to the chips via chip writes. To use it you must:
- Setup the Stream (set chip type and command) - this activates the stream
- Set the Stream Data Bank
- Set the Stream Frequency
- Now you can start the stream, change its frequency, start it again, stop it,
etc ...
Would be nice if this was supported on turboR. The R800 should be able to handle it, just like it can currently handle the YM2612 PCM data command.
It would involve inserting something with fixed-point counters between the timer updates and the player scanner.
As far as I know, there's a DAC in Konami Synthesizer and Matjusushi (Mah-Jong 2) as well, and in sharksym's brand new MMC/SD Drive V4, a very interesting piece of hardware! Not mentioning Covox and internal turboR DAC.
Actually the title is a bit of a misnomer, as the stream control commands don’t just apply to DACs, but can write streams to any register (also used for e.g. PCM on PSGs).
Either way, since stream control requires R800 (the Z80 is not fast enough), and the turboR has a built-in DAC, it does not make much sense I think to add support for other DACs, unless they have a higher resolution than 8 bits.
p.s. MSX-AUDIO has a 3.10 floating point DAC(r#15-17), and the Music Module also has an additional 8-bit DAC. OPNA also has an 8-bit DAC.