#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;