The character meshes are in the PCK files, while the level terrain/building meshes are in the PAC files.


hgface.jpg


Attempts to find/extract vertexes:
hg1char.jpg
hg2015.jpg


hgbuilding.jpg




Format of the character meshes:

.......
2ByteSignedIntegerVertex(X,Y,Z)
......

Format of the PCK files

4ByteInteger#ofFiles
{FirstFileOffset,SecondFileOffset,....}

...
The first file (???) Contains offsets to (some? all?) models at relative offset pointer at 0x4.
Since the first file is located at absolute offset 0x4, we write that the first set of a subfile that contains models is located at offset:
[[0x4]+0x4]+[0x4] ???? missing bracket, lets call this subfile FileAlpha

Format of File Alpha:
The header is 16Bytes long
Headerformat:
4ByteInteger#ofFiles
12Byte Unknown
Next is a 48ByteArray of Each file:
{4ByteInteger#ofVertexes,4ByteOffset:VertexSection,4ByteOffset:TextureMappingSection,4ByteOffset:NormalMappingSection,4ByteOffset:UnknownSection#1 ,4ByteOffset:UnknownSection#2,4ByteOffset:TriStripInfoSection,4ByteInteger,4ByteInteger,4ByteInteger,4ByteOffset:BaseSection,4ByteInteger}
Each offset is relative to the start of the 48ByteInteger array.

VertexSection Format:
Header:
16ByteInteger
Data:
{2ByteSignedIntegerVertexes}

TextureMappingSection Format:
{2ByteSignedIntegerTextureUVMappings}

NormalMappingSection Format:
{2ByteSignedIntegerNormalMappings}

UnknownSection#1 Format:
{4ByteIntegerArrays}

UnknownSection#2 Format:
{2ByteIntegerArrays}

TriStripInfoSection Format:
{1ByteCONN}
Where each CONN is either 1 or 0
If two CONNs in a row are 1 that signifies
that the tristrip has just been reset.

Base Section Format:
Unknown4ByteNumber