예제 #1
0
파일: main.c 프로젝트: EvertonSilva/ps2sdk
int DrawSprites(GS_PACKET_TABLE *table)
{
	int i;

	QWORD	*p;


	


	for(i=0;i<MAX_SPRITES;i++)
	{
		
		p = GsGifPacketsAlloc(table, 5); //alloc 5 qword for 1 untextured strite


		gs_setGIF_TAG(((GS_GIF_TAG	*)&p[0]), 4,1,0,0,0,0,1,0x0e);
		gs_setR_PRIM(((GS_R_PRIM	*)&p[1]), GS_PRIM_SPRITE,0, 0, 0, 1, 0, 0, 0, 0);
		gs_setR_RGBAQ(((GS_R_RGBAQ	*)&p[2]), sprites[i].color.r, sprites[i].color.g, sprites[i].color.b, sprites[i].color.a, sprites[i].color.q);
		gs_setR_XYZ2(((GS_R_XYZ		*)&p[3]), (SCREEN_OFFSET_X+sprites[i].x_pos)<<4,		(SCREEN_OFFSET_Y+sprites[i].y_pos)<<4, 0x00000000);
		gs_setR_XYZ2(((GS_R_XYZ		*)&p[4]), (SCREEN_OFFSET_X+sprites[i].x_pos+10)<<4,	(SCREEN_OFFSET_Y+sprites[i].y_pos+10)<<4, 0x00000000);

	}

	return 0;

}
예제 #2
0
파일: main.c 프로젝트: AKuHAK2/ps2sdk
static int DrawSprites(GS_PACKET_TABLE *table)
{
	int i;
	QWORD *p;

	for(i=0;i<MAX_SPRITES;i++)
	{
		//Use the uncached segment, to avoid needing to flush the data cache.
		p = (QWORD*)UNCACHED_SEG(GsGifPacketsAlloc(table, 5)); //Allocate 5 qword for 1 untextured strite

		/*	For this GIF packet, the EOP flag is set to 1.
			Rightfully, it should only be set for only the final packet so that the GIF knows when it can safely switch paths,
			but to keep things simple, it's set to 1 for every packet.

			The packets are all in the PACKED format.	*/
		gs_setGIF_TAG(((GS_GIF_TAG	*)&p[0]), 4,1,0,0,GS_GIF_PACKED,1,gif_rd_ad);
		gs_setR_PRIM(((GS_R_PRIM	*)&p[1]), GS_PRIM_SPRITE,0, 0, 0, 1, 0, 0, 0, 0);
		gs_setR_RGBAQ(((GS_R_RGBAQ	*)&p[2]), sprites[i].color.r, sprites[i].color.g, sprites[i].color.b, sprites[i].color.a, sprites[i].color.q);
		gs_setR_XYZ2(((GS_R_XYZ		*)&p[3]), (ScreenOffsetX+sprites[i].x_pos)<<4,	(ScreenOffsetY+sprites[i].y_pos)<<4, 0x00000000);
		gs_setR_XYZ2(((GS_R_XYZ		*)&p[4]), (ScreenOffsetX+sprites[i].x_pos+10)<<4,	(ScreenOffsetY+sprites[i].y_pos+10)<<4, 0x00000000);
	}

	return 0;

}
예제 #3
0
파일: main.c 프로젝트: scuriumk/ps2sdk
static int DrawSprites(GS_PACKET_TABLE *table)
{
	int i;
	QWORD *p;

	for(i=0;i<MAX_SPRITES;i++)
	{
		//Use the uncached segment, to avoid needing to flush the data cache.
		p = (QWORD*)UNCACHED_SEG(GsGifPacketsAlloc(table, 5)); //Allocate 5 qword for 1 untextured strite

		gs_setGIF_TAG(((GS_GIF_TAG	*)&p[0]), 4,1,0,0,0,0,1,0x0e);
		gs_setR_PRIM(((GS_R_PRIM	*)&p[1]), GS_PRIM_SPRITE,0, 0, 0, 1, 0, 0, 0, 0);
		gs_setR_RGBAQ(((GS_R_RGBAQ	*)&p[2]), sprites[i].color.r, sprites[i].color.g, sprites[i].color.b, sprites[i].color.a, sprites[i].color.q);
		gs_setR_XYZ2(((GS_R_XYZ		*)&p[3]), (ScreenOffsetX+sprites[i].x_pos)<<4,	(ScreenOffsetY+sprites[i].y_pos)<<4, 0x00000000);
		gs_setR_XYZ2(((GS_R_XYZ		*)&p[4]), (ScreenOffsetX+sprites[i].x_pos+10)<<4,	(ScreenOffsetY+sprites[i].y_pos+10)<<4, 0x00000000);
	}

	return 0;

}
예제 #4
0
파일: main.c 프로젝트: AzagraMac/PS2_SDK
int DrawTriangles(GS_PACKET_TABLE *table, int context_index)
{

	QWORD	*p;


	
	// top left
		
	p = GsGifPacketsAlloc(table, 6); 


	gs_setGIF_TAG(((GS_GIF_TAG	*)&p[0]), 5,1,0,0,0,0,1,0x0e);
	gs_setR_PRIM(((GS_R_PRIM	*)&p[1]), GS_PRIM_TRI,0, 0, 0, 1, 0, 0, context_index, 0);
	gs_setR_RGBAQ(((GS_R_RGBAQ	*)&p[2]), 200, 100, 100, 0x80, 0.0f);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[3]), (SCREEN_OFFSET_X+0)<<4,		(SCREEN_OFFSET_Y+0)<<4, 0x00000000);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[4]), (SCREEN_OFFSET_X+200)<<4,		(SCREEN_OFFSET_Y+0)<<4, 0x00000000);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[5]), (SCREEN_OFFSET_X+point_x)<<4,	(SCREEN_OFFSET_Y+point_y)<<4, 0x00000000);




	//top right
	p = GsGifPacketsAlloc(table, 6); 


	gs_setGIF_TAG(((GS_GIF_TAG	*)&p[0]), 5,1,0,0,0,0,1,0x0e);
	gs_setR_PRIM(((GS_R_PRIM	*)&p[1]), GS_PRIM_TRI,0, 0, 0, 1, 0, 0, context_index, 0);
	gs_setR_RGBAQ(((GS_R_RGBAQ	*)&p[2]), 100, 200, 100, 0x80, 0.0f);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[3]), (SCREEN_OFFSET_X+SCREEN_WIDTH-200)<<4,		(SCREEN_OFFSET_Y+0)<<4, 0x00000000);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[4]), (SCREEN_OFFSET_X+SCREEN_WIDTH)<<4,		(SCREEN_OFFSET_Y+0)<<4, 0x00000000);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[5]), (SCREEN_OFFSET_X+point_x)<<4,				(SCREEN_OFFSET_Y+point_y)<<4, 0x00000000);




	//bottom right
	p = GsGifPacketsAlloc(table, 6); 


	gs_setGIF_TAG(((GS_GIF_TAG	*)&p[0]), 5,1,0,0,0,0,1,0x0e);
	gs_setR_PRIM(((GS_R_PRIM	*)&p[1]), GS_PRIM_TRI,0, 0, 0, 1, 0, 0, context_index, 0);
	gs_setR_RGBAQ(((GS_R_RGBAQ	*)&p[2]), 100, 100, 200, 0x80, 0.0f);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[3]), (SCREEN_OFFSET_X+SCREEN_WIDTH-200)<<4,		(SCREEN_OFFSET_Y+SCREEN_HEIGHT)<<4, 0x00000000);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[4]), (SCREEN_OFFSET_X+SCREEN_WIDTH)<<4,		(SCREEN_OFFSET_Y+SCREEN_HEIGHT)<<4, 0x00000000);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[5]), (SCREEN_OFFSET_X+point_x)<<4,				(SCREEN_OFFSET_Y+point_y)<<4, 0x00000000);



	//bottom left
	p = GsGifPacketsAlloc(table, 6); 


	gs_setGIF_TAG(((GS_GIF_TAG	*)&p[0]), 5,1,0,0,0,0,1,0x0e);
	gs_setR_PRIM(((GS_R_PRIM	*)&p[1]), GS_PRIM_TRI,0, 0, 0, 1, 0, 0, context_index, 0);
	gs_setR_RGBAQ(((GS_R_RGBAQ	*)&p[2]), 100, 200, 200, 0x80, 0.0f);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[3]), (SCREEN_OFFSET_X+0)<<4,		(SCREEN_OFFSET_Y+SCREEN_HEIGHT)<<4, 0x00000000);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[4]), (SCREEN_OFFSET_X+200)<<4,		(SCREEN_OFFSET_Y+SCREEN_HEIGHT)<<4, 0x00000000);
	gs_setR_XYZ2(((GS_R_XYZ		*)&p[5]), (SCREEN_OFFSET_X+point_x)<<4,	(SCREEN_OFFSET_Y+point_y)<<4, 0x00000000);


	return 0;

}