After reading http://wiki.nesdev.com/w/index.php/APU_Sweep the detailed behavior of the sweep unit still isn't clear to me, so here's a a few questions:
- Wiki says "when the channel's current period is less than 8 or the target period is greater than $7FF, the channel is silenced (0 is sent to the mixer) but the channel's current period remains unchanged." Does that mean that if the current period is <8, the sweep unit won't ever modify it, even if it's a sweep towards longer periods? The wiki makes it sound that way, but it seems weird. Also, is it really looking at the current period as opposed to the target period?
- Does manually writing a period <8 to e.g. $4002/$4003 also silence the channel? (This should be greater than ~14KHz for the pulse channels.)
- When sweep over/underflow occurs, what different ways are there to get the channel to play again? Will you need to cause a new target period to be calculated by writing to $4001/$4005? Can you also write a new period to $4002/$4003 that would cause the target period to not over/underflow and wait for the sweep unit to be clocked? Any other ways to un-silence the channel?