Obligement - L'Amiga au maximum

Mardi 23 avril 2024 - 22:47  

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 - 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]