public void Load(X360IO io)
        {
            IO = io;
            IO.Stream.Position = 0x0;
            Magic    = IO.Reader.ReadUInt32();
            Unknown1 = IO.Reader.ReadUInt32();
            Unknown2 = IO.Reader.ReadUInt32();
            Magic2   = IO.Reader.ReadUInt32();
            if (Magic != 0xBCADADBC || Magic2 != 0xBCADADBC)
            {
                return;
            }
            IO.Stream.Position = 0x10;
            SettingEntries     = new List <SettingEntry>();
            DataEntries        = new List <SettingDataEntry>();
            while (true)
            {
                SettingEntry entry = new SettingEntry();
                if (!entry.Load(IO))
                {
                    break;
                }
                SettingEntries.Add(entry);
            }
            IO.Stream.Position = 0xFFF0;
            DataMagic          = IO.Reader.ReadUInt16();
            if (DataMagic != 0x4D26)
            {
                return;
            }

            // data
            while (true)
            {
                SettingDataEntry entry = new SettingDataEntry();
                entry.Load(IO);
                if (!(entry.Flags == 0xAABB && entry.FileNameOffset == 0xCCDD && entry.Checksum == 0xEE00))
                {
                    DataEntries.Add(entry);
                }
                else
                {
                    break;
                }
            }

            foreach (SettingDataEntry entry in DataEntries)
            {
                if (entry.Flags != 0x7A)
                {
                    SettingEntry ent = SettingEntries.Find(sec => sec.IsEntryOffset(entry.FileNameOffset + 0x10));
                    if (ent == null)
                    {
                        break;
                    }
                    ent.DataExists      = true;
                    entry.FileNameEntry = ent;
                }
            }
        }
        public void Load(X360IO io)
        {
            IO = io;
            IO.Stream.Position = 0x0;
            Magic = IO.Reader.ReadUInt32();
            Unknown1 = IO.Reader.ReadUInt32();
            Unknown2 = IO.Reader.ReadUInt32();
            Magic2 = IO.Reader.ReadUInt32();
            if (Magic != 0xBCADADBC || Magic2 != 0xBCADADBC)
                return;
            IO.Stream.Position = 0x10;
            SettingEntries = new List<SettingEntry>();
            DataEntries = new List<SettingDataEntry>();
            while (true)
            {
                SettingEntry entry = new SettingEntry();
                if (!entry.Load(IO))
                    break;
                SettingEntries.Add(entry);
            }
            IO.Stream.Position = 0xFFF0;
            DataMagic = IO.Reader.ReadUInt16();
            if (DataMagic != 0x4D26)
                return;

            // data
            while (true)
            {
                SettingDataEntry entry = new SettingDataEntry();
                entry.Load(IO);
                if (!(entry.Flags == 0xAABB && entry.FileNameOffset == 0xCCDD && entry.Checksum == 0xEE00))
                    DataEntries.Add(entry);
                else
                    break;
            }

            foreach (SettingDataEntry entry in DataEntries)
            {
                if (entry.Flags != 0x7A)
                {
                    SettingEntry ent = SettingEntries.Find(sec => sec.IsEntryOffset(entry.FileNameOffset + 0x10));
                    if (ent == null)
                    {
                        break;
                    }
                    ent.DataExists = true;
                    entry.FileNameEntry = ent;
                }
            }
        }
 public SettingDataEntry CreateSetting(string settingName, byte settingType, string settingValue)
 {
     SettingEntry entry = new SettingEntry {ID = 0x0, Value = 0x0, Setting = settingName};
     SettingDataEntry entry2 = new SettingDataEntry
                                   {
                                       Flags = 0x0,
                                       Checksum = 0x0,
                                       Type = settingType,
                                       FileNameEntry = entry
                                   };
     entry2.ValueString = settingValue;
     entry.DataExists = true;
     SettingEntries.Add(entry);
     DataEntries.Add(entry2);
     return entry2;
 }
        public SettingDataEntry CreateSetting(string settingName, byte settingType, string settingValue)
        {
            SettingEntry entry = new SettingEntry {
                ID = 0x0, Value = 0x0, Setting = settingName
            };
            SettingDataEntry entry2 = new SettingDataEntry
            {
                Flags         = 0x0,
                Checksum      = 0x0,
                Type          = settingType,
                FileNameEntry = entry
            };

            entry2.ValueString = settingValue;
            entry.DataExists   = true;
            SettingEntries.Add(entry);
            DataEntries.Add(entry2);
            return(entry2);
        }