Je vous propose ici une fonction CLS qui est ultras rapide, et bien sur c'est de l'ASM :-)Le principe pour effacer l'écran er simple, on remet tout les octets de la mémoire entre C000 et CFFF à 0. Pour effacer l'écran, on a : - le firmware, avec une fonction pour changer de mode (faite un MODE 1 sous basic, bas cela efface l'écran) qui est BC0E. — le firmware encore avec une fonction qui efface l'écran BC14. — du code, mettre la zone mémoire de l'écran à 0, on peut faire cela avec un pointeur (vous avez bien lut tous les autre article que j'ai fait quand même ? :-) )et une simple boucle for. — du code, faire un memset. — ... - en assembleur, en détournant l'utilisation de la pile.. . aller, je vous laisse chercher sur le net, moi je vous donne la fonction. Je vous laisse aussi faire vos propre test pour voire quel méthode est la plus rapide. // Efface l'ecran en utilisent la pile // détournement de la pile pour faire un cls super rapide ! int PILE; void CLS_WidthPile() { __asm DI LD (#_PILE),SP LD B,#0 ; la boucle LD SP,#0 ; pile a 0 (car 0 - 1 = 0xFFFF fin de l écran quand il est en 0xC000), comme cela on remonte jusqu a 0xC000 LD DE,#0 ;valeur que l'on vas mettre en mémoire BOUC: PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE DJNZ BOUC LD SP,(#_PILE) EI RET__endasm; }Voila, pas comme d'hab, je ne vous est pas fait de ZIP :-o stephbb75 | ★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser... |
|
|