#ifndef	SHATMODULE_H
#define	SHATMODULE_H
/*
**	$Filename: shatmodule.h $
**	$Release: 0 $
**	$Revision: 0.4 $
**	$Date: 93/07/27 $
**
**	Definitions and structures used in a normal SHATracker module
**
**	These definitions are for SAS/C ©
**
**	(C) Copyright 1993 John 'SHAYERA' Hinge / Transonic
**	    All Rights Reserved
*/

struct SHAT_PackedNote
{
	unsigned	int	snoh :4;
	unsigned	int	note :12;
	unsigned	int	snol :4;
	unsigned	int	cmd  :4;
	unsigned	int	fx1  :4;
	unsigned	int	fx2  :4;
};

typedef	struct	SHAT_PackedNote	SHATPACKEDNOTE;


struct	SHAT_PatternLine
{
	struct SHAT_PackedNote	ChannelData[4];
};

typedef	struct	SHAT_PatternLine	SHATPATTERNLINE;

struct	SHAT_Pattern
{
	struct	SHAT_PatternLine	PatternLines[64];
};

typedef	struct	SHAT_Pattern	SHATPATTERN;

struct	SHAT_Sample
{
	char	Name[22];
	unsigned short	Length;
	unsigned char	FineTune;
	unsigned char	Volume;
	unsigned short	RepeatPoint;
	unsigned short	RepeatLength;
};

typedef	struct	SHAT_Sample	SHATSAMPLE;

struct	SHAT_ModuleHeader
{
	char			Name[20];
	struct	SHAT_Sample	Samples[31];
	unsigned char		SongLength;
	unsigned char		OldNTPad;	/* Patch for NoiseTracker Prg's */
	unsigned char		Sequence[128];
	char			MK_Magic[4];
};

typedef	struct	SHAT_ModuleHeader	SHATMODULEHEADER;

#define	ID_PT		"M.K."		/* Song is 32 instr.      */
#define	ID_STAR_4	"FLT4"		/* StarTrekker 4 channels */
#define	ID_STAR_8	"FLT8"		/* StarTrekker 8 channels */

#endif		/*	SHATMODULE_H	*/
