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: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(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.)
 
m (fixed links by directing them to Fullsnes)
Line 1: Line 1:
== HDMA ==
== HDMA ==


'''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).
'''HDMA''' (Horizontal [https://en.wikibooks.org/wiki/Super_NES_Programming/DMA_tutorial 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]] [[register|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.
The SNES supports 8 HDMA channels of which each can set, depending on the respective mode, up to four subsequent [https://problemkaputt.de/fullsnes.htm#snesdmatransfers PPU registers]. When setting it up, each HDMA channel is assigned a table located in the SNES' [https://problemkaputt.de/fullsnes.htm#snesmemory 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.
Just like "classic" DMA, HDMA serves quick uploading of data to [https://problemkaputt.de/fullsnes.htm#snespictureprocessingunitppu 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.
HDMA also is frequently used along with the [[SNES:Mode 7|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 ==
== Pictures ==

Revision as of 02:49, 23 October 2018

HDMA

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.