There are a couple things related to the HDMA timeframe that I'd like to see cleared up from a developer's perspective, regarding how HDMA terminates at the end of the frame. Two questions, but they may or may not actually be the same question:
First, is it valid to have an HDMA table that extends outside the active area? More specifically, does the zero terminator in the table have to occur before VBlank? I imagine this would likely simplify HDMA offsetting logic if it is something you can indeed get away with, since you could just change the step size at the top of the table without having to replace any entries in the table with zeroes further down.
Secondly, as far as the DMA crash goes, would it be a good idea to disable HDMA when entering the VBlank routine? Or would this be a waste of VBlank time?
First, is it valid to have an HDMA table that extends outside the active area? More specifically, does the zero terminator in the table have to occur before VBlank? I imagine this would likely simplify HDMA offsetting logic if it is something you can indeed get away with, since you could just change the step size at the top of the table without having to replace any entries in the table with zeroes further down.
Secondly, as far as the DMA crash goes, would it be a good idea to disable HDMA when entering the VBlank routine? Or would this be a waste of VBlank time?