We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS

HDMA

From SnesLab
Revision as of 01:00, 20 May 2019 by Vitor Vilela (talk | contribs) (Created page with "'''HDMA''' also known as H-Blank Direct Memory Access or Horizontal Direct Memory Access is a type of DMA that does consecutive small transfers of 1-4 bytes instead of an...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

HDMA also known as H-Blank Direct Memory Access or Horizontal Direct Memory Access is a type of DMA that does consecutive small transfers of 1-4 bytes instead of an entire block transfer at once. It's a hardware feature present on the SNES made mostly for manipulating certain PPU registers while the screen is being rendered for giving different rendering effects per scanline basis. It's executed during the H-blank period, which is when the PPU is preparing to render the next scanline of the screen output and some registers can be modified during the small pause.

It's a feature extensively used in games for creating different effects of all types and combined with several PPU registers it allows for bypassing several limitations of the 4th generation consoles. Similar approaches are done as well in systems other than Super Nintendo, by using other timing tricks such as IRQ.

Although it's used most of the time to update PPU registers, since HDMA is just a variation of the DMA, you can do any kind of transfer between the address bus A and B, including but not limited to APU I/O ports, WRAM registers and even do a backwards transfer (read from PPU and write to RAM).

Address registers that can be used with HDMA

Unusual cases