|SCHG: VDP Documentation|
This article is a work in progress.
Direct Memory Access, or DMA, allows the VDP to copy data from the main 68000 memory to VRAM directly without interference from the CPU. It also provides VRAM-to-VRAM copy and VRAM fill operations that can take place while the CPU is performing other tasks.
A well-known quirk with DMA memory-to-VRAM copy occurs when the source length is set to 0. The DMA functionality in the VDP decrements the source length before checking if it's hit zero, so setting the source length to 0 results in a transfer of 65,536 words instead of a null transfer. Since VRAM is only 32,768 words, this will result in a destination address counter overflow, which will definitely produce the wrong results.
Memory-to-CRAM and Memory-to-VSRAM copies are also affected, but the transfers are automatically stopped when the destination address counter reaches 0x80 or 0x50, respectively.