normalement ca doit marcher si tu le réécri ton code comme ceci. essai de comprendre, et pour les jeux tou est logiques, défini ce que tu veux faire et tu réfléchi et tu dois trouver pour les jeux simples.
.NOLIST
#define end .end
#define END .end
#define equ .equ
#define EQU .equ
#include "ti83asm.inc" ; me semble ici que seul ion.inc suiffit sinon il y aura des duplications doubles de variables
#include "tokens.inc"
#include "ion.inc"
#define xsprite saferam1
#define ysprite xsprite+1
#define autre ysprite+1
.LIST
#ifdef TI83P ; entete de ion, je suis plus trop sur , programme plus sur 83 depuis longtemps
.org progstart-2
.db $BB,$6D
#else
.org progstart
#endif
xor a
jr nc,prog_start
decription:
.db "MOG",0
prog_start:
;; déja on met pas deux entetes
ld a,1
ld (xsprite),a
ld (ysprite),a
directinput:
ld a,$FF
out (1),a
ld a,$FE
out (1),a
in a,(1)
bit 0,a
call z,gauche
bit 1,a
call z,bas
bit 2,a
call z,haut
bit 3,a
call z,droite
; ta oublier de mettre une condition de fin, tu ne pourra que quitter en enlevant les piles. donc teste d'autres touches
call_clrLCDfull
ld b,16
ld a,(xsprite)
ld l,a ; me semble aussi que x est dans a et y est dans l
ld a,(ysprite)
ld c,2 ; 2 car la largeur fait 2 octet ( 16 bit )
ld ix,sprite
call ionlargesprite
call ionfastcopy
jp directinput
haut:
push af ; inutile mais bon ces pas grave
ld a,(ysprite)
dec a
ld (ysprite),a
pop af
ret
bas:
push af
ld a,(ysprite)
inc a
ld (ysprite),a
pop af
ret
droite:
push af
ld a,(xsprite)
inc a
ld (xsprite),a
pop af
ret
gauche:
push af
ld a,(xsprite)
dec a
ld (xsprite),a
pop af
ret
sprite:
.db %00011000, %00011000 ; ta oublier les virgules
.db %00100111, %11100100
.db %00101000, %00010100
.db %00100100, %00100100
.db %11100100, %00100111
.db %10100100, %00100101
.db %10100001, %10000101
.db %10010001, %10001001
.db %10100000, %00000101
.db %01000000, %00000010
.db %00100100, %00100100
.db %00111000, %00011100
.db %00010011, %11001000
.db %00010001, %10001000
.db %00010001, %10001000
.db %00001111, %11110000
.end
END