Accueil

CPC


 Dev C sur CPC :

  • le C sur CPC
  • SDCC débuter
  • fichier BAT pour compiler
  • Dessiner Sur CPC
  • Optimiser le dessin
  • Ecrire du texte
  • Lire un fichier
  • Ecrire un fichier
  • Swap d'écran
  • CLS ultra rapide
  • H line
  • Attaquer le CRTC
  • Full Overscan
  • Put pixel très rapide
  • Afficher une image
  • Slide show 1
  • Bézier
  • faire un fichier pour Bézier

  • Quelque fonctions utile

  • Animation
  • 3D
  • Raster
  • Manche a balais

    Le plan du Site

  •  
      Ici les nouvelle du site  
     
    Recherche ?
    Saissisez un mot clé

     
      Quelques chiffres
    Visiteurs:13799
    Visiteurs aujourd'hui:9
     
     
    Me contacter
    Donnez votre avis
     
    Le site de Steph : Le CPC

    Effacer l'écrans


    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 ecran 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