Page 1 of 1

DMA during HBlank ...

Posted: Sat Jul 01, 2023 5:45 am
by iNCEPTIONAL
Can the Genesis DMA during HBlank, and if so, what's the difference between how it works compared to the SNES' HDMA?

What are the advantages/disadvantages of each of the approaches there?

Because, I think I've read the Genesis can DMA during active scan and the SNES cannot, which seems like a huge advantage for Genesis there, but I assume that's what HDMA somewhat compensates for on SNES, yet I don't understand how that would be the case if Genesis can DMA during HBlank too anyway.

So, any insight on how the two systems different approaches work there (in layman's terms), for both DMA and HDMA actually (if we just pretend that name applies to Genesis too), would be much appreciated.

Re: DMA during HBlank ...

Posted: Sat Jul 01, 2023 9:51 am
by TmEE co.(TM)
There are no access slots in line blanking period, because VDP is busy rendering sprites which uses up all the VRAM bandwidth in that time. You can turn off rendering for the duration and get few tens of bytes worth of VRAM bandwidth but the cost is no sprites on the next line and some garbage sprite pixels because of the disrupted sprite rendering process. SNES has similar problems as it also renders sprites in line blanking period from what I know.
There is a FIFO however and it can hold 8 bytes of information which will get dispatched on as access lots get available so the game can in its line interrupt handler do its writes and get stuff going anyway. Few things like VDP register accesses are not bound by VRAM access slots and can be updated anytime.

HDMA is just a way to automatically send some bytes of into to the PPU when active line rendering period has ended, without CPU involvement past setting up the HDMA parameters. You can achieve same things with just line interrupts too although HDMA can exactly hit any access slots the PPU provides so that is its main advantage.

Re: DMA during HBlank ...

Posted: Sat Jul 01, 2023 12:26 pm
by iNCEPTIONAL
OK. Thanks for the info. :)