CODINGApprendre pas à pas la programmation en assembleur Z80 ★ Sprites en folie! ★

Technique de clipping - Que faire quand un sprite déborde de l'écran?

Techniques de clipping

Présentation de quelques techniques de clipping (il y en a d'autres, vous en trouverez d'autres vous même, adaptées à vos projets).
  • Pas d'affichage!
  • Du clipping sans le faire!
  • Gestion en tuiles
  • Vrai clipping

Pas de clipping

Pas de clipping, pas de clipping. Les personnages apparaissent et disparaissent d'un coup. ^_^

Du clipping sans clipping

Le problème du clipping, c'est qu'il implique des calculs ou il implique (dans le cas ci-dessous) d'éclater les sprites en un plus grand nombre de colonnes (ce qui augmente la gestion puisque le nombre de colonnes augmente aussi). L'idée est de déborder suffisament peu et d'effacer les bordures avant de permuter le buffer à l'écran.

Par contre, comme on le voit au début de la séquence, les tiles sont clippées verticalement (elles sont affichées de bas en haut avec un compteur intégré).

Voici une extraction visuelle de l'affichage de ce jeu en cours de développement.


Gestion en tuiles

Le personne est éclaté en plusieurs 'caractères'. Cette gestion est héritée du spectrum qui ne sait afficher que des caractères hard. Les sprites composés de caractères ne peuvent être affiché qu'avec une précision au caractères (tous les 8 pixels en largeur et toutes les 8 lignes en hauteur). Ainsi, pour ce personnage, la vingtaine de caractères qui le compose sont testés. Soit le caractères est entièrement à l'écran, soit il est entièrement dehors et n'est pas affiché.
Il n'est pas possible d'avoir un caractère composant le personnage à cheval sur l'écran et l'extérieur de l'écran.

L'autre intérêt de la gestion en tuiles concerne les sprites qui peuvent avoir des formes variées sans qu'on soit obligé de stocker en mémoire un rectangle englobant le dessin. Sur la plupart des sprites du karateka, il suffit d'une ou deux tuiles en largeur pour la tête et on peut augmenter leur nombre pour les différentes parties du corps. On économise de la mémoire au passage.


Véritable clipping

La méthode universelle fonctionnant sans restreindre l'affichage demande de gérer les 4 bords. Le plus simple est de couper le sprite en bas, on ne fait que s'arrêter plus tôt d'afficher. Vient ensuite le cas où le sprite déborde en haut, on part du haut de l'écran et on saute la quantité de données nécessaires (voir calculs plus bas). Au niveau des calculs, le clipping gauche et droite sont les plus coûteux en temps machine puisqu'il faut les réaliser à chaque ligne. Dans les deux cas, il suffit de sauter un peu plus loin dans les données et de raccourcir la longueur affichée mais si vous utilisez cette routine pour un sprite qui n'aurait pas besoin d'être découpé, vous allez passer votre temps à ajouter des zéros pour rien, c'est dommage.

 

 

Maintenant que vous savez la vérité, il est temps de programmer cette routine de clipping véritable dans [l'article suivant]

★ ANNÉE: 2025
★ AUTEUR: Roudoudou

Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 932 millisecondes et consultée 10 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.