Beispiel #1
0
        public override bool Init()
        {
            s3mbuf = new S3MNOTE[32 * 64];

            for (int i = 0; i < s3mbuf.Length; i++)
            {
                s3mbuf[i] = new S3MNOTE();
            }

            poslookup = new byte[256];
            poslookup.Memset(byte.MaxValue, 256);

            mh = new S3MHEADER();
            return(true);
        }
Beispiel #2
0
        bool S3M_ReadPattern()
        {
            int     row = 0, flag, ch;
            S3MNOTE n;
            S3MNOTE dummy = new S3MNOTE();

            /* clear pattern data */
            for (int i = 0; i < s3mbuf.Length; i++)
            {
                s3mbuf[i].Clear();
            }

            while (row < 64)
            {
                flag = m_Reader.Read_byte();

                if (m_Reader.isEOF())
                {
                    m_LoadError = MMERR_LOADING_PATTERN;
                    return(false);
                }

                if (flag != 0)
                {
                    ch = remap[flag & 31];

                    if (ch != -1)
                    {
                        n = s3mbuf[(64U * ch) + row];
                    }
                    else
                    {
                        n = dummy;
                    }

                    if ((flag & 32) != 0)
                    {
                        n.note = m_Reader.Read_byte();
                        n.ins  = m_Reader.Read_byte();
                    }

                    if ((flag & 64) != 0)
                    {
                        n.vol = m_Reader.Read_byte();
                        if (n.vol > 64)
                        {
                            n.vol = 64;
                        }
                    }

                    if ((flag & 128) != 0)
                    {
                        n.cmd = m_Reader.Read_byte();
                        n.inf = m_Reader.Read_byte();
                    }
                }
                else
                {
                    row++;
                }
            }
            return(true);
        }