; routine gfx qu'on trouve un peu partout...
; (gère la transcription codage en nibbles -> bitplanes st)
; a été modifiée

decgfx
 link a6,#0
 movem.l d4-d7/a2-a6,-(a7)
 movea.l 8(a6),a0	; src
 movea.l $c(a6),a1	; dest
 move.w $10(a6),d5	; xp ?
 move.w $12(a6),d4	; yp ?
 move.w (a0)+,d7	; xs
 move.w (a0)+,d6	; ys
 addi.w #$f,d7
 lsr.w #1,d7
 andi.w #$fff8,d7
 cmpa.l #0,a1
 bne.s u349c
; move.l a0,-(a7)
; move.w #2,-(a7)	; physbase
; trap #14
; addq.l #2,a7
; movea.l d0,a1
 move.l stscr,a1	; qu'on remplace (attn : c'est un ptr, pour dbl-buff)
; movea.l (a7)+,a0
 move.w #$a0,d0
 cmp.w d0,d7
 beq.s u349c
 lsr.w #1,d5
 andi.w #$fff8,d5
 adda.w d5,a1
 mulu d0,d4
 adda.w d4,a1
 movea.l a1,a3
 adda.w d7,a3
 subq.w #1,d6
 mulu d0,d6
 add.l a3,d6
 move.w d0,d4
 sub.w d7,d4
 move.w d4,d7
 swap d7
 move.w d0,d7
 bra.s u34a4
u349c mulu d7,d6
 movea.l a1,a3
 adda.l d6,a3
 move.l a3,d6
u34a4 clr.l (a1)
 clr.l 4(a1)
 moveq #$f,d0
 moveq #0,d4
 lea u3652(pc),a4
 lea u3692(pc),a5
 lea u36d2(pc),a6
u34ba move.b (a0)+,d3
 move.b d3,d2
 bmi.s u3508
 lsr.b #4,d3
 beq.s u353c
 andi.w #$f,d2
 moveq #1,d1
 add.b d3,d1
u34cc lsl.w #3,d2
 movea.l a6,a2
 adda.w d2,a2
u34d2 bsr.s u3544
 tst.w d1
 beq.s u34ba
 cmpi.w #$10,d1
 bcs.s u34d2
 move.l (a2),d3
 move.l 4(a2),d5
 subi.w #$10,d1
u34e8 move.l d3,(a1)+
 move.l d5,(a1)+
 cmpa.l a1,a3
 bne.s u34f4
 bsr u3586
u34f4 subi.w #$10,d1
 bcc.s u34e8
 clr.l (a1)
 clr.l 4(a1)
 addi.w #$10,d1
 bne.s u34d2
 bra.s u34ba
u3508 andi.w #$f,d2
 moveq #0,d1
 move.b (a0)+,d1
 btst #6,d3
 beq.s u351a
 asl.w #8,d1
 move.b (a0)+,d1
u351a addq.w #1,d1
 btst #4,d3
 beq.s u34cc
 btst #5,d3
 beq u35a2
 movea.l a1,a2
 suba.w d7,a2
u352e bsr.s u3544
 tst.l d5
 beq.s u3536
 movea.l d5,a2
u3536 addq.l #8,a2
 tst.w d1
 bne.s u352e
u353c bsr u35ba
 bra u34ba
u3544 move.b d0,d4
 add.w d4,d4
 add.w d4,d4
 move.l 0(a4,d4.w),d3
 cmp.l d1,d0
 bmi.s u3562
 sub.w d1,d0
 move.b d0,d4
 add.w d4,d4
 add.w d4,d4
 and.l 0(a5,d4.w),d3
 moveq #0,d1
 bra.s u3568
u3562 sub.w d0,d1
 subq.w #1,d1
 moveq #-1,d0
u3568 move.l (a2),d5
 and.l d3,d5
 or.l d5,(a1)+
 move.l 4(a2),d5
 and.l d3,d5
 or.l d5,(a1)+
 moveq #0,d5
 tst.w d0
 bmi.s u3582
 subq.l #8,a1
 rts
u3580 addq.l #8,a1
u3582 cmpa.l a1,a3
 bne.s u3598
u3586 cmp.l a1,d6
 beq u3752
 adda.w d7,a3
 swap d7
 adda.w d7,a1
 move.l a2,d5
 add.w d7,d5
 swap d7
u3598 moveq #$f,d0
 clr.l (a1)
 clr.l 4(a1)
 rts
u35a2 lsr.w #1,d1
 bcc.s u35a8
 bsr.s u35ba
u35a8 move.b (a0),d2
 lsr.b #4,d2
 bsr.s u35ba
 move.b (a0)+,d2
 bsr.s u35ba
 subq.w #1,d1
 bne.s u35a8
 bra u34ba
u35ba clr.w d3
 bset d0,d3
 andi.w #$f,d2
 add.w d2,d2
 move.w z0(pc,d2.w),d2		; ajout à moi
 jmp z0(pc,d2.w)
z0
 dc.w u35f4-z0,u35f2-z0,u3614-z0,u35ee-z0,u3624-z0,u35fe-z0,u3610-z0,u35ea-z0
 dc.w u3636-z0,u3634-z0,u3642-z0,u3630-z0,u3620-z0,u35fa-z0,u360c-z0,w08cc-z0
w08cc			; n'y avait pas de label ici
 or.w d3,6(a1)
u35ea or.w d3,4(a1)
u35ee or.w d3,2(a1)
u35f2 or.w d3,(a1)
u35f4 subq.w #1,d0
 bmi.s u3580		; .s ? (ftlcode était le seul à l'avoir)
 rts
u35fa or.w d3,6(a1)
u35fe or.w d3,4(a1)
 or.w d3,(a1)
 subq.w #1,d0
 bmi u3580
 rts
u360c or.w d3,6(a1)
u3610 or.w d3,4(a1)
u3614 or.w d3,2(a1)
 subq.w #1,d0
 bmi u3580
 rts
u3620 or.w d3,6(a1)
u3624 or.w d3,4(a1)
 subq.w #1,d0
 bmi u3580
 rts
u3630 or.w d3,2(a1)
u3634 or.w d3,(a1)
u3636 or.w d3,6(a1)
 subq.w #1,d0
 bmi u3580
 rts
u3642 or.w d3,6(a1)
 or.w d3,2(a1)
 subq.w #1,d0
 bmi u3580
 rts
u3752 addq.l #4,a7
 movem.l (a7)+,d4-d7/a2-a6
 unlk a6
 rts

; dans mon dm1 ces données sont repoussées à la fin, mais avec un include je
; ne peux plus le faire
; (de toutes façons un jour il faudra faire sans...)
u3652
 dc.w $0001,$0001,$0003,$0003,$0007,$0007,$000f,$000f
 dc.w $001f,$001f,$003f,$003f,$007f,$007f,$00ff,$00ff
 dc.w $01ff,$01ff,$03ff,$03ff,$07ff,$07ff,$0fff,$0fff
 dc.w $1fff,$1fff,$3fff,$3fff,$7fff,$7fff,$ffff,$ffff
u3692
 dc.w $fffe,$fffe,$fffc,$fffc,$fff8,$fff8,$fff0,$fff0
 dc.w $ffe0,$ffe0,$ffc0,$ffc0,$ff80,$ff80,$ff00,$ff00
 dc.w $fe00,$fe00,$fc00,$fc00,$f800,$f800,$f000,$f000
 dc.w $e000,$e000,$c000,$c000,$8000,$8000,$0000,$0000
u36d2
 dc.w $0000,$0000,$0000,$0000,$ffff,$0000,$0000,$0000
 dc.w $0000,$ffff,$0000,$0000,$ffff,$ffff,$0000,$0000
 dc.w $0000,$0000,$ffff,$0000,$ffff,$0000,$ffff,$0000
 dc.w $0000,$ffff,$ffff,$0000,$ffff,$ffff,$ffff,$0000
 dc.w $0000,$0000,$0000,$ffff,$ffff,$0000,$0000,$ffff
 dc.w $0000,$ffff,$0000,$ffff,$ffff,$ffff,$0000,$ffff
 dc.w $0000,$0000,$ffff,$ffff,$ffff,$0000,$ffff,$ffff
 dc.w $0000,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff
