From Data Crystal
Revision as of 13:12, 7 August 2006 by Blackhole89 (talk | contribs) (Nearly verbatim translation of an article I wrote for a German RH wiki; asked to do so by Ailure, I translated it to English and posted it on the Acmlm.org Wiki, where it was quite off place.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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 Mode 7 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.



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


HDMA-based gradient background in Yoshi's Island.