Advertisement
Guest User

Levak

a guest
Feb 4th, 2010
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.83 KB | None | 0 0
  1. asm ("mov sp,#0x12000000");
  2. void main(void)
  3. {
  4.     unsigned char ligne = 0xA0;                     // Pour simplifier le code on stock la valeur d'1 ligne dans "ligne"
  5.     unsigned char *ptr;                         // Pointeur de l'écran
  6.     unsigned int ini = 0xa4000100;                      // Stock la valeur intiale du pointeur dans "ini"
  7.     unsigned int x = 0;                         // position x du pixel à tracer
  8.     unsigned int y = 0;                         // position y du pixel à tracer
  9.     unsigned char color, colorf = 0;                    // Color et Colorf (qui sert de variable intermédiaire)
  10.     unsigned int xf;                            // Xf permet de savoir quel pixel on utilise (pair ou impair)
  11.  
  12.     ptr = (unsigned char *) ini;                        // On initialise le pointeur
  13.    
  14.     while (ptr < (unsigned char *) (ini+240*ligne)) {           // On éteint tous les pixels
  15.         *ptr++= 0xFF;                           // F = blanc 0 = noir
  16.     }                                       //
  17.    
  18.     while (y < 240){                            // Pour chaque ligne
  19.         while (x < 320){                        // Jusqu'à la fin de la ligne
  20.             while (color <= 15){                    // En parcourant toutes les couleurs 0->15
  21.                 xf = x>>1;                  // Un octet représente deux pixels, on divise la largeur par 2
  22.                 if (xf<<1==x){colorf = (color<<4)+0b1111;}  // Si le pixel est celui de gauche, on rajoute le masque sur les bits de poids faible
  23.                 else {colorf = color+0b11110000;}       // Sinon on rajoute le masque sur les bits de poids fort
  24.                 ptr = (unsigned char*) (ini+(xf+ligne*y));  // On met le pointeur sur le pixel double correspondant à x et y
  25.                 *ptr = *ptr&colorf;             // enfin on assigne la valeur du pixel sur l'octet pointé avec le masque
  26.                 color++;                    // On incrémente la couleur
  27.                 x++;                        // On incrémente la position x
  28.             }
  29.             color = 0;                      // On réinit la couleur à 0
  30.         }
  31.         x = 0;                              // On revient au début de la ligne
  32.         y++;                                // Et on passe à la ligne suivante pour faire pareil
  33.     }
  34.     b:
  35.     goto b;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement