Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Revision as of 12:44, 17 April 2022 by Algoflash (talk | contribs)

← Gotcha Force

Cet article est pour les format de fichiers PZZ de Gotcha Force. Voir PZZ (Format de fichier) pour les autres versions de ce fichier.

Cette section est en cours de rédaction.
Des recherches sont encore nécessaires et certains paragraphes peuvent être faux.

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 champ du header est un uint32 big endian contenant le nombre de fichiers total de l'archive. On retrouve après une suite de taille variable de descripteurs de fichiers au format uint32 big endian. Chaque fichier est paddé avec des "\x00" pour avoir une taille multiple de 0x800.

Format descripteur de fichier

Si on numérote les bits d'un descripteur de fichier de 0 (poids faible) à 31 (poids fort) :

  • bit 31 - inutilisé,
  • bit 30 - Flag de compression : est à 1 si le fichier est compressé, 0 sinon,
  • bit 0 à 29 (30 bits) - taille du fichier divisée par 2048 (0x800),

taille_fichier (octets) = (descripteur_fichier & 0x3FFFFFFF) * 0x800
bCompression = descripteur_fichier & 0x40000000

Pour mieux comprendre le format du descripteur de fichier, voici un exemple :

Le premier fichier de l'archive fait 12288 octets et il est compressé, son descripteur est alors (12288/0x800)+0x40000000 = 0x40000006. On le stockera dans l'entête en big endian (40 00 00 06) juste à la suite du nombre de fichiers.

Le descripteur de fichier peut décrire un fichier vide. Il correspondra alors à "00 00 00 00" mais sera compté dans le nombre de fichier au début du header.

Padding des fichiers

Lors ce que le fichier à extraire du pzz n'est pas compressé, on a alors un padding présent à sa fin. Il devient alors impossible de déterminer quel padding enlever précisément. En effet, le fichier peut se terminer par des "00".

Algorithme de compression

L'algorithme de compression reste à déterminer.

Observations

Fichiers et compression

Tous les fichiers stxx.pzz -> 000 sont packés non compressés ainsi que les fichiers firstld.pzz -> 000, 001, 002 et 005. Les autres fichiers des pzz sont tous packés compressés.

Fichiers stxx.pzz (40)

  • 001 -> fichier identique dans les fichiers hitxxx.bin
  • 002 -> fichier identique dans les fichiers hitxxx.bin
  • 003 -> fichier identique dans les fichiers hitxxx.bin
  • 004 -> ?

Une même position peux correspondre à plusieurs fichiers hitxxx.bin à la fois. En effet, les fichiers hitxxx.bin peuvent être identiques les uns des autres.

Les fichiers hits commencent par le magic number "STIH" soit HITS en big endian.

Fichier gets.pzz

  • 000 -> ?
  • 001 -> ?
  • 002 -> ?
  • 003 -> ?
  • 004 -> ?
  • 005 -> ?
  • 006 -> ?
  • 007 -> ?
  • 008 -> hit000.bin de l'afs_data
  • 009 -> hit001.bin de l'afs_data
  • 010 -> hit002.bin de l'afs_data

Fichier firstld.pzz

  • 000 -> snd_com04.tsb (problème de padding car le fichier est unpack en "U")
  • 001 -> snd_com04.chd (problème de padding car le fichier est unpack en "U")
  • 002 -> ?
  • 003 -> icon.bin de l'afs_data
  • 004 -> ?
  • 005 -> mc_msg00.mdt de l'afs_data (à implémenter dans pzztool.py)
  • 006 -> as_icon.tpl de l'afs_data (à implémenter dans pzztool.py)

Fichier efct.tpl

  • 000 -> efct00.tpl de l'afs_data
  • 001 -> efct00_mdl.arc de l'afs_data
  • 002 -> efct01_mdl.arc de l'afs_data

Fichier cmn_data.pzz

  • 000 -> comhit.bin (à implémenter dans pzztool.py)
  • 001 -> comhit2.bin (à implémenter dans pzztool.py)
  • 002 -> dm0000mot.bin (à implémenter dans pzztool.py)
  • 003 -> plcmndata.bin (à implémenter dans pzztool.py)

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.

Catégorie:Format de fichier Catégorie:Gotcha Force