Página 1 de 1

Libreria de rutinas en ASM para MEGADRIVE

Publicado: 02 Jul 2019, 08:20
por tacha
Rutina para dibujar tiles desde SB
Ej:

Código: Seleccionar todo

drawtiles16 <dir tilemap>,<pos x>,<pos y>,<ancho>,<alto>,<vram tile dir>+Palette(<x>)+Priority(<x>)

Código: Seleccionar todo

Declare Asm Sub DrawTiles16(d5.l, d0.w, d1.w, d2.w, d3.w, d4.w)	
	movea.l	d5,a0
	subq.b	#1,d2
	subq.b	#1,d3
	move.w	#$2700,sr
	And.l	#63,d0
	And.l	#63,d1
	And.l	#511,d2
	And.l	#511,d3
	lsl.w	#6,d1
	add.w	d1,d0
	move.w	d2,d1
	lsl.l	#3,d0
	lsr.w	#2,d0
	swap	d0
	add.l	(GFX_PLANE),d0
	move.w	#$8F02,4(a4)
@1:
	move.l	d0,4(a4)
@2:
	move.w	(a0)+,d7
	add.w	d4,d7
	move.w	d7,(a4)
	dbf	d2,@2
	add.l	#$800000,d0
	move.w	d1,d2
	dbf	d3,@1
	move.w	#$2000,sr
End Sub	
Redimensionar un SPRITE ya existente:

Código: Seleccionar todo

ResizeSprite sprite,4,4

Código: Seleccionar todo

Declare Asm Sub ResizeSprite(d0.w,d1.w,d2.w)
	move	#$2700,sr
	lsl.w	#3,d0
	addi.w	#$2C02,d0
	swap	d0
	move.w	#2,d0
	move.l	d0,4(a4)
	sub.b	#1,d1
	andi.w	#3,d1
	lsl.b	#2,d1
	move.w	(a4),d3
	sub.b	#1,d2
	andi.b	#3,d2
	or.b	d2,d1
	addi.l	#$40000000,d0
	lsl.w	#8,d1
	move.b	d3,d1
	move.l	d0,4(a4)
	move.w	d1,(a4)
	move	#$2000,sr
End Sub