82c1d69c65
fix align check |
||
---|---|---|
.github/workflows | ||
.vscode | ||
data | ||
.gitignore | ||
gcmtool.py | ||
pzztest.py | ||
pzztool.py | ||
README.md |
NeoGF
NeoGF is a library of tools for Gotcha Force.
This project is still under "heavy" development. It not yet 100% ready to use.
Do not hesitate to contribute.
If you want more infos about the game, go read our Gotcha Force Wiki.
pzztool.py
Python3 script for unpack/repack unpzz/pzz and uncompress/compress of PZZ archive. MDT files are also handled by pzztool.py.
How to patch a pzz
- Extract afs_data.afs from the ROM
- Extract the pzz file from afs_data.afs
- unpzz it
- Edit files in decompressed folder keeping the filename important parts inchanged (see "Extracted files format" for further informations)
- pzz the decompressed folder
- Import back the patched pzz in the afs_data.afs
- Patch the ROM with new afs_data.afs
User manual
unpzz source.pzz in the default new folder source. If optional_dest_folder is specified we unpack in optional_dest_folder. unpzz handle auto-decompress of all files extracted.
pzztool.py -unpzz source.pzz optional_dest_folder
pzz source_folder in the default new pzz file source_folder.pzz. If optional_dest.pzz is specified we pzz in optional_dest.pzz. pzz handle auto-compress / auto-decompress of all files extracted from the pzz according to their initial states in the pzz.
pzztool.py -pzz source_folder optional_dest.pzz
unpzz every pzz files present in source_folder using the same directory. For each pzz a folder is created using the name of the pzz. If optional_dest_folder is specified we unpzz all files in optional_dest_folder instead of source_folder. The batch pzz command could be very time consuming (1h30 for whole pzz in afs_data).
pzztool.py -bunpzz source_folder optional_dest_folder
pzz every folder present in source_folder using the same directory. For each folder a pzz file is created using the name of the pzz. If optional_dest_folder is specified we pzz all folders in optional_dest_folder instead of source_folder. The batch pzz command could be very time consuming (1h30 for whole pzz in afs_data).
pzztool.py -bpzz source_folder optional_dest_folder
Unpack source.pzz in the default new folder source. If optional_dest_folder is specified we unpack in optional_dest_folder. This is faster than unpzz but compression must be handled by user after the unpack.
pzztool.py -u source.pzz optional_dest_folder
Pack source_folder in the default new pzz file source_folder.pzz. If optional_dest.pzz is specified we pack in optional_dest.pzz. This is faster than pzz but compression must be handled by user before the pack.
pzztool.py -p source_folder optional_dest.pzz
Unpack every pzz files present in source_folder using the same directory. For each pzz a folder is created using the name of the pzz. If optional_dest_folder is specified we unpack all files in optional_dest_folder instead of source_folder.
pzztool.py -bu source_folder optional_dest_folder
Pack every folder present in source_folder using the same directory. For each folder a pzz file is created using the name of the pzz. If optional_dest_folder is specified we pack all folders in optional_dest_folder instead of source_folder.
pzztool.py -bp source_folder optional_dest_folder
Extracted files format
Every file extracted has a name using the format :
AAAB_C.D
- AAA is the 3 digits index of the file in the PZZ starting at 000.
- B describe the compression state of the file when packed in the PZZ. If compressed it's C and if not it's U.
- C is the name of the PZZ.
- D is the extension of the file. If the file is compressed it's .pzzp (PZZ Part) and if the file is uncompressed by default it's .dat
For example file 012C_cmn_data.dat describe :
- the 13th file off the pzz,
- initialy compressed,
- in a pzz named "cmn_data.pzz",
- that has been uncompressed,
- with the default format "dat".
The names of unpacked files and the presence of empty unpacked files are important to keep informations relative to the initial pzz and ensure a correct pack.