Libreria de rutinas en ASM para MEGADRIVE

Todo lo relativo a la programación y nuevos lenguajes para juegos, utilidades, etc., para nuestras plataformas.
Reglas del Foro
"Ya ni siquiera veo el código... Nada mas veo rubias, morenas, pelirrojas"
Cypher en The Matrix
Avatar de Usuario
tacha
Mensajes: 20
Registrado: 15 Jun 2019, 11:26

Libreria de rutinas en ASM para MEGADRIVE

Mensaje por tacha » 02 Jul 2019, 08:20

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
Larga vida a la hija de Sir Clive

Responder