Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

HDMA

From Data Crystal
Jump to navigation Jump to search

HDMA (Horizontal DMA, Direct Memory Access) is a special technology supported by some few graphics processors which was rather popular especially for the SNES (and, amongst ROM hackers, still is). The SNES supports 8 HDMA channels of which each can set, depending on the respective mode, up to four subsequent PPU registers. When setting it up, each HDMA channel is assigned a table located in the SNES' RAM, which is formatted depending on the used mode.

Just like "classic" DMA, HDMA serves quick uploading of data to PPU registers; its advantage, though, lies within being capable of uploading data to PPU registers once per drawn scanline rather than once per frame. This allows the creation of effects that seem to bypass the graphical limitation of the SNES' PPU, like high-resolution gradients with more than four distinct colours in a 2 bitplane 8x8 tile or shifting effects like a sinusoidal vibration.

HDMA also is frequently used along with the Mode7 of the SNES, which supports only one tile layer, so the display of on screen menus, maps or similar things seems impossible. Along with usage of sprites for besaid purposes, that issue often was solved by switching the screenmode mid-frame, so the upper halfter of the picture contained everything that required being displayed with multiple planes along with a planar rendered sky background, whilst the lower half of the screen actually is rendered in Mode 7.

Pictures

Sd3hdma.png

Mid-frame screenmode swapping using HDMA in Seiken Densetsu 3.

Yihdma.png

HDMA-based gradient background in Yoshi's Island.