Coder l’écran d’animation « woosh » sur Amiga
(dansalva.to)Coder l’écran d’animation « woosh » sur Amiga
- À sa sortie en 1985, l’Amiga a émerveillé par ses graphismes et son son.
- Afficher des images colorées sur Amiga est simple, mais dans le contexte d’un moteur de jeu, cela pose de nombreux défis.
Défi 1 : exigences en RAM
- Un Amiga 500 typique dispose de 512 Ko de « chip RAM » et de 512 Ko de RAM d’extension.
- Seule la chip RAM peut être utilisée pour afficher les graphismes et le son, ce qui la rend plus précieuse.
- Un full-screen character graphic (CG) est un bitmap 320x240 en 32 couleurs, qui occupe 48 Ko de RAM non compressé.
- Pour prendre en charge la compression des assets, le format de compression ZX0 a été ajouté ; une fois compressé, le CG tombe à 8 Ko, ce qui le rend acceptable.
- Quand les assets du niveau sont chargés, le CG compressé est chargé en RAM d’extension, puis décompressé en chip RAM juste avant l’affichage.
- Au lieu de chercher 48 Ko de chip RAM, d’autres zones de mémoire écran sont réutilisées.
Défi 2 : effet de « découpe d’écran »
- Au départ, un wipe vertical avait été envisagé pour la transition d’écran.
- Mais pour qu’il soit vraiment réussi visuellement, il aurait fallu un wipe en dégradé ajustant la palette de couleurs à chaque scanline.
- L’effet de découpe d’écran est plus simple à implémenter et paraît plus impressionnant pour le spectateur moyen.
- Deux fonctionnalités spéciales de l’Amiga coopèrent pour rendre cet effet possible :
- Le coprocesseur (copper) fonctionne en parallèle du CPU et peut recevoir des instructions pour modifier les registres matériels à des lignes précises de l’écran.
- La mémoire écran peut être redirigée n’importe où dans la chip RAM en réglant les pointeurs d’écran dans les registres matériels.
Défi 3 : les « motion lines »
- Pour finaliser l’effet d’animation, il faut des lignes qui « wooshent » en arrière-plan.
- Utiliser des sprites pour dessiner ces lignes est un bon choix, car ils peuvent être dessinés et déplacés indépendamment de la mémoire écran.
- Les sprites de l’Amiga sont très limités et complexes.
Couleurs des sprites
- Les sprites partagent les bitplanes et la palette de couleurs, donc l’objectif est d’utiliser le moins de couleurs possible.
- Les sprites n’utilisent que 3 couleurs, ce qui laisse 28 couleurs au CG et 1 couleur pour l’arrière-plan.
- Des sprites différents utilisent des couleurs différentes dans la palette.
Réutilisation des graphismes de sprites
- Les 4 premiers octets des graphismes d’un sprite sont des « bits de contrôle » qui indiquent la position et la hauteur du sprite.
- C’est un problème quand on veut dessiner le même graphisme à plusieurs positions.
- À la place, 8 faux sprites ont été créés ne contenant que les bits de contrôle, et les pointeurs de sprites sont réglés sur ces faux sprites.
Les sprites ne sont pas dessinés quand les bitplanes sont désactivés
- Avant que le CG n’atteigne le haut de l’écran, il y a beaucoup d’espace vide entre le haut de l’écran et le début du CG.
- Si les bitplanes restent activés pendant ce temps, des données parasites sont affichées à l’écran.
- Si les bitplanes sont désactivés, les sprites ne sont pas dessinés non plus.
- La solution consiste à n’activer qu’un seul bitplane et à régler les pointeurs d’écran sur des données vides.
Conclusion
- Au départ, il n’était pas certain qu’il soit possible d’inclure des CG dans le jeu à cause des contraintes de RAM.
- La compression des données a montré que le surcoût restait tout à fait raisonnable.
- Exploiter les caractéristiques uniques du matériel de l’Amiga est particulièrement intéressant.
GN⁺ pense que :
- Cet article montre bien les capacités de traitement graphique de l’ordinateur Amiga et les techniques d’optimisation mémoire utilisées pendant le développement d’un jeu.
- Il explique comment produire des effets impressionnants dans des ressources limitées en exploitant la compression des données et les fonctions spéciales du matériel.
- Comprendre et exploiter le matériel de machines classiques comme l’Amiga est un sujet très intéressant pour les développeurs de jeux rétro et pour les personnes intéressées par l’histoire de l’informatique.
1 commentaires
Avis Hacker News
Résumé d’un commentaire sur « Racing the beam » :
Résumé d’un commentaire sur la configuration mémoire de l’Amiga 500 :
Résumé d’un commentaire sur le potentiel des jeux console de style japonais sur Amiga :
Résumé d’un commentaire sur l’attrait de coder sous contraintes :
Résumé d’un commentaire sur une expérience personnelle avec l’Amiga et le partage des méthodes de création d’animation :