kiwidog

Super Smash Bro's MTA Research

Jul 22nd, 2015
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.13 KB | None | 0 0
  1. using System.IO;
  2.  
  3. namespace BrawlContentReader
  4. {
  5.     class Program
  6.     {
  7.         class Header
  8.         {
  9.             public uint Magic { get; set; }
  10.             public byte[] Unknown { get; set; } // Len60
  11.  
  12.             public Header(BinaryReader p_Reader)
  13.             {
  14.                 Magic = p_Reader.ReadUInt32();
  15.                 Unknown = p_Reader.ReadBytes(60);
  16.             }
  17.         }
  18.  
  19.         class Entry
  20.         {
  21.             public uint StringStartOffset { get; set; }
  22.             public uint Hash { get; set; } // Unknown Type?
  23.             public uint SubEntryCount { get; set; }
  24.             public uint StringEndOffset { get; set; }
  25.             public byte[] Unknown00 { get; set; } // Len16
  26.             public string Name { get; set; } // Len StringEndOffset - StringStartOffset
  27.             public uint EndOfEntryOffset { get; set; }
  28.             public byte[] Padding { get; set; }
  29.  
  30.             public Entry(BinaryReader p_Reader)
  31.             {
  32.                 StringStartOffset = p_Reader.ReadUInt32();
  33.                 Hash = p_Reader.ReadUInt32();
  34.                 SubEntryCount = p_Reader.ReadUInt32();
  35.                 StringEndOffset = p_Reader.ReadUInt32();
  36.                 Unknown00 = p_Reader.ReadBytes(16);
  37.                 Name = new string(p_Reader.ReadChars((int)(StringEndOffset - StringStartOffset)));
  38.                 EndOfEntryOffset = p_Reader.ReadUInt32();
  39.                 Padding = p_Reader.ReadBytes((int)(EndOfEntryOffset - p_Reader.BaseStream.Position));
  40.             }
  41.         }
  42.  
  43.         class SubEntry
  44.         {
  45.             public uint StringStartOffset { get; set; }
  46.             public uint Unknown00 { get; set; }
  47.             public uint Unknown01 { get; set; } // How many floats or whatever are across? (sizeof(float) * Unknown01) = 16bytes
  48.             public uint Unknown02 { get; set; } // How many rows down 16 * Unknown02 = 128
  49.             public uint Unknown03 { get; set; } // 0001 0001?
  50.             public uint StartOfData { get; set; }
  51.             public byte[] Padding { get; set; }
  52.  
  53.             public string Name { get; set; }
  54.             public byte[] Data { get; set; }
  55.  
  56.             public SubEntry(BinaryReader p_Reader)
  57.             {
  58.                 StringStartOffset = p_Reader.ReadUInt32();
  59.                 Unknown00 = p_Reader.ReadUInt32();
  60.                 Unknown01 = p_Reader.ReadUInt32();
  61.                 Unknown02 = p_Reader.ReadUInt32();
  62.                 Unknown03 = p_Reader.ReadUInt32();
  63.                 StartOfData = p_Reader.ReadUInt32();
  64.                 Padding = p_Reader.ReadBytes((int) (StartOfData - p_Reader.BaseStream.Position));
  65.  
  66.                 Name = new string(p_Reader.ReadChars((int)(StartOfData - StringStartOffset)));
  67.                 Data = p_Reader.ReadBytes((int)((4*Unknown01)*Unknown02)); // Should read out 128
  68.             }
  69.         }
  70.         static void Main(string[] p_Args)
  71.         {
  72.             using (var s_Reader = new BinaryReader(new FileStream("", FileMode.Open, FileAccess.Read)))
  73.             {
  74.                 var s_Header = new Header(s_Reader);
  75.  
  76.                 // TODO: Figure out how many entries etc.
  77.             }
  78.         }
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment