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); }
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); }