
/********************
	sub.h
 ********************/


/*******************************************************************************
	EXTERNAL WORK
*******************************************************************************/


/*******************************************************************************
	EXTERNAL FUNCTION
*******************************************************************************/
extern void		diff_screen( unsigned short *vram ) ;
extern void		init_sin_table( void ) ;
extern void		init_rand( unsigned long seed ) ;
extern ulong		rand(void) ;
extern void		mtx2mtxf( Mtx *mtx, Mtxf *mf ) ;
extern void		mtxf2mtx( Mtxf *mf, Mtx *mtx ) ;
#if WINDOW_PRINT_SW
extern void		print_matrix( Mtx *m ) ;
#endif
extern void		set_ambient_light( Ambient *amb, int r, int g, int b ) ;
extern void		set_diffuse_light( Light *lit, int r, int g, int b ) ;
extern void		set_direction_light( Light *lit, int x, int y, int z ) ;
extern void		init_lights1( Lights1 *lit, int ar,int ag,int ab, int dr,int dg,int db, int vx,int vy,int vz ) ;
extern void		hsv2rgb( int h,int s,int v, int *r,int *g,int *b ) ;
extern void		make_SCRmatrix( Mtx *m, u16 *perspNorm, float fovy, float aspect, float near, float far, float slx, float sly ) ;
extern void		make_LOOKmatrix( Mtx *m, Mtxf *mf,
				float xEye, float yEye, float zEye,
				float xAt,  float yAt,  float zAt,
				float xUp,  float yUp,  float zUp ) ;
extern void		make_ROTmatrix( Mtx *m, Mtxf *mf,
				float Zx, float Zy, float Zz,
				float ux, float uy, float uz,
				float tx, float ty, float tz ) ;
extern void		make_ROTSmatrix( Mtx *m,
				float Zx, float Zy, float Zz,
				float ux, float uy, float uz,
				float tx, float ty, float tz, float scale ) ;
extern void		cal_normal( Vtx vtx[], int i0, int i1, int i2, int i3 )  ;
extern void		mm2m( Mtx *m1, Mtx *m2, Mtx *m3, float count ) ;
extern void		make_SHADOWmatrix( Mtx *m, Mtxf *mf,
				float lx, float ly, float lz,
				float px, float py, float pz,
				float nx, float ny, float nz ) ;
extern void		make_ZXYmatrix( Mtx *m, Mtxf *mf, float rx, float ry, float rz ) ;
extern void		make_ZXYTmatrix( Mtx *m, Mtxf *mf, float rx, float ry, float rz, float tx, float ty, float tz ) ;
extern void		make_ZXY360matrix( Mtx *m, float rx, float ry, float rz, float tx, float ty, float tz, float scale ) ;
extern void		mult_mtxf( Mtxf *m1, Mtxf *m2, Mtxf *m3 ) ;
extern void		init_pad( void ) ;
extern void		make_ALIGNmatrix( Mtx *m, Mtxf *mf, float vx, float vy, float vz, float rad ) ;
extern int		f2i( float f ) ;
