Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
ff7:technique:field:bg [Le 24/06/2009 à 17:47] myst6reff7:technique:field:bg [Le 15/08/2022 à 15:43] (Version actuelle) – modification externe 127.0.0.1
Ligne 15: Ligne 15:
 ^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||
  
Ligne 59: Ligne 60:
 ^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>**^|
Ligne 75: Ligne 76:
 ^2|2 octets|**Position cible X**|| ^2|2 octets|**Position cible X**||
 ^4|2 octets|**Position cible Y**|| ^4|2 octets|**Position cible Y**||
-^6|2 octets^0 (sauf blin66_4,blin70_2,hyou6,jail4...)|| +^6|2 octets|//Inutilisé//|| 
-^8|2 octets^0||+^8|2 octets|//Inutilisé//||
 ^10|2 octets|**Position source X**|| ^10|2 octets|**Position source X**||
 ^12|2 octets|**Position source Y**|| ^12|2 octets|**Position source Y**||
-^14|2 octets^0 (si c'est différent de 0, c'est une erreur)|| +^14|2 octets|//Inutilisé//|| 
-^16|2 octets^0 (si c'est différent de 0, c'est une erreur)|| +^16|2 octets|//Inutilisé//|| 
-^18|2 octets^0 (sauf le premier sprite : 16) (si c'est différent de ou de 16, c'est une erreur)|| +^18|2 octets|//Inutilisé// (largeur tile : 16 ou 0)|| 
-^20|2 octets^0 (sauf le premier sprite : 16) (si c'est différent de ou de 16, c'est une erreur)||+^20|2 octets|//Inutilisé// (hauteur tile : 16 ou 0)||
 ^22|2 octets|**Numéro palette**^Commence à la palette n°0| ^22|2 octets|**Numéro palette**^Commence à la palette n°0|
 ^24|2 octets|**Id**^4095| ^24|2 octets|**Id**^4095|
-^26|2 octets^0 (si c'est différent de 0, c'est une erreur)|| +^26|1 octet|//Inutilisé//|| 
-^28|2 octets^0 (si c'est différent de 0, c'est une erreur)|| +^27|1 octet|//Inutilisé//|| 
-^30|2 octets^0 (si c'est différent de 0, c'est une erreur)||+^28|1 octet^0|| 
 +^29|1 octet^0|| 
 +^30|2 octets^0||
 ^32|2 octets|**Page**^| ^32|2 octets|**Page**^|
-^34|2 octets^0 (si c'est différent de 0, c'est une erreur)|| +^34|2 octets|//Inutilisé//|| 
-^36|2 octets|Octets par couleur^1 (palettes) ou 2 (sans palettes)| +^36|2 octets|Octets par couleur^0 (peu de couleurs), 1 (palettes) ou 2 (sans palettes)| 
-^38|4 octets^0||+^38|4 octets|//Inutilisé//||
 ^42|4 octets|Coordonnée X texture^| ^42|4 octets|Coordonnée X texture^|
 ^46|4 octets|Coordonnée Y texture^| ^46|4 octets|Coordonnée Y texture^|
Ligne 101: Ligne 104:
 ^2|2 octets|**Position cible X**|| ^2|2 octets|**Position cible X**||
 ^4|2 octets|**Position cible Y**|| ^4|2 octets|**Position cible Y**||
-^6|2 octets^0 (sauf farm,mds5_3,mrkt2,mtcrl_5...)|| +^6|2 octets|//Inutilisé//|| 
-^8|2 octets^0||+^8|2 octets|//Inutilisé//||
 ^10|2 octets|**Position source X**|| ^10|2 octets|**Position source X**||
 ^12|2 octets|**Position source Y**|| ^12|2 octets|**Position source Y**||
Ligne 111: Ligne 114:
 ^22|2 octets|**Numéro palette**^Commence à la palette n°0| ^22|2 octets|**Numéro palette**^Commence à la palette n°0|
 ^24|2 octets|**Id**^| ^24|2 octets|**Id**^|
-^26|2 octets|**Paramètre**^| +^26|1 octet|**Paramètre**^| 
-^28|2 octets|Transparence par addition ?^| +^27|1 octet|**État**^| 
-^30|2 octets|Transparence par addition^0 (inactive) ou (active)|+^28|1 octet|Transparence par addition^Booléen| 
 +^29|1 octet|Transparence par addition ?^Booléen
 +^30|2 octets|Transparence par addition ?^01, 2 ou 3|
 ^32|2 octets|**Page**^| ^32|2 octets|**Page**^|
 ^34|2 octets|**<color red>EffectPage</color>**^| ^34|2 octets|**<color red>EffectPage</color>**^|
-^36|2 octets|Octets par couleur^1 (palettes) ou 2 (sans palettes)|+^36|2 octets|Octets par couleur^0 (peu de couleurs), 1 (palettes) ou 2 (sans palettes)|
 ^38|4 octets|Coordonnée Z^| ^38|4 octets|Coordonnée Z^|
 ^42|4 octets|Coordonnée X texture^| ^42|4 octets|Coordonnée X texture^|
Ligne 129: Ligne 134:
 ^6|2 octets^0|| ^6|2 octets^0||
 ^8|2 octets^0|| ^8|2 octets^0||
-^10|2 octets^0|| +^10|2 octets|**Position source X**^
-^12|2 octets^0|+^12|2 octets|**Position source Y**^| 
-^14|2 octets|**Position source X**^| +^14|2 octets|**Position source X (2)** (pour les effectPages)^| 
-^16|2 octets|**Position source Y**^|+^16|2 octets|**Position source Y (2)** (pour les effectPages)^|
 ^18|2 octets|Largeur bloc^32| ^18|2 octets|Largeur bloc^32|
 ^20|2 octets|Hauteur bloc^32| ^20|2 octets|Hauteur bloc^32|
 ^22|2 octets|**Numéro palette**^Commence à la palette n°0| ^22|2 octets|**Numéro palette**^Commence à la palette n°0|
 ^24|2 octets|**Id**^4096| ^24|2 octets|**Id**^4096|
-^26|2 octets|**Paramètre**^| +^26|1 octet|**Paramètre**^| 
-^28|2 octets|Transparence par addition ?^0 ou 1| +^27|1 octet|**État**^| 
-^30|2 octets|Transparence par addition^0 (inactive) ou 1 (active)|+^28|1 octet|Transparence par addition^Booléen| 
 +^29|octet|Transparence par addition ?^Booléen
 +^30|2 octets|Transparence par addition ?^0 ou 1|
 ^32|2 octets|**Page**^| ^32|2 octets|**Page**^|
 ^34|2 octets|**<color red>effectPage</color>**^| ^34|2 octets|**<color red>effectPage</color>**^|
-^36|2 octets|Type de palette^0 (peu de couleurs) ou 1 (palette normale)|+^36|2 octets|Type de palette^0 (peu de couleurs) ou 1 (palette normale) ou 2 (sans palettes)|
 ^38|4 octets^0|| ^38|4 octets^0||
 ^42|4 octets|Coordonnée X texture^| ^42|4 octets|Coordonnée X texture^|
Ligne 162: Ligne 169:
 ^20|2 octets|Hauteur bloc^32| ^20|2 octets|Hauteur bloc^32|
 ^22|2 octets|**Numéro palette**^Commence à la palette n°0| ^22|2 octets|**Numéro palette**^Commence à la palette n°0|
-^24|2 octets|**Id** ?^0| +^24|2 octets|**Id**^0| 
-^26|2 octets|**Paramètre**^| +^26|1 octet|**Paramètre**^| 
-^28|2 octets|Transparence par addition ?^0 ou 1| +^27|1 octet|**État**^| 
-^30|2 octets|Transparence par addition^0 (inactive) ou (active)|+^28|1 octet|Transparence par addition^Booléen| 
 +^29|octet|Transparence par addition ?^Booléen
 +^30|2 octets|Transparence par addition ?^0ou 3|
 ^32|2 octets|**Page**^| ^32|2 octets|**Page**^|
 ^34|2 octets|**<color red>effectPage</color>**^| ^34|2 octets|**<color red>effectPage</color>**^|
 ^36|2 octets|Type de palette^0 (peu de couleurs) ou 1 (palette normale)| ^36|2 octets|Type de palette^0 (peu de couleurs) ou 1 (palette normale)|
-^38|4 octets^0||+^38|4 octets|Coordonnée Z^0 ou 999|
 ^42|4 octets|Coordonnée X texture^| ^42|4 octets|Coordonnée X texture^|
 ^46|4 octets|Coordonnée Y texture^| ^46|4 octets|Coordonnée Y texture^|
Ligne 176: Ligne 185:
 ==== Paramètres ==== ==== Paramètres ====
  
-Dans la deuxième et troisième zone, il y a les deux octets que j'appelle "paramètre". Ceux-ci permettent de donner un numéro à un petit bout de l'image qui sera sous plusieurs états différents.+Dans la deuxième et troisième zone, il y a les deux octets que j'appelle "paramètre" et "états". Ceux-ci permettent de donner un numéro à un petit bout de l'image qui sera sous plusieurs états différents.
  
-Sur Final Fantasy VII, le plus grand numéro de paramètre observé est 25, on peut aller en théorie jusqu'au numéro 256 (soit 255 paramètres).+Sur Final Fantasy VII, le plus grand numéro de paramètre observé est 51, on peut aller en théorie jusqu'au numéro 256 (soit 255 paramètres).
  
-== Paramètre 1 ==+== États ==
  
-  * 257 +Les états sont rangés dans un octet où chaque bit correspond à un état (il y a donc 8 états)Si un bit est à 1, l'état correspondant existePar exemple si l'octet des états est à 00000010, l'état 2 est activé.
-  * 513 +
-  * 1025 +
-  * 2049 +
-  * ...+
  
-== Paramètre 2 ==+<note important>Parfois les numéros de certains paramètres ne se suivent pas.</note>
  
-  * 258 +===== Les données de l'image =====
-  * 514 +
-  * 1026 +
-  * 2050 +
-  * ...+
  
-== Paramètre n == +[{{ :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.}}]
- +
-  * n+256 (état 1) +
-  * n+256*2 (état 2) +
-  * n+256*4 (état 3) +
-  * n+256*8 (état 4) +
-  * ... (...) +
-  * n+256*128 (état 8) +
- +
-  paramètre + 256 * 2^(état - 1) +
- +
-<note important>Parfois ça ne commence pas à l'état 1, et parfois les numéros de certains paramètres ne se suivent pas.</note> +
- +
-===== 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.}}]+
  
 Elles sont toujours précédées par le mot-clé "TEXTURE". Elles sont toujours précédées par le mot-clé "TEXTURE".
Ligne 274: Ligne 261:
  if($Y > 32768) $Y-=65536;  if($Y > 32768) $Y-=65536;
  
- if($X>1000 || $X<-1000) $X=0;//fix X A AFFINER ! + if($X==10000 || $X==-3184) continue;//fix
- if($Y>1000 || $Y<-1000) $Y=0;//fix Y A AFFINER !+
   
  if($X > $largeurMax && $X > 0) $largeurMax = $X;  if($X > $largeurMax && $X > 0) $largeurMax = $X;
Ligne 296: Ligne 282:
 ==== 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).
Ligne 339: Ligne 326:
 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 ==
Ligne 365: Ligne 352:
 ==== 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.
Ligne 371: Ligne 358:
 === 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) :
Ligne 402: Ligne 389:
 ==== 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/>
Ligne 412: Ligne 399:
 ===== 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 SpritesCet id est compris entre 0 et 4096 (inclus), avec 0 le plus près et 4096 le plus éloignéDans les scriptson 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 effectPageune 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 :-) .
 + 
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Powered by DokuWiki GNU FDL

Qui sommes-nous ?
Aidez WikiSquare en le faisant connaître !
Sauf mention contraire, tous les textes sont disponibles sous les termes de la GNU Free Documentation License.
Les images sont sous le copyright de leurs auteurs.

Page générée en 0.027075052261353 seconde.