The Forum is up for sale: XeNTaX Forum looking for new owner

Halo Wars Model Files

Post questions about game models here, or help out others!
Post Reply
User avatar
ptowery
n00b
Posts: 12
Joined: Thu Aug 18, 2011 11:56 pm
Has thanked: 6 times
Contact:

Halo Wars Model Files

Post by ptowery »

Hello. I have a bunch of model files from Halo Wars. They don't appear to be compressed or encrypted, just raw model files. I believe they are big endian because of their origin, but am unsure. I was wondering if any of you could help me get it into 3ds max via maxscript or some 3rd party program or anything that can get it into a mainstream model format that can be read by some modeling program.

https://dl.dropbox.com/u/43157158/infectionform_01.ugx
https://dl.dropbox.com/u/43157158/infectedbrute_01.ugx
https://dl.dropbox.com/u/43157158/frcreepbase_01.ugx
Last edited by ptowery on Fri Oct 05, 2012 8:57 am, edited 1 time in total.
User avatar
ptowery
n00b
Posts: 12
Joined: Thu Aug 18, 2011 11:56 pm
Has thanked: 6 times
Contact:

Re: Halo Wars Model Files

Post by ptowery »

Okay I've figured out a lot of the header, but I can't seen to determine a float point.

Code: Select all

[byte4] Halo Wars File Signature
[byte4] ???
[byte4] Model Type (character, vehicle, scenery)
[byte4] File size
[byte4] Tag Type (model, texture, animation)
[byte4] ???
[byte12] Blank
[byte4] points to end of geometry
[byte4] ???
[byte4] ???
[byte4] ???
[byte4] ???
[byte4] ???
[byte4] nil
[byte4] ???
[byte4] points to after strings area
[byte4] ??
[byte4] ??
[byte4] ??
[byte4]
[byte4] Geometry Offset
[byte4] Geometry Block Length
I don't know if that's the geometry block it's pointing to, but this is what it points to.

Image

Does this make any sense to anyone?

Any way someone could just tell me where they think the vertex data might be?

This is also in the file but nothing in the header points to it.

Image


more things:
[*]Game was made by Ensemble Studios
[*]File is in Big Endian
[*]Animations were done with Granny by RAD Game Tools, might be part of the model format?
[*]From what I can tell it's a pretty simple model format.
RoadTrain
advanced
Posts: 54
Joined: Wed Dec 12, 2007 5:57 pm
Location: Russia
Has thanked: 29 times
Been thanked: 4 times

Re: Halo Wars Model Files

Post by RoadTrain »

Well files are big endian.
after the filesize (position 16) goes the number of blocks.
the header

Code: Select all

struct tHeader
{
  long magic;
  long headerLength; //?? =32 bytes
  long unk1; //hash?
  long fileSize; 
  short nBlocks; //number of blocks
  short null1; //=0
  long unk2; //hash?
  long null2[2];// 8 zero bytes
};
then go block definitions
each block is described as follows

Code: Select all

struct tBlockDefinition
{
  long null;//zeros
  long blockType;//1792-1797
  long offset;// the position in the file where the block starts
  long size; //size of block data
  long unk1; //maybe some form of hash
  long unk2; //??
};
Note that blocks are aligned to 16 bytes.
1793 block is clearly indices data.
also you can easily find floats, there are lots of them. You need to try loading them.
User avatar
ptowery
n00b
Posts: 12
Joined: Thu Aug 18, 2011 11:56 pm
Has thanked: 6 times
Contact:

Re: Halo Wars Model Files

Post by ptowery »

Thanks for the reply. Now I'm at block 1793's offset (0x3c80) and It kind of looks like it's put together in shorts, but verts would be floats for position in 3d space right? You meant vertices by indices right?
RoadTrain
advanced
Posts: 54
Joined: Wed Dec 12, 2007 5:57 pm
Location: Russia
Has thanked: 29 times
Been thanked: 4 times

Re: Halo Wars Model Files

Post by RoadTrain »

ptowery wrote:Thanks for the reply. Now I'm at block 1793's offset (0x3c80) and It kind of looks like it's put together in shorts, but verts would be floats for position in 3d space right? You meant vertices by indices right?
I suppose the vertices are somewhere above. Floats are aligned to 4 bytes probably so you should easily find them.
By indices I mean indices. Index is a short that refers to specific vertex. Three (usually) indices form a polygon.
Post Reply