My attention was just brought to the discussion page on the wiki
http://nesdevwiki.org/wiki/Talk:Nintendo_MMC5
To simplify/paraphrase/rephrase how I understand it:
- $5010.0 controls the "auto watch" feature (for lack of a better term). When set, MMC5 watches reads from $8000-BFFF and copies them to $5011.
- End result -- instead of doing timed writes to stream PCM, you do timed reads.
- Reading $00 is like a null termination -- which triggers an IRQ (presumably so you can break out of your "read PCM data" loop).
- Reading $5010 acknowledges the IRQ
- $5011 can be written to regardless of $5010's state.
Some confusing points:
1) This method is disadvantageous because data cannot be compressed at all, it still uses 100% CPU time, and still requires timing sensitive code. What's the point?
2) The IRQ is silly. Why can't you just BEQ out of the loop?
3) How reliable is this information? Has anyone tested this?
Anyone have thoughts here?
http://nesdevwiki.org/wiki/Talk:Nintendo_MMC5
To simplify/paraphrase/rephrase how I understand it:
- $5010.0 controls the "auto watch" feature (for lack of a better term). When set, MMC5 watches reads from $8000-BFFF and copies them to $5011.
- End result -- instead of doing timed writes to stream PCM, you do timed reads.
- Reading $00 is like a null termination -- which triggers an IRQ (presumably so you can break out of your "read PCM data" loop).
- Reading $5010 acknowledges the IRQ
- $5011 can be written to regardless of $5010's state.
Some confusing points:
1) This method is disadvantageous because data cannot be compressed at all, it still uses 100% CPU time, and still requires timing sensitive code. What's the point?
2) The IRQ is silly. Why can't you just BEQ out of the loop?
3) How reliable is this information? Has anyone tested this?
Anyone have thoughts here?