Obligement - L'Amiga au maximum

Vendredi 24 mai 2019 - 04:54  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · 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 en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


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 : AMOS - Déformations sinusoïdales
(Article écrit par Daisy Lionet et extrait d'Amiga News Tech - décembre 1991)


"Petite démo" ? Comment ça, "petite démo" ? Le programme que j'ai tapé de mes pattes poilues va révolutionner le monde de l'Amiga... C'est tout simplement du concentré de génie. Non mais !

Tiens, comme je suis bonne patte, je vais essayer de vous en expliquer le fonctionnement... Vous connaissez les déformations sinusoïdales ? En voici une toute simple à réaliser, sur plus de 200 lignes d'écran et au 1/50e de seconde, s'il vous plaît ! Elle est de plus totalement paramétrable. J'explique.

Il n'est même pas envisageable de calculer une déformation sinusoïdale en temps réel, au 1/50e sur 200 lignes : c'est déjà très difficile en langage machine, donc impossible en AMOS. Il faut donc ruser et calculer tout à l'avance : les images étant déjà dessinées, il suffira de les faire défiler à l'écran l'une après l'autre. Bon.

La première idée qui vient à l'esprit est d'ouvrir plusieurs écrans et de les faire défiler avec l'instruction SCREEN TO FRONT. C'est pas mal, mais nous somme limités à huit images au maximum, trop peu pour une bonne animation. Même en passant les écrans en double tampon mémoire, on reste encore limités à 16 images, encore trop peu, surtout si l'on veut faire défiler un texte par-dessus.

Mon idée de génie, je dois le dire, a été de réserver une banque de mémoire Chip, contenant la place nécessaire à toutes les images précalculées. Par exemple, pour 20 pas d'animation d'une image de 320x200 en 2 couleurs, la taille de cette banque est de 160 ko.

Comment afficher le contenu de cette banque dans un écran ? Mon deuxième coup de génie, je dois l'avouer modestement, est d'utiliser l'instruction SCREEN OFFSET. Car avez-vous remarqué que cette instruction permet d'explorer toute la mémoire graphique de l'Amiga, simplement en utilisant de grandes valeurs en Y ? En calculant la distance entre la grosse banque de mémoire et l'écran numéro 0, on peut connaître les valeurs à utiliser dans l'instruction et afficher tout simplement le contenu de la banque au lieu de l'image normale.

Voilà pour la théorie, voyons le programme. On commence par récupérer le maximum de mémoire possible, en fermant les écrans et l'éditeur. On définit ensuite les valeurs de la déformation :
  • NPAS est le nombre d'images calculées. Plus NPAS est grand, plus lente est la déformation. Essayez donc 20 ou 30 pour commencer.
  • AMPX1# et AMPY1# définissent la déformation en X.
  • AMPX2# et AMPY2# définissent la déformation en Y.
Modifiez ces valeurs et voyez le résultat.

Le programme réserve alors la grosse banque de mémoire Chip puis ouvre l'écran 0. Il faut s'assurer que l'adresse de l'écran 0 est inférieure à celle de la banque, car SCREEN OFFSET n'accepte pas de valeurs négatives. On ouvre maintenant deux écrans de travail, que l'on cache le temps de calculer toutes les déformations. Celle en X est d'abord appliquée entre l'écran 0 et l'écran 1, puis celle en Y, de l'écran 1 dans l'écran 2. On peut alors utiliser l'instruction COPY pour copier le contenu de la bitmap dans la banque de mémoire, en bonne position. Reste à calculer la "distance" entre l'écran 0 et la première image de la banque, et c'est tout.

C'est AMAL qui se charge de l'animation. Les registres à initialiser sont RA (valeur de base en X), RB (valeur de base en Y), RC (nombre de lignes d'une image) et RD (nombre de pas d'animation). La chaîne AMAL se contente de modifier les valeurs de SCREEN OFFSET en X et en Y. C'est tout.

Une fois la chaîne initialisée, on peut retourner en mode direct : l'animation marche toute seule !

Vous pourrez animer d'autres images en utilisant la même méthode. L'écran 0 peut faire partie d'un dual-playfield et dans ce cas, vous pourrez faire bouger un gros logo devant.

AMOS
AMOS


[Retour en haut] / [Retour aux articles]