Obligement - L'Amiga au maximum

Jeudi 27 juillet 2017 - 06:43  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

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

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


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


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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : Assembleur - ouvrir un écran et une fenêtre en suraffichage (overscan)
(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,$OFAC ; 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 offset 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]