I'm working on a tool in order to decompile and compile PCC files.
I'm doing this more for the sake of seeing why something like this hasn't been made yet.
Currently, it can only create XML's and extract export data. I still have to make the "compile" part, and see if the game will accept the rebuilt PCC.
Also, about PCC file format: currently, we have the ME3Explorer's wiki article , but it has some inconsistencies...
Fortunately, I was able to find reliable information elsewhere:
http://wiki.tesnexus.com/index.php/UPK_ ... OM:EU_2012
https://wiki.beyondunreal.com/Unreal_package
Most of XCOM's UPK structures match PCC's, so I'm basing my work off that.
EDIT: online now!
Repository: https://github.com/Erik-JS/PCCBuilder
Binary only: https://www.dropbox.com/s/idgf2grgt5wuz ... er.7z?dl=0
PCC Builder / PCC File Format
PCC Builder / PCC File Format
Last edited by Erik JS on Thu Mar 10, 2016 4:59 pm, edited 1 time in total.
Re: [WIP] PCC Builder / PCC File Format
Would it be easier for it to be be <INT ID=....> instead of <Intid>? It is much harder to pick tags that change over time. I look forward to testing this =]
I have found some items items from the pccobject code that are incorrect. They work on pc because of endianness, but when reversing it for Xbox it does not (like they have 64bit inta when its two 32bits, e.g. export name)Or vice versa (high and low version)
I have found some items items from the pccobject code that are incorrect. They work on pc because of endianness, but when reversing it for Xbox it does not (like they have 64bit inta when its two 32bits, e.g. export name)Or vice versa (high and low version)
Re: PCC Builder / PCC File Format
Alright, the tool has been officially released now. Links in the first post.
Unknown fields are marked as "UnkXX" instead of "IntXX" in order to avoid confusion with the actual int data type.
Btw, I figured out one of the header's unknown fields today: GameVersion. This explains why a certain "7C" changed to "85", in TESTPATCH's PCC's from 1.5 to 1.6.
Rules for fields:
PCC/Header/GUID: 32 chars, 16 bytes as hex string
PCC/Exports/ExportXXX/Data: path to export data file, relative to the XML.
Everything else: 32-bit number, as signed int or hex (for example: "-1" and "0xFFFFFFFF" should result in the same thing when written back into the PCC).
Unknown fields are marked as "UnkXX" instead of "IntXX" in order to avoid confusion with the actual int data type.
Btw, I figured out one of the header's unknown fields today: GameVersion. This explains why a certain "7C" changed to "85", in TESTPATCH's PCC's from 1.5 to 1.6.
Rules for fields:
PCC/Header/GUID: 32 chars, 16 bytes as hex string
PCC/Exports/ExportXXX/Data: path to export data file, relative to the XML.
Everything else: 32-bit number, as signed int or hex (for example: "-1" and "0xFFFFFFFF" should result in the same thing when written back into the PCC).
Re: PCC Builder / PCC File Format
ErikJS, if you are trying to work with pcc files you may be interested in my xbox version of pcceditor2. It handles endianness, and I have found a lot of inconsistencies in the normal pcceditor2 that assumes values are a certain size (or does really... interesting casting) that aren't correct. E.g. a 64 => 32bit cast that works by accident on PC (does not work for xbox files).
Re: PCC Builder / PCC File Format
Currently, I'm trying to implement some algorithm for compression and decompression. Here, for some reason, ME3 is failing to load some uncompressed files, and ME3Explorer's PCC Repacker has failed in repacking Asari_Adept_MP.pcc, I don't know why, but it's likely that other files may fail as well. The way I'm doing things here is by not looking at PCCEditor2's code (for as long as possible, anyway...).