Ejemplo n.º 1
0
 internal override void Read(BinaryReaderEx br, MSBVersion version)
 {
     br.AssertInt32(0);
     br.AssertInt32(0);
     br.AssertInt32(0);
     br.AssertInt32(0);
 }
Ejemplo n.º 2
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);
 }
Ejemplo n.º 3
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);
 }
Ejemplo n.º 4
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);
     }
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
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);
                    }
                }
Ejemplo n.º 7
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);
            }
Ejemplo n.º 8
0
 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);
 }
Ejemplo n.º 9
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);
            }
Ejemplo n.º 10
0
                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);
                    }
                }
Ejemplo n.º 11
0
 internal Collision(BinaryReaderEx br, MSBVersion version) : base(br, version)
 {
 }
Ejemplo n.º 12
0
 internal abstract void ReadSpecific(BinaryReaderEx br, long start, MSBVersion version);
Ejemplo n.º 13
0
 internal MapPiece(BinaryReaderEx br, MSBVersion version) : base(br, version)
 {
 }
Ejemplo n.º 14
0
 internal abstract void Read(BinaryReaderEx br, MSBVersion version);
Ejemplo n.º 15
0
            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();
            }
Ejemplo n.º 16
0
 internal override void ReadSpecific(BinaryReaderEx br, long start, MSBVersion version)
 {
     br.AssertInt64(0);
 }
Ejemplo n.º 17
0
 internal Player(BinaryReaderEx br, MSBVersion version) : base(br, version)
 {
 }
Ejemplo n.º 18
0
 internal Enemy(BinaryReaderEx br, MSBVersion version) : base(br, version)
 {
 }
Ejemplo n.º 19
0
 internal Object(BinaryReaderEx br, MSBVersion version) : base(br, version)
 {
 }