Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

PZZ (Gotcha Force): Difference between revisions

Line 45: Line 45:
On sait désormais que les PZZ avec le nom plxxxx.pzz correspondent chacun à un borg. Ils contiennent des fichiers spécialisés à chacune des positions dans le pzz. Il arrive que le fichier à une position donnée soit présent dans certains pzz et absent dans d'autres :
On sait désormais que les PZZ avec le nom plxxxx.pzz correspondent chacun à un borg. Ils contiennent des fichiers spécialisés à chacune des positions dans le pzz. Il arrive que le fichier à une position donnée soit présent dans certains pzz et absent dans d'autres :


* 0 fichier data.bin  -> parfois absent, identique à plxxxxdata.bin (ou data2, data3) dans l'afs_data
* 000 fichier data.bin  -> parfois absent, identique à plxxxxdata.bin (ou data2, data3) dans l'afs_data
* 1
* 001
* 2 fichier hit.bin  -> toujours présent, et identique à plxxxxhit.bin dans l'afs_data
* 002 fichier hit.bin  -> toujours présent, et identique à plxxxxhit.bin dans l'afs_data
* 3 fichier mot.bin  -> souvent absent, identique à plxxxxmot.bin dans l'afs_data
* 003 fichier mot.bin  -> souvent absent, identique à plxxxxmot.bin dans l'afs_data
* 4 fichier _mdl.arc  -> parfois absent, identique à plxxxx_mdl.arc dans l'afs_data
* 004 fichier _mdl.arc  -> parfois absent, identique à plxxxx_mdl.arc dans l'afs_data
* 5 fichier b_mdl.arc -> parfois absent, identique à plxxxxb_mdl.arc dans l'afs_data
* 005 fichier b_mdl.arc -> parfois absent, identique à plxxxxb_mdl.arc dans l'afs_data
* 6 fichier g_mdl.arc -> parfois absent, identique à plxxxxg_mdl.arc dans l'afs_data
* 006 fichier g_mdl.arc -> parfois absent, identique à plxxxxg_mdl.arc dans l'afs_data
* 7 fichier s_mdl.arc -> parfois absent, identique à plxxxxs_mdl.arc dans l'afs_data
* 007 fichier s_mdl.arc -> parfois absent, identique à plxxxxs_mdl.arc dans l'afs_data
* 8 fichier c_mdl.arc -> parfois absent, identique à plxxxxc_mdl.arc dans l'afs_data
* 008 fichier c_mdl.arc -> parfois absent, identique à plxxxxc_mdl.arc dans l'afs_data
* 9 fichier k_mdl.arc -> parfois absent, identique à plxxxxk_mdl.arc dans l'afs_data
* 009 fichier k_mdl.arc -> parfois absent, identique à plxxxxk_mdl.arc dans l'afs_data
* 10 [[TPL (Format de fichier)|TPL]] -> nom du borg en japonais
* 010 [[TPL (Format de fichier)|TPL]] -> nom du borg en japonais
* 11 [[TPL (Format de fichier)|TPL]] -> nom du borg en japonais (petit format)
* 011 [[TPL (Format de fichier)|TPL]] -> nom du borg en japonais (petit format)
* 12 [[TPL (Format de fichier)|TPL]] -> nom du borg dans la langue du jeu
* 012 [[TPL (Format de fichier)|TPL]] -> nom du borg dans la langue du jeu
* 13 [[TPL (Format de fichier)|TPL]] -> nom du borg dans la langue du jeu (petit format)
* 013 [[TPL (Format de fichier)|TPL]] -> nom du borg dans la langue du jeu (petit format)


Les [[TPL (Format de fichier)|TPL]] contiennent le nom des borgs en japonais (version JAP) ou en anglais et japonais (version NTSC). En position 4 à 8, on retrouve des fichiers avec des valeurs correspondantes à de la 3D. On peut notamment citer "'''pl0300.pzz'''" ou les position 4 à 8 ont un header <span style="color: rgb(241, 196, 15);">avec des flags</span> ainsi qu'un padding ajustable si besoin est d'avoir plus d’éléments '''Par exemple pour ''pl0629.pzz'' la quantité <span style="color: rgb(241, 196, 15);">de flags</span> dans le headers est plus conséquente.''' L'origine <span style="color: rgb(241, 196, 15);">des flags</span> et des valeurs dans le header est pour l'instant inconnue mais ces champs du header <span style="color: rgb(241, 196, 15);">pourraient constituer une liste de mesh disponibles dans le fichier.</span>
Les [[TPL (Format de fichier)|TPL]] contiennent le nom des borgs en japonais (version JAP) ou en anglais et japonais (version NTSC). En position 4 à 8, on retrouve des fichiers avec des valeurs correspondantes à de la 3D. On peut notamment citer "'''pl0300.pzz'''" ou les position 4 à 8 ont un header <span style="color: rgb(241, 196, 15);">avec des flags</span> ainsi qu'un padding ajustable si besoin est d'avoir plus d’éléments '''Par exemple pour ''pl0629.pzz'' la quantité <span style="color: rgb(241, 196, 15);">de flags</span> dans le headers est plus conséquente.''' L'origine <span style="color: rgb(241, 196, 15);">des flags</span> et des valeurs dans le header est pour l'instant inconnue mais ces champs du header <span style="color: rgb(241, 196, 15);">pourraient constituer une liste de mesh disponibles dans le fichier.</span>


"'''pl0f07.pzz'''" correspond à un borg non implémenté
"'''pl0f07.pzz'''" correspond à un borg non implémenté
==== Fichiers stxx.pzz ====
Pour tous les fichiers en position 001, 002, et 003 des ''stxx.pzz'', on retrouve un fichier identique dans les fichiers hitxxx.bin. On remarque qu'une même position peux correspondre à plusieurs fichiers hitxxx.bin à la fois. En effet, les fichiers hitxxx.bin peuvent être identiques.
==== 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_comxx.tsb ?
* 001 -> snd_comxx.chd ?
* 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 ?
* 002 -> efct01_mdl.arc ?
=== Fichiers dpxxxx.pzz ===
* 000 -> plxxxxdata.bin de l'afs_data
* 001 -> fichier vide
* 002 -> plxxxxhit.bin de l'afs_data
* 003 -> plxxxxmot.bin de l'afs_data
* 004 -> plxxxx_mdl.arc ?
* 005 -> plxxxxb_mdl.arc ?
* 006 -> plxxxxg_mdl.arc ?
* 007 -> plxxxxs_mdl.arc ?
* 008 -> plxxxxc_mdl.arc ?
* 009 -> plxxxxk_mdl.arc ?
=== 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 ==
== Logiciel ==

Revision as of 10:54, 28 November 2021

← 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.

Les fichiers PZZ sont des dossiers d'archive.

Cette section est en cours de rédaction.

Des recherches sont encore nécessaires et certains paragraphes peuvent être faux.

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 plxxxx.pzz

On sait désormais que les PZZ avec le nom plxxxx.pzz correspondent chacun à un borg. Ils contiennent des fichiers spécialisés à chacune des positions dans le pzz. Il arrive que le fichier à une position donnée soit présent dans certains pzz et absent dans d'autres :

  • 000 fichier data.bin -> parfois absent, identique à plxxxxdata.bin (ou data2, data3) dans l'afs_data
  • 001
  • 002 fichier hit.bin -> toujours présent, et identique à plxxxxhit.bin dans l'afs_data
  • 003 fichier mot.bin -> souvent absent, identique à plxxxxmot.bin dans l'afs_data
  • 004 fichier _mdl.arc -> parfois absent, identique à plxxxx_mdl.arc dans l'afs_data
  • 005 fichier b_mdl.arc -> parfois absent, identique à plxxxxb_mdl.arc dans l'afs_data
  • 006 fichier g_mdl.arc -> parfois absent, identique à plxxxxg_mdl.arc dans l'afs_data
  • 007 fichier s_mdl.arc -> parfois absent, identique à plxxxxs_mdl.arc dans l'afs_data
  • 008 fichier c_mdl.arc -> parfois absent, identique à plxxxxc_mdl.arc dans l'afs_data
  • 009 fichier k_mdl.arc -> parfois absent, identique à plxxxxk_mdl.arc dans l'afs_data
  • 010 TPL -> nom du borg en japonais
  • 011 TPL -> nom du borg en japonais (petit format)
  • 012 TPL -> nom du borg dans la langue du jeu
  • 013 TPL -> nom du borg dans la langue du jeu (petit format)

Les TPL contiennent le nom des borgs en japonais (version JAP) ou en anglais et japonais (version NTSC). En position 4 à 8, on retrouve des fichiers avec des valeurs correspondantes à de la 3D. On peut notamment citer "pl0300.pzz" ou les position 4 à 8 ont un header avec des flags ainsi qu'un padding ajustable si besoin est d'avoir plus d’éléments Par exemple pour pl0629.pzz la quantité de flags dans le headers est plus conséquente. L'origine des flags et des valeurs dans le header est pour l'instant inconnue mais ces champs du header pourraient constituer une liste de mesh disponibles dans le fichier.

"pl0f07.pzz" correspond à un borg non implémenté

Fichiers stxx.pzz

Pour tous les fichiers en position 001, 002, et 003 des stxx.pzz, on retrouve un fichier identique dans les fichiers hitxxx.bin. On remarque qu'une même position peux correspondre à plusieurs fichiers hitxxx.bin à la fois. En effet, les fichiers hitxxx.bin peuvent être identiques.

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_comxx.tsb ?
  • 001 -> snd_comxx.chd ?
  • 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 ?
  • 002 -> efct01_mdl.arc ?

Fichiers dpxxxx.pzz

  • 000 -> plxxxxdata.bin de l'afs_data
  • 001 -> fichier vide
  • 002 -> plxxxxhit.bin de l'afs_data
  • 003 -> plxxxxmot.bin de l'afs_data
  • 004 -> plxxxx_mdl.arc ?
  • 005 -> plxxxxb_mdl.arc ?
  • 006 -> plxxxxg_mdl.arc ?
  • 007 -> plxxxxs_mdl.arc ?
  • 008 -> plxxxxc_mdl.arc ?
  • 009 -> plxxxxk_mdl.arc ?

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