Example #1
0
static BOOL S3M_ReadPattern(void)
{
    int row=0,flag,ch;
    S3MNOTE *n;
    S3MNOTE dummy;

    /* clear pattern data */

    mod_memset(s3mbuf, (char)255, 16*64*sizeof(S3MNOTE));

    while(row<64){

	flag=_mm_read_UBYTE();

	//		if(flag==255)
	//		{
	//			gModPlayerErrorMessage=ERROR_LOADING_PATTERN;
	//			return 0;
	//		}

	if(flag)
	    {
		ch=flag&31;

		if(mh_s3m->channels[ch]<16)
		    {
			n=&s3mbuf[(64U*remap[ch])+row];
		    }
		else
		    {
			n=&dummy;
		    }

		if(flag&32)
		    {
			n->note=_mm_read_UBYTE();
			n->ins=_mm_read_UBYTE();
		    }

		if(flag&64)
		    {
			n->vol=_mm_read_UBYTE();
		    }

		if(flag&128)
		    {
			n->cmd=_mm_read_UBYTE();
			n->inf=_mm_read_UBYTE();
		    }
	    }
	else
	    {
		row++;
	    }
    }
    return 1;
}
Example #2
0
static void XM_ReadNote(XMNOTE *n)
{
    UBYTE cmp;
    mod_memset(n,0,sizeof(XMNOTE));

    cmp=_mm_read_SBYTE();

    if(cmp&0x80){
	if(cmp&1) n->note=_mm_read_SBYTE();
	if(cmp&2) n->ins=_mm_read_SBYTE();
	if(cmp&4) n->vol=_mm_read_SBYTE();
	if(cmp&8) n->eff=_mm_read_SBYTE();
	if(cmp&16) n->dat=_mm_read_SBYTE();
    }
    else{
	n->note=cmp;
	n->ins=_mm_read_SBYTE();
	n->vol=_mm_read_SBYTE();
	n->eff=_mm_read_SBYTE();
	n->dat=_mm_read_SBYTE();
    }
}