what happens if a sprite dma transfer is started toward the end of vblank? i would assume that it would mess up the ppu just like any other ppu access during that time.
matt
The way I understand it:
Sprite DMA ($4014) is nothing more than a CPU macro which auto-fetches bytes and feeds them to $2004. So what happens if DMA "spills" into rendering is the same as what would happen if you wrote to $2004 during rendering (because that's pretty much exactly what's happening).
From what I understand -- $2004 writes during rendering have no effect (they may or may not increment $2003 -- I'd really like clarification on this).
Meaning if you DMA with only 101 CPU cycles left in VBlank -- only 50 bytes will have been successfully copied to OAM (and possibly $2003 will only += 50? again confirmation welcome), the other 413 cycles that the DMA "eats" will still be wasted, but will have no effect.
Of course if the PPU is off, DMA/$2004 can be done any time without any trouble.