#ifndef	GFX_H		  
#define	GFX_H

/****************FOR SPLIGHT*******************************************/

#define  LT(n)   SEGMENT_ADDR(COURSE_MATERIAL,sizeof(Lights1)*n+8)
#define  AM(n)   SEGMENT_ADDR(COURSE_MATERIAL,sizeof(Lights1)*n+0)

#define  LightLT(n)     gsSPLight(LT(n),1)
#define  LightAM(n)     gsSPLight(AM(n),2)

/****************FOR gsDPSetCombineMode********************************/

#define  Combine1   gsDPSetCombineMode(G_CC_MODULATERGBA,G_CC_MODULATERGBA)
#define  Combine2   gsDPSetCombineMode(G_CC_MODULATERGBDECALA,G_CC_MODULATERGBDECALA)
#define  Combine3   gsDPSetCombineMode(G_CC_SHADE,G_CC_SHADE)

/****************FOR gsDPSetRenderMode********************************/

#define  Render1    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF,G_RM_AA_ZB_OPA_SURF2)
#define  Render2    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE,G_RM_AA_ZB_TEX_EDGE2)

/****************FOR gs_Nin_SetUoTileDescrip********************************/

#define  TileSync  gsDPTileSync
#define  LoadSync  gsDPLoadSync

#define  Settile3232RGBA(cs,ms,ct,mt)   gsDPSetTile(G_IM_FMT_RGBA,G_IM_SIZ_16b,((((32)*G_IM_SIZ_16b##_LINE_BYTES)+7)>>3),0,0,0,ct,mt,0,cs,ms,0)
#define  Settile6432RGBA(cs,ms,ct,mt)   gsDPSetTile(G_IM_FMT_RGBA,G_IM_SIZ_16b,((((64)*G_IM_SIZ_16b##_LINE_BYTES)+7)>>3),0,0,0,ct,mt,0,cs,ms,0)
#define  Settile3264RGBA(cs,ms,ct,mt)   gsDPSetTile(G_IM_FMT_RGBA,G_IM_SIZ_16b,((((32)*G_IM_SIZ_16b##_LINE_BYTES)+7)>>3),0,0,0,ct,mt,0,cs,ms,0)

#define  Settile3232IA(cs,ms,ct,mt)   gsDPSetTile(G_IM_FMT_IA,G_IM_SIZ_16b,((((32)*G_IM_SIZ_16b##_LINE_BYTES)+7)>>3),0,0,0,ct,mt,0,cs,ms,0)
#define  Settile6432IA(cs,ms,ct,mt)   gsDPSetTile(G_IM_FMT_IA,G_IM_SIZ_16b,((((64)*G_IM_SIZ_16b##_LINE_BYTES)+7)>>3),0,0,0,ct,mt,0,cs,ms,0)
#define  Settile3264IA(cs,ms,ct,mt)   gsDPSetTile(G_IM_FMT_IA,G_IM_SIZ_16b,((((32)*G_IM_SIZ_16b##_LINE_BYTES)+7)>>3),0,0,0,ct,mt,0,cs,ms,0)

#define  Settilesize3232   gsDPSetTileSize(0,0,0,(32-1)<<G_TEXTURE_IMAGE_FRAC,(32-1)<<G_TEXTURE_IMAGE_FRAC)
#define  Settilesize3264   gsDPSetTileSize(0,0,0,(32-1)<<G_TEXTURE_IMAGE_FRAC,(64-1)<<G_TEXTURE_IMAGE_FRAC)
#define  Settilesize6432   gsDPSetTileSize(0,0,0,(64-1)<<G_TEXTURE_IMAGE_FRAC,(32-1)<<G_TEXTURE_IMAGE_FRAC)

/****************FOR gs_Nin_LoadTextureImage********************************/

#define SettextureimageRGBA(n)   gsDPSetTextureImage(G_IM_FMT_RGBA,G_IM_SIZ_16b,SEGMENT_ADDR(COURSE_TEXTURE,n*32*32*2))
#define SettextureimageIA(n)   gsDPSetTextureImage(G_IM_FMT_IA,G_IM_SIZ_16b,SEGMENT_ADDR(COURSE_TEXTURE,n*32*32*2))
#define SettileRGBA(tmem,tt) gsDPSetTile(G_IM_FMT_RGBA,G_IM_SIZ_16b,0,tmem,tt,0,0,0,0,0,0,0)
#define SettileIA(tmem,tt)   gsDPSetTile(G_IM_FMT_IA,G_IM_SIZ_16b,0,tmem,tt,0,0,0,0,0,0,0)
/****************FOR gsSPTexture********************************/

#define  Textureon  gsSPTexture(65535, 65535,   0,  0,  1)
#define  Textureoff gsSPTexture(    1,     1,   0,  0,  0)

/****************FOR gsSPVertex********************************/

#define  Spveretex(n,a,b)  gsSPVertex(SEGMENT_ADDR(COURSE_VERTEX, n* sizeof(Vtx)), a, b)

/****************FOR gsSP1Triangle********************************/

#define  Sp1triangle(a,b,c,d)  gsSPVertex(a, b, c)

/****************FOR DISPLAYLIST******************************/

#define  Displaylist(n)     gsSPEndDisplayList(SEGMENT_ADDR(COURSE_VERTEX,n* sizeof(Gfx)))
#define  Enddisplaylist     gsSPEndDisplayList()






#endif	 

