Cet article est pour les format de fichiers PZZ de Gotcha Force. Voir PZZ (Format de fichier) pour les autres versions de ce fichier.
Les fichiers PZZ sont des dossiers d'archive.
Format
Les PZZ se composent d'un header de 2048 octets, soit 0x800 octets. A la suite de ce header se trouvent les fichiers inscrit les uns à la suite des autres. Ces fichiers peuvent être compressés ou non.
Header
Le premier champs du header est un uint32 big endian contenant le nombre de fichiers total de l'archive.
On retrouve après une suite de descripteurs de fichiers au format uint32 big endian. Ces descripteurs de fichiers contiennent la somme d'un flag de compression et de la taille du fichier en octet divisée par 2048 (0x800).
Si on numérote les bits d'un descripteur de fichier de 0 (poids faible) à 31 (poids fort) :
bit 31 est inutilisé, le bit 30 représente le flag de compression, les 30 bits de 0 à 29 représente la taille du fichier divisée par 2048 (0x800).
Le flag de compression est à 1 si le fichier est compressé, 0 sinon. Le bit 31 du descripteur de fichier est inutilisé et. Le masque pour obtenir la taille du fichier divisé par (0x800) est le suivait : 0
Pour mieux comprendre le format du descripteur de fichier, voici un exemple :
Le premier fichier fait 3258 octets et il est compre
Algorithme de compression
Observations
Les fichiers PZZ contiennent entre autres des fichiers TPL affichant le nom des borgs dans différentes langues (version PAL), ou encore le nom des borgs en japonais (version JAP) ou en anglais (version NTSC).
Certains fichiers extraits des PZZ contiennent des indices sur un potentiel format d'animation 3D. <- Attention, il faut citer les dits fichiers
Dans le header des PZZ, on retrouve parfois des file_descriptor=NULL. On peut notamment citer "pl0f07.pzz" qui a un header se terminant par plusieurs descripteurs de fichiers NULL :
- Théorie 1 : On a une librairie parsant les PZZ qui utilise des pointeurs de fichiers et on initialise ces pointeurs à NULL quand les fichiers n'existent pas.
- Théorie 2 : On aurait des pointeurs sur des adresses absolues dans le DVD et les mises à jour auraient supprimé certains fichiers pour garder les mêmes adresses en augmentant la taille d'autres.
- Théorie 3 : Erreur de programmation des devs / ou reste de développements qui n'ont pas été implémentés / ou supprimés / cela peut résulter d'anciens fichiers en rapport avec la version bêta du jeu.
Logiciel
Virtual World RE a développé le script python pzztool.py permettant de manipuler les archives PZZ et leurs fichiers internes, en s'inspirant d'un script de manipulation pzz de PS2.