public void load(string file) { byte[] f = File.ReadAllBytes(file); BinaryReader br = new BinaryReader(new MemoryStream(f, 0, f.Length)); hdr.parseHeader(br); readEntries(br); for (int i = 0; i < amtaData.Count; i++) { f = amtaData[i]; br = new BinaryReader(new MemoryStream(f, 0, f.Length)); AMTA amta = new AMTA(); amta.parseAMTA(br); DATA data = new DATA(); data.parseDATA(br); MARK mark = new MARK(); mark.parseMARK(br); EXT_ ext = new EXT_(); ext.parseEXT_(br); STRG strg = new STRG(); strg.parseSTRG(br); strgList.Add(strg); br.Close(); } }
public MetaDataNodeWrapper(AMTA amta) { MetaFile = amta; }
/// <summary> /// Load bars from bytes. /// </summary> /// <param name="src"></param> public void Load(byte[] b) { MemoryStream src = new MemoryStream(b); BinaryDataReader br = new BinaryDataReader(src); fileHeader = new Header(ref br); numTracks = br.ReadUInt32(); trackInfo = new List <UInt32>(); for (int i = 0; i < numTracks; i++) { trackInfo.Add(br.ReadUInt32()); } fileReferences = new FileReference[numTracks]; for (int i = 0; i < numTracks; i++) { fileReferences[i] = new FileReference() { AMTAOffset = br.ReadUInt32(), WAVOffset = br.ReadUInt32() }; } amtas = new List <AMTA>(); wavs = new List <b_wav>(); for (int i = 0; i < numTracks; i++) { long basePos = br.Position; Syroot.BinaryData.ByteOrder b2 = br.ByteOrder; br.Position = fileReferences[i].AMTAOffset; AMTA a = new AMTA(); a.magic = new string(br.ReadChars(4)); a.byteOrder = br.ReadUInt16(); if (a.byteOrder == ByteOrder.BigEndian) { br.ByteOrder = Syroot.BinaryData.ByteOrder.BigEndian; } else { br.ByteOrder = Syroot.BinaryData.ByteOrder.LittleEndian; } a.byteOrder = ByteOrder.BigEndian; a.version = br.ReadUInt16(); a.chunkSize = br.ReadUInt32(); a.dataOffset = br.ReadUInt32(); a.markOffset = br.ReadUInt32(); a.extOffset = br.ReadUInt32(); a.strgOffset = br.ReadUInt32(); a.data = new AMTA.Data(); a.mark = new AMTA.Mark(); a.ext = new AMTA.Ext(); a.strg = new AMTA.Strg(); br.Position = basePos + a.dataOffset; a.data.magic = new string(br.ReadChars(4)); a.data.restOfSize = br.ReadUInt32(); a.data.unknown = br.ReadBytes((int)a.data.restOfSize); br.Position = basePos + a.markOffset; a.mark.magic = new string(br.ReadChars(4)); a.mark.restOfSize = br.ReadUInt32(); a.mark.unknown = br.ReadBytes((int)a.mark.restOfSize); br.Position = basePos + a.extOffset; a.ext.magic = new string(br.ReadChars(4)); a.ext.restOfSize = br.ReadUInt32(); a.ext.unknown = br.ReadBytes((int)a.ext.restOfSize); br.Position = basePos + a.strgOffset; a.strg.magic = new string(br.ReadChars(4)); a.strg.restOfSize = br.ReadUInt32(); a.strg.trackName = new string(br.ReadChars((int)a.strg.restOfSize - 1)); br.ByteOrder = b2; } for (int i = 0; i < numTracks; i++) { br.Position = fileReferences[i].WAVOffset; br.ReadUInt32s(3); b_wav w = new b_wav(); int length = (int)br.ReadUInt32(); br.Position -= 12; w.Load(br.ReadBytes(length)); wavs.Add(w); } }