60

C'est bon, j'ai trouver le bug de l'affichage, ça vennai du fait qu'une sprite dépasser d'un pixel en bas de l'écran (ça aurai été sur le côté, c'était pas grâve mais là ça a corrompu la mémoire). Donc bref, maintenant que j'ai régler ça j'essai de faire marcher les scores mais ça marche pas beaucoup... Voilà un bout de la source :
[...]
#define ScoreActu Saferam1+5
[...]
Fin: ; Label de quand on perd
bcall(_grbufclr) ; Efface le graph buffer
bcall(_clrLCDFull) ; Efface l'écran
bcall(_homeUp) ; Met le pointeur en (0,0)
ld hl,Text ; Charge le texte à afficher dans le registre hl
bcall(_puts) ; Affiche le texte à l'écran
call getK ; Appel ma routine de getKey (direct input)

ld a,(ScoreActu) ; Charge le score actuel dans l'accumulateur
push af ; Met la valeur du registre a dans la pile
call _zeroop1 ; On utilise _chkfindsym pour trouver l'adresse du programme en mémoire
ld de,op1 ; On charge la valeur d'op1 dans le registre de
ld hl,Prog ; On met la valeur de Prog dans hl
ld bc,13 ; Le nombre d'octets a copier (le nombre de caractère du nom + 2)
ldir ; copie, incrémente et recommence
call _chkfindsym
inc de ; on calcule l'emplacement de Score dans le prog.
inc de
ld hl,Score-$9D95
add hl,de
pop af ; On rentre la valeur du score (la variable ScoreActu, donc)
ld (hl),a

ret ; fin du programme

Text:
.db " T'as perdu ! ",0

Score:
.db 0000h

Prog: .db 5,"NOM DU PROG",0


(Donc ça c'est la fin du programme) Et v'là la partie du programme qui est supposée afficher le score :
[...]
lbl1:
[...]

lbl2:
bcall(_grbufclr)
bcall(_clrLCDFull)
bcall(_homeUp)
ld hl,(Score)
bcall(_puts)
call getK jp lbl1


Mais ça ne veut pas marcher, mais en même temps à mon avis c'est plus compliqué que ça...

61

Finalement j'ai trouver la solution à ce problème ici, donc enfaite puisque j'utilise Ion j'ai pas à faire tout ça, seulement à utiliser une liste/matrice pour stocker le score smile (je vais tester ça pour voir si ça sauvegarde réelement pour toujours ou juste si c'est temporaire).

edit : Yeah ça marche trilove ! Il me reste plus qu'a finir deux ou trois trucs et c'est bon, il est finit.

62

J'viens d'écrire un truc bien sympa si ça interresse quelqu'un, ça facilite l'utilisation des sprites avec Ion :
#define sprite(HAUTEUR,LONGUEUR,YPOS,XPOS,SPRITE) ld b,HAUTEUR \ ld c,LONGUEUR \ ld a,YPOS \ ld l,a \ ld a,XPOS \ ld ix,SPRITE \ call ionLargeSprite


Il faut donc entrer en premier la hauteur du sprite (éxemple 8), la longueur du sprite (divisée par 8), sa coordonnée Y et X, puis l'adresse du sprite, éxemple :
.nolist
#include "ion.inc"
#define sprite(HAUTEUR,LONGUEUR,YPOS,XPOS,SPRITE) ld b,HAUTEUR \ ld c,LONGUEUR \ ld a,YPOS \ ld l,a \ ld a,XPOS \ ld ix,SPRITE \ call ionLargeSprite

.list

.org ProgStart-2
.db $bb,$6d
ret
jr nc,Start
.db "Test - Deeph",0

Start:
sprite(8,1,10,10,Sprite)
call ionFastCopy
bcall(_getKey)
ret

Sprite:
.db %00011000
.db %00100100
.db %01000010
.db %10000001
.db %10000001
.db %01000010
.db %00100100
.db %00011000

.end END


C'est cool je trouve (et ça fait gagner beaucoup de place smile).