Obligement - L'Amiga au maximum

Vendredi 19 avril 2024 - 23:07  

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 - 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 BOB 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 plans de bits pairs.
b) BPL2MOD : modulo des plans de bits impairs.

3. Donner les cinq pointeurs sur les cinq différents plans de bits.

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 plans de bits 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 plans de bits. 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 plans de bits 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 plans de bits et ceux-ci sont disposés ainsi dans le fichier IFF : 40 octets du plan de bits 1 de la ligne 1, puis 40 octets du plan de bits 2 de la ligne 2... jusqu'au plan de bits 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]