Obligement - L'Amiga au maximum

Mardi 23 avril 2024 - 16:08  

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 : 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. Ce n'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 double champ de jeu (Dual Playfield) et dans ce cas, vous pourrez faire bouger un gros logo devant.

AMOS
AMOS


[Retour en haut] / [Retour aux articles]