bon alors à vue de nez, tu peux retirer le premier jp directinput car il sert à rien (on est dejà à l'adresse de directinput à ce niveau là...)
et puis y a une couille dans ton truc: ionfastcopy et ionputsprite sont des routines et elles détruisent tous les registres ou prèsque... dont il faut sauver b et l comme ça:
[code:1:e318948cea]
bcall(_clrLcdFull) ;on efface l'écran
ld c,5 ;--coordonnées initiales du sprite
ld b,5 ;/ tu utilisais l mais c plus pratique b (regarde la suite)
jp directinput ;on va au label directinput-> inutile car on y est dejà...
directinput:
ld a,$FF ;avant tout, on reset le keyport...
out (1),a ;...en envoyant au port du clavier (1) la valeur 255
ld a,$FE ;on sélectionne le groupe du clavier à scanner
out (1),a ;...en envoyant au port du clavier (1) la valeur FE
in a,(1) ;On récupère la valeur du port,
cp 254 ;
jp z,bas ;|
cp 253 ;|on regarde suivant la valeur de c quelle touche a
jp z,droite ;|été pressée...
cp 251 ;|
jp z,gauche ;|
cp 247 ;|
jp z,haut ;/
bas:
dec b ;
jp dessin ;
droite:
dec c ;
jp dessin ;
gauche:
inc c ;
jp dessin ;
haut:
inc b ;
jp dessin ; -> inutile car on y est dejà...
dessin:
push bc ;on sauve bc car il est détruit par ionfastcopy et putsprite
ld a,c ; coordonées (paske a tait utilisé par le keyport)
ld l,b ;on se replace dans la norme de ionputsprite
ld b,7 ;ici la sprite fait 7 pixels de haut
ld ix,sprite
call ionputsprite
call ionfastcopy ;affiche la sprite
pop bc ;et on récupère bc...
jp directinput ;on reviens au label directinput
sprite:
.db %01111100 ; 11111
.db %10000010 ;1 1
.db %10101010 ;1 1 1 1
.db %10010010 ;1 1 1
.db %10111010 ;1 111 1
.db %10000010 ;1 1
.db %01111100 ; 11111
.end
[/code:1:e318948cea]
et voilà, ça devrait mieux marcher si tout se passe bien...