DMA Copy source

Ask anything your want about Megadrive/Genesis programming.

Moderator: BigEvilCorporation

Post Reply
sasq
Newbie
Posts: 2
Joined: Tue Feb 09, 2010 11:49 am

DMA Copy source

Post by sasq » Tue Feb 09, 2010 11:51 am

Just thought I'd begin by sharing some code;

Code: Select all

; 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
	rol.l	#8,d0
	move.w	d0,(a0)

	move.b	#$95,d0
	rol.l	#8,d0
	move.w	d0,(a0)

	; Set Size Low & High

	move.w	#$9300,d0
	move.b	d1,d0
	move.w	d0,(a0)

	lsr	#8,d1
	or.w	#$9400,d1
	move.w	d1,(a0)

	; Set Target address =
	; ((0x40000080 | ((adr) & 0x3FFF)) << 16) | (((adr) >> 14))

	lsl.l	#2,d2
	lsr.w	#2,d2
	swap	d2
	or.l	#$40000080,d2
	move.l	d2,(a0)

	rts

-- Sasq

Post Reply