public ExportTable(Stream Data) { FileReader Reader = new FileReader(Data, false); int StartLocation = Data.BinaryContains(new byte[] { (byte)'E', (byte)'N', (byte)'T', (byte)'P' }); Reader.Seek(StartLocation); while (true) { string EndTest = ASCIIEncoding.ASCII.GetString(Reader.ReadBytes(4)); if (!EndTest.Equals("EENT", StringComparison.InvariantCultureIgnoreCase)) { Reader.Seek(Reader.Position - 4); uint TrackID = Reader.ReadUInt32(); uint Address = Reader.ReadUInt32(); //TrackID, Address m_SubRoutines.Add(TrackID, Address); } else { break; } } }
public HLS(Stream Data) { if (Data != null) { m_Reader = new FileReader(Data, false); m_Reader.Seek(0); } else return; uint Unknown = m_Reader.ReadUInt32(); try { if (Unknown == 1) //First format { if ((m_Reader.StreamLength - m_Reader.Position) > 4) //... because sometimes it will just end here D: { uint Count = m_Reader.ReadUInt32(); for (int i = 0; i < Count; i++) SoundsAndHitlists.Add(m_Reader.ReadUInt32()); } } else { string Str = m_Reader.ReadString((int)Unknown).Replace("\n", ""); string[] SplitByComma = Str.Split(','); for(int i = 0; i < SplitByComma.Length; i++) { string[] SplitByDash = SplitByComma[i].Split('-'); if(SplitByDash.Length > 1) { uint Min = Convert.ToUInt32(SplitByDash[0]); uint Max = Convert.ToUInt32(SplitByDash[1]); for(uint j = Min; j <= Max; j++) SoundsAndHitlists.Add(j); } else SoundsAndHitlists.Add(Convert.ToUInt32(SplitByComma[i])); } } } catch { m_Reader.Seek(4); for (int i = 0; i < Unknown; i++) SoundsAndHitlists.Add(m_Reader.ReadUInt32()); m_Reader.Close(); } m_Reader.Close(); }
public Hit(Stream Data) { m_Reader = new FileReader(Data, false); ASCIIEncoding Enc = new ASCIIEncoding(); string MagicNumber = Enc.GetString(m_Reader.ReadBytes(4)); if (!MagicNumber.Equals("HIT!", StringComparison.InvariantCultureIgnoreCase)) throw new HitException("MagicNumber was wrong - Hit.cs!"); m_Reader.ReadUInt32(); //MajorVersion m_Reader.ReadUInt32(); //MinorVersion string Trax = Enc.GetString(m_Reader.ReadBytes(4)); if (!Trax.Equals("TRAX", StringComparison.InvariantCultureIgnoreCase)) throw new HitException("Invalid TRAX header - Hit.cs!"); ExTable = new ExportTable(Data); m_Reader.Seek(0); InstructionData = m_Reader.ReadBytes((int)m_Reader.StreamLength); m_Reader.Close(); }
private SPR2Frame GetSprite(int ID, PALT Palette) { FileReader Reader = new FileReader(new MemoryStream(m_Data), false); Reader.Seek(m_OffsetTable[ID]); return new SPR2Frame(Reader, m_Device, Palette, Version); }