Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
ff7:technique:field:bg [Le 22/07/2009 à 15:03] – myst6re | ff7:technique:field:bg [Le 15/08/2022 à 15:43] (Version actuelle) – modification externe 127.0.0.1 |
---|
^0|2 octets^0^| | ^0|2 octets^0^| |
^2|2 octets|1 (utilise des palettes) ou 2 (n'utilise pas de palettes)^| | ^2|2 octets|1 (utilise des palettes) ou 2 (n'utilise pas de palettes)^| |
^4|1 octet^1^| | ^4|1 octet^1 (activé, si 0 le jeu ne lit pas la suite)^| |
^5|7 octets^PALETTE|| | ^5|7 octets^PALETTE|| |
^12|24 octets|Activité des premiers pixels des palettes -**<color green>actPixPal</color>**-^| | ^12|20 octets|Activité des premiers pixels des palettes -**<color green>actPixPal</color>**-^| |
| ^32|4 octets^0|| |
^36|4 octets^BACK|| | ^36|4 octets^BACK|| |
| |
^119 + 52 (NbSprite1 + NbSprite2 + NbSprite3 + NbSprite4)|2 octets^0|| | ^119 + 52 (NbSprite1 + NbSprite2 + NbSprite3 + NbSprite4)|2 octets^0|| |
| |
^Données^^^^ | ^[[#les_donnees_de_l_image|Données]]^^^^ |
^121 + 52 (NbSprite1 + NbSprite2 + NbSprite3 + NbSprite4)|7 octets^TEXTURE|| | ^121 + 52 (NbSprite1 + NbSprite2 + NbSprite3 + NbSprite4)|7 octets^TEXTURE|| |
^128 + 52 (NbSprite1 + NbSprite2 + NbSprite3 + NbSprite4)|nb de pages * 65 540 + 84|**<color blue>[[#les_donnees_de_l_image|Données de l'image]]</color>**^| | ^128 + 52 (NbSprite1 + NbSprite2 + NbSprite3 + NbSprite4)|nb de pages * 65 540 + 84|**<color blue>[[#les_donnees_de_l_image|Données de l'image]]</color>**^| |
| |
===== Les données de l'image ===== | ===== Les données de l'image ===== |
[{{ http://www.wikisquare.com/test/wiki/_media/anfrst_1-page1.jpg|Voila la première page du fichier anfrst_1 affichée en brut, et je me suis servi de la première palette.}}] | |
| [{{ :ff7:technique:field:page1.jpg|Voila la première page du fichier anfrst_1 affichée en brut, et je me suis servi de la première palette.}}] |
| |
Elles sont toujours précédées par le mot-clé "TEXTURE". | Elles sont toujours précédées par le mot-clé "TEXTURE". |
==== Sprites zone 1 ==== | ==== Sprites zone 1 ==== |
| |
[{{ http://www.wikisquare.com/test/wiki/_media/ancnt3-couche1.png?200|Juste la première zone du fichier ancnt3}}] | |
| [{{ :ff7:technique:field:ancnt3-couche1.png?200|Juste la première zone du fichier ancnt3}}] |
| |
Pour construire une image, on utilise les Infos sprites. Dans la zone 1, un sprite est une image de 16*16 pixels. On construit cette image grâce aux Infos sprites (positions et autres infos), aux données de l'image (pour créer les pixels) et aux palettes (pour les couleurs). | Pour construire une image, on utilise les Infos sprites. Dans la zone 1, un sprite est une image de 16*16 pixels. On construit cette image grâce aux Infos sprites (positions et autres infos), aux données de l'image (pour créer les pixels) et aux palettes (pour les couleurs). |
Pour chaque octets du sprite de 16*16 pixels, il faut aller chercher la couleur dans la palette (le numéro de palette est donné dans les données du sprites). Un exemple : vous avez l'octet 0x5d, alors il faut aller chercher la **0x5d-ième couleur de la palette**. Comme il y a deux octets par couleur dans une palette, la position dans la palette est **0x5d*2**. Et pour savoir quelle palette utiliser, prenez l'info dans les sprites data (ça va de 0 à nbPalette - 1). J'ai développé dans l'article [[pal|palette]] la manière de traduire les deux octets de la couleur en une couleur RVB. | Pour chaque octets du sprite de 16*16 pixels, il faut aller chercher la couleur dans la palette (le numéro de palette est donné dans les données du sprites). Un exemple : vous avez l'octet 0x5d, alors il faut aller chercher la **0x5d-ième couleur de la palette**. Comme il y a deux octets par couleur dans une palette, la position dans la palette est **0x5d*2**. Et pour savoir quelle palette utiliser, prenez l'info dans les sprites data (ça va de 0 à nbPalette - 1). J'ai développé dans l'article [[pal|palette]] la manière de traduire les deux octets de la couleur en une couleur RVB. |
| |
<note>Si il n'y a pas de palettes, les couleurs sont données directement dans les données de l'image, un pixel = 2 octets. Couleurs sur deux octets : **<color red>rrrrr</color><color green>vvv vvv</color><color blue>bbbbb</color>** (avec r=rouge, v=vert, b=bleu).\\ Par contre ne tracez pas les pixels noirs (r=0,v=0,b=0) !</note> | <note>Si il n'y a pas de palettes, les couleurs sont données directement dans les données de l'image, un pixel = 2 octets. Couleurs sur deux octets : **<color red>rrrrr</color><color green>vvv vv</color>m<color blue>bbbbb</color>** (avec r=rouge, v=vert, b=bleu, m=inconnu).\\ Par contre ne tracez pas les pixels noirs (r=0,v=0,b=0) !</note> |
| |
== Complications sur les palettes == | == Complications sur les palettes == |
| |
* Dans l'en-tête (celle au tout début de l'article :-p ), vous avez extrait l'activité des premiers pixels des palettes (que j'ai nommé **<color green>actPixPal</color>**). Celui-ci est une suite de vingt-quatre 0 et 1. En fait, si par exemple le premier octet est 1, cela signifie que toutes les couleurs de la palette n°0 doivent être utilisées, si le premier octet est 0, cela signifie que la première couleur de la palette n°0 ne doit pas être utilisée.\\ Autre exemple : si le quatrième octet est sur 1, cela signifie qu'on peut utiliser toutes les couleurs de la palette n°3, si il est sur 0, cela signifie qu'on ne peut pas utiliser la première couleur de la palette n°3. | * Dans l'en-tête (celle au tout début de l'article :-p ), vous avez extrait l'activité des premiers pixels des palettes (que j'ai nommé **<color green>actPixPal</color>**). Celui-ci est une suite de vingt-quatre 0 et 1. En fait, si par exemple le premier octet est 0, cela signifie que toutes les couleurs de la palette n°0 doivent être utilisées, si le premier octet est 1, cela signifie que la première couleur de la palette n°0 ne doit pas être utilisée.\\ Autre exemple : si le quatrième octet est sur 1, cela signifie qu'on peut utiliser toutes les couleurs de la palette n°3, si il est sur 0, cela signifie qu'on ne peut pas utiliser la première couleur de la palette n°3. |
| |
* Si vous rencontrez un pixel noir (r=0,v=0,b=0), remplacez-le par la première couleur de la palette (peut importe la valeur de **<color green>actPixPal</color>**). | * Si vous rencontrez un pixel noir (r=0,v=0,b=0,m=0), remplacez-le par la première couleur de la palette (peu importe la valeur de **<color green>actPixPal</color>**). |
| |
== Mini récapitulatif == | == Mini récapitulatif == |
==== Sprites zone 2 ==== | ==== Sprites zone 2 ==== |
| |
[{{ http://www.wikisquare.com/test/wiki/_media/ancnt3-couche2a.png?200|Première et deuxième zone (sans les effectPages) du fichier ancnt3}}] | [{{ :ff7:technique:field:ancnt3-couche2a.png?200|Première et deuxième zone (sans les effectPages) du fichier ancnt3}}] |
| |
Dans la zone 2, on utilise le même procédé que dans la zone 1, sauf pour les infos sprites qui ont un **<color red>effectPage</color>** supérieur à 0. En tout cas en traçant la zone 1 et la zone 2 sauf les effectPage, vous aurez déjà un beau background. Allez faire un tour [[#l_ordre_des_couches|en bas de l'article]] pour prendre conscience de la séparation page/effectPage de la zone 2. | Dans la zone 2, on utilise le même procédé que dans la zone 1, sauf pour les infos sprites qui ont un **<color red>effectPage</color>** supérieur à 0. En tout cas en traçant la zone 1 et la zone 2 sauf les effectPage, vous aurez déjà un beau background. Allez faire un tour [[#l_ordre_des_couches|en bas de l'article]] pour prendre conscience de la séparation page/effectPage de la zone 2. |
=== Les effectPage === | === Les effectPage === |
| |
[{{http://www.wikisquare.com/test/wiki/_media/ancnt3-couche2b.png?200 |Première et deuxième zone (avec les effectPages) du fichier ancnt3}}] | [{{:ff7:technique:field:ancnt3-couche2b.png?200 |Première et deuxième zone (avec les effectPages) du fichier ancnt3}}] |
| |
Vous devez utiliser les positions source X (2) et Y (2) : | Vous devez utiliser les positions source X (2) et Y (2) : |
==== Sprites zone 3 ==== | ==== Sprites zone 3 ==== |
| |
Changement majeur : on trace des sprites de 32*32 pixels. | Changement majeur : on trace des sprites de 32*32 pixels. Cette zone est une sorte de background répété au centre de l'écran (comme la propriété ''background: repeat;'' en css). |
| |
==== Sprites zone 4 ==== | ==== Sprites zone 4 ==== |
| |
Rien à ajouter. | Sprites de 32*32. Cette zone est une sorte de background fixé là où se trouve la caméra (comme la propriété ''background: fixed;'' en css). |
| |
<clear/> | <clear/> |
===== L'ordre des couches ===== | ===== L'ordre des couches ===== |
| |
C'est un sujet un peu délicat, je vais quand même vous donner les trucs qui marchent souvent. | L'ordre des couches est donné par l'Id des infos Sprites. Cet id est compris entre 0 et 4096 (inclus), avec 0 le plus près et 4096 le plus éloigné. Dans les scripts, on peut changer cette valeur entre -32768 et +32767 (signed short). Il est donc judicieux de trier les tiles par leur Id. |
| |
- Premièrement, sachez que Sprites zone 2 doit être tracé en deux fois, une fois juste les sprites sans effectPage, une deuxième fois avec effectPage. | |
- Deuxièmement, Si il y a Sprites zone 3 ET Sprites zone 4 (les deux), l'ordre en est bouleversé : | |
- zone 4 | |
- zone 3 | |
- zone 1 | |
- zone 2 (sans effectPage) | |
- zone 2 (avec effectPage) | |
| |
| |
| Par défaut, les couches ont des id prédéfinis : |
| * Zone 1 : 4095 |
| * Zone 2 : variable |
| * Zone 3 : 4096 |
| * Zone 4 : 0 |
| |
| La zone 4 est toujours devant, la zone 3 derrière, la zone 1 juste devant la 3 et la 2 ça dépend. Ces valeurs peuvent changer par les scripts, si vous voulez optimiser l'affichage, il faut savoir lire les scripts :-) . |
| |