Muy buenas,queria comentar una rutina de assembler para el BasiEgaXorz, que me parece realmente exelente. No solo porque simplifica el dibujado de mapas de tiles al extremo, si no, que ademas, es rapidisima.
De seguro ayudara a muchos a mejorar su codigo!!
Declare Asm Sub DrawTiles16(d5.l, d0.w, d1.w, d2.w, d3.w, d4.w) ' d0=X, d1=Y, d2=Largo, d3=Alto, d4=Opcional
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
Para usarla, lo haremos con el nuevo comando creado por la rutina
drawtiles16 lblptr&(<nombre_mapa_de_tiles>),<X Pos>,<Y Pos>,<Ancho>,<Alto>,<pos_vram>
Si por ejemplo tenemos un mapa de tiles, llamado "tilemap0" en la posicion 256 de la VRAM, de 40x28 tiles (320x224px) el comando seria
drawtiles16 lblptr&(tilemap0),0,0,40,28,256
Exelente rutina, de la que no me doy credito alguno, que le pertenece a
Mairtus que la creo.