Example #1
0
 private void Init(Stream input)
 {
     using (var br = new BinaryReader(input))
     {
         Header.Read(br);
         if (!Functions.CompareBytes(Header.Magic, new byte[] { 0, 0x50, 0x53, 0x46 }))
         {
             throw new Exception("Invalid PARAM.SFO Header Magic");
         }
         var tables = new List <Index_table>();
         for (var i = 0; i < Header.IndexTableEntries; i++)
         {
             var t = new Index_table();
             t.Read(br);
             tables.Add(t);
         }
         var xtables = new List <Table>();
         var count   = 0;
         foreach (var t in tables)
         {
             var x = new Table
             {
                 index      = count,
                 Indextable = t,
                 Name       = ReadName(br, t),
                 Value      = ReadValue(br, t)
             };
             count++;
             xtables.Add(x);
         }
         Tables = xtables.ToArray();
         br.Close();
     }
 }
Example #2
0
        private string ReadName(BinaryReader br, Index_table table)
        {
            br.BaseStream.Position = (Header.KeyTableStart + table.param_key_offset);
            var name = "";

            while (((byte)br.PeekChar()) != 0)
            {
                name += br.ReadChar();
            }
            br.BaseStream.Position++;
            return(name);
        }
Example #3
0
        private string ReadValue(BinaryReader br, Index_table table)
        {
            br.BaseStream.Position = ((Header.DataTableStart) + table.param_data_offset);
            switch (table.param_data_fmt)
            {
            case FMT.ASCII:
                return(Encoding.ASCII.GetString(br.ReadBytes((int)table.param_data_max_len)).Replace("\0", ""));

            case FMT.UINT32:
                return(br.ReadUInt32().ToString());

            case FMT.UTF_8:
                return(Encoding.UTF8.GetString(br.ReadBytes((int)table.param_data_max_len)).Replace("\0", ""));

            default:
                return(null);
            }
        }