MOPP Header (to be reposted when I get home):
Code: Select all
public class Header // 48 bytes (0x30)
{
public float xOffset; // Used to shift the X value to real world coordinates?
public float yOffset; // Used to shift the Y value to real world coordinates?
public float zOffset; // Used to shift the Z value to real world coordinates?
public float unknown;
public byte[] constant1_FF00 = new byte[16]; // Always FF00 0000 0000 0000 0000 0000 0000 0000
public uint unPaddedSize; // Actual size is padded to 16 bytes
public byte[] constant2_0100 = new byte[12]; // Always 0100 0000 0000 0000 0000 0000
}
I know that the MOPP has OpCodes to reference triangles, so it is obviously very closley tied to the meta data.
On a slight side note, I finished the MOPP disassembler last night as well. I'm going to add a convenience option, then I'll post it and maybe other will help to work through the unknown codes. I set it up so all the OpCodes are read from a text file, so it will be very easy to modify the OpCode outputs for testing purposes.