Cataclysm
From WoWDev
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
