avec donc 3 paramètres : x (abcisse) , y (ordonné), et h (hauteur ou longueur de la ligne)
drawline c vraiment merdik en rapidité, et extgraph ca ne me suffit pa non plus (trop lent)
jy conné rien en asm

merci !
void DrawVert(short x asm("d0"), short y asm("d1), short len asm("d3"), void *screen asm("a0")); // C'est len+1 la vrai hauteur DrawVert: xdef DrawVert add.w d1,d1 move.w d1,d2 lsl.w #4,d2 sub.w d1,d2 moveq #7,d1 and.w d0,d1 move.b table(Pc,d1.w),d1 lsr.w #3,d0 ;x/8 add.w d2,d0 add.w d0,a0 moveq #30,d0 loop or.b d1,(a0) adda.l d0,a0 dbf d3,loop rts table dc.b $80,$40,$20,$10,$08,$04,$02,$01
void DrawVert(short x asm("d0"), short y asm("d1), short len asm("d3"), void *screen asm("a0")); // C'est len+1 la vrai hauteur DrawVert: xdef DrawVert add.w d1,d1 move.w d1,d2 lsl.w #4,d2 sub.w d1,d2 moveq #7,d1 and.w d0,d1 move.b table(Pc,d1.w),d1 lsr.w #3,d0 ;x/8 add.w d2,d0 add.w d0,a0 moveq #30,d0 loop or.b d1,(a0) adda.l d0,a0 dbf d3,loop rts table dc.b $80,$40,$20,$10,$08,$04,$02,$01
void DrawVert(short x asm("d0"), short y asm("d1), short len asm("d3"), void *screen asm("a0")); // C'est len+1 la vrai hauteur DrawVert: xdef DrawVert add.w d1,d1 move.w d1,d2 lsl.w #4,d2 sub.w d1,d2 moveq #7,d1 and.w d0,d1 move.b table(Pc,d1.w),d1 lsr.w #3,d0 ;x/8 add.w d2,d0 add.w d0,a0 move.w d3,d1 lsr.w #3,d3 loop: or.b d1,(a0) or.b d1,30(a0) or.b d1,60(a0) or.b d1,90(a0) or.b d1,120(a0) or.b d1,150(a0) or.b d1,180(a0) or.b d1,210(a0) add.w #240,a0 dbf d3,loop and.w #7,d1 tst.w d1 beq.s fin loop2: or.b d1,(a0) adda.l d0,a0 dbf d1,loop2 fin: rts table dc.b $80,$40,$20,$10,$08,$04,$02,$01
;===================================================== ;= HLINE Input :: al=col, bx=x1, dx=x2, cx=y = ;===================================================== draw_hline: cmp bx,dx jle .skipit xchg bx,dx .skipit: sub dx,bx shl cx,6 mov di,cx add cx,cx add cx,cx add di,cx add di,bx push word 0a000h pop es mov ah,al ;extends color to a Word mov bx,ax rol eax,16 ;swap eax mov ax,bx mov si,dx add si,di inc si shr dx,2 .loop: mov [es:di],eax add di,4 dec dx jnz .loop .loop2: mov [es:di],al inc di cmp si,di jnz .loop2 ret
.skipit: sub dx,bx shl cx,6 mov di,cx add cx,cx add cx,cx add di,cx add di,bx push word 0a000h pop es mov ah,al ;extends color to a Word mov bx,ax rol eax,16 ;swap eax mov ax,bx mov bx,dx add bx,di inc bx shr dx,2 .loop: mov [es:di],eax add di,4 dec dx jnz .loop sub bx,di mov cx,4 sub cx,bx shl cx,3 shr eax,cl mov [es:di],eax ret
;===================================================== ;= VLINE Input :: al=col, bx=y1, dx=y2, cx=x = ;===================================================== draw_vline: cmp bx,dx jle .skipit xchg bx,dx .skipit: sub dx,bx shl bx,6 mov di,bx add bx,bx add bx,bx add di,bx add di,cx push word 0a000h pop es inc dx mov cx,dx shr dx,2 .loop: mov [es:di],al mov [es:di+320],al mov [es:di+640],al mov [es:di+960],al add di,1280 dec dx jnz .loop and cx,3 .loop2: mov [es:di],al add di,320 dec cx jnz .loop2 ret