Finally I'm back with an update.
Now the whole 100% of the input file is extracted so problem solved
Still remain some "misteries" that don't affect the current extraction like:
- why the ZSIZE field is ever smaller than the real one, it's necessary to trust only the SIZE one
- the SIZE2 field looks like a sort of additional content of the same file (for example a DDS image), it was the cause of the incomplete coverage of the archive in previous script
- the NUM field which looks totally useless
- there are some extracted files with "dat" extension that are small archives, they have no "magic" identifier so no way to avoid false positives trying to parse them, anyway the script can extract them if you open one of them (one of the correct ones)
Now the names of the files are their name hash, better than the sequential number used before I guess.
P.S.: the files with "vap" extension contain the string "dwnDxtBitmap" in them, in case it's useful. "trr" files have the "trrn" magic and contain various IPD1 files and the "HUNK" string. "cl5" files have an "HUNK" string too at offset 0x10. The remaining "dat" are those sort of archives that you can extract using the same script on them. "fsb" obviously are a job for fsbext