Obligement - L'Amiga au maximum

Jeudi 22 février 2024 - 22:12  

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 68k : défilement "The Big"
(Article écrit par François Fleuret et extrait de Génération 4 - mai 1989)


Pour continuer notre grande série "The scrollings are better on Amiga" (articles 1, 2 et 3) nous allons programmer dans cet article un déplacement sur écran géant tel que celui de la démo de "The Young, Ones". Bien que cet effet paraisse étonnant vu de l'extérieur, sa réalisation est fort simple car le merveilleux processeur vidéo de l'Amiga permet de gérer un plan ("playfield") plus grand que la partie visible sur l'écran.

Dans notre programme, nous allons afficher une petite image de 320x256 points (que nous appellerons la fenêtre) qui sera en réalité une portion d'une grande image de 640x512 points. Cette image sera monochrome pour simplifier le programme bien qu'il soit fort simple de gérer une image de plusieurs plans de bits avec la même méthode. Pour réaliser cet "affichage partiel", on utilise le modulo des plans, registre magique qui permet de définir des lignes plus larges que celles visibles à l'écran. Le principe du modulo consiste à rajouter une valeur au pointeur du plan de bits lorsqu'il arrive en fin de ligne pour "sauter" une portion d'image. Dans notre cas, l'image affichée a 320 points sur chaque ligne et l'image en mémoire en a 640, il faut donc passer 320 points par ligne, d'où un modulo de 40 octets (40x8=320 points). C'est simple, non ?

De plus, pour faire déplacer notre fenêtre sur l'image, on fait varier la valeur de départ du pointeur au début de la VBL. On calcule cette adresse avec CX et CY qui sont les coordonnées horizontale et verticale de la fenêtre sur la grande image. Malheureusement, le pointeur du plan de bits ne permet pas d'avoir une précision horizontale supérieure à 16 points. Il faut donc, pour avoir un mouvement fluide, utiliser le registre de décalage des plans (BPLCON1 $DFF102). Mais ce décalage est visible sur le bord gauche de l'image, il faut donc cacher les 16 points à gauche. Pour cela, on rétrécie l'image horizontalement en modifiant la taille de la fenêtre sans changer DDFSTRT et DDFSTOP.

Afin de compliquer un peu ce programme (qui serait trop simple, avouons-le), il y a en plus une liste Copper qui suit le déplacement pour afficher un dégradé qui bouge avec la coordonnée CY. Pour faire cela, on construit une grosse liste Copper au début dont on modifie les "MOVE" à chaque VBL (comme pour les barres qui rebondissent). Les "WAIT" se font à l'abscisse $e1 pour qu'il n'y ait pas de problème à la ligne 255. Car lorsque le WAIT se produit à cette abscisse, la durée du MOVE qui est après fait passer le balayage à la ligne suivante, donc, dans le cas de la ligne 255, à la ligne 0 de la deuxième partie de l'écran. Donc, quand le Copper lira le WATT suivant (celui de la ligne 0 de la deuxième partie de l'écran), il ne croira pas qu'il a déja passé cette position. Si vous voulez mieux comprendre, essayez donc de faire des listes Copper qui fonctionnent bien à la ligne 255 et vous verrez le problème...

Pour ce qui est de la trajectoire de la fenêtre sur l'image, on fait un rebond vertical avec une accélération vers le bas et un déplacement uniforme horizontalement (sans accélération) mais avec également un rebond sur les bords.

Assembleur
Assembleur
Assembleur
Assembleur

L'image doit être placée dans le code objet avec un RI [ret] nom_image.iff [ret] IMAGE [rot] [ret]. Elle doit être décompactée monochrome et avoir une taille de 640x512 points.

Et voilà, vous savez maintenant comment on fait des grands-écrans sur Amiga, cette possibilité n'a pas de défaut majeur et permet beaucoup (mais alors beaucoup) de choses tout en ne prenant que très peu de temps dans la VBL. De plus, vous pouvez sans problème rajouter un défilement fait avec le Blitter dans la grande image. A vos claviers...


[Retour en haut] / [Retour aux articles]