logo

 

  1. Presentation
  2. Starfield (Todo)
  3. Metaballs 2D
  4. Tunnel (Todo)
  5. Plasma (Todo)
  6. Stretch (Todo)
  7. Transformations 3D
  8. Rotozoom (Todo)
  9. Twister bars
  10. Checkerboard
  11. Infinite objects

Checkerboard

Exemple:

L'image précalculée. Commencer avec w = largeur totale / 2 = 256/2 = 128 ici.
Pour chaque ligne horizontale (raster), commencer toujours avec la meme couleur et:

  1. Dessiner w pixels
  2. Inverser couleur
  3. Retour à 1 tant qu'on n'a pas fini la ligne (256 pixels)
  4. Décrementer w
  5. Retour à 1 tant qu'on n'a pas fini l'image (128 lignes)

Chaque ligne correspond en fait à des pointillés, de très larges (moitié noire, moitié blanche) aux plus fins (1 pixel sur 2).

Sur les machines qui travaillent en tiles, une telle image prend peu de place si on retire les tiles identiques. Sur les 512 tiles de 8*8 pixels, on peut en retirer 390 (76%). Si on peut également réduire le nombre de bits par pixel jusque 1, on arrive à (512-390)*8*8 = 7808 bits = 976 octets.

Avec cette image fixe, on peut "race the beam" comme ils disent, pour gagner énormément de temps.
Le principe est de modifier l'affichage juste avant d'être montré à l'écran, d'où la "course".

L'idée est de simplement placer cette image telle qu'elle sur un fond qu'il est possible de déplacer (scroll) en X et en Y.
Comme le scroll peut se faire la plupart du temps en ecrivant la valeur du decalage dans un registre, c'est une operation tres rapide.

Grace a une eventuelle interruption, on peut savoir quand le controleur video commence a envoyer une nouvelle ligne a l'ecran. En décalant l'image sur Y à chaque ligne, on peut choisir une seule ligne de l'image et la répeter sur sur tout l'écran pour choisir sa réduction en X (pointillés plus ou moins grands):

Ici, pour une ligne N et une valeur de reduction W, on décale l'image de N-W. Ce qui revient à la pousser vers le bas d'un pixel a chaque ligne.

Pour obtenir le damier complet, il faut simplement inverser la palette après Hauteur-W lignes:

Comme le background de nombreuses machines est "infini" (boucle sur 256, 512 pixels...), on peut aussi faire varier le decalage sur X pour déplacer le damier horizontalement. Pour le déplacer verticalement, il suffit d'ajouter un décalage au compteur de ligne pour l'inversion des palettes (pas pour le choix de la ligne !).

Variations, vagues, brouillard/couleur, ...

footer
symbol symbol symbol symbol symbol