#define ON_ERROR(a, b) \ if(a) { \ goto b; \ } typedef struct { char Name[30]; int Offset; int Length; int End; int Volume; int Repeat; /* offset */ int RepeatLength; int Mode; //looping, data width int Finetune; int RelNote; int Panning; }SAMPINFO; // Raw S3M header struct: typedef struct { char songname[28]; char t1a; char type; char unused1[2]; unsigned short int ordnum; unsigned short int insnum; unsigned short int patnum; unsigned short int flags; unsigned short int tracker; unsigned short int fileformat; char scrm[4]; unsigned char mastervol; unsigned char initspeed; unsigned char inittempo; unsigned char mastermult; char unused2; unsigned char defaultpan; //only scrm 3.2 char unused3[10]; unsigned char channels[32]; } S3MHEADER; // Raw S3M instrument header struct: typedef struct { unsigned char type; char filename[12]; unsigned char memsegh; unsigned short int memsegl; ULONG length; ULONG loopbeg; ULONG loopend; unsigned char volume; unsigned char dsk; unsigned char pack; unsigned char flags; ULONG c2spd; char unused[12]; char sampname[28]; char scrs[4]; } SCREAMSAMPLE;