Obligement - L'Amiga au maximum

Samedi 16 décembre 2017 - 02:20  

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 - afficher une image IFF
(Article écrit par Little Zeus et extrait d'A-News (Amiga News) - juillet 1988)


L'Amiga est la plus belle machine du moment, vous n'en doutez pas mais il est encore impossible d'utiliser pleinement ses capacités notamment le matériel et les bibliothèques faute de documentation en français. C'est pourquoi, afin de combler cette lacune et parce que j'y prends du plaisir, je vous propose désormais des trucs et astuces en assembleur.

Le langage machine par sa rapidité et sa facilité de programmation va nous permettre au cours des prochains mois, de créer des défilements (scrollings), des animations de bobs et de sprites, de lancer nos musiques ainsi que de créer tous les effets que vous connaissez à travers les différentes intros et démos.

Afficher une image IFF à l'écran

Dans ce numéro, j'ai choisi de vous présenter une petite routine faite sous K-Seka permettant d'afficher certaines images IFF. Cependant, peut-être que certains d'entre vous n'auront pas encore suffisamment de connaissances en assembleur pour comprendre cette routine, que j'ai toutefois essayé d'expliquer le plus clairement possible. J'ai donc envisagé de créer une deuxième rubrique concernant l'initiation à l'assembleur. Si vous avez d'autres suggestions, n'hésitez pas à me les faire parvenir.

Entrons dans le vif du sujet. La plupart des programmes de dessin tels Deluxe Paint ou Photon Paint vous permettent de mettre en dessin vos plus folles idées mais pour les animer vous avez besoin d'utilitaires comme VideoScape 3D ou Aegis Animator. L'utilisation de ces derniers apparaît souvent très limitée à cause de la mémoire qu'ils occupent sur vos disquettes chéries et à cause. de leur pauvreté d'animation (amusez-vous à faire avec ces utilitaires simultanément trois beaux défilements à l'écran avec des effets de couleur et une superbe musique !).

Pour créer une animation sur un décor de fond, il faut tout d'abord afficher une image. Créez-la avec votre utilitaire de dessin préféré et sauvez-la. Tous ces utilitaires sauvegardent vos images sous forme IFF (Interchange File Format), ce qui signifie en bon français "fichier à taille modifiable". Cependant, elles peuvent malheureusement se présenter sous formes diverses ! Dans presque tous les cas elles seront compactées (dans Deluxe Paint par exemple) en utilisant le système de compactage ByteRun1 (ce système de compactage sera expliqué dans un prochain numéro).

Ce mois-ci nous étudierons comment afficher une image non compactée. Comment, me demandes-vous, si les images de tous nos utilitaires de dessin sont compactées, où trouvons-nous des images non compactées ? Ne vous affolez pas : il existe un merveilleux petit programme (merveilleux uniquement dans ce cas-là) nommé Graphicraft, eh oui, Graphicraft possède l'avantage de lire des images compactées et de les sauver sous formes non compactées (dans le cas où vous avez fait votre image avec un autre utilitaire bien sûr).

Dans ce numéro, nous envisagerons simplement le moyen d'afficher une image simple, c'est-à-dire une image de 32 couleurs en basse résolution et en mode non entrelacé.

Les étapes

Première étape : on charge l'image en mémoire en utilisant la dos.library comme le fait le petit programme un peu plus loin.

Deuxième étape : on ouvre l'écran sur lequel va apparaître notre image. Pour ceci, il faut charger certains registres de la manière suivante :

1. Taille de la fenêtre :

a) Position du début de la fenêtre : Xmin dans les bits de 8 à 15 de DIWSTRT et Ymin dans les bits de 0 à 7 de DIWSTRT.
b) Position de la fin de la fenêtre Xmax dans les bits de 8 à 15 de DIWSTOP et Ymax dans les bits de 0 à 7 de DIWSTOP.

2. Le modulo : c'est le nombre d'octets de l'image qui ne sont pas affichés entre chaque ligne de l'image.

a) BPL1MOD : modulo des bitplanes pairs.
b) BPL2MOD : modulo des bitplanes impairs.

3. Donner les cinq pointeurs sur les cinq différents bitplanes.

4. Préciser les "Data-Fetch" comme nous le verrons plus loin.

5. Mettre à 1 le bit9 de BPLCON0 pour utiliser la couleur.

6. Préciser le nombre de bitplanes en "pokant" leur nombre dans les bits 12, 13 et 14 de BPLCON0.

Structure IFF

Maintenant, il ne reste plus qu'à charger l'image dans les différents bitplanes. Mais avant ceci, il faut bien comprendre la structure d'un fichier image IFF non compacté.

Expliquer sa structure entière serait trop long pour le peu de lignes qui me restent, nous nous attarderons donc uniquement aux emplacements des couleurs et des bitplanes dans le fichier IFF. Les couleurs commencent 48 octets après le début du fichier et se présentent sous une forme un peu particulière. Au lieu d'avoir le numéro de couleur sur un mot, il se présente de la manière suivante :

Prenons la couleur $AF0, on la trouvera ainsi dans le fichier IFF :0A 0F 00. Nous devrons donc transformer 0A 0F 00 en AF0 pour charger un registre couleur avec $AF0.

Mais pour utiliser 32 couleurs, nous avons besoin de cinq bitplanes et ceux-ci sont disposés ainsi dans le fichier IFF : 40 octets du bitplane 1 de la ligne 1, puis 40 octets du bitplane 2 de la ligne 2... jusqu'au bitplane 5, puis on recommence ainsi 200 fois pour les 200 lignes de l'écran.

Terminons enfin en précisant que pour maintenir l'image affichée à l'écran, on utilise un des coprocesseurs de l'Amiga, le Copper. Son explication détaillée sera donnée dans le prochain numéro à moins que vous ne me suggériez aune chose...

La routine

Nous avons vu les principales idées. Passons maintenant à la routine :

assembleur
assembleur
assembleur

Cette routine, pour fonctionner, doit être exécutée sans l'extension mémoire ; si vous en avez une et que vous ne voulez pas l'enlever (fort déconseillé car cela abîme les broches de l'Amiga) désactivez-la avec la commande "nofastmem".

Sur ce, je vous quitte et vous donne rendez-vous au mois prochain pour un article exclusif sur le Copper, le plus utile des coprocesseurs de l'Amiga et peut-être pour une rubrique d'initiation à l'assembleur.


[Retour en haut] / [Retour aux articles]