Tuto : Les niveaux de gris sur z80


 
 
 
 

 

 Les niveaux de gris sur 83+/84+

 

 

 

 

    Dans votre quête de faire le jeu parfait, vous voulez améliorer les graphismes. Mais comment faire quand ceux-ci sont déjà très bien faits en noir et blanc ? Et bien il existe une solution, qui est de les faire...en niveaux de gris. Effectivement, les TI83+ et 84+ peuvent accepter jusqu'à 4 niveaux de gris (en comptant le noir et le blanc) sans "trembler". C'est à dire noir, gris foncé, gris clair, blanc. Mais comment faire ? c'est le but de ce tutorial ;)

 

/!\ Ce tutorial requiert : /!\

 

  • Une TI (cf point précédent), 83+/84+ de préférence
  • Un minimum de mémoire sur sa calculette (RAM/Archive, au moins 16 ko en tout)
  • Quelques connaissances en TI-Basic
Si vous avez tout ça (vérifiez bien pour le premier point) alors on peut continuer.

 

 
 

I Un peu de théorie

 

    Eh oui, on commence par ce que est barbant : la théorie :) mais rassurez-vous, bientôt la pratique ;)

Alors réflechissons un peu. Comment en ayant accès uniquement à du noir et à du blanc pourrions nous créer du gris ?.......toujours pas ? allez encore un effort :D

Bien. Maintenant créez le programme suivant :

 

Code : TI-Basic

 

ClrHome //on efface l'écran Home (celui de calcul)

For(Z,0,62

Horizontal Z //on remplit l'écran graph (celui pour tracer les graph)

End

While 1 //boucle infinie

Disp

Trace

End

 

 

 

 

Capture d'écran du programme (VTI 83+ 1.12)

Horrible....

 

Remarque : pour les codes : En bleu foncé les instructions, en violet, les boucles, en orange, les variables, en rouge les nombres

 

Alors ? que voyez-vous ?

C'est horrible n'est-ce pas ? mais il s'agit bien de gris. Que se passe t-il alors ? En faisant alterner très rapidement noir et blanc, on peut obtenir du gris (je ne vous parlerais pas de persistance rétinienne, mais c'est bien ça qui se passe, en gros, c'est un "mélange" de noir et de blanc dans l'oeil)

Maintenant pourquoi ça fait cet effet ? Bah tout simplement parce que si on reprend ce qu'on vient de dire, l'écran Home est tout blanc et l'écran graph est tout noir, en alternant, blanc+noir=gris. Mais seulement le TI-Basic est lent, c'est pourquoi ce n'est pas un gris parfait. (Très important : plus l'alternance est rapide, mieux le gris sera c'est pourquoi les jeux en ASM (notamment Desolate) ont des gris quasi-parfaits)

 

                [?] Bien, mais maintenant, je vais pas me contenter de ça ?!

Patience, ça arrive ;)

 

 

II Les avantages et les inconvénients des niveaux de gris

 

Quoi ?! Toujours pas de pratique ?!

Eh non, cette fois on va peser le pour et le contre de ces niveaux de gris.

Mais tout d'abord une question : Est-ce possible de faire des niveaux de gris en basic ?

Eh bien, malheureusement c'est impossible en basic...Attendez ! J'ai pas fini ma phrase ! ne partez pas !

Donc je disais que c'était impossible en basic pur car le basic pur est beaucoup trop lent pour afficher bien le gris que vous voulez.

C'est pourquoi on va utiliser des programmes externes, ou plus précisément des applications

 

                [?] Mais ceux qui utiliseront mon programme seront obligés d'avoir ces programmes alors ?

Bah oui, et c'est vrai qu'elles sont relativement grosses (16 ko au minimum) et on se demande si ça en vaut la peine...c'est un peu comme le son, l'avoir c'est bien, mais on peut s'en passer (oui c'est possible d'avoir le son sur TI en trafiquant un peu sa TI)

C'est pourquoi nous allons d'abord voir les avantages et inconvénients des niveaux de gris

 

                [?]Nan, assez parlotté, on commence quand ?!

Très simple. Pour ceux qui les veulent, qui ne se posent pas de questions, passez au III pour les autres, continuez normalement :)

 

                1)Avantages

 

Commençons par les avantages, comme ils sont moins nombreux que les inconvénients

D'ailleurs je ne trouve qu'un avantage à avoir des niveaux de gris : les graphismes.

Bien sûr, certains pourront penser que c'est un gros avantage, il suffit de voir la différence entre un programme en monochrome et un programme en niveaux de gris. Ca permet entre autres de descendre les possesseurs de Casio (lol) ou de frimer devant les potes (qui peuvent avoir des Casio aussi).

C'est tout.

Mais ces niveaux de gris ont aussi des inconvénients :

 

                2)Inconvénients

 

Nous y voilà donc. Les inconvénients.

Et là j'aurais beaucoup plus de choses à dire

 

                [?]Mais il sert à rien alors ton tutorial ?!

C'est vrai en quelque sorte. Mais malgré les inconvénients, certains voudront quand même avoir les niveaux de gris pour le seul avantage mentionné avant. Et ceux qui sont pas contents, bah vous pouvez tout de suite vous en aller :)

 

Bon. revenons-en au sujet. Les inconvénients des niveaux de gris :

 

-Beaucoup plus de place. Comme on va devoir utiliser 2 plans ou plus pour afficher les niveaux de gris, on va utiliser 2 images, soit 767*2=1534 octets. En une image on peut placer 12*8=96 sprites de 8x8 pixels. Tout dépend donc du nombre de sprites qu'on voudra utiliser. (un RPG par exemple peut monter très haut en taille pour les données). Et il y a en plus l'application, soit 16k de plus. Ca fait déjà pas mal

 

-La vitesse. Le fait d'afficher plusieurs sprites en niveaux de gris peut affecter la vitesse, plus ou moins selon les programmes. Cette perte de vitesse peut être compensée par une bonne optimisation

 

-Le temps. Bon c'est vrai c'est pas vraiment un inconvénient mais utiliser des sprites en niveaux de gris demandera plus de temps à faire que en monochrome...

 

-La consommation. Forcément ça consomme un peu plus les piles, mais bon ça se ressent pas tellement si ce n'est qu'occasionnel :)

Ok je chipote...

 

Voilà, finalement j'avais pas tellement de choses à dire ^^

On va enfin pouvoir passer à la pratique :)

 

Il était temps n'est-ce pas ? ;)

Alors pour les quelques courageux qui sont restés, on va enfin pouvoir savoir comment utiliser les niveaux de gris.

 

 

III Enfin de la pratique !

Alors pour ceux qui n'ont pas sauté le paragraphe II, ils savent que c'est impossible d'avoir des niveaux de gris sans programme/application externe. Nous allons donc voir quels sont ces programmes externes.

 

Tout d'abord, il faut Omnicalc ou Xlib qui sont 2 applications qui sont orientés programmation. Ces 2 applications nous permettront de faire ces fameux niveaux de gris, car ils seront assez rapides pour faire alterner les 2 plans.

Je vous vois déjà venir : lequel choisir ? Personnellement j'utilise plus Omnicalc, car il est plus simple d'utilisation. Certains utiliseront Xlib car il est peut-être plus complexe à utiliser mais on peut faire plus de choses avec.

Nous allons d'abord voir comment avoir des niveaux de gris avec Omnicalc, puis avec Xlib

 

                1)Avec Omnicalc

 

Tout d'abord, je renvoie ceux qui comprennent l'anglais ici si jamais mes explications n'étaient pas claires.

C'est de ce tutorial que je vais m'inspirer pour vous expliquer comment faire

 

                2)Avec Xlib

 

Avec Xlib, il faut 4 images différentes pour faire un sprite en niveaux de gris.

 

                [?]C'est quoi un sprite ?

Un sprite, est un élément qui peut bouger sur l'écran, contrairement à un tile, qui lui est fixe.

Toute personne ayant déjà joué à un RPG a rencontré sans le savoir ces sprite (le perso) et ces tile (les murs).

En général, sur TI, les sprites et les tiles sont au format 8x8, 16x16 ou 32x32. Ils sont surtout utilisés en basic étendu (=basic+librairie), ASM ou langage plus avancé.

 

                [?]Ok, mais s'il faut 4 images pour un sprite, on va vite être dépassé !

En effet, comme je le disais dans les inconvénients, les niveaux de gris peuvent prendre beaucoup de place.

L'écran de la TI83+/TI84+ étant de 94x62, il peut contenir environ 12 sprites par ligne de 8x8 (6 de 16x16 et 3 de 32x32) et 8 lignes de sprites 8x8 (4 pour 16x16 et 2 pour 32x32), soit :

Ce n'est pas génial comme les TI83+/84+ n'autorisent que 10 images par défaut.

Oui, par défaut est un mot important car avec Xlib, la TI peut supporter, écoutez bien, 255 images différentes, ce qui fait déjà beaucoup plus de sprites ! mais aussi beaucoup plus de place....

 

 

Bon, venons-en au sujet :

Avec xLib, on peut aller jusqu'à 5 niveaux de gris (noir, gris clair, gris moyen, gris foncé, blanc)

Je m'arrêterais à 4 niveaux de gris uniquement parce que je ne sais pas exactement comment en faire 5

 

Pour faire les niveaux de gris il faut 4 sprites différents situés au même endroit de l'écran sur 4 images différentes, qu'on va alterner très vite.

Tout d'abord, un petit tableau :

 

Tableau valeurs

En gras, pixels allumés

1

OOOOO

OOOOO

OOOOO

OOOOO

OOOOO

2

OOOOO

OOOOO

OOOOO

OOOOO

OOOOO

3

OOOOO

OOOOO

OOOOO

OOOOO

OOOOO

4

ooooo

ooooo

ooooo

ooooo

ooooo

Couleur 1 2 3 4
Noir 4 1 1 1
Gris clair 3 3 2 4
Gris foncé 3 2 3 4
Blanc 1 1 1 1

Tableau de valeurs

 

                [?]C'est quoi ça ?

 

 Ca, c'est simplement les  tableaux, la base même des niveaux de gris avec xLib.

Supposons que le sprite que vous voulez mettre en niveau de gris soit celui-ci :

Le sprite, agrandi en dessous

 

Vous voulez que l'intérieur du carré soit gris clair :

sprite en niveaux de gris

Comme ceci; au passage j'ai fait exprès de laisser une capture d'écran de quelques secondes pour montrer qu'il n'est pas parfait, surtout sur émulateur (ptet aussi que jl'ai mal réglé c'est possible :))

Quoiqu'il en soit, la qualité est meilleure sur TI réelle.

 

Comment allons-nous faire ?

 

 

 

IV Conclusion

 

Pffooooouuh...enfin arrivé au bout de ce tutorial.

Maintenant vous devriez être capable de créer des jeux/programmes en niveaux de gris. Merci qui ? :p

Sinon, relisez ce tutorial (et plus particulièrement le III) et recommencez. Vous pouvez toujours me contacter à mon adresse MSN en cas de problème ou pour me remercier (^^) ou même pour m'insulter (lol)

 

Avec un peu d'entrainement, vous arriverez bientôt à faire des superbes graphismes, comme ceux-ci :

 

Desolate
Patrick Pendergast
2004
Reuben Quest : The Lost Mirror
Kevin Ouellet
2005
 

 

 

 

Et c'est l'heure des remerciements :

Je remercie :

 

--------------------------------------------------------------------------------------------------------------------------------------------
 

version 1.0

Statut : En cours de rédaction [66%]

Crée le 04 Novembre 2007 par Tama

Dernière modification : 15 Novembre 2007 par Tama

 

 

Tama