Welcome Guest ( Log In | Register )
HOME
INFO
FORUMS
GITHUB
IRC CHAT
RETRO CHANNEL
Recent Changes Random Help Special Pages Upload
 

SCHG:VDP Documentation/General/Direct Memory Access

From Sonic Retro

Jump to: navigation, search
SCHG: VDP Documentation
Main Article
General
General Information
Ports
Control port
Getting VDP status
Writing to registers
Setting VDP access
Data port
H/V counter
Registers
Direct Memory Access
Interrupts
Vertical interrupt
Horizontal interrupt
External interrupt
Memory
Memory Divisions
Video RAM
Horizontal scroll table
Sprite attribute table
Plane name tables
Color RAM
Vertical Scroll RAM
Formats
Data Formats
Patterns
Palettes
Display
Display Control
Scroll planes
Window plane
Sprites
Priority
Interlace
Shadow and highlight
Bugs
VDP Bugs
Exclamation.svg

This article is a work in progress.
Its content and location may change completely and frequently until this notice is removed.


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.

DMA Quirks

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.