World of Warcraft file formats

The Original Forum. Game archives, full of resources. How to open them? Get help here.
User avatar
Wobble
ultra-veteran
ultra-veteran
Posts: 584
Joined: Tue Jan 04, 2005 9:47 pm
Has thanked: 43 times
Been thanked: 112 times

World of Warcraft file formats

Post by Wobble » Tue Jan 04, 2005 11:10 pm

[out]
Last edited by Wobble on Sun Mar 12, 2017 12:41 pm, edited 1 time in total.

User avatar
Mr.Mouse
Site Admin
Posts: 4051
Joined: Wed Jan 15, 2003 6:45 pm
Location: Dungeons of Doom
Has thanked: 421 times
Been thanked: 575 times
Contact:

Post by Mr.Mouse » Wed Jan 05, 2005 12:21 am

Nice work, man! :)

User avatar
Wobble
ultra-veteran
ultra-veteran
Posts: 584
Joined: Tue Jan 04, 2005 9:47 pm
Has thanked: 43 times
Been thanked: 112 times

Post by Wobble » Wed Jan 05, 2005 12:32 am

[out]
Last edited by Wobble on Sun Mar 12, 2017 12:41 pm, edited 1 time in total.

User avatar
Wobble
ultra-veteran
ultra-veteran
Posts: 584
Joined: Tue Jan 04, 2005 9:47 pm
Has thanked: 43 times
Been thanked: 112 times

Post by Wobble » Wed Jan 05, 2005 3:17 am

[out]
Last edited by Wobble on Sun Mar 12, 2017 12:41 pm, edited 1 time in total.

User avatar
Mr.Mouse
Site Admin
Posts: 4051
Joined: Wed Jan 15, 2003 6:45 pm
Location: Dungeons of Doom
Has thanked: 421 times
Been thanked: 575 times
Contact:

Post by Mr.Mouse » Wed Jan 05, 2005 9:35 am

Yes, I would love to support theMPQ format, but it will be something for a plug-in, and Rahly and I are working on implementing a new Pluginmanager (which Rahly has completed). If that is all up and running, we can go create plugins for it. A plugin will enable us to work with more sophisticated archives, such as MPQ.

nicoli_s
advanced
Posts: 77
Joined: Fri Jan 07, 2005 7:47 am
Has thanked: 1 time
Been thanked: 3 times

Post by nicoli_s » Fri Jan 07, 2005 7:49 am

wow! someone else who is interested in the wow formats. I have a little more than you on the m2 done, and all the blp2 done as well as another model format, the wmo, email me sometime at warbeta3@hotmail.com if youd like to get together and compare notes

Rahly
VVIP member
VVIP member
Posts: 412
Joined: Thu Aug 05, 2004 10:17 am
Been thanked: 1 time

Post by Rahly » Sat Jan 08, 2005 3:07 am

MPQ is not a problem, although, unfortunately, the StormLib has change with the different games SC,Diablo,Diablo2, Warcraft III, WoW. Its also good to note that the MPQs for Diablo+ can also be encrypted. This means you need to know the right password to DECRYPT it. Unfortunately, MPQ do NOT store file names. You are expected to know the filename before you access it. You might be saying "WHAT?". The MPQ stores data in a large hashing table. when you say "open this file in the mpq" the stormlib hashes the file name 4 times. once to find its entry in the hash table, and 3 other hash to verify entry.
"By nature men are alike. Through practice they have become far apart." Confucius (Analect 17:2)

User avatar
Wobble
ultra-veteran
ultra-veteran
Posts: 584
Joined: Tue Jan 04, 2005 9:47 pm
Has thanked: 43 times
Been thanked: 112 times

Post by Wobble » Sat Jan 08, 2005 3:09 am

[out]
Last edited by Wobble on Sun Mar 12, 2017 12:41 pm, edited 1 time in total.

User avatar
Wobble
ultra-veteran
ultra-veteran
Posts: 584
Joined: Tue Jan 04, 2005 9:47 pm
Has thanked: 43 times
Been thanked: 112 times

WMO file format

Post by Wobble » Sat Jan 08, 2005 4:56 am

[out]
Last edited by Wobble on Sun Mar 12, 2017 12:41 pm, edited 1 time in total.

nicoli_s
advanced
Posts: 77
Joined: Fri Jan 07, 2005 7:47 am
Has thanked: 1 time
Been thanked: 3 times

Post by nicoli_s » Sun Jan 09, 2005 3:04 am

wmo data:
here is the WMO header
REVM
long Nbytes;
long Version;

DHOM
long Nbytes;
long numtextures;
long numsubfiles;
long ???;
long ???;
long num mdxs;
long ???;
long num SDOMs;
(11 unknown longs)

XTOM
long Nbytes;
struct {
string TexturePath; // There appears to be no real method to how many null bytes follow the texture filenames
} Texturepath[numtextures];

TMOM
long Nbytes;
???

NGOM
long Nbytes;
short ???; // (0)
struct {
string SubName; // Null terminated with one byte
} SubName[numsubfiles];

IGOM
long Nbytes;
struct {
long ???;
float minx;
float miny;
float minz;
float maxx;
float maxy;
float maxz;
float ???;
} BoundsInfo[numsubfiles];

VPOM
long Nbytes;
???

TPOM
long Nbytes;
???

RPOM
long Nbytes;
???

SDOM
long Nbytes;
string ???; // Null terminated with one byte, have no idea what it means

NDOM
long Nbytes;
???

DDOM long Nbytes;
???

GOFM
long Nbytes;
???

Here is the actual model files, they are referenced by the name of the wmo file with _### at the end

REVM
long Nbytes;
long Version;

PGOM
??? //Contains no Nbytes, but is always 72 bytes in size

YPOM
long Nbytes;
struct {
byte flags;
byte TextureId;
} VertTextData[Nbytes/2]

IVOM
long Nbytes;
struct {
short x;
short y;
short z;
} FaceData[Nbytes/6]
TVOM
long Nbytes;
struct {
float x;
float y;
float z;
} VertData[Nbytes/12]

RNOM
long Nbytes;
struct {
float x;
float y;
float z;
} NormalData[Nbytes/12]

VTOM
long Nbytes;
struct {
float x;
float y;
} TexVertData[Nbytes/8]

ABOM
long Nbytes;
???

NBOM
long Nbytes;
???

RBOM
long Nbytes;
???

and last but not least, the m2 specs

Header:
MD20
Long Version;
Long Name Length; // includes null termination
Long Name Offset;
Long ???;
Long ???;
Long ???;
Long nanims;
Long Anim Offset;
...
Long nverts; // offset 68
Long Vert Offset;
Long Primitive Type;
Long Face Offset;
...
Long ntexs; // offset 92
Long Tex Offset;
...
Float minx; // offset 180
Float miny;
Float minz;
Float maxx;
Float maxy;
Float maxz;
...
String name[Name Length]; // offset 336
//Null bytes till a multiple of 16 is reached
struct { // found at Anim Offset
Long animid; // found in animationdata.dbc
Long inststart;
Long intend;
Long movespeed;
Long nonlooping; // (0:loop; 1:no loop)
Long ???;
Long ???;
Long ???;
Long BlendTime;
Float minx, miny, minz;
Float maxx, maxy, maxz;
Long ???;
Long ???;
} sequences[nanims] // (68 bytes long)
Long ???;
Long ???;
...
struct {
Float x;
Float y;
Float z;
...
} pivots[npivots] // (108 bytes long)
struct {
float x;
float y;
float z;
Byte b1w; // these 4 bytes add up to 255
Byte b2w;
Byte b3w;
Byte b4w;
Byte b1i;
Byte b2i;
Byte b3i;
Byte b4i;
float nx;
float ny;
float nz;
float u;
float v;
Long ???;
Long ???;
} verts[nverts]
Long nverts;
Long foffsetstart;
Long NumFaces;
Long foffsetend;
...
struct { // starts at foffsetend
short x;
short y;
short z;
} faces[NumFaces]
struct { // starts at Tex Offset
Long ;
Long ???;
Long texlength;
Long pathoffset;
} texinfo[ntexs]
struct {
string[texlength];
Null bytes until a multiple of 16 is reached
} texpath[ntexs]

Long ???; // (0)
Short ???; // FFFF
Long ???; // (0)
Long ???; // (0)
Long ???; // (1)
Long unkoff1;
Long ???; // (1)
Long unkoff2;
Long ???; // (0)
Long ???; // at unkoff1 (0)
Long ???; // (0)
Long ???; // (0)
Long ???; // (0)
Long ???; // at unkoff1 (0xFF7F)

User avatar
Wobble
ultra-veteran
ultra-veteran
Posts: 584
Joined: Tue Jan 04, 2005 9:47 pm
Has thanked: 43 times
Been thanked: 112 times

Post by Wobble » Sun Jan 09, 2005 10:21 pm

[out]
Last edited by Wobble on Sun Mar 12, 2017 12:41 pm, edited 1 time in total.

User avatar
Wobble
ultra-veteran
ultra-veteran
Posts: 584
Joined: Tue Jan 04, 2005 9:47 pm
Has thanked: 43 times
Been thanked: 112 times

Post by Wobble » Sun Jan 09, 2005 11:24 pm

[out]
Last edited by Wobble on Sun Mar 12, 2017 12:40 pm, edited 1 time in total.

nicoli_s
advanced
Posts: 77
Joined: Fri Jan 07, 2005 7:47 am
Has thanked: 1 time
Been thanked: 3 times

Post by nicoli_s » Mon Jan 10, 2005 8:06 pm

well for the extra chunks in the WMO, i know at least one of the mhas to be collission data, which is what i think the MOBA is though im not entirely sure. what im stuck with atm is on the m2, i cant figure out how multi textured geosets work. there is so much more to the face section i dont understand

User avatar
Wobble
ultra-veteran
ultra-veteran
Posts: 584
Joined: Tue Jan 04, 2005 9:47 pm
Has thanked: 43 times
Been thanked: 112 times

Post by Wobble » Tue Jan 11, 2005 12:22 am

[out]
Last edited by Wobble on Sun Mar 12, 2017 12:40 pm, edited 1 time in total.

User avatar
Wobble
ultra-veteran
ultra-veteran
Posts: 584
Joined: Tue Jan 04, 2005 9:47 pm
Has thanked: 43 times
Been thanked: 112 times

Post by Wobble » Tue Jan 11, 2005 12:52 am

[out]
Last edited by Wobble on Sun Mar 12, 2017 12:40 pm, edited 2 times in total.

Post Reply