Cataclysm

From WoWDev

Jump to: navigation, search

Contents

m2

generally the same, some small changes.

changes

camera

FOV is now animatable. Its found in a new animation block at the end.

Offset Type Name Description
0x00 uint32 Type 0: potrait, 1: characterinfo; -1: else (flyby etc.); referenced backwards in the lookup table.
0x04 float FarClipping Where it stops to be drawn.
0x08 float NearClipping Far and near. Both of them.
0x0C ABlock TranslationPos How the camera's position moves. Should be 3*3 floats. (WoW parses 36 bytes = 3*3*sizeof(float))
0x20 float Position[3] Where the camera is located.
0x2C ABlock TranslationTar How the target moves. Should be 3*3 floats.
0x40 float Target[3] Where the camera points to.
0x4C ABlock Scaling The camera can have some roll-effect. Its 0 to 2*Pi. 3 Floats!
0x60 ABlock FOV 1 Float

Model.blob (new)

This is storing bounding boxes for all models.

structure

MBVR

uint32_t version;

MBBB

struct {
  uint32_t filenameOffset; // into MBFN chunk
  float boundingBox[2][3]; // No idea of colision or vertex bounding box. Cba to check this right now.
} entries[];

MBFN

char filenames[]; // zero-terminated, no file extensions.

tex (new)

This is storing really low resolution textures for use if the real file is not yet loaded or streamed.

structure

TXVR

uint32_t version;

TXBT

struct SBlobTexture {
  uint32_t filenameOffset;
  uint32_t txmdOffset; // TXMD-chunk offset relative to end of TXFN-chunk.
  uint8_t sizex;
  uint8_t sizey;
  uint8_t type; // 0x80 already loaded (set on runtime)
  uint8_t flags;
} entries[];

TXFN

char filenames[]; // zero-terminated, no file ending

TXMD[]

char textureData[]; // length depends on size, type and flags.

ADT

These are separated into multiple files now. The adt itself has terrain information, the _obj0.adt has doodad and wmo information and the needed information in the mcnks, the _tex adts have texturing information.

In MHDR: The field behind MFBO is MAMP.

The structures may be incomplete as I have not yet verified them with all exisiting files. (and probably never will.) There may be additional chunks.


3.x to 4.x adt : schema. Most of the data inside the chunks seems to be close to identical to what it was before Cataclysm. MCIN is gone, and chunk sizes now have to be right.

adt (terrain) structure

MVER

uint32_t version;

MHDR

Most of the data has disappeared, since it's split into the 3 files. So almost the whole header is filled with zeros, and there only seems to be offsets to the chunks remaining in the same file.

MH2O (optional)

MCNK[256]

MCVT

MCCV (optional)

MCLV (optional)

The chunk is for vertex "lighting" : vertices can shine in the dark, like on this screenshot. It's heavily used in Deepholme for example.

It has the same structure as MCCV, and works pretty much the same way : one color per vertex.

struct MCLV {
  struct MCLVEntry {
    uint8_t red;                  // these values range from 0x00 to 0xFF.
    uint8_t green;                
    uint8_t blue;                 
    uint8_t ??;                   // seems not to have any effect.
  } entries[9*9+8*8];
};

MCNR

Chunk size has been updated, so that it now contains the additional data.

MCLQ (optional)

MCSE

MCBB, MCBI, MCBV (optional)

These three sub-chuncks appear one after another, all three, right after MCVT. Azeroth, Kalimdor and many Cata-zones have these;

MFBO (optional)

*_obj0.adt structure

MVER

uint32_t version;

MMDX

char filenames[]; // zero-terminated. multiple filenames

MMID

int filenameOffsets[]; // offsets into MMDX

MWMO

char filenames[]; // zero-terminated. multiple filenames

MWID

int filenameOffsets[]; // offsets into MWMO

MDDF

struct 
{
  uint32_t mmidEntry;
  uint32_t uniqueId;
  float position[3];
  float rotation[3];
  uint16_t scale;
  uint16_t flags;
} entries[];

MODF

struct 
{
  uint32_t mwidEntry;
  uint32_t uniqueId;
  float position[3];
  float rotation[3];
  float extends[6];
  uint16_t flags; // this may have changed a bit.
  uint16_t doodadSet;
  uint16_t nameSet;
  uint16_t padding;
} entries[];

MCNK[256]

MCNK in obj0 doesn't have a header anymore.

MCRD (optional)

uint32_t mddfEntry[];

MCRW (optional)

uint32_t modfEntry[];

*_tex0.adt structure

MVER

uint32_t version;

MAMP

uint32_t unkown; // alpha map related?

Values seem to be always 0 in tex0 and 1 in tex1.

MTEX

char filenames[]; // zero-terminated. multiple filenames

MCNK[256]

MCNK in tex0 doesn't have a header anymore.

MCLY (optional?)

struct 
{
  uint32_t textureId;
  uint32_t flags; // these may have changed or some additional values
  uint32_t offsetInMCAL;
  uint16_t effectId;
  uint16_t padding;
} entries[];

MCSH (optional)

char shadowmap[8][64]; // per bit -> 64*64.

MCAL (optional)

char alphamap[]; // see the ADT/v18 documentation for this chunk.

MCMT

Material ID. References TerrainMaterial.dbc. Related to displaying a texture effect (e.g like the rocks in Deepholm).

MTXF

WMO

Root File

MOHD

MOHD now consists of 68 Bytes!

MOTX

No Changes!

MOMT

uint32_t size; Blocks of Data a nMaterials with 64 Bytes

Personal tools