internal override void Read(BinaryReaderEx br, MSBVersion version) { br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); }
internal override void Read(BinaryReaderEx br, MSBVersion version) { br.AssertInt32(0); br.AssertInt32(0); ThinkParamID = br.ReadInt32(); NPCParamID = br.ReadInt32(); TalkID = br.ReadInt32(); UnkT04 = br.ReadInt32(); CharaInitID = br.ReadInt32(); collisionPartIndex = br.ReadInt32(); UnkT07 = br.ReadInt32(); br.AssertInt32(0); br.AssertInt32(-1); br.AssertInt32(-1); br.AssertInt32(-1); br.AssertInt32(-1); UnkT08 = br.ReadInt32(); br.AssertInt32(-1); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); UnkT09 = br.ReadInt32(); br.AssertInt32(0); br.AssertInt32(0); UnkT10 = br.ReadSingle(); br.AssertInt32(-1); UnkT11 = br.ReadInt32(); br.AssertInt32(-1); UnkT12 = br.ReadInt32(); br.AssertInt32(-1); UnkT13 = br.ReadInt32(); br.AssertInt32(-1); UnkT14 = br.ReadInt32(); br.AssertInt32(-1); UnkT15 = br.ReadInt32(); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); UnkT16 = br.ReadInt32(); UnkT17 = br.ReadInt32(); UnkT18 = br.ReadInt32(); UnkT19 = br.ReadInt32(); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); }
internal override void Read(BinaryReaderEx br, MSBVersion version) { collisionIndex = br.ReadInt32(); MapID1 = br.ReadByte(); MapID2 = br.ReadByte(); MapID3 = br.ReadByte(); MapID4 = br.ReadByte(); br.AssertInt32(0); br.AssertInt32(0); }
public static MSB64 Read(string path, MSBVersion version) { using (FileStream stream = File.OpenRead(path)) { BinaryReaderEx br = new BinaryReaderEx(false, stream); MSB64 file = new MSB64(); file.Version = version; br = Util.GetDecompressedBR(br, out file.Compression); file.Read(br); return(file); } }
internal override void Read(BinaryReaderEx br, MSBVersion version) { br.AssertInt32(0); br.AssertInt32(0); UnkT01 = br.ReadInt32(); UnkT02 = br.ReadInt32(); UnkT03 = br.ReadInt32(); UnkT04 = br.ReadInt32(); br.ReadInt32(); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); }
internal override void ReadSpecific(BinaryReaderEx br, long start, MSBVersion version) { long unkOffset = br.ReadInt64(); br.Position = start + unkOffset; Unk1 = br.ReadInt32(); if (version != MSBVersion.MSBVersionBB) { br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); } }
internal Model(BinaryReaderEx br, MSBVersion version = MSBVersion.MSBVersionDS3) { long start = br.Position; long nameOffset = br.ReadInt64(); br.AssertUInt32((uint)Type); ID = br.ReadInt32(); long placeholderOffset = br.ReadInt64(); InstanceCount = br.ReadInt32(); br.AssertInt32(0); Name = br.GetUTF16(start + nameOffset); Placeholder = br.GetUTF16(start + placeholderOffset); ReadSpecific(br, start, version); }
internal override void Read(BinaryReaderEx br, MSBVersion version) { br.AssertInt32(0); br.AssertInt32(0); collisionPartIndex = br.ReadInt32(); UnkT02a = br.ReadInt16(); UnkT02b = br.ReadInt16(); UnkT03a = br.ReadInt16(); UnkT03b = br.ReadInt16(); UnkT04 = br.ReadInt32(); UnkT05a = br.ReadInt16(); UnkT05b = br.ReadInt16(); UnkT06 = br.ReadInt32(); UnkT07 = br.ReadInt32(); UnkT08 = br.ReadInt32(); UnkT09 = br.ReadInt32(); UnkT10 = br.ReadInt32(); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); }
internal List <T> Read(BinaryReaderEx br, int offsets, MSBVersion version) { var entries = new List <T>(); for (int i = 0; i < offsets; i++) { long offset = br.ReadInt64(); br.StepIn(offset); if (version == MSBVersion.MSBVersionBB) { T entry = ReadEntryBB(br); if (entry != null) { entries.Add(entry); } } else { entries.Add(ReadEntry(br)); } br.StepOut(); } return(entries); }
internal override void Read(BinaryReaderEx br, MSBVersion version) { HitFilterID = br.ReadByte(); SoundSpaceType = br.ReadEnum8 <SoundSpace>(); EnvLightMapSpotIndex = br.ReadInt16(); ReflectPlaneHeight = br.ReadSingle(); if (version == MSBVersion.MSBVersionDS3) { br.AssertInt32(0); // Navmesh Group (4) br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(-1); // Vagrant Entity ID (3) br.AssertInt32(-1); br.AssertInt32(-1); MapNameID = br.ReadInt16(); DisableStart = br.AssertInt16(0, 1) == 1; DisableBonfireEntityID = br.ReadInt32(); UnkT2C = br.ReadInt32(); UnkT30 = br.ReadInt32(); UnkT34 = br.ReadInt32(); PlayRegionID = br.ReadInt32(); LockCamID1 = br.ReadInt16(); LockCamID2 = br.ReadInt16(); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); UnkT50 = br.ReadInt32(); UnkT54 = br.ReadInt32(); UnkT58 = br.ReadInt32(); UnkT5C = br.ReadInt32(); for (int i = 0; i < 19; i++) { br.AssertInt32(0); } UnkT74 = br.ReadInt32(); UnkT78 = br.ReadSingle(); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); } else { // BB collision format much different (and simpler) so bullshit some values MapNameID = br.ReadInt16(); MapNameID = -3000; //DisableStart = br.AssertInt16(0, 1) == 1; br.ReadInt16(); DisableStart = false; DisableBonfireEntityID = br.ReadInt32(); UnkT2C = -1; UnkT30 = -1; UnkT34 = 0; PlayRegionID = br.ReadInt32(); PlayRegionID = 300000; LockCamID1 = br.ReadInt16(); LockCamID2 = br.ReadInt16(); UnkT50 = br.ReadInt32(); UnkT54 = br.ReadInt32(); UnkT58 = br.ReadInt32(); UnkT5C = br.ReadInt32(); for (int i = 0; i < 19; i++) { br.ReadInt32(); } //br.AssertInt32(0); UnkT74 = br.ReadInt32(); UnkT78 = br.ReadSingle(); br.AssertInt32(0); br.AssertInt32(0); br.AssertInt32(0); } }
internal Collision(BinaryReaderEx br, MSBVersion version) : base(br, version) { }
internal abstract void ReadSpecific(BinaryReaderEx br, long start, MSBVersion version);
internal MapPiece(BinaryReaderEx br, MSBVersion version) : base(br, version) { }
internal abstract void Read(BinaryReaderEx br, MSBVersion version);
internal Part(BinaryReaderEx br, MSBVersion version = MSBVersion.MSBVersionDS3) { long start = br.Position; if (version == MSBVersion.MSBVersionBB) { // Bloodborne has a map piece name that isn't present in a DS3 msb file br.ReadUInt64(); } long nameOffset = br.ReadInt64(); if (version == MSBVersion.MSBVersionBB) { // BB has type and ID swapped for some reason ID = br.ReadInt32(); br.AssertUInt32((uint)Type); br.ReadInt32(); // Unknown BB only thing? modelIndex = br.ReadInt32(); } else { br.AssertUInt32((uint)Type); ID = br.ReadInt32(); modelIndex = br.ReadInt32(); br.AssertInt32(0); } long placeholderOffset = br.ReadInt64(); Position = br.ReadVector3(); Rotation = br.ReadVector3(); Scale = br.ReadVector3(); DrawGroup1 = br.ReadUInt32(); DrawGroup2 = br.ReadUInt32(); DrawGroup3 = br.ReadUInt32(); DrawGroup4 = br.ReadUInt32(); DispGroup1 = br.ReadUInt32(); DispGroup2 = br.ReadUInt32(); DispGroup3 = br.ReadUInt32(); DispGroup4 = br.ReadUInt32(); UnkF01 = br.ReadInt32(); UnkF02 = br.ReadInt32(); UnkF03 = br.ReadInt32(); UnkF04 = br.ReadInt32(); UnkF05 = br.ReadInt32(); UnkF06 = br.ReadInt32(); UnkF07 = br.ReadInt32(); UnkF08 = br.ReadInt32(); UnkF09 = br.ReadInt32(); UnkF10 = br.ReadInt32(); UnkF11 = br.ReadInt32(); UnkF12 = br.ReadInt32(); UnkF13 = br.ReadInt32(); UnkF14 = br.ReadInt32(); UnkF15 = br.ReadInt32(); UnkF16 = br.ReadInt32(); UnkF17 = br.ReadInt32(); if (version == MSBVersion.MSBVersionDS3) { UnkF18 = br.ReadInt32(); br.AssertInt32(0); } else { UnkF18 = 0; } long baseDataOffset = br.ReadInt64(); long typeDataOffset = br.ReadInt64(); UnkOffset1Delta = br.ReadInt64(); if (UnkOffset1Delta != 0) { UnkOffset1Delta -= typeDataOffset; } UnkOffset2Delta = br.ReadInt64(); if (UnkOffset2Delta != 0) { UnkOffset2Delta -= typeDataOffset; } Name = br.GetUTF16(start + nameOffset); if (placeholderOffset == 0) { Placeholder = null; } else { Placeholder = br.GetUTF16(start + placeholderOffset); } br.StepIn(start + baseDataOffset); EventEntityID = br.ReadInt32(); LightID = br.ReadSByte(); FogID = br.ReadSByte(); ScatterID = br.ReadSByte(); LensFlareID = br.ReadSByte(); br.AssertInt32(0); LanternID = br.ReadSByte(); LodParamID = br.ReadSByte(); UnkB0E = br.ReadSByte(); IsShadowDest = br.ReadBoolean(); // Bloodborne has a super cut down version of this structure so fill in placeholder values if (version == MSBVersion.MSBVersionBB) { IsShadowOnly = false; DrawByReflectCam = true; DrawOnlyReflectCam = false; UseDepthBiasFloat = false; DisablePointLightEffect = false; UnkB15 = 0; UnkB16 = 0; UnkB17 = 0; UnkB18 = 0; UnkB1C = -1; UnkB20 = -1; UnkB24 = -1; UnkB28 = -1; UnkB30 = -1; UnkB34 = -1; UnkB38 = -1; } else { IsShadowOnly = br.ReadBoolean(); DrawByReflectCam = br.ReadBoolean(); DrawOnlyReflectCam = br.ReadBoolean(); UseDepthBiasFloat = br.ReadBoolean(); DisablePointLightEffect = br.ReadBoolean(); UnkB15 = br.ReadByte(); UnkB16 = br.ReadByte(); UnkB17 = br.ReadByte(); UnkB18 = br.ReadInt32(); UnkB1C = br.ReadInt32(); UnkB20 = br.ReadInt32(); UnkB24 = br.ReadInt32(); UnkB28 = br.ReadInt32(); //br.AssertInt32(-1); br.ReadInt32(); UnkB30 = br.ReadInt32(); UnkB34 = br.ReadInt32(); UnkB38 = br.ReadInt32(); br.AssertInt32(0); } br.StepOut(); br.StepIn(start + typeDataOffset); Read(br, version); br.StepOut(); }
internal override void ReadSpecific(BinaryReaderEx br, long start, MSBVersion version) { br.AssertInt64(0); }
internal Player(BinaryReaderEx br, MSBVersion version) : base(br, version) { }
internal Enemy(BinaryReaderEx br, MSBVersion version) : base(br, version) { }
internal Object(BinaryReaderEx br, MSBVersion version) : base(br, version) { }