mirror of
https://github.com/Virtual-World-RE/NeoGF.git
synced 2024-11-15 10:45:33 +01:00
Revue des commentaires et nommages dans unpack
Revue des commentaires et nommages dans unpack de sorte à ce que ce soit très clair
This commit is contained in:
parent
f250b7a953
commit
dd77963e4b
25
pzztool.py
25
pzztool.py
|
@ -139,27 +139,24 @@ def pzz_unpack(path, dir_path):
|
||||||
""" BMS script: https://zenhax.com/viewtopic.php?f=9&t=8724&p=39437#p39437
|
""" BMS script: https://zenhax.com/viewtopic.php?f=9&t=8724&p=39437#p39437
|
||||||
"""
|
"""
|
||||||
with open(path, "rb") as f:
|
with open(path, "rb") as f:
|
||||||
file_count = f.read(4)
|
file_count = f.read(4) # file_count contient le nombre de fichiers dans le PZZ
|
||||||
file_count, = unpack(">I", file_count) # < big-endian uint32
|
file_count, = unpack(">I", file_count) # big-endian uint32
|
||||||
|
|
||||||
#file_count contient la taille en groupes de 4 octets
|
|
||||||
|
|
||||||
size = f.read(file_count * 4)
|
size = f.read(file_count * 4)
|
||||||
# size contient l'ensemble des octets du fichier
|
# size contient l'ensemble des descripteurs de fichiers du header PZZ
|
||||||
size = unpack(">{}I".format(file_count), size)
|
size = unpack(">{}I".format(file_count), size)
|
||||||
# size contient le fichier par groupes d'uint32
|
# size contient les descripteurs de fichiers au format uint32
|
||||||
|
|
||||||
print("File count:", file_count)
|
print("File count:", file_count)
|
||||||
|
|
||||||
offset = 0x800
|
offset = 0x800
|
||||||
|
# Le PZZ contient le header et les fichiers séparés tous les 0x800
|
||||||
for i, s in enumerate(size): # on a un ensemble d'uint32 et leur index qu'on parcours
|
for i, s in enumerate(size): # on a un ensemble d'uint32 et leur index qu'on parcours
|
||||||
is_compressed = (s & 0x40000000) != 0 # "and" avec le bit du poids le plus fort
|
is_compressed = (s & 0x40000000) != 0 # "& bit à bit" avec le bit de compression (bit30)
|
||||||
print(s)
|
|
||||||
s &= 0x3FFFFFFF # s contient maintenant tous les bits sans le bit du poids le plus fort
|
s &= 0x3FFFFFFF # s contient maintenant la taille du fichier sans les bits de flag (bit30, bit31)
|
||||||
print(s)
|
s *= 0x800 # taille fichier * 0x800
|
||||||
s *= 0x800 # 1000 0000 0000
|
|
||||||
# s doit contenir la taille du fichier
|
|
||||||
#print( s )
|
|
||||||
if s == 0:
|
if s == 0:
|
||||||
continue
|
continue
|
||||||
comp_str = ""
|
comp_str = ""
|
||||||
|
@ -326,4 +323,4 @@ if __name__ == '__main__':
|
||||||
print(filename)
|
print(filename)
|
||||||
pzz_unpack(filename, p_output)
|
pzz_unpack(filename, p_output)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user