HDMA: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
m (added some wikipedia links)
(replaced: [[Image: → [[File: (2))
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
== HDMA ==
'''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).
'''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 [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.
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 [https://problemkaputt.de/fullsnes.htm#snespictureprocessingunitppu PPU] registers; its advantage, though, lies within being capable of uploading data to PPU registers once per drawn [[Wikipedia:Scan_line|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 [[Wikipedia:Scan line|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 [[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 [[Wikipedia:Super_Nintendo_Entertainment_System#Video|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 [[Wikipedia:Super Nintendo Entertainment System#Video|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 ==
[[Image:sd3hdma.png]]
[[File:sd3hdma.png]]


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


[[Image:yihdma.png]]
[[File:yihdma.png]]


''HDMA-based gradient background in Yoshi's Island.''
''HDMA-based gradient background in Yoshi's Island.''
[[Category:Super Nintendo]]

Latest revision as of 09:00, 26 January 2024

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.