Esempio n. 1
0
        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;
                }
            }
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        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);
        }