Voir la version complète : [GBA][Aide] Tiles multi palettes
Alekmaul
16/06/2006, 22h57
Voilà, j'ai une question sur GBA ...
On peut gérer les sprites par palette de 16 couleurs sans problème (jusqu'à récurence de 16 palettes) mais je me demandais s'il était possible de faire la même chose sur les tiles.
Bref, pouvoir , par exemple, avoir une font gérée en tile et en blanc et l'afficher sur un BG avec des couleurs différentes ...
Vous en pensez quoi :blink: ?
Euh ... si j'ai été assez clair :huh: ...
Pas compris ... Tu veux savoir s'il existe un mode 16 couleurs pour les tiles (question qui m'étonne venant de toi :D) ? Mais si c'était quand même ca ta question, la réponse est oui.
sur nds c'est etendu sur 16*256 couleurs si je ne m'abuse. chui pas tres calé sur le hard nds v_v
sinon tu as tres peu de logiciel libres qui gerent ca, le seul que je connaisse est maped.
Alekmaul
16/06/2006, 23h25
Pas compris ... Tu veux savoir s'il existe un mode 16 couleurs pour les tiles (question qui m'étonne venant de toi :D) ? Mais si c'était quand même ca ta question, la réponse est oui.
Nan, pas ma question ...
Ma question, je sais, je suis pas clair ..., c'est :
J'ai par exemple un alphabet en couleur blanc sur fond noir, je veux que le blanc puisse changer en rouge, vert, etc ...
sans avoir à faire un alphabet à chaque fois, tu vois mieux là ou pas ?
[EDIT] sachant que l'alphabet sert à être affiché en mode tile sur un fond
Nan, pas ma question ...
Ma question, je sais, je suis pas clair ..., c'est :
J'ai par exemple un alphabet en couleur blanc sur fond noir, je veux que le blanc puisse changer en rouge, vert, etc ...
sans avoir à faire un alphabet à chaque fois, tu vois mieux là ou pas ?
[EDIT] sachant que l'alphabet sert à être affiché en mode tile sur un fond
mais ta couleur blanche de ton alphabet elle a bien une position sur la palette, si tu connais sa position il te reste juste a modifier la couleur de la palette.
sinon il y a une autre solution puisque j'ai vu que tu parlais de couleurs predefinies dans le post a brunni.
si tu ne souhaite pas modifier ta palette et changer ta couleur blanche tu sera forcé de copier tes tiles de ton alphabet en WRAM et a chaque fois que tu souhaite modifier la couleur d'un tile tu devra l'analyser (pixel par pixel) et modifier tout les pixels qui pointent sur une position de la palette (blanche dans ce cas la)et les faire pointer a une autre position. je sais pas si ej suis clair non plus >_<
ca te permetra d'afficher des lettres de plein de couleurs differante a l'ecran ^^ (style zelda) mais le cpu en prend un bon coup dans la tronche
Tu peux aussi utiliser la map pour définir la palette utilisé par chaque tile, donc imaginons que la couleur 1 de la palette 0 soit du blanc, et que la même coueleur 1 de la palette 1 soit du rouge, tu peux afficher du texte blanc et rouge avec le même tileset, il suffit de modifier la palette utilisé par les tiles que tu veux afficher en rouge.
M'enfin perso je trouve que cette technique bouffe pas mal de palette quand même :whst:
(thoduv, qui prefere bouffer du cpu que de la vram :D)
Alekmaul
17/06/2006, 08h37
Merci Thoduv, c'est exactement ce que je cherchais.
EN me replongeant dans GBATEK, j'ai trouvé cela :
Text BG Screen (2 bytes per entry)
Specifies the tile number and attributes. Note that BG tile numbers are always specified in steps of 1 (unlike OBJ tile numbers which are using steps of two in 256 color/1 palette mode).
Bit Expl.
0-9 Tile Number (0-1023) (a bit less in 256 color mode, because
there'd be otherwise no room for the bg map)
10 Horizontal Flip (0=Normal, 1=Mirrored)
11 Vertical Flip (0=Normal, 1=Mirrored)
12-15 Palette Number (0-15) (Not used in 256 color/1 palette mode)
A Text BG Map always consists of 32x32 entries (256x256 pixels), 400h entries = 800h bytes. However, depending on the BG Size, one, two, or four of these Maps may be used together, allowing to create backgrounds of 256x256, 512x256, 256x512, or 512x512 pixels, if so, the first map (SC0) is located at base+0, the next map (SC1) at base+800h, and so on.
On peut donc alors jouer sur la palette avec les bits 12-15. Je ne m'en souvenais plus, je commence à me faire trop vieux pour programmer moi >_<
Frenecrid-Jae
17/06/2006, 15h06
Je ne pense pas que modifier le numéro de la palette pour changer la couleur de tes font-tiles (oui, néologisme mais je pense que tu me suis :) ) soit une bonne solution. La remarque faite plus haut sur le quantité de PALRAM bouffé est juste. Utiliser une palette 16 couleurs pour chaque couleur que tu souhaite avoir pour tes fonts c'est vraiment du gachie.
Essaye de caser le plus de couleurs possible dans une palette de 16 et change directement le tile de tes caractères. Si tu as besoin de plus de couleur tu rajoutes une autre palette avec des couleurs supplémentaires. Ou encore modifie simplement la couleur blanche dans ta palette par la couleur que tu veux, mais là bien sur tu n'auras pas plusieurs couleurs en même temps pour ton texte, puis une palette en 256 est préférable pour pas gacher de la place.
Je ne pense pas que modifier le numéro de la palette pour changer la couleur de tes font-tiles (oui, néologisme mais je pense que tu me suis :) ) soit une bonne solution. La remarque faite plus haut sur le quantité de PALRAM bouffé est juste. Utiliser une palette 16 couleurs pour chaque couleur que tu souhaite avoir pour tes fonts c'est vraiment du gachie.
Essaye de caser le plus de couleurs possible dans une palette de 16 et change directement le tile de tes caractères. Si tu as besoin de plus de couleur tu rajoutes une autre palette avec des couleurs supplémentaires. Ou encore modifie simplement la couleur blanche dans ta palette par la couleur que tu veux, mais là bien sur tu n'auras pas plusieurs couleurs en même temps pour ton texte, puis une palette en 256 est préférable pour pas gacher de la place.
De toutes facon c'est au choix:
- soit un bouffe de la palette en changeant l'id de la palette
- soit on bouffe de la rom et de la vram en créant plusieurs tilesets pour chaques couleurs
- soit on bouffe du cpu en convertissant à la volée le tileset
sur nds c'est etendu sur 16*256 couleurs si je ne m'abuse. chui pas tres calé sur le hard nds v_v
sinon tu as tres peu de logiciel libres qui gerent ca, le seul que je connaisse est maped.
Ha bon? Je croyais pourtant que GBA Graphics le faisait, mais j'ai dû me tromper :whst:
(et GBA Graphics gère même la conversion optimisée en 16x16 couleurs, je sais pas si mappy le fait d'ailleurs :huh:)
[Edit] Je précise que je te taquine hein ;)
Sinon perso j'utilise en général plusieurs palettes, et mes tiles utilisent la couleur 15 (la dernière) uniquement. Du coup la différence ne se voit plus trop par la suite :)
Ils font pareil dans Sonic sur Mega Drive alors qu'ils n'ont que quatre palettes de 16 au total (sprites + BGs) et ça marche bien, donc c'est sûrement pas une si mauvaise méthode :)
Frenecrid-Jae
17/06/2006, 20h53
De toutes façon c'est au choix:
- soit un bouffe de la palette en changeant l'id de la palette
- soit on bouffe de la rom et de la vram en créant plusieurs tilesets pour chaques couleurs
- soit on bouffe du cpu en convertissant à la volée le tileset
Je ne sais pas ce qu'il veut faire exactement. Il n'a pas précisé l'effet voulu et les contraintes de couleurs pour son texte. Mais il peut aussi bouffer du cpu en changeant les couleurs de la palette et sans toucher aux tiles. Ca a l'avantage de pas bouffer de mémoire supplémentaire etencore moins de temps cpu qu'un tile (et encore moins que tout un tileset).
M'enfin, ça dépend énormément du context d'utilisation et de l'effet recherché.
Sinon perso j'utilise en général plusieurs palettes, et mes tiles utilisent la couleur 15 (la dernière) uniquement. Du coup la différence ne se voit plus trop par la suite
Ils font pareil dans Sonic sur Mega Drive alors qu'ils n'ont que quatre palettes de 16 au total (sprites + BGs) et ça marche bien, donc c'est sûrement pas une si mauvaise méthode
Oui mais là je pense que les autres couleurs des palettes sont utilisées par les sprites. Le fait qu'il y ait que 4 palettes maximum réduit énormément le choix des couleurs et encore plus si la palettes est utilisé par les sprites et les backgrounds en même temps. Du coup les directeurs technique ont du trouver une astuce pour optimiser la palette, qui au final ne revient qu'à couper la palette en 2. Sur GBA ya largement plus de place pour mettre ses pots de peinture alors c'est plus la peine d'utiliser ce type d'astuce.
PS: Je me demandai pourquoi les jeux Mega Drive avaient des graphismes aussi fades comparé à la Super NES alors qu'elle était aussi en 16 bits. Maintenant je cois avoir la réponse :lol: .
Ils sont pas fades (au contraire) je trouve, mais ils manquent de demi-teintes et de profondeur pour cette raison ainsi que le fait que les couleurs sont codées sur 9 bits (au lieu de 15 sur SNES), donc les possibilités sont plus petites* ^^
[Edit] *Ca veut dire, seulement 8 teintes par couleur primaire au lieu de 32, résultat c'est beaucoup plus difficile de faire un dégradé par exemple, et du coup les gfx sont moins réalistes ;)
Frenecrid-Jae
17/06/2006, 21h20
Ils sont pas fades (au contraire) je trouve, mais ils manquent de demi-teintes et de profondeur pour cette raison ainsi que le fait que les couleurs sont codées sur 9 bits (au lieu de 15 sur SNES), donc les possibilités sont plus petites ^^
OUCH!
Quand même : 32768 >> 512 :huh:
En plus ya que 32 couleurs possibles en même temps... c'est vraiment pas beaucoup. Heureusement que le gameplay de beaucoup de ses jeux contre-balançait ce manque de couleurs chatoyante (remarque Sonic est un bel exemple de jeu sur cette plateform avec de nombreuses variations de couleurs possible).
vBulletin® v.3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org