ATTENTION, CETTE ROUTINE N'EST PAS DE MOI, JE NE L'AI PAS ESSAYEE:
include "doorsos.h"
include "graphlib.h"
include "userlib.h"
xdef _ti89
xdef _main
xdef _comment
_main:
jsr graphlib::clr_scr
move.w #7,d0
move.w #5,d1
put_sprite:
move.l #LCD_MEM,a1 ;on charge l'adresse de la memoire de l'ecran dans a1
lea sprite(pc),a0 ;on charge l'adresse du sprite dans a0
move.w (a0)+,d7 ;on recupère la hauteur du sprite
sub.w #1,d7 ;on enlève 1 a la hauteur pour le dbra
move.w d1,d2 ;oncopie d1 dans d2
mulu #30,d2 ;on multiplie d2 par 30
ext.l d2 ; d2 devient un long mot
add d2,a1 ;on fait pointer a1 sur la bonne ligne
move.w d0,d1 ;on copie d0 dans d1
lsr #3,d1 ;on divise d1 par 8 soit 2^3
ext.l d1 ;d1 devient par magie un long mot
add d1,a1 ;on fait pointer a1 sur la bonne colone (fin presque)
move.w #8,d1 ;on mets 8 dans d1
and.w #7,d0 ; on obtient le reste de d0/8 dans d0
sub.w d0,d1 ;on a le nombre de pixels qui manque pour bien placer le sprite
add.w #8,d1 ;16=8+le reste de d0/8=d0 + d1-d0
boucle:
clr.l d0 ;on efface d0
move.w (a0)+,d0 ;on copie les 16 premiers pixels dans d0
lsl.l d1,d0 ;on positionne bien le sprite
rol.l #8,d0 ;
or.b d0,(a1)+ ;1
rol.l #8,d0 ;
or.b d0,(a1)+ ;1+1
rol.l #8,d0 ;
or.b d0,(a1)+ ;1+1+1
rol.l #8,d0 ;
or.b d0,(a1)+ ;1+1+1+1=4
lea 26(a1),a1 ;30-4=26 donc on vas a la ligne suivante
dbra d7,boucle ;on recommence jusqu'a que d7 =0
jsr userlib::idle_loop
rts
;et le sprite dois etre definie comme ceci !
sprite:
dc.w 8 ;déclaration du sprite
dc.w %1000000000000001
dc.w %0100000000000010
dc.w %0010000000000100
dc.w %0001000000001000
dc.w %0001111111111000
dc.w %0001000000001000
dc.w %0010000000000100
dc.w %1000000000000001
_comment:
dc.b "Routines crée par Kraky avec l'aide de ti-fr",0
end