Très beau ton game over screen
Globalement, pour détecter une appv, il faut d'abord charger le nom en OP1 (_mov9toOP1) puis exécuter un call système qui sert à détecter une variable (_ChkFindSym). Le nom doit être de la forme suivante :
- Code: Tout sélectionner
.db AppVarObj, "NAME",0
Si la variable est archivée, alors les données ne sont pas les données directes de l'appv, puisque que tu as un header de 9 octets suivit de la taille du nom de l'appv, puis le nom de l'appv, puis 2 octets donnant la taille de l'appv.
Un simple code pour localiser une appv et retourner en hl l'adresse des données peut être le suivant :
- Code: Tout sélectionner
call _mov9toOP1
call _ChkFindSym
ret c
call _ChkInRam
ex de,hl
jr z, AppVarUnarchived
ld de, 9
add hl, de
ld e, (hl)
add hl, de
inc hl
AppVarUnarchived:
inc hl
inc hl
A noter cependant que ce code ne désarchive pas l'appvar, donc si elle est en archive, l'écriture sera impossible. Par contre, tu peux désarchiver facilement une variable avec un autre call système Arc_Unarc qui swap le status de l'appvar entre archive/RAM (cf wikiti :
http://wikiti.brandonw.net/index.php?ti ... CALLs:4FD8 )