44Fermer46
FadestLe 07/12/2007 à 14:04
Chose promise, chose due :

Ce sont les lignes suivantes qui vont nous être utile
#include "inc\fond.pal"
Ceci sert à inclure le fichier palette généré par sprpck

SetRGB(pal);
Ceci sert à changer la palette de la Lynx.

Donc, si tu as plusieurs images, tu auras plusieurs fichiers .pal.
La première idée serait de multiplier les ligne
#include "inc\fond.pal"
pour inclure toutes les palettes dans ton programme.

C'est presque bon, il faut juste auparavant intervenir manuellement sur les fichiers .pal supplémentaires.
Un fichier .pal est constitué ainsi :
char redir[]={0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF};
char pal[]={
	0x0F,0x0D,0x0A,0x00,0x05,0x06,0x0B,0x02,0x0D,0x0B,0x06,0x08,0x0E,0x08,0x0F,0x00,
	0xFF,0xFF,0x90,0x61,0x5B,0xA5,0xEC,0x83,0x7F,0xAF,0x2F,0xC8,0x80,0x7F,0x6F,0x00};

Les deux choses importantes à voir sont les 2 tableaux déclarés : redir[] et pal[] (qui contient la défintion de la palette - les valeurs hexadécimales sont expliquées dans le lien donné par Vince plus haut)

On remarque donc que dans chaque fichier, on aura un tableau redir[]. Donc, on aura une erreur à la compilation car on ne peut pas déclarer plusieurs fois le même tableau.
Il faut donc, dans tous les fichiers .pal sauf un, supprimer la ligne suivante :
char redir[]={0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF};


Deuxième chose, la définition de la palette est toujours faite dans un tableau pal[]. Idem, ça ne passer pas à la compilation.
Il faut donc renommer les différents tableaux pal[]
par exemple pal_fond[], pal_2[]
Un peu comme vous voulez en fait, de manière à ce que ce soit le plus simple possible pour vous plus tard.

Donc, maintenant, en ayant une ligne #include... par fichier .pal, il n'y aura plus de problèmes à la compilation.


La deuxième chose, c'est de changer la palette de la Lynx.
Avant l'affichage de chaque image, il faut donc charger la palette correspondante.
Celà se fait avec la fonction SetRGB() en passant en paramètre le tableau correspondant.
Par exemple
SetRGB(pal);
SetRGB(pal_fond);
SetRGB(pal_2);

Je vous laisse inclure ces lignes au bon endroit dans le programme.

Une fois compilé, et à l'exécution, vous noterez que le changement de palette est perceptible sur l'image précédente un chouia de temps (le temps d'afficher la suivante).
Il y a plusieurs possibilité pour éviter ça :
effacer l'écran avec la commande DrawFBox(0,0,160,102,0); ça affichera un rectangle de la couleur 0 sur tout l'écran (si vos 2 palettes n'ont pas la même couleur 0, ça fera un flash)
Déclarer une palette ne contenant que du noir par exemple, et temporairement utiliser celle-là.
...