Obligement - L'Amiga au maximum

Mercredi 23 janvier 2019 - 14:21  

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 : Assembleur - Wave (rasters Copper horizontaux et en mouvement suivant une courbe sinusoïdale)
(Article écrit par Jérôme Étienne et extrait d'Amiga News Tech - juin 1991)


Et voilà : un disque dur en panne vous prive du plaisir de manipuler des objets 3D en faces pleines. Nous souhaitons évidemment un prompt rétablissement à ce pauvre Amiga, et pour vous faire patienter, nous vous proposons une routine que Jérôme Etienne nous avait envoyée pour l'évaluation de ses qualités.

Vous aurez donc le plaisir, la joie et l'avantage de découvrir dans les lignes qui suivent, un programme de Jérôme Étienne et un article de votre serviteur. Rassurez-vous, le programme est suffisamment long et commenté pour m'éviter de dire trop de bêtises... De quoi s'agit-il donc ? D'un effet de Copper que tous les démomakers ont utilisé un jour ou l'autre : des rasters horizontaux et en mouvement suivant une courbe sinusoïdale.

Principe du programme

Le principe de cet effet est assez simple à réaliser. Il consiste à recalculer la liste Copper à chaque VBL, en prenant soin d'y inscrire chaque ligne de raster dans le bon ordre afin de conserver à la chose son côté esthétique.

On gère 15 barres composées de 16 lignes de rasters (Cf. constante nb_coul). Au départ, on construit dans "tab_y_wave" une table des différentes coordonnées possibles pour chaque barre, suivant la fonction y=sin(x)*raywave+oy_wave avec "x" variant de 0 à 359 degrés. L'avantage d'une telle table est qu'on pourra aller y piocher les coordonnées des barres plutôt que d'avoir à recalculer un sinus à chaque itération de la boucle principale.

Une seconde table, au label "cur_coor_wave", contient la coordonnée actuelle de chacune des "nb_bar" barres. La première barre dans la table est celle qui semble la plus "éloignée" à l'écran. Ainsi, lorsque l'on affichera toutes les barres l'une après l'autre, elles viendront peu à peu se superposer pour donner cette impression de profondeur.

La boucle principale n'a plus qu'à attendre la VBL, à effacer entièrement la liste Copper de manière à ce que les barres ne laissent pas de "traces" à l'écran puis à modifier la coordonnée de chaque barre en lui ajoutant la vitesse de déplacement actuelle (paramétrable avec les flèches gauche et droite du clavier) et à piquer la nouvelle coordonnée ainsi obtenue dans la table construite plus tôt. La barre est ensuite redessinée sur toute sa hauteur dans la liste Copper. On boucle ainsi jusqu'à ce que toutes les barres aient été traitées.

Voilà. Un dernier mot sur la routine de sinus/cosinus : ne vous étonnez pas de voir qu'il est nécessaire d'appeler, dans la partie initialisation du programme, une routine qui la prépare. Pour éviter d'avoir à se taper les 360 valeurs de sinus possible, on n'en a initialisé que 90 (ce qui est quand même déjà pas mal !) à partir desquelles on va déduire les 270 restantes. C'est tout.

assembleur
assembleur
assembleur
assembleur
assembleur


[Retour en haut] / [Retour aux articles]