Obligement - L'Amiga au maximum

Vendredi 29 mars 2024 - 11:02  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : Assembleur - AGA 3D rasters
(Article écrit par Lionel Guillang et extrait d'Amiga News - octobre 1993)


Après de longs mois d'absence, revoici de quoi nourrir votre insatiable appétit d'assembleur (quoi, j'exagère ?). Et pas n'importe quoi, s'il vous plaît, puisqu'il s'agit d'aller titiller les puces AGA de votre Amiga tout neuf (ou presque !). C'est Monsieur Commodore qui va pas être content, mais tant pis, c'est trop bon !

Le plat du jour

Le petit programme que je vous propose aujourd'hui met en évidence un des aspects des nouvelles puces AGA : la fluidité des dégradés, grâce à la nouvelle palette 24 bits. Pour ce faire, nous allons mettre en scène des rasters qui évolueront en 3D. J'aurais pu simplement faire un défilement vertical des quelque 16 millions de couleurs, mais c'eût été, vous en conviendrez, nettement moins amusant !

Palette 24 bits

Les registres matériels étant toujours, pour des raisons de compatibilité, des registres 16 bits, l'accès aux registres couleurs se fait désormais en deux fois 12 bits, mais sur le même registre, avec un drapeau fixé ou non (bit 9 du registre $0106) qui indique si l'accès porte sur les quartets de poids fort ou de poids faible des composantes RGB. Un petit exemple : on veut mettre la couleur $FDA8C6 (R=$FD, G=$A8, B=$C6) dans le registre 0, voici comment écrire la liste Copper :

dc.w $0106,$0000 ; accès aux bits de poids fort
dc.w $0180,$0FAC ; bits de poids fort
dc.w $0106,$0200 ; accès aux bits de poids faible
dc.w $0180,$0D86 ; bits de poids faible

Il est absolument indispensable que le registre de poids fort soit adressé le premier. Par défaut, le registre $0106 est à 0 sur les Amiga ECS et que ce sont exclusivement les bits de poids fort qui sont utilisés dans ce cas (palette 12 bits), et non ceux de poids faible. Naturellement, si le registre $0106 doit être utilisé simultanément pour d'autres choses, il faudra faire un OR avec les valeurs données ci-dessus.

L'accès aux 256 couleurs se fait sur 8 fois 32 registres (les mêmes que sous ECS) et les bits du registre $0106 (encore lui !) servant à coder le numéro de la tranche (0 à 7) à laquelle on veut accéder sont les bits 13 à 15.

Le programme

En dehors du fait que l'on accède à une palette 24 bits, rien de bien compliqué ni de très nouveau. Après avoir désactivé le multitâche, on construit les deux listes Copper nécessaires au double tampon mémoire (un CWAIT à chaque ligne suivi d'un CMOVE (plusieurs en réalité puisqu'on accède sur 24 bits) sur le registre couleur 0), puis deux rasters de 128 lignes chacun ; la séparation bits de poids fort bits de poids faible est calculée à l'avance (chaque couleur est stockée dans deux mots) pour accélérer le rafraîchissement de la liste Copper pendant l'animation.

L'animation qui se fait sous interruption raster (VBL), consiste à faire avancer vers soi ou reculer deux rangées de rasters selon que la souris est déplacée vers le bas ou le haut. Pour que le mouvement soit plus convaincant, on alterne la couleur des rasters. Concrètement, on commence par commuter les listes Copper, pendant le retour vertical. On lit ensuite la souris et on rafraichit la liste Copper. La partie 3D est on ne peut plus simple puisque les rasters n'ont pas d'abscisses, et que les ordonnées sont constantes ; seules les coordonnées Z évoluent. Toujours pour simplifier, chacun des huit rasters de chaque rangée voit sa position en Z cycler dans un intervalle de [0,127], à laquelle est ajoutée un décalage croissant au fur et à mesure que l'on se rapproche de l'observateur, ce qui donne un intervalle de [0,1023] pour toute la rangée.

La taille du raster à dessiner est obtenue en ramenant la position Z de l'intervalle [0,1023] à [0,63] ; la compression de la hauteur du raster se fait par le centre : on dessine d'abord h/2 lignes en partant du début de la table, puis les h/2 lignes suivantes sont obtenues par symétrie. On clippe chaque raster dans la liste Copper avant de le dessiner, histoire de ne pas écrire n'importe où dans la mémoire. C'est tout.

Tous les accès à la liste Copper se font avec le Blitter, en mode burst (mode "rafale", actif par défaut). Vous pouvez modifier les constantes YSTART et HEIGHT qui correspondent respectivement à la première ligne raster de la zone de dessin et à sa hauteur ; les valeurs données en exemple ont été choisies pour obtenir le suraffichage maximal sur mon moniteur 1942. Inutile de dépasser un total YSTART+HEIGHT de 314, le Copper ne pouvant adresser plus.

Le programme est prévu pour tourner à une fréquence verticale de 50 Hz ; ceux d'entre vous qui possèdent un moniteur multisynchro devront veiller à ce que l'écran actif au moment de l'exécuter soit un écran PAL, aucune commutation de fréquence n'étant prévue dans les initialisations, faute de place. Mais rien ne vous empêche de faire des essais en mode Double PAL par exemple, qui permet, comme son nom l'indique, de doubler le nombre de lignes adressables par le Copper, soit 564 au lieu de 282 dans notre exemple (vous devrez alors modifier la constante HEIGHT en conséquence).

Voilà, si tout va bien nous verrons par la suite comment utiliser le mode 256 couleurs, le mode HAM8 (262 144 couleurs), les sprites, les différents modes Blitter, etc. Alors ne manquez pas les prochains Amiga News !

Listing

Assembleur
Assembleur
Assembleur
Assembleur
Assembleur
Assembleur


[Retour en haut] / [Retour aux articles]