MOPP & BSP stuff
Posted: Sat Jun 02, 2012 5:31 pm
So continuing on from the deleted discussion:
MOPP Header (to be reposted when I get home):
Last night I was playing with the MOPP code and injected SHARED.MAP MOPP over ascension & coagulation. This allowed them to still load, however removing all player collision (I assume, since I just kept falling to my death) from the map. If the MOPP is screwed, the game will freeze at the mainmenu screen after the countdown. I need to do some more tests on a map where I can land on a crate or something with a banshee beside me. I would like to see if the map extents are taking from the meta or from the MOPP code itself.
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.
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.