Just thought I'd begin by sharing some code;
; Megadrive DMA Copy by Sasq
; d0 = Address, d1 = Size (in words), d2 = VRAM offset
dma_copy:
move.l #$C00004,a0
move.w #$8f02,(a0)
; Set Source address High, Mid & Low
lsl.l #7,d0
move.b #$97,d0
rol.l #8,d0
move.w d0,(a0)
move.b #$96,d0 ...