What precautions should I use when doing GDMA on a GBC ?

- GDMA can only reliably be performed in V-blank while the screen is on. While the screen is off it can be performed at any time.

- During the execution of GDMA the CPU is devoted to DMA only and no other processing can take place.

- If you plan to transfer more than ~1600 bytes (~100 tiles) in one V-blank while the screen is on then you probably will need to use double-speed mode. GDMA is slightly faster in double-speed mode and will allow transfers up to 2048 bytes in this mode. If your V-blank interrupt code is exceptionally long then large GDMA transfers are not feasible if they overrun the end of V-blank.

- Make sure your source & destination addresses are 16 byte aligned (same as HDMA) and that your transfer length is correct. (i.e. HDMA5 [$ff55]: $00 = 16 bytes, $01 = 32 bytes, .... , $7f = 2048 bytes)