/********************************************************************************
*																				*
*				----------------------------									*
*				    Ultra64 Sample Program										*
*				----------------------------									*
*					File		: struct.h										*
*					Description	:												*
*					Date		: 1994.6.12										*
*					Author		: H.yajima										*
*																				*
*********************************************************************************/
#define	GLIST_NUMBER	 6720


/********************************************************************************
 		Layout of our dynamic segment
*********************************************************************************/
typedef struct {
		OSMesgQueue *msgQ;
		OSMesg        msg;

}ScClient;

typedef struct {
		OSTask 		task;
		OSMesgQueue	*msgQ;
		OSMesg		msg;
		int 		status;
		int		pad;
}RSPTask;


typedef struct {
	Mtx	projection;
	Mtx	projection1;
	Mtx	projection2;
	Mtx	projection3;
	Mtx	projection4;
	Mtx	projection5;
	Mtx	light;
	Mtx	viewing;
	Mtx	viewing1;
	Mtx	viewing2;
	Mtx	viewing3;
	Mtx	modeling[800];
	Mtx	objectmodeling[128];
	Mtx	kagemodeling[8*4];
	Mtx     kmodeling[8*4];
	Mtx effectmodeling[660];	
/*
	Mtx	gassmodeling[10*16*2];
	Mtx	sparkmodeling[10*16*2];
	Mtx	smokemodeling[10*16*2];
*/
	Mtx	tmodeling[4];
//	OSTask	tlist[2];     	/* globaltask lists */
      	Gfx	glist[GLIST_NUMBER];
	RSPTask rsptask;
} Dynamic;

typedef union {
    u32		word[2];
    u64		force_alignment;
} scratch_t;


typedef struct {
	short	stickx;							/* analog stick position x			*/
	short	sticky;							/* analog stick position y			*/
	ushort	status;							/* controller button status			*/
	ushort	ontrigger;						/* controller button trigger		*/
	ushort	offtrigger;						/* controller button trigger		*/
     	ushort  stick_status;
     	ushort  stick_ontrigger;
     	ushort  stick_offtrigger;  
} Controller;

typedef char  *MemPtr;

typedef struct {

	short    segment_number;
	uint     cpu_address;
	MemPtr   start_address;    
	MemPtr   end_address;    

} SegmentRecord,*SegmentPtr;


/*==============================================================================*/
/* END END END END END END END END END END END END END END END END END END END  */
/*==============================================================================*/



