
			    GS$B4pK\%i%$%V%i%j(B
			   =================


 1 $B9=B$BN(B
==========

=========================================================================
ps2_gs_alphaenv							 [$B9=B$BN(B]
=========================================================================
				   $B%"%k%U%!%V%l%s%G%#%s%04XO"$N@_Dj%G!<%?(B
[$B9=B$(B]
	typedef struct {
		ps2_gsreg_alpha alpha1;
		ps2_gsreg_addr	alpha1addr;
		//
		ps2_gsreg_pabe	pabe;
		ps2_gsreg_addr	pabeaddr;
		//
		ps2_gsreg_texa	texa;
		ps2_gsreg_addr	texaaddr;
		//
		ps2_gsreg_fba	fba1;
		ps2_gsreg_addr	fba1addr;
	} ps2_gs_alphaenv __attribute__((aligned(16)));

[$B%a%s%P(B]
	alpha1		ALPHA_1$B%l%8%9%?$N@_DjCM(B
	alpha1addr	ALPHA_1$B%l%8%9%?$N%"%I%l%9(B
	pabe		PABE$B%l%8%9%?$N@_DjCM(B
	pabeaddr	PABE$B%l%8%9%?$N%"%I%l%9(B
	texa		TEXA$B%l%8%9%?$N@_DjCM(B
	texaaddr	TEXA$B%l%8%9%?$N%"%I%l%9(B
	fba1		FBA_1$B%l%8%9%?$N@_DjCM(B
	fba1addr	FBA_1$B%l%8%9%?$N%"%I%l%9(B

[$B2r@b(B]
	$B%"%k%U%!%V%l%s%G%#%s%0>pJs(B($B%3%s%F%-%9%H(B1)$B$rJ];}$9$k9=B$BN$G$9!#(B
	ps2_gs_set_alphaenv()$B4X?t$G!"9=B$BN$KCM$r@_Dj$G$-$^$9!#9=B$BN(B
	$B$N%a%b%j>e$G$ND>A0$K!"(BGIFtag(PACKET$B%b!<%I(B,REGS=A+D)$B$rIU$1$l$P!"(B
	$B$=$N$^$^(BGIF$B$KE>Aw$G$-$k9=B$$K$J$C$F$$$^$9!#(B

[$BHw9M(B]
	$B$3$N9=B$BN$K$O(BDMA$B$G(BGS$B$KE>Aw$5$l$k%G!<%?$,@_Dj$5$l$^$9$N$G!"@h(B
	$BF,$r(B16byte$B%"%i%$%a%s%H$KI,$:9g$o$;$F%a%b%j$KG[CV$7$F$/$@$5$$!#(B

=========================================================================
ps2_gs_alphaenv2						 [$B9=B$BN(B]
=========================================================================
				   $B%"%k%U%!%V%l%s%G%#%s%04XO"$N@_Dj%G!<%?(B
[$B9=B$(B]
	typedef struct {
		ps2_gsreg_alpha		alpha2;
		ps2_gsreg_addr		alpha2addr;
		//
		ps2_gsreg_pabe		pabe;
		ps2_gsreg_addr		pabeaddr;
		//
		ps2_gsreg_texa		texa;
		ps2_gsreg_addr		texaaddr;
		//
		ps2_gsreg_fba		fba2;
		ps2_gsreg_addr		fba2addr;
	} ps2_gs_alphaenv2 __attribute__((aligned(16)));

[$B%a%s%P(B]
	alpha2		ALPHA_2$B%l%8%9%?$N@_DjCM(B
	alpha2addr	ALPHA_2$B%l%8%9%?$N%"%I%l%9(B
	pabe		PABE$B%l%8%9%?$N@_DjCM(B
	pabeaddr	PABE$B%l%8%9%?$N%"%I%l%9(B
	texa		TEXA$B%l%8%9%?$N@_DjCM(B
	texaaddr	TEXA$B%l%8%9%?$N%"%I%l%9(B
	fba2		FBA_2$B%l%8%9%?$N@_DjCM(B
	fba2addr	FBA_2$B%l%8%9%?$N%"%I%l%9(B

[$B2r@b(B]
	$B%"%k%U%!%V%l%s%G%#%s%0>pJs(B($B%3%s%F%-%9%H(B2)$B$rJ];}$9$k9=B$BN$G$9!#(B
	ps2_gs_set_alphaenv2()$B4X?t$G!"9=B$BN$KCM$r@_Dj$G$-$^$9!#9=B$BN(B
	$B$N%a%b%j>e$G$ND>A0$K!"(BGIFtag(PACKET$B%b!<%I(B,REGS=A+D)$B$rIU$1$l$P!"(B
	$B$=$N$^$^(BGIF$B$KE>Aw$G$-$k9=B$$K$J$C$F$$$^$9!#(B

[$BHw9M(B]
	$B$3$N9=B$BN$K$O(BDMA$B$G(BGS$B$KE>Aw$5$l$k%G!<%?$,@_Dj$5$l$^$9$N$G!"@h(B
	$BF,$r(B16byte$B%"%i%$%a%s%H$KI,$:9g$o$;$F%a%b%j$KG[CV$7$F$/$@$5$$!#(B
	PABE, TEXA$B$O!"%3%s%F%-%9%H@Z$jBX$($,$G$-$^$;$s$N$G!"%3%s%F%-%9(B
	$B%H(B1$B$H0[$J$kCM$r@_Dj$9$k>l9g$K$O!"Cm0U$7$F$4;HMQ$/$@$5$$!#(B

=========================================================================
ps2_gs_clear							 [$B9=B$BN(B]
=========================================================================
						   $B%P%C%U%!%/%j%"MQ%G!<%?(B
[$B9=B$(B]
	typedef struct {
		ps2_gsreg_test		testa;
		ps2_gsreg_addr		testaaddr;
		//
		ps2_gsreg_prim		prim;
		ps2_gsreg_addr		primaddr;
		//
		ps2_gsreg_rgbaq		rgbaq;
		ps2_gsreg_addr		rgbaqaddr;
		//
		ps2_gsreg_xyz		xyz2a;
		ps2_gsreg_addr		xyz2aaddr;
		//
		ps2_gsreg_xyz		xyz2b;
		ps2_gsreg_addr		xyz2baddr;
		//
		ps2_gsreg_test		testb;
		ps2_gsreg_addr		testbaddr;
	} ps2_gs_clear __attribute__((aligned(16)));

[$B%a%s%P(B]
	testa		$B%/%j%"MQ(BTEST$B%l%8%9%?$N@_DjCM(B
	testaaddr	TEST$B%l%8%9%?$N%"%I%l%9(B
	prim		$B%/%j%"MQ%9%W%i%$%H$N(BPRIM$B@_DjCM(B
	primaddr	PRIM$B%l%8%9%?$N%"%I%l%9(B
	rgbaq		$B%U%l!<%`%P%C%U%!%/%j%"CM(B
	rgbaqaddr	RGBAQ$B%l%8%9%?$N%"%I%l%9(B
	xyz2a		$B%/%j%"MQ%9%W%i%$%H$N:8>eC<E@:BI8(B
	xyz2aaddr	XYZ2$B%l%8%9%?$N%"%I%l%9(B
	xyz2b		$B%/%j%"MQ%9%W%i%$%H$N1&2<C<E@:BI8(B
	testb		TEST$B%l%8%9%?$N:F@_DjCM(B
	testbaddr	TEST$B%l%8%9%?$N%"%I%l%9(B

[$B2r@b(B]
	$B%P%C%U%!%/%j%"MQ$N%G!<%?$rJ];}$9$k9=B$BN$G$9!#(B
	$B9=B$BN$N%a%b%j>e$G$ND>A0$K!"(BGIFtag(PACKET$B%b!<%I(B,REGS=A+D)$B$rIU(B
	$B$1$l$P!"$=$N$^$^(BGIF$B$KE>Aw$G$-$k9=B$$K$J$C$F$$$^$9!#<BBN$OC1$J(B
	$B$k%9%W%i%$%HIA2h$G$9$N$G!"D>A0$K@_Dj$5$l$?(BXYOFFSET$B$d(BSCISSOR$BEy(B
	$B$NIA2h4D6-@_Dj$N1F6A$r<u$1$^$9!#(B

[$BHw9M(B]
	$B$3$N9=B$BN$K$O(BDMA$B$G(BGS$B$KE>Aw$5$l$k%G!<%?$,@_Dj$5$l$^$9$N$G!"@h(B
	$BF,$r(B16byte$B%"%i%$%a%s%H$KI,$:9g$o$;$F%a%b%j$KG[CV$7$F$/$@$5$$!#(B

=========================================================================
ps2_gs_dbuff							 [$B9=B$BN(B]
=========================================================================
					 $B%@%V%k%P%C%U%!$K4X$9$k@_Dj%G!<%?(B
[$B9=B$(B]
	typedef struct {
		ps2_gs_dispenv		disp[2];
		ps2_giftag		giftag0;
		ps2_gs_drawenv1		draw0;
		ps2_gs_clear		clear0;
		ps2_giftag		giftag1;
		ps2_gs_drawenv1		draw1;
		ps2_gs_clear		clear1;
	} ps2_gs_dbuff __attribute__((aligned(16)));

[$B%a%s%P(B]
	disp[2]		$BI=<(4D6-(B
	giftag0		$BIA2h4D6-MQ(BGIFtag($B%P%C%U%!(B0$BMQ(B)
	draw0		$BIA2h4D6-(B($B%P%C%U%!(B0$BMQ(B)
	clear0		$BIA2h%P%C%U%!%/%j%"4D6-(B($B%P%C%U%!(B0$BMQ(B)
	giftag1		$BIA2h4D6-MQ(BGIFtag($B%P%C%U%!(B1$BMQ(B)
	draw1		$BIA2h4D6-(B($B%P%C%U%!(B1$BMQ(B)
	clear1		$BIA2h%P%C%U%!%/%j%"4D6-(B($B%P%C%U%!(B1$BMQ(B)

[$B2r@b(B]
	$B%@%V%k%P%C%U%!>pJs$rJ];}$9$k9=B$BN$G$9!#(B
	ps2_gs_set_dbuff()$B4X?t$G!"9=B$BN$KCM$r@_Dj$G$-$^$9!#(B
	ps2_gs_swap_dbuff()$B4X?t$G!"(BGS(GIF)$B$KCM$rE>Aw$G$-$^$9!#(B

[$BHw9M(B]
	$B$3$N9=B$BN$K$O(BDMA$B$G(BGS$B$KE>Aw$5$l$k%G!<%?$,@_Dj$5$l$^$9$N$G!"@h(B
	$BF,$r(B16byte$B%"%i%$%a%s%H$KI,$:9g$o$;$F%a%b%j$KG[CV$7$F$/$@$5$$!#(B
	$B$3$N9=B$BN$O!"%3%s%F%-%9%H(B1$B$N@_Dj$N$_$rJ];}$7$^$9!#%3%s%F%-%9(B
	$B%H(B2$B$rJ;MQ$9$k>l9g$O!"(Bps2_gs_dbuff_dc$B$r;HMQ$7$F$/$@$5$$!#(B

=========================================================================
ps2_gs_dbuff_dc							 [$B9=B$BN(B]
=========================================================================
					 $B%@%V%k%P%C%U%!$K4X$9$k@_Dj%G!<%?(B
[$B9=B$(B]
	typedef struct {
		ps2_gs_dispenv		disp[2];
		ps2_giftag		giftag0;
		ps2_gs_drawenv1		draw01;
		ps2_gs_drawenv2		draw02;
		ps2_gs_clear		clear0;
		ps2_giftag		giftag1;
		ps2_gs_drawenv1		draw11;
		ps2_gs_drawenv2		draw12;
		ps2_gs_clear		clear1;
	} ps2_gs_dbuffdc __attribute__((aligned(16)));

[$B%a%s%P(B]
	disp[2]		$BI=<(4D6-(B
	giftag0		$BIA2h4D6-MQ(BGIFtag($B%P%C%U%!(B0$BMQ(B)
	draw01		$BIA2h4D6-(B($B%3%s%F%-%9%H(B1$B!"%P%C%U%!(B0$BMQ(B)
	draw02		$BIA2h4D6-(B($B%3%s%F%-%9%H(B2$B!"%P%C%U%!(B0$BMQ(B)
	clear0		$BIA2h%P%C%U%!%/%j%"4D6-(B($B%P%C%U%!(B0$BMQ(B)
	giftag1		$BIA2h4D6-MQ(BGIFtag($B%P%C%U%!(B1$BMQ(B)
	draw11		$BIA2h4D6-(B($B%3%s%F%-%9%H(B1$B!"%P%C%U%!(B1$BMQ(B)
	draw12		$BIA2h4D6-(B($B%3%s%F%-%9%H(B2$B!"%P%C%U%!(B1$BMQ(B)
	clear1		$BIA2h%P%C%U%!%/%j%"4D6-(B($B%P%C%U%!(B1$BMQ(B)

[$B2r@b(B]
	2$B%3%s%F%-%9%HJ;MQ$N%@%V%k%P%C%U%!>pJs$rJ];}$9$k9=B$BN$G$9!#(B
	ps2_gs_set_dbuff_dc()$B4X?t$G!"9=B$BN$KCM$r@_Dj$G$-$^$9!#(B
	ps2_gs_swap_dbuff_dc()$B4X?t$G!"(BGS(GIF)$B$KCM$rE>Aw$G$-$^$9!#(B

[$BHw9M(B]
	$B$3$N9=B$BN$K$O(BDMA$B$G(BGS$B$KE>Aw$5$l$k%G!<%?$,@_Dj$5$l$^$9$N$G!"@h(B
	$BF,$r(B16byte$B%"%i%$%a%s%H$KI,$:9g$o$;$F%a%b%j$KG[CV$7$F$/$@$5$$!#(B

=========================================================================
ps2_gs_dispenv							 [$B9=B$BN(B]
=========================================================================
						     $BI=<(4D6-$N@_Dj%G!<%?(B
[$B9=B$(B]
	typedef struct {
		ps2_gssreg_dispfb	dispfb;
		ps2_gssreg_bgcolor	bgcolor;
	} ps2_gs_dispenv __attribute__((aligned(16)));

[$B%a%s%P(B]
	dispfb	$BI=<(%U%l!<%`%P%C%U%!$N@_DjCM(B(DISPFB2$B%l%8%9%?$NCM(B)
	bgcolor $B%P%C%/%0%i%&%s%I%+%i!<$N@_DjCM(B(BGCOLOR$B%l%8%9%?$NCM(B)

[$B2r@b(B]
	$BI=<(4XO"$N@_Dj!"(BGS$B$N6k7AFI$_=P$72sO)$K4X$9$k@_Dj%G!<%?$rJ];}$9(B
	$B$k9=B$BN$G$9!#(B
	ps2_gs_set_dispenv()$B4X?t$G!"9=B$BN$KCM$r@_Dj$G$-$^$9!#(B
	ps2_gs_put_dispenv()$B4X?t$G!"9=B$BN$NCM$r(BGS$B$K@_Dj$G$-$^$9!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_drawenv1							 [$B9=B$BN(B]
=========================================================================
						     $BIA2h4D6-$N@_Dj%G!<%?(B
[$B9=B$(B]
	typedef struct {
		ps2_gsreg_frame		frame1;
		ps2_gsreg_addr		frame1addr;
		//
		ps2_gsreg_zbuf		zbuf1;
		ps2_gsreg_addr		zbuf1addr;
		//
		ps2_gsreg_xyoffset	xyoffset1;
		ps2_gsreg_addr		xyoffset1addr;
		//
		ps2_gsreg_scissor	scissor1;
		ps2_gsreg_addr		scissor1addr;
		//
		ps2_gsreg_prmodecont	prmodecont;
		ps2_gsreg_addr		prmodecontaddr;
		//
		ps2_gsreg_colclamp	colclamp;
		ps2_gsreg_addr		colclampaddr;
		//
		ps2_gsreg_dthe		dthe;
		ps2_gsreg_addr		dtheaddr;
		//
		ps2_gsreg_test		test1;
		ps2_gsreg_addr		test1addr;
	} ps2_gs_drawenv1 __attribute__((aligned(16)));

[$B%a%s%P(B]
	frame1		FRAME_1$B%l%8%9%?$N@_DjCM(B
	frame1addr	FRAME_1$B%l%8%9%?$N%"%I%l%9(B
	zbuf1		ZBUF_1$B%l%8%9%?$N@_DjCM(B
	zbuf1addr	ZBUF_1$B%l%8%9%?$N%"%I%l%9(B
	xyoffset1	XYOFFSET_1$B%l%8%9%?$N@_DjCM(B
	xyoffset1addr	XYOFFSET_1$B%l%8%9%?$N%"%I%l%9(B
	scissor1	SCISSOR_1$B%l%8%9%?$N@_DjCM(B
	scissor1addr	SCISSOR_1$B%l%8%9%?$N%"%I%l%9(B
	prmodecont	PRMODECONT$B%l%8%9%?$N@_DjCM(B
	prmodecontaddr	PRMODECONT$B%l%8%9%?$N%"%I%l%9(B
	colclamp	COLCLAMP$B%l%8%9%?$N@_DjCM(B
	colclampaddr	COLCLAMP$B%l%8%9%?$N%"%I%l%9(B
	dthe		DTHE$B%l%8%9%?$N@_DjCM(B
	dtheaddr	DTHE$B%l%8%9%?$N%"%I%l%9(B
	test1		TEST_1$B%l%8%9%?$N@_DjCM(B
	test1addr	TEST_1$B%l%8%9%?$N%"%I%l%9(B

[$B2r@b(B]
	$BIA2h4D6->pJs(B($B%3%s%F%-%9%H(B1)$B$rJ];}$9$k9=B$BN$G$9!#(B
	ps2_gs_set_drawenv()$B4X?t$G!"9=B$BN$KCM$r@_Dj$G$-$^$9!#$^$?!"$3(B
	$B$N9=B$BN$ND>A0$K(BGIFtag$B!J(BPACKED$B%b!<%I(B,REGS=A+D$B!K$rIU$1$l$P!"(B
	ps2_gs_put_drawenv()$B4X?t$rMQ$$$F(BGS$B$K$=$N$^$^E>Aw$9$k$3$H$,$G$-(B
	$B$^$9!#(B

[$BHw9M(B]
	$B$3$N9=B$BN$K$O(BDMA$B$G(BGS$B$KE>Aw$5$l$k%G!<%?$,@_Dj$5$l$^$9$N$G!"@h(B
	$BF,$r(B16byte$B%"%i%$%a%s%H$KI,$:9g$o$;$F%a%b%j$KG[CV$7$F$/$@$5$$!#(B

=========================================================================
ps2_gs_drawenv2							 [$B9=B$BN(B]
=========================================================================
						     $BIA2h4D6-$N@_Dj%G!<%?(B
[$B9=B$(B]
	typedef struct {
		ps2_gsreg_frame		frame2;
		ps2_gsreg_addr		frame2addr;
		//
		ps2_gsreg_zbuf		zbuf2;
		ps2_gsreg_addr		zbuf2addr;
		//
		ps2_gsreg_xyoffset	xyoffset2;
		ps2_gsreg_addr		xyoffset2addr;
		//
		ps2_gsreg_scissor	scissor2;
		ps2_gsreg_addr		scissor2addr;
		//
		ps2_gsreg_prmodecont	prmodecont;
		ps2_gsreg_addr		prmodecontaddr;
		//
		ps2_gsreg_colclamp	colclamp;
		ps2_gsreg_addr		colclampaddr;
		//
		ps2_gsreg_dthe		dthe;
		ps2_gsreg_addr		dtheaddr;
		//
		ps2_gsreg_test		test2;
		ps2_gsreg_addr		test2addr;
	} ps2_gs_drawenv2 __attribute__((aligned(16)));

[$B%a%s%P(B]
	frame2		FRAME_2$B%l%8%9%?$N@_DjCM(B
	frame2addr	FRAME_2$B%l%8%9%?$N%"%I%l%9(B
	zbuf2		ZBUF_2$B%l%8%9%?$N@_DjCM(B
	zbuf2addr	ZBUF_2$B%l%8%9%?$N%"%I%l%9(B
	xyoffset2	XYOFFSET_2$B%l%8%9%?$N@_DjCM(B
	xyoffset2addr	XYOFFSET_2$B%l%8%9%?$N%"%I%l%9(B
	scissor2	SCISSOR_2$B%l%8%9%?$N@_DjCM(B
	scissor2addr	SCISSOR_2$B%l%8%9%?$N%"%I%l%9(B
	prmodecont	PRMODECONT$B%l%8%9%?$N@_DjCM(B
	prmodecontaddr	PRMODECONT$B%l%8%9%?$N%"%I%l%9(B
	colclamp	COLCLAMP$B%l%8%9%?$N@_DjCM(B
	colcalmpaddr	COLCLAMP$B%l%8%9%?$N%"%I%l%9(B
	dthe		DTHE$B%l%8%9%?$N@_DjCM(B
	dtheaddr	DTHE$B%l%8%9%?$N%"%I%l%9(B
	test2		TEST_2$B%l%8%9%?$N@_DjCM(B
	test2addr	TEST_2$B%l%8%9%?$N%"%I%l%9(B

[$B2r@b(B]
	$BIA2h4D6->pJs(B($B%3%s%F%-%9%H(B2)$B$rJ];}$9$k9=B$BN$G$9!#(B
	ps2_gs_SetDefDrawEnv2()$B4X?t$G!"9=B$BN$KCM$r@_Dj$G$-$^$9!#$^$?!"(B
	$B$3$N9=B$BN$ND>A0$K(BGIFtag$B!J(BPACKED$B%b!<%I(B,REGS=A+D$B!K$rIU$1$l$P!"(B
	ps2_gs_PutDrawEnv()$B4X?t$rMQ$$$F(BGS$B$K$=$N$^$^E>Aw$9$k$3$H$,$G$-(B
	$B$^$9!#(B

[$BHw9M(B]
	$B$3$N9=B$BN$K$O(BDMA$B$GD>@\(BGS$B$KE>Aw$5$l$k%G!<%?$,@_Dj$5$l$^$9$N$G!"(B
	$B@hF,$r(B16byte$B%"%i%$%a%s%H$KI,$:9g$o$;$F%a%b%j$KG[CV$7$F$/$@$5$$!#(B
	PRMODECONT, COLCLAMP, DTHE$B$O!"%3%s%F%-%9%H@Z$jBX$($,$G$-$^$;$s(B
	$B$N$G!"%3%s%F%-%9%H(B1$B$N@_Dj$H0[$J$kCM$r@_Dj$9$k>l9g$OCm0U$7$F$/(B
	$B$@$5$$!#(B

=========================================================================
ps2_gs_finish							 [$B9=B$BN(B]
=========================================================================
						     $BIA2h=*N;BT$AMQ%G!<%?(B
[$B9=B$(B]
	typedef struct {
		ps2_giftag		giftag;
		ps2_gsreg_finish	finish;
		ps2_gsreg_addr		finishaddr;
	} ps2_gs_finish __attribute__((aligned(16)));

[$B%a%s%P(B]
	giftag		$BE>AwMQ(BGIFtag
	finish		FINISH$B%l%8%9%?$N@_DjCM(B
	finishaddr	FINISH$B%l%8%9%?$N%"%I%l%9(B

[$B2r@b(B]
	GS$B$K$h$kIA2h=hM}$,40A4$K=*$o$C$?$3$H$r3NG'$9$k>l9g$KMQ$$$i$l$k%G!<%?$G(B
	$B$9!#(Bps2_gs_set_finish()$B$GCM$r@_Dj$7!"IA2h=*N;$rBT$A$?$$>l=j$G(B
	ps2_gs_wait_finish()$B$r8F$S=P$7$^$9!#(Bps2_gs_wait_finish()$B$OIA2h=*N;$^$G(B
	$B%V%m%C%/$7$^$9!#(B

=========================================================================
ps2_gs_gparam							 [$B9=B$BN(B]
=========================================================================
						   $B%i%$%V%i%j%7%9%F%`>pJs(B
[$B9=B$(B]
	typedef struct {
		int fd_gs;
		int fd_event;
		int fd_event_open;
		int version;
		int interlace_mode;
		int out_mode;
		int ff_mode;
		int interlace_format;
		int resolution;
		int refresh_rate;
		int width;
		int height;
		int center_x;
		int center_y;
		int offset_x;
		int offset_y;
		float pixel_ratio;
	} ps2_gs_gparam;

[$B%a%s%P(B]
	fd_gs			/dev/ps2gs$B$X$N%U%!%$%k%G%#%9%/%j%W%?(B
	fd_event		/dev/ps2event$B$X$N%U%!%$%k%G%#%9%/%j%W%?(B
	fd_event_open		ps2_gs_open()$BFb$G(B/dev/ps2event$B$r%*!<%W(B
				$B%s$7$?$+$I$&$+(B
	version			GS$B$N%P!<%8%g%s(B
	interlace_mode		$B%$%s%?%l!<%9(B/$B%N%s%$%s%?%l!<%9$N@_DjCM(B
	out_mode		NTSC/PAL$B$N@_DjCM(B
	ff_mode			FIELD/FRAME$B$N@_DjCM(B
	interlace_format	$B%$%s%?%l!<%9(B/$B%N%s%$%s%?%l!<%9$N@_DjCM(B
	resolution		$B2rA|EY(B
	refresh_rate		$B%j%U%l%C%7%e%l!<%H(B
	width			$BI}(B
	height			$B9b$5(B
	center_x		$BCf?4(B(x$BJ}8~(B)
	center_y		$BCf?4(B(y$BJ}8~(B)
	offset_x		$B%*%U%;%C%H(B(x$BJ}8~(B)
	offset_y		$B%*%U%;%C%H(B(y$BJ}8~(B)
	pixel_ratio		$B%T%/%;%k$N=D2#Hf(B($BI}(B/$B9b$5(B)

[$B2r@b(B]
	$B%i%$%V%i%j$G;HMQ$9$k%Q%i%a!<%?$rJ];}$9$k9=B$BN$G$9!#(B
	$B%i%$%V%i%j$G;HMQCf$N%G!<%?$O(Bps2_gs_get_gparam()$B$G;2>H(B($BFI$_=P$7(B
	$B$N$_(B)$B$9$k$3$H$,$G$-$^$9!#$3$N%G!<%?$O(Bps2_gs_open()$B!"(B
	ps2_gs_reset()$B!"(Bps2_gs_set_center()$B$K$h$j@_Dj$5$l$^$9!#(B

=========================================================================
ps2_gs_texenv							 [$B9=B$BN(B]
=========================================================================
					       $B%F%/%9%A%c4XO"$N@_Dj%G!<%?(B
[$B9=B$(B]
	typedef struct {
		ps2_gsreg_texflush	texflush;
		ps2_gsreg_addr		texflushaddr;
		//
		ps2_gsreg_tex1		tex11;
		ps2_gsreg_addr		tex11addr;
		//
		ps2_gsreg_tex0		tex01;
		ps2_gsreg_addr		tex01addr;
		//
		ps2_gsreg_clamp		clamp1;
		ps2_gsreg_addr		clamp1addr;
	} ps2_gs_texenv __attribute__((aligned(16)));

[$B%a%s%P(B]
	texflush	TEXFLUSH$B%l%8%9%?$NCM(B
	texflushaddr	TEXFLUSH$B%l%8%9%?$N%"%I%l%9(B
	tex01		TEX0_1$B%l%8%9%?$NCM(B
	tex01addr	TEX0_1$B%l%8%9%?$N%"%I%l%9(B
	tex11		TEX1_1$B%l%8%9%?$NCM(B
	tex11addr	TEX1_1$B%l%8%9%?$N%"%I%l%9(B
	clamp1		CLAMP_1$B%l%8%9%?$NCM(B
	clamp1addr	CLAMP_1$B%l%8%9%?$N%"%I%l%9(B

[$B2r@b(B]
	$B%F%/%9%A%c>pJs(B($B%3%s%F%-%9%H(B1)$B$rJ];}$9$k9=B$BN$G$9!#(B
	ps2_gs_set_texenv()$B4X?t$G!"9=B$BN$KCM$r@_Dj$G$-$^$9!#9=B$BN$N(B
	$B%a%b%j>e$G$ND>A0$K!"(BGIFtag(PACKET$B%b!<%I(B,REGS=A+D)$B$rIU$1$l$P!"(B
	$B$=$N$^$^(BGIF$B$KE>Aw$G$-$k9=B$$K$J$C$F$$$^$9!#(Bmipmap$B$r;HMQ$9$k>l(B
	$B9g$K$O!"$3$NB>$K(BMIPTBP1_1, MIPTBP2_1$B%l%8%9%?$N@_Dj$,I,MW$G$9!#(B

[$BHw9M(B]
	$B$3$N9=B$BN$K$O(BDMA$B$G(BGS$B$KE>Aw$5$l$k%G!<%?$,@_Dj$5$l$^$9$N$G!"@h(B
	$BF,$r(B16byte$B%"%i%$%a%s%H$KI,$:9g$o$;$F%a%b%j$KG[CV$7$F$/$@$5$$!#(B

=========================================================================
ps2_gs_texenv2							 [$B9=B$BN(B]
=========================================================================
					       $B%F%/%9%A%c4XO"$N@_Dj%G!<%?(B
[$B9=B$(B]
	typedef struct {
		ps2_gsreg_texflush	texflush;
		ps2_gsreg_addr		texflushaddr;
		//
		ps2_gsreg_tex1		tex12;
		ps2_gsreg_addr		tex12addr;
		//
		ps2_gsreg_tex0		tex02;
		ps2_gsreg_addr		tex02addr;
		//
		ps2_gsreg_clamp		clamp2;
		ps2_gsreg_addr		clamp2addr;
	} ps2_gs_texenv2 __attribute__((aligned(16)));

[$B%a%s%P(B]
	texflush	TEXFLUSH$B%l%8%9%?$NCM(B
	texflushaddr	TEXFLUSH$B%l%8%9%?$N%"%I%l%9(B
	tex02		TEX0_2$B%l%8%9%?$NCM(B
	tex02addr	TEX0_2$B%l%8%9%?$N%"%I%l%9(B
	tex12		TEX1_2$B%l%8%9%?$NCM(B
	tex12addr	TEX1_2$B%l%8%9%?$N%"%I%l%9(B
	clamp2		CLAMP_2$B%l%8%9%?$NCM(B
	clamp2addr	CLAMP_2$B%l%8%9%?$N%"%I%l%9(B

[$B2r@b(B]
	$B%F%/%9%A%c>pJs(B($B%3%s%F%-%9%H(B2)$B$rJ];}$9$k9=B$BN$G$9!#(B
	ps2_gs_set_texenv2()$B4X?t$G!"9=B$BN$KCM$r@_Dj$G$-$^$9!#9=B$BN$N(B
	$B%a%b%j>e$G$ND>A0$K!"(BGIFtag(PACKET$B%b!<%I(B,REGS=A+D)$B$rIU$1$l$P!"(B
	$B$=$N$^$^(BGIF$B$KE>Aw$G$-$k9=B$$K$J$C$F$$$^$9!#(Bmipmap$B$r;HMQ$9$k>l(B
	$B9g$K$O!"$3$NB>$K(BMIPTBP1_2, MIPTBP2_2$B%l%8%9%?$N@_Dj$,I,MW$G$9!#(B

[$BHw9M(B]
	$B$3$N9=B$BN$K$O(BDMA$B$G(BGS$B$KE>Aw$5$l$k%G!<%?$,@_Dj$5$l$^$9$N$G!"@h(B
	$BF,$r(B16byte$B%"%i%$%a%s%H$KI,$:9g$o$;$F%a%b%j$KG[CV$7$F$/$@$5$$!#(B



 2 $B4X?t(B
========

=========================================================================
ps2_gs_get_gparam						   [$B4X?t(B]
=========================================================================
					     $B%i%$%V%i%j%7%9%F%`>pJs$r3MF@(B
[$B7A<0(B]
	ps2_gs_gparam *ps2_gs_get_gparam(void)

[$B0z?t(B]
	$B$J$7(B

[$BJV$jCM(B]
	$B%7%9%F%`$G;HMQCf$N9=B$BN$N%]%$%s%?(B

[$B2r@b(B]
	$B%i%$%V%i%j$G;HMQCf$N%7%9%F%`>pJs9=B$BN$N%]%$%s%?$rJV$7$^$9!#(B
	$B$3$N%]%$%s%?7PM3$GJQ99$r9T$o$J$$$G2<$5$$!#JQ99$O(Bps2_gs_open()$B!"(B
	ps2_gs_reset()$B!"(Bps2_gs_set_center()$B$rMQ$$$F9T$$$^$9!#(B

=========================================================================
ps2_gs_load_image						   [$B4X?t(B]
=========================================================================
							  LoadImage$B$N<B9T(B
[$B7A<0(B]
	int ps2_gs_load_image(
		struct ps2_image *lp
	)

[$B0z?t(B]
	lp		$B2hA|>pJs$,@_Dj$5$l$F$$$k9=B$BN$N%"%I%l%9(B

[$BJV$jCM(B]
	$B=*N;>uBV(B
	$B@5?t(B:	$B@5>o=*N;(B($BE>Aw%P%$%H?t(B)
	-1:	$B0[>o=*N;(B

[$B2r@b(B]
	$B%a%$%s%a%b%j$+$i(BGS$B$N%m!<%+%k%a%b%j$X%$%a!<%8%G!<%?$rE>Aw$7$^$9!#(B
	$BE>Aw$O(Bioctl(PS2IOC_LOADIMAGE)$B$K$h$j9T$o$l$^$9!#(B
	(ps2dev_ioctls_jp.txt$B$r;2>H(B)

[$BHw9M(B]
	$B?7$7$$%F%/%9%A%c$r(BGS$B$KE>Aw$7$?>l9g!"%F%/%9%A%c$N:F@_Dj$r9T$&I,(B
	$BMW$,$"$j$^$9!#(Bps2_gs_set_texenv()$B4X?t$N@bL@$r;2>H$7$F$/$@$5$$!#(B

=========================================================================
ps2_gs_put_dispenv						   [$B4X?t(B]
=========================================================================
						       $BI=<(4XO"$N=i4|@_Dj(B
[$B7A<0(B]
	void ps2_gs_put_dispenv(
		ps2_gs_dispenv *disp
	)

[$B0z?t(B]
	disp		$BI=<(4D6-$r@_Dj$9$k9=B$BN$N%"%I%l%9(B

[$BJV$jCM(B]
	$B$J$7(B

[$B2r@b(B]
	disp$B$NFbMF$r(BGS$B$N%l%8%9%?$K@_Dj$7$^$9!#(B

=========================================================================
ps2_gs_put_drawenv						   [$B4X?t(B]
=========================================================================
						       $BIA2h4XO"$N=i4|@_Dj(B
[$B7A<0(B]
	int ps2_gs_putdrawenv(
		ps2_giftag *giftag
	)

[$B0z?t(B]
	giftag		$BIA2h4D6-@_Dj%G!<%?$N@hF,%"%I%l%9(B

[$BJV$jCM(B]
	$B=*N;>uBV(B
	0:	$B@5>o=*N;(B
	-1:	$B0[>o=*N;(B

[$B2r@b(B]
	$BIA2h4D6-$N@_Dj%G!<%?$r(BGS$B$KE>Aw$7!"=jMW$N%l%8%9%?$K@_Dj$7$^$9!#(B
	$BE,@Z$JCM$,@_Dj$5$l$?IA2h4D6-9=B$BN(Bps2_gs_drawenv$B$rMQ0U$7!"$=$N(B
	$BD>A0$K(BGIFtag$B!J(BPACKED$B%b!<%I(B,REGS=A+D$B!K$rCV$-!"$=$N(BGIFtag$B$N%"%I(B
	$B%l%9$r0z?t(Bgiftag$B$K;XDj$7$F$/$@$5$$!#$3$N4X?t$O(BDMA$BE>Aw$r3+;O$9(B
	$B$k$H$?$@$A$K!JE>Aw=*N;$rBT$?$:$K!K=*N;$7$^$9!#(B

[$BHw9M(B]
	DMA$B$r;HMQ$7$F%G!<%?E>Aw$r9T$&$?$a!"(BGIFtag16byte$B%"%i%$%a%s%H$K(B
	$BI,$:9g$o$;$F%a%b%j$KG[CV$7$F$/$@$5$$!#(B

=========================================================================
ps2_gs_reset							   [$B4X?t(B]
=========================================================================
							       GS$B$N=i4|2=(B
[$B7A<0(B]
	void ps2_gs_reset(
		int mode,
		int inter,
		int omode,
		int ffmode,
		int resolution,
		int refresh_rate
	)

[$B0z?t(B]
	mode $B%j%;%C%H%b!<%I(B
		0:	$B%*!<%k%j%;%C%H(B
		1:	$BIA2h%j%;%C%H(B
	inter $B%$%s%?%l!<%9(B/$B%N%s%$%s%?%l!<%9$N@_Dj(B(mode==0$B$N;~$N$_M-8z(B)
		PS2_GS_NOINTERLACE:	non-interlace
		PS2_GS_INTERLACE:	interlace
	omode $B%S%G%*?.9f%U%)!<%^%C%H$N@_Dj(B(mode==0$B$N;~$N$_M-8z(B)
		PS2_GS_VESA:	VESA
		PS2_GS_DTV:	DTV
		PS2_GS_NTSC:	NTSC
		PS2_GS_PAL:	PAL
	ffmode FRAME/FIELD$B%b!<%I$N@_Dj(B(mode==0$B!"(Binterlace$B;~$N$_M-8z(B)
		PS2_GS_FIELD:	FIELD$B%b!<%I;OE@$+$i(B1$B%i%$%s$*$-$KFI$`(B
				(+0,+2,+4,... / +1,+3,+5,...)
		PS2_GS_FRAME:	FRAME$B%b!<%I;OE@$+$i(B1$B%i%$%s$:$DFI$`(B
				(+0,+1,+2,+3,...)
	resolution	$B2rA|EY$N@_Dj(B(mode==0$B$N;~$N$_M-8z(B)
		omode==PS2_GS_VESA$B$N;~(B
			PS2_GS_640x480:		640x480
			PS2_GS_800x600:		800x600
			PS2_GS_1024x768:	1024x768
			PS2_GS_1280x1024:	1280x1024
		omode==PS2_GS_DTV$B$N;~(B
			PS2_GS_480P:	480P
			PS2_GS_1080I:	1080I
			PS2_GS_720P:	720P
	refresh_rate	$B%j%U%l%C%7%e%l!<%H$N@_Dj(B(mode==0$B$N;~$N$_M-8z(B)
		omode==PS2_GS_VESA$B$N;~(B
			0		$B%G%U%)%k%H(B($BLs(B75Hz)
			PS2_GS_60Hz	$BLs(B60Hz
			PS2_GS_75Hz	$BLs(B75Hz

[$BJV$jCM(B]
	$B$J$7(B

[$B2r@b(B]
	GS$B$r;XDj$7$?%b!<%I$G%j%;%C%H$7$^$9!#(B
	mode$B$K(B0$B$r;XDj$7$?>l9g$O(BGS$BA4BN$r%j%;%C%H$7$^$9!#(Bmode$B$K(B1$B$r;XDj$7(B
	$B$?>l9g$O!"IA2hCf$N=hM}$r%-%c%s%;%k$7!"(BGS$B$NFbIt%P%C%U%!$K$"$k%W(B
	$B%j%_%F%#%V%G!<%?$rGK4~$7$^$9!#!JIA2h4D6-!?I=<(4D6-$OJ];}$5$l$^(B
	$B$9!K%*!<%k%j%;%C%H;~$K$OI=<($ODd;_$5$l$^$9!#(B
	ps2_gs_start_display()$B$GI=<($r3+;O$7$F2<$5$$!#(B

[$BHw9M(B]
	$B%*!<%k%j%;%C%H;~$O!"(BGS$B$N%m!<%+%k%a%b%j$NFbMF$OJ]>Z$5$l$^$;$s!#(B

=========================================================================
ps2_gs_set_alphaenv						   [$B4X?t(B]
=========================================================================
				   $B%"%k%U%!%V%l%s%G%#%s%0@_Dj%G!<%?$N:n@.(B
[$B7A<0(B]
	int ps2_gs_set_alphaenv(
		ps2_gs_alphaenv *ap,
		int pabe
	)

[$B0z?t(B]
	ap	$B%"%k%U%!%V%l%s%G%#%s%0>pJs$r@_Dj$9$k9=B$BN$N%"%I%l%9(B
	pabe	$B%T%/%;%kC10L$N%"%k%U%!%V%l%s%G%#%s%0$N@)8f(B
			0:	$B9T$o$J$$(B
			1:	$B9T$&!J(BA$BCM$N(BMSB$B$,(B0$B$N%T%/%;%k$KBP$7$F$O(B
				$B%"%k%U%!%V%l%s%G%#%s%0(Boff)

[$BJV$jCM(B]
	ps2_gs_alphaenv$B9=B$BN$N%5%$%:(B(qword(16byte/128bit)$BC10L(B)

[$B2r@b(B]
	$B%"%k%U%!%V%l%s%G%#%s%0$N@_Dj(B($B%3%s%F%-%9%H(B1)$B$K4X$9$k%G!<%?$r!"(B
	ps2_gs_alphaenv$B9=B$BN$N3F%a%s%P$K%;%C%H$7$^$9!#(B
	$B$3$N9=B$BN$ND>A0$K(BGIFtag$B!J(BPACKED$B%b!<%I(B,REGS=A+D$B!K$rCV$/$H!"$=(B
	$B$N$^$^(BGIF$B$KE>Aw$9$k$3$H$,$G$-$^$9!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_set_alphaenv2						   [$B4X?t(B]
=========================================================================
				   $B%"%k%U%!%V%l%s%G%#%s%0@_Dj%G!<%?$N:n@.(B
[$B7A<0(B]
	int ps2_gs_set_alphaenv2(
		ps2_gs_alphaenv2 *ap,
		int pabe
	)

[$B0z?t(B]
	ap	$B%"%k%U%!%V%l%s%G%#%s%0>pJs$r@_Dj$9$k9=B$BN$N%"%I%l%9(B
	pabe	$B%T%/%;%kC10L$N%"%k%U%!%V%l%s%G%#%s%0$N@)8f(B
			0:	$B9T$o$J$$(B
			1:	$B9T$&!J(BA$BCM$N(BMSB$B$,(B0$B$N%T%/%;%k$KBP$7$F$O(B
				$B%"%k%U%!%V%l%s%G%#%s%0(Boff)

[$BJV$jCM(B]
	ps2_gs_alphaenv2$B9=B$BN$N%5%$%:(B

[$B2r@b(B]
	$B%"%k%U%!%V%l%s%G%#%s%0$N@_Dj(B($B%3%s%F%-%9%H(B2)$B$K4X$9$k%G!<%?$r!"(B
	ps2_gs_alphaenv2$B9=B$BN$N3F%a%s%P$K%;%C%H$7$^$9!#(B
	$B$3$N9=B$BN$ND>A0$K(BGIFtag$B!J(BPACKED$B%b!<%I(B,REGS=A+D$B!K$rCV$/$H!"$=(B
	$B$N$^$^(BGIF$B$KE>Aw$9$k$3$H$,$G$-$^$9!#(BPABE, TEXA$B$O!"%3%s%F%-%9%H(B
	$B@Z$jBX$($,$G$-$^$;$s$N$G!"%3%s%F%-%9%H(B1$B$H0[$J$kCM$r@_Dj$9$k>l(B
	$B9g$OCm0U$7$F$/$@$5$$!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_set_clear						   [$B4X?t(B]
=========================================================================
					     $B%P%C%U%!%/%j%"MQ%G!<%?$N:n@.(B
[$B7A<0(B]
	int ps2_gs_set_clear(
		ps2_gs_clear *cp,
		int ztest,
		int x, int y,
		int w, int h,
		int r, int g, int b, int a,
		__u32 z
	)

[$B0z?t(B]
	cp	$B%P%C%U%!%/%j%"MQ%G!<%?$r@_Dj$9$k9=B$BN$N%"%I%l%9(B
	ztest	$B%G%W%9%F%9%HJ}<0(B
		PS2_GS_TEST_ZTST_NEVER:
			$B%G%W%9%F%9%H$J$7!J(BZ$B%P%C%U%!IT;HMQ!K(B
		PS2_GS_TEST_ZTST_ALWAYS:
			Z$B%P%C%U%!$NCM$K$+$+$o$i$:A4%T%/%;%k$rIA2h(B
		PS2_GS_TEST_ZTST_GEQUAL:
			Z$BCM$,(BZ$B%P%C%U%!$NCM0J>e$N%T%/%;%k$rIA2h(B
		PS2_GS_TEST_ZTST_GREATER:
			Z$BCM$,(BZ$B%P%C%U%!$NCM$h$jBg$-$$%T%/%;%k$rIA2h(B
	x, y	$B%/%j%"NN0h:8>eC<E@:BI8(B
	w, h	$B%/%j%"NN0h$NI}!"9b$5(B($B%T%/%;%kC10L(B)
	r, g, b, a $B%U%l!<%`%P%C%U%!$N%/%j%"CM(B
	z	Z$B%P%C%U%!$N%/%j%"CM(B

[$BJV$jCM(B]
	ps2_gs_clear$B9=B$BN$N%5%$%:(B(qword(16byte/128bit)$BC10L(B)

[$B2r@b(B]
	$B%P%C%U%!%/%j%"MQ$N%G!<%?$r!";XDj$5$l$?(Bps2_gs_clear$B9=B$BN$N3F%a(B
	$B%s%P$K%;%C%H$7$^$9!#(B
	$B$3$N9=B$BN$ND>A0$K(BGIFtag$B!J(BPACKED$B%b!<%I!"(BA+D$B!K$rCV$$$F(BGIF$B$KE>Aw(B
	$B$9$k$H!"%3%s%F%-%9%H#1$N%U%l!<%`%P%C%U%!$r(Br,g,b,a$B$K;XDj$7$?CM(B
	$B$G!"F1$8$/%3%s%F%-%9%H#1$N(BZ$B%P%C%U%!$r(Bz$B$K;XDj$7$?CM$G%/%j%"$9$k(B
	$B$3$H$K$J$j$^$9!#(Bztest$B$K(BNEVER$B0J30$r;XDj$7$?>l9g$O!"%G%W%9%F%9%H(B
	$BJ}<0$r$$$C$?$s(BALWAYS$B$H$7$F%U%l!<%`%P%C%U%!$H(BZ$B%P%C%U%!$r%/%j%"(B
	$B$7!"$"$i$?$a$F(Bztest$B$K;XDj$7$?J}<0$r@_Dj$9$k$h$&$K$J$j$^$9!#(B
	ztest$B$K(BNEVER$B$r;XDj$7$?>l9g$O!"(Bztest=ALWAYS$B$HEy2A$JF0:n$r$7$^$9(B
	$B$N$G!"I,$:!"(BZBUF$B$N(BZMSK$B$NCM$r(BPS2_GS_ZBUF_ZMSK_MSK$B$K$7$F$+$i$4;H(B
	$BMQ$/$@$5$$!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_set_clear2						   [$B4X?t(B]
=========================================================================
					     $B%P%C%U%!%/%j%"MQ%G!<%?$N:n@.(B
[$B7A<0(B]
	int ps2_gs_set_clear2(
		ps2_gs_clear *cp,
		int ztest,
		int x, int y,
		int w, int h,
		int r, int g, int b, int a,
		__u32 z
	)

[$B0z?t(B]
	ps2_gs_set_clear()$B;2>H(B

[$BJV$jCM(B]
	ps2_gs_clear$B9=B$BN$N%5%$%:(B(qword(16byte/128bit)$BC10L(B)

[$B2r@b(B]
	$B%P%C%U%!%/%j%"MQ$N%G!<%?$r!";XDj$5$l$?(Bps2_gs_clear$B9=B$BN$N3F%a(B
	$B%s%P$K%;%C%H$7$^$9!#(B
	$B$3$N9=B$BN$ND>A0$K(BGIFtag$B!J(BPACKED$B%b!<%I!"(BA+D$B!K$rCV$$$F(BGIF$B$KE>Aw(B
	$B$9$k$H!"%3%s%F%-%9%H#2$N%U%l!<%`%P%C%U%!$r(Br,g,b,a$B$K;XDj$7$?CM(B
	$B$G!"F1$8$/%3%s%F%-%9%H#2$N(BZ$B%P%C%U%!$r(Bz$B$K;XDj$7$?CM$G%/%j%"$9$k(B
	$B$3$H$K$J$j$^$9!#(Bztest$B$K(BNEVER$B0J30$r;XDj$7$?>l9g$O!"%G%W%9%F%9%H(B
	$BJ}<0$r$$$C$?$s(BALWAYS$B$H$7$F%U%l!<%`%P%C%U%!$H(BZ$B%P%C%U%!$r%/%j%"(B
	$B$7!"$"$i$?$a$F(Bztest$B$K;XDj$7$?J}<0$r@_Dj$9$k$h$&$K$J$j$^$9!#(B
	ztest$B$K(BNEVER$B$r;XDj$7$?>l9g$O!"(Bztest=ALWAYS$B$HEy2A$JF0:n$r$7$^$9(B
	$B$N$G!"I,$:!"(BZBUF$B$N(BZMSK$B$NCM$r(BPS2_GS_ZBUF_ZMSK_MSK$B$K$7$F$+$i$4;H(B
	$BMQ$/$@$5$$!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_set_dbuff						   [$B4X?t(B]
=========================================================================
						     $B%@%V%k%P%C%U%!$N@_Dj(B
[$B7A<0(B]
	void ps2_gs_set_dbuff(
		ps2_gs_dbuff *db,
		int psm,
		int w, int h,
		int ztest,
		int zpsm
		int clear,
	)

[$B0z?t(B]
	db $B%@%V%k%P%C%U%!>pJs$r@_Dj$9$k9=B$BN%"%I%l%9(B
	psm $BIA2h%T%/%;%k%U%)!<%^%C%H(B
		PS2_GS_PSMCT32
		PS2_GS_PSMCT24
		PS2_GS_PSMCT16
		PS2_GS_PSMCT16S
	w, h $BI=<((B/$BIA2hNN0h$NI}!"9b$5(B($B%T%/%;%kC10L(B)
	ztest $B%G%W%9%F%9%HJ}<0(B
		PS2_GS_TEST_ZTST_NEVER:
			$B%G%W%9%F%9%H$J$7!J(BZ$B%P%C%U%!%^%9%/!K(B
		PS2_GS_TEST_ZTST_ALWAYS:
			Z$B%P%C%U%!$NCM$K$+$+$o$i$:A4%T%/%;%k$rIA2h(B
		PS2_GS_TEST_ZTST_GEQUAL:
			Z$BCM$,(BZ$B%P%C%U%!$NCM0J>e$N%T%/%;%k$rIA2h(B
		PS2_GS_TEST_ZTST_GREATER:
			Z$BCM$,(BZ$B%P%C%U%!$NCM$h$jBg$-$$%T%/%;%k$rIA2h(B
	zpsm Z$BCM3JG<%U%)!<%^%C%H(B
		(ztest!=PS2_GS_TEST_ZTST_NEVER$B$N;~$N$_M-8z(B)
			PS2_GS_PSMZ32
			PS2_GS_PSMZ24
			PS2_GS_PSMZ16
			PS2_GS_PSMZ16S
	clear $BIA2hNN0h$N%/%j%"@)8f(B
		0:	$B%/%j%"$7$J$$(B
		1:	$B%/%j%"$9$k(B

[$BJV$jCM(B]
	$B$J$7(B

[$B2r@b(B]
	$B%@%V%k%P%C%U%!>pJs9=B$BNCf$K$"$k(B2$BAH$NIA2h4D6-(B/$BI=<(4D6-(B/$B%P%C%U%!(B
	$B%/%j%"MQ%G!<%?$K!"0z?t$K$7$?$,$C$F$=$l$>$lE,@Z$JCM$r@_Dj$7$^$9!#(B
	clear$B$K(B1$B$r;XDj$7$?>l9g!"(Bps2_gs_swap_dbuff()$B4X?t$rMQ$$$F%@%V%k(B
	$B%P%C%U%!$r@Z$jBX$($k:]$K%U%l!<%`%P%C%U%!$H(BZ$B%P%C%U%!$,(B0$B%/%j%"$5(B
	$B$l$k$h$&$K$J$j$^$9!#$3$N4X?t$O!"%3%s%F%-%9%H(B1$B$N4D6-$N$_$r@_Dj(B
	$B$7$^$9!#(Bztest==NEVER$B$G8F$S=P$7$?>l9g!"(Bztest=ALWAYS, ZBUF.ZMSK=
	PS2_GS_ZBUF_ZMSK_MSK$B$K@_Dj$5$l$^$9!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_set_dbuff_dc						   [$B4X?t(B]
=========================================================================
						     $B%@%V%k%P%C%U%!$N@_Dj(B
[$B7A<0(B]
	void ps2_gs_set_dbuff_dc(
		ps2_gs_dbuff_dc *db,
		int psm,
		int w, int h,
		int ztest,
		int zpsm
		int clear,
	)

[$B0z?t(B]
	ps2_gs_set_dbuff()$B;2>H(B

[$BJV$jCM(B]
	$B$J$7(B

[$B2r@b(B]
	$B%@%V%k%P%C%U%!>pJs9=B$BNCf$K$"$k(B2$BAH$NIA2h4D6-(B/$BI=<(4D6-(B/$B%P%C%U%!(B
	$B%/%j%"MQ%G!<%?$K!"0z?t$K$7$?$,$C$F$=$l$>$lE,@Z$JCM$r@_Dj$7$^$9!#(B
	clear$B$K(B1$B$r;XDj$7$?>l9g!"(Bps2_gs_swap_dbuff()$B4X?t$rMQ$$$F%@%V%k(B
	$B%P%C%U%!$r@Z$jBX$($k:]$K%U%l!<%`%P%C%U%!$H(BZ$B%P%C%U%!$,(B0$B%/%j%"$5(B
	$B$l$k$h$&$K$J$j$^$9!#$3$N4X?t$O!"%3%s%F%-%9%H(B1$B$H(B2$B$NN>J}$N4D6-$r(B
	$B@_Dj$7$^$9!#(Bztest==NEVER$B$G8F$S=P$7$?>l9g!"(Bztest=ALWAYS,
	ZBUF.ZMSK= PS2_GS_ZBUF_ZMSK_MSK$B$K@_Dj$5$l$^$9!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_set_dispenv						   [$B4X?t(B]
=========================================================================
						     $BI=<(4D6-%G!<%?$N:n@.(B
[$B7A<0(B]
	void ps2_gs_set_dispenv(
		ps2_gs_dispenv *disp,
		int psm,
		int w, int h,
		int dx, int dy,
	)

[$B0z?t(B]
	disp $BI=<(4D6-$r@_Dj$9$k9=B$BN$N%"%I%l%9(B
	psm $B%T%/%;%k%U%)!<%^%C%H(B
		PS2_GS_PSMCT32
		PS2_GS_PSMCT24
		PS2_GS_PSMCT16
		PS2_GS_PSMCT16S
	w, h $BI=<(NN0h$NI}!"9b$5(B($B%T%/%;%kC10L(B)
	dx, dy $BI=<(NN0h:8>eC<E@$N%F%l%S2hLL>e$G$N0LCV(B
	       ($B%T%/%;%kC10L(B)

[$BJV$jCM(B]
	$B$J$7(B

[$B2r@b(B]
	$BI=<(4D6-9=B$BN$N%a%s%P$KCM$r@_Dj$7$^$9!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_set_drawenv						   [$B4X?t(B]
=========================================================================
						     $BIA2h4D6-%G!<%?$N:n@.(B
[$B7A<0(B]
	int ps2_gs_set_drawenv(
		ps2_gs_drawenv1 *draw,
		int psm,
		int w, int h,
		int ztest,
		int zpsm
	)

[$B0z?t(B]
	draw $BIA2h4D6-$r@_Dj$9$k9=B$BN$N%"%I%l%9(B
	psm $BIA2h%T%/%;%k%U%)!<%^%C%H(B
		PS2_GS_PSMCT32
		PS2_GS_PSMCT24
		PS2_GS_PSMCT16
		PS2_GS_PSMCT16S
	w, h $BIA2hNN0h$NI}!"9b$5(B($B%T%/%;%kC10L(B)
	ztest $B%G%W%9%F%9%HJ}<0(B
		PS2_GS_TEST_ZTST_NEVER:
			$B%G%W%9%F%9%H$J$7!J(BZ$B%P%C%U%!%^%9%/!K(B
		PS2_GS_TEST_ZTST_ALWAYS:
			Z$B%P%C%U%!$NCM$K$+$+$o$i$:A4%T%/%;%k$rIA2h(B
		PS2_GS_TEST_ZTST_GEQUAL:
			Z$BCM$,(BZ$B%P%C%U%!$NCM0J>e$N%T%/%;%k$rIA2h(B
		PS2_GS_TEST_ZTST_GREATER:
			Z$BCM$,(BZ$B%P%C%U%!$NCM$h$jBg$-$$%T%/%;%k$rIA2h(B
	zpsm Z$BCM3JG<%U%)!<%^%C%H(B
		(ztest!=PS2_GS_TEST_ZTST_NEVER$B$N;~$N$_M-8z(B)
			PS2_GS_PSMZ32
			PS2_GS_PSMZ24
			PS2_GS_PSMZ16
			PS2_GS_PSMZ16S

[$BJV$jCM(B]
	ps2_gs_drawenv1$B9=B$BN$N%5%$%:(B(qword(16byte/128bit)$BC10L(B)

[$B2r@b(B]
	$B%3%s%F%-%9%H(B1$BMQIA2h4D6-9=B$BN$N%a%s%P$KCM$r@_Dj$7$^$9!#(B

[$BHw9M(B]
	ztest==NEVER$B$G8F$S=P$7$?>l9g!"(Bztest=ALWAYS ZBUF.ZMSK=MSK$B$K@_Dj(B
	$B$5$l$^$9!#(B

=========================================================================
ps2_gs_set_drawenv2						   [$B4X?t(B]
=========================================================================
						     $BIA2h4D6-%G!<%?$N:n@.(B
[$B7A<0(B]
	int ps2_gs_set_drawenv2(
		ps2_gs_DrawEnv2 *draw,
		int psm,
		int w, int h,
		int ztest,
		int zpsm
	)

[$B0z?t(B]
	ps2_gs_set_drawenv()$B;2>H!#(B

[$BJV$jCM(B]
	ps2_gs_drawenv2$B9=B$BN$N%5%$%:(B(qword(16byte/128bit)$BC10L(B)

[$B2r@b(B]
	$B%3%s%F%-%9%H(B2$BMQIA2h4D6-9=B$BN$N%a%s%P$KCM$r@_Dj$7$^$9!#(B

[$BHw9M(B]
	PRMODECONT, COLCLAMP, DTHE$B$O!"%3%s%F%-%9%H@Z$jBX$($,$G$-$^$;$s(B
	$B$N$G!"%3%s%F%-%9%H(B1$B$H0[$J$kCM$r@_Dj$9$k>l9g$OCm0U$7$F$/$@$5$$!#(B
	ztest==NEVER$B$G8F$S=P$7$?>l9g!"(Bztest=ALWAYS ZBUF.ZMSK=MSK$B$K@_Dj(B
	$B$5$l$^$9!#(B

=========================================================================
ps2_gs_set_finish						   [$B4X?t(B]
=========================================================================
						 $BIA2h=*N;BT$A%G!<%?$N@_Dj(B
[$B7A<0(B]
	void ps2_gs_set_finish(
		ps2_gs_finish *p
	)

[$B0z?t(B]
	p		$BIA2h=*N;BT$A%G!<%?$r@_Dj$9$k9=B$BN$N%"%I%l%9(B

[$BJV$jCM(B]
	$B$J$7(B

[$B2r@b(B]
	$BIA2h=*N;BT$A$N$?$a$N%G!<%?$r(Bps2_gs_finish$B9=B$BN$N3F%a%s%P$K@_(B
	$BDj$7$^$9!#(BGS$B$N40A4$JIA2h=*N;$rBT$A$?$$>l9g!"$3$N4X?t$GCM$r@_Dj(B
	$B$7$F(Bps2_gs_wait_finish()$B$r8F$S=P$7$^$9!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_set_half_offset						   [$B4X?t(B]
=========================================================================
					       $BIA2h%*%U%;%C%H%G!<%?$N:n@.(B
[$B7A<0(B]
	void ps2_gs_set_half_offset(
		ps2_gs_drawenv1 *draw,
		int halfoff
	)

[$B0z?t(B]
	draw		 $BIA2h4D6-$r@_Dj$9$k9=B$BN$N%"%I%l%9(B
	halfoff		 $B%*%U%;%C%H2C;;$N@)8f(B
			 0:	$B2C;;$7$J$$(B
			 1:	$B2C;;$9$k(B

[$BJV$jCM(B]
	$B$J$7(B

[$B2r@b(B]
	$BIA2hNN0h$NCf?4:BI8$+$iIA2h%*%U%;%C%H:BI8$r7W;;$7!"IA2h4D6-9=B$(B
	$BBNFb$N(BXYOFFSET1$B$NCM$r@_Dj$7$^$9!#(B
	$B$=$N:]$K!"(Bhalfoff$B$K(B1$B$,;XDj$5$l$F$$$l$P!"%O!<%U%T%/%;%kJ,$H$7$F(B
	y$BJ}8~%*%U%;%C%H$K(B8$B$r2C;;$7$F@_Dj$7$^$9!#(B

[$BHw9M(B]
	$B%$%s%?%l!<%9%b!<%I$G$O(Bodd$B%U%#!<%k%I$H(Beven$B%U%#!<%k%I$KH>%T%/%;(B
	$B%kJ,$:$l$?2hA|$rIA2h$5$;$k$3$H$K$h$C$F!"8+$+$1>e$N=D2rA|EY$rAv(B
	$B::@~?t$N(B2$BG\$K0z$->e$2$k$3$H$,$G$-$^$9!#%P%C%U%!$r(BFRAME$B%b!<%I$H(B
	$B$7$?>l9g$O!"N>%U%#!<%k%I$N%*%U%;%C%HCM$r$:$i$9$3$H$GH>%T%/%;%k(B
	$BJ,$:$l$?2hA|$rIA2h$5$;$k$3$H$,$G$-$^$9!#(B

=========================================================================
ps2_gs_set_half_offset2						   [$B4X?t(B]
=========================================================================
					       $BIA2h%*%U%;%C%H%G!<%?$N:n@.(B
[$B7A<0(B]
	void ps2_gs_set_half_offset2(
		ps2_gs_DrawEnv2 *draw,
		int halfoff
	)

[$B0z?t(B]
	draw		 $BIA2h4D6-$r@_Dj$9$k9=B$BN$N%"%I%l%9(B
	halfoff		 $B%*%U%;%C%H2C;;$N@)8f(B
			 0:	$B2C;;$7$J$$(B
			 1:	$B2C;;$9$k(B

[$BJV$jCM(B]
	$B$J$7(B

[$B2r@b(B]
	$BIA2hNN0h(B($B%3%s%F%-%9%H(B2)$B$NCf?4:BI8$+$iIA2h%*%U%;%C%H:BI8$r7W;;(B
	$B$7!"IA2h4D6-9=B$BNFb$N(BXYOFFSET2$B$NCM$r@_Dj$7$^$9!#(B
	$B$=$N:]$K!"(Bhalfoff$B$K(B1$B$,;XDj$5$l$F$$$l$P!"%O!<%U%T%/%;%kJ,$H$7$F(B
	y$BJ}8~%*%U%;%C%H$K(B8$B$r2C;;$7$F@_Dj$7$^$9!#(B

[$BHw9M(B]
	$B%$%s%?%l!<%9%b!<%I$G$O(Bodd$B%U%#!<%k%I$H(Beven$B%U%#!<%k%I$KH>%T%/%;(B
	$B%kJ,$:$l$?2hA|$rIA2h$5$;$k$3$H$K$h$C$F!"8+$+$1>e$N=D2rA|EY$rAv(B
	$B::@~?t$N(B2$BG\$K0z$->e$2$k$3$H$,$G$-$^$9!#%P%C%U%!$r(BFRAME$B%b!<%I$H(B
	$B$7$?>l9g$O!"N>%U%#!<%k%I$N%*%U%;%C%HCM$r$:$i$9$3$H$GH>%T%/%;%k(B
	$BJ,$:$l$?2hA|$rIA2h$5$;$k$3$H$,$G$-$^$9!#(B

=========================================================================
ps2_gs_set_image						   [$B4X?t(B]
=========================================================================
							   $B2hA|>pJs$N@_Dj(B
[$B7A<0(B]
	int ps2_gs_set_image(
		ps2_image *lp,
		int dbp,
		int dbw,
		int dpsm,
		int x, int y,
		int w, int h
	)

[$B0z?t(B]
	lp  $B2hA|>pJs$r@_Dj$9$k9=B$BN$N%"%I%l%9(B
	dbp  dbp$BE>Aw@h%P%C%U%!%Y!<%9%"%I%l%9(B
	     (dpb x 64$B$,<B:]$N%"%I%l%9$K$J$k(B)
	dbw  dbw$BE>Aw@h%P%C%U%!I}(B
	     (dbw x 64$B$,<B:]$NI}$K$J$k(B)
	dpsm $BE>Aw%G!<%?$N%T%/%;%k%U%)!<%^%C%H(B
		PS2_GS_PSMCT32$B!J%T%/%;%k%5%$%:(B:32bit$B!K(B
		PS2_GS_PSMCT24$B!J%T%/%;%k%5%$%:(B:24bit$B!K(B
		PS2_GS_PSMCT16$B!J%T%/%;%k%5%$%:(B:16bit$B!K(B
		PS2_GS_PSMCT16S$B!J%T%/%;%k%5%$%:(B:16bit$B!K(B
		PS2_GS_PSMT8$B!J%T%/%;%k%5%$%:(B:8bit$B!K(B
		PS2_GS_PSMT4$B!J%T%/%;%k%5%$%:(B:4bit$B!K(B
		PS2_GS_PSMT8H$B!J%T%/%;%k%5%$%:(B:8bit$B!K(B
		PS2_GS_PSMT4HL$B!J%T%/%;%k%5%$%:(B:4bit$B!K(B
		PS2_GS_PSMT4HH$B!J%T%/%;%k%5%$%:(B:4bit$B!K(B
		PS2_GS_PSMZ32$B!J%T%/%;%k%5%$%:(B:32bit$B!K(B
		PS2_GS_PSMZ24$B!J%T%/%;%k%5%$%:(B:24bit$B!K(B
		PS2_GS_PSMZ16$B!J%T%/%;%k%5%$%:(B:16bit$B!K(B
		PS2_GS_PSMZ16S$B!J%T%/%;%k%5%$%:(B:16bit$B!K(B
	x, y $BE>Aw@hNN0h$N:8>eC<E@(B
	w, h $BE>AwNN0h$NI}!"9b$5(B($B%T%/%;%kC10L(B)

[$BJV$jCM(B]
	$B$J$7(B

[$B2r@b(B]
	ps2_gs_load_image()$B!"(Bps2_gs_store_image()$B$G$N2hA|$NFI$_=q$-$*(B
	$B$h$S(Bps2_gs_set_texenv()$B$G$N%F%-%9%A%c2hA|$N@_Dj$KMQ$$$k2hA|>p(B
	$BJs$r@_Dj$7$^$9!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_set_texenv						   [$B4X?t(B]
=========================================================================
					       $B%F%/%9%A%c@_Dj%G!<%?$N:n@.(B
[$B7A<0(B]
	int ps2_gs_set_texenv(
		ps2_gs_texenv *tp,
		int flush,
		struct ps2_image *image,
		int w, h,
		int tfx
		int cbp,
		int cpsm,
		int cld,
		int filter
	)

[$B0z?t(B]
	tp  $B%F%/%9%A%c>pJs$r@_Dj$9$k9=B$BN$N%"%I%l%9(B
	flush  $B%F%/%9%A%c%Z!<%8%P%C%U%!$NL58z2=(B
		0:	$BL58z2=$7$J$$(B
		1:	$BL58z2=$9$k(B
	image  $B%F%-%9%A%c2hA|>pJs(B
	w2, h2  $B%F%/%9%A%c$NI}!"9b$5(B
	       (2^w2$B$*$h$S(B2^h2$B$,<B:]$N%5%$%:$K$J$k(B)
	tfx  $B%F%-%9%A%c%U%!%s%/%7%g%s(B
	cbp  CLUT$B%G!<%?$N%Y!<%9%"%I%l%9(B
	     (cbp x 64$B$,<B:]$N%"%I%l%9$K$J$k(B)
	cpsm  CLUT$B%(%s%H%j3JG<%U%)!<%^%C%H(B
		PS2_GS_PSMCT32
		PS2_GS_PSMCT24
		PS2_GS_PSMCT16
		PS2_GS_PSMCT16S
	cld  CLUT$B%P%C%U%!$N%m!<%I@)8f(B
		PS2_GS_TEX_CLD_NOUPDATE:
			$B%m!<%I$7$J$$(B
		PS2_GS_TEX_CLD_LOAD:
			cbp$B$+$i%m!<%I$9$k(B
		PS2_GS_TEX_CLD_LOAD_COPY0:
			cbp$B$+$i%m!<%I$7(B,GS$BFbIt%l%8%9%?(BCBP0$B$K(Bcbp$BCM$r@_Dj(B
		PS2_GS_TEX_CLD_LOAD_COPY1:
			cbp$B$+$i%m!<%I$7(B,GS$BFbIt%l%8%9%?(BCBP1$B$K(Bcbp$BCM$r@_Dj(B
		PS2_GS_TEX_CLD_TEST0_LOAD_COPY0:
			CBP0!=cbp$B$J$i%m!<%I$7(B,CBP0$B$K(Bcbp$BCM$r@_Dj(B
		PS2_GS_TEX_CLD_TEST0_LOAD_COPY1:
			CBP1!=cbp$B$J$i%m!<%I$7(B,CBP1$B$K(Bcbp$BCM$r@_Dj(B
	filter $B%U%#%k%?%j%s%0J}<0$N;XDj(B
		PS2_GS_TEX1_MMIN_NEAREST:
			min:	NEAREST
			mag:	NEAREST
		PS2_GS_TEX1_MMIN_LINEAR:
			min:	LINEAR
			mag:	LINEAR
		PS2_GS_TEX1_MMIN_NEAREST_MIPMAP_NEAREST:
			min:	NEAREST_MIPMAP_NEAREST
			mag:	NEAREST
		PS2_GS_TEX1_MMIN_NEAREST_MIPMAP_LINEAR:
			min:	NEAREST_MIPMAP_LINEAR
			mag:	LINEAR
		PS2_GS_TEX1_MMIN_LINEAR_MIPMAP_NEAREST:
			min:	LINEAR_MIPMAP_NEAREST
			mag:	NEAREST
		PS2_GS_TEX1_MMIN_LINEAR_MIPMAP_LINEAR:
			min:	LINEAR_MIPMAP_LINEAR
			mag:	LINEAR

[$BJV$jCM(B]
	ps2_gs_texenv$B9=B$BN$N%5%$%:(B(qword(16byte/128bit)$BC10L(B)

[$B2r@b(B]
	$B%F%/%9%A%c$N@_Dj$K4X$9$k%G!<%?(B($B%3%s%F%-%9%H(B1)$B$r!"(Bps2_gs_texenv
	$B9=B$BN$N3F%a%s%P$K@_Dj$7$^$9!#(B
	$B$3$N9=B$BN$ND>A0$K(BGIFtag$B!J(BPACKED$B%b!<%I(B,REGS=A+D$B!K$rCV$/$H!"$=(B
	$B$N$^$^(BGIF$B$KE>Aw$9$k$3$H$,$G$-$^$9!#?7$7$$%F%/%9%A%c$r(BGS$B$KE>Aw(B
	$B$7$?$H$-$K$O!"(Bflush$B$K(B1$B$r;XDj$7$F:n@.$7$?(Bps2_gs_texenv$B9=B$BN$r(B
	$BMQ$$$F!"%F%/%9%A%c$N:F@_Dj$r9T$C$F$/$@$5$$!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_set_texenv2						   [$B4X?t(B]
=========================================================================
					       $B%F%/%9%A%c@_Dj%G!<%?$N:n@.(B
[$B7A<0(B]
	int ps2_gs_set_texenv2(
		ps2_gs_texenv2 *tp,
		int flush,
		struct ps2_image *image,
		int w, h,
		int tfx
		int cbp,
		int cpsm,
		int cld,
		int filter
	)

[$B0z?t(B]
	ps2_gs_set_texenv()$B;2>H!#(B

[$BJV$jCM(B]
	ps2_gs_texenv2$B9=B$BN$N%5%$%:(B(qword(16byte/128bit)$BC10L(B)

[$B2r@b(B]
	$B%F%/%9%A%c$N@_Dj$K4X$9$k%G!<%?(B($B%3%s%F%-%9%H(B2)$B$r!"(B
	ps2_gs_texenv2$B9=B$BN$N3F%a%s%P$K@_Dj$7$^$9!#(B
	$B$3$N9=B$BN$ND>A0$K(BGIFtag$B!J(BPACKED$B%b!<%I(B,REGS=A+D$B!K$rCV$/$H!"$=(B
	$B$N$^$^(BGIF$B$KE>Aw$9$k$3$H$,$G$-$^$9!#?7$7$$%F%/%9%A%c$r(BGS$B$KE>Aw(B
	$B$7$?$H$-$K$O!"(Bflush$B$K(B1$B$r;XDj$7$F:n@.$7$?(Bps2_gs_texenv2$B9=B$BN$r(B
	$BMQ$$$F!"%F%/%9%A%c$N:F@_Dj$r9T$C$F$/$@$5$$!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_start_display						   [$B4X?t(B]
=========================================================================
							 $BI=<($N3+;O$HDd;_(B

[$B7A<0(B]
	int ps2_gs_start_display(
		int start
	)

[$B0z?t(B]
	start	$BI=<($N3+;O(B/$BDd;_(B
		0:	$BI=<(Dd;_(B
		1:	$BI=<(3+;O(B

[$BJV$jCM(B]
	$B=*N;>uBV(B
	0:	$B@5>o=*N;(B
	-1:	$B0[>o=*N;(B

[$B2r@b(B]
	$BI=<($N3+;O(B/$BDd;_$r@_Dj$7$^$9!#(Bps2_gs_reset()$B$G%*!<%k%j%;%C%H$r9T$C$?>l(B
	$B9g!"I=<($ODd;_>uBV$K$J$C$F$$$^$9!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_store_image						   [$B4X?t(B]
=========================================================================
							 StoreImage$B$N<B9T(B
[$B7A<0(B]
	int ps2_gs_store_image(
		ps2_image *sp
	)

[$B0z?t(B]
	sp		$B2hA|>pJs$,@_Dj$5$l$F$$$k9=B$BN$N%"%I%l%9(B

[$BJV$jCM(B]
	$B=*N;>uBV(B
	0:	$B@5>o=*N;(B
	-1:	$B0[>o=*N;(B

[$B2r@b(B]
	GS$B$N%m!<%+%k%a%b%j$+$i%a%$%s%a%b%j$X%$%a!<%8%G!<%?$rE>Aw$7$^$9!#(B
	$BE>Aw$O(Bioctl(PS2IOC_STOREIMAGE)$B$K$h$j9T$o$l$^$9!#(B
	(ps2dev_ioctls_jp.txt$B$r;2>H(B)

[$BHw9M(B]

=========================================================================
ps2_gs_swap_dbuff						   [$B4X?t(B]
=========================================================================
						 $B%@%V%k%P%C%U%!$N@Z$jBX$((B
[$B7A<0(B]
	int ps2_gs_swap_dbuff(
		ps2_gs_dbuff *db,
		int id,
	)

[$B0z?t(B]
	db	$B%@%V%k%P%C%U%!>pJs$,@_Dj$5$l$F$$$k9=B$BN$N%"%I%l%9(B
	id	$B%P%C%U%!HV9f(B($B:G2<0L(B1bit$B$N$_M-8z(B)

[$BJV$jCM(B]
	$B=*N;>uBV(B
	0:	$B@5>o=*N;(B
	-1:	$B0[>o=*N;(B

[$B2r@b(B]
	$B0z?t(Bid$B$N;XDj$K$7$?$,$C$F!"%@%V%k%P%C%U%!>pJs9=B$BNCf$K$"$k(B2$BAH(B
	$B$N$&$A$$$:$l$+$NIA2h4D6-$*$h$SI=<(4D6-$r(BGS$B$K@_Dj$7$^$9!#$3$N4X(B
	$B?t$O!"%3%s%F%-%9%H(B1$B$N4D6-$N$_$r@_Dj$7$^$9!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_swap_dbuff_dc						   [$B4X?t(B]
=========================================================================
						 $B%@%V%k%P%C%U%!$N@Z$jBX$((B
[$B7A<0(B]
	int ps2_gs_swap_dbuff_dc(
		ps2_gs_dbuffdc *db,
		int id,
	)

[$B0z?t(B]
	db	$B%@%V%k%P%C%U%!>pJs$,@_Dj$5$l$F$$$k9=B$BN$N%"%I%l%9(B
	id	$B%P%C%U%!HV9f(B($B:G2<0L(B1bit$B$N$_M-8z(B)

[$BJV$jCM(B]
	$B=*N;>uBV(B
	0:	$B@5>o=*N;(B
	-1:	$B0[>o=*N;(B

[$B2r@b(B]
	$B0z?t(Bid$B$N;XDj$K$7$?$,$C$F!"%@%V%k%P%C%U%!>pJs9=B$BNCf$K$"$k(B2$BAH(B
	$B$N$&$A$$$:$l$+$NIA2h4D6-$*$h$SI=<(4D6-$r(BGS$B$K@_Dj$7$^$9!#$3$N4X(B
	$B?t$O!"%3%s%F%-%9%H(B1$B$H(B2$B$NN>J}$N4D6-$r@_Dj$7$^$9!#(B

[$BHw9M(B]

=========================================================================
ps2_gs_sync_v							   [$B4X?t(B]
=========================================================================
						      V-Blank$B$H$NF14|BT$A(B
[$B7A<0(B]
	int ps2_gs_sync_v(
		int mode
	)

[$B0z?t(B]
	mode		reserved(0$B$r;XDj$9$k$3$H(B)

[$BJV$jCM(B]
	$B%$%s%?%l!<%9%b!<%I$G$N(BFIELD$B>pJs(B
	0:	even field
	1:	odd field
	$B%N%s%$%s%?%l!<%9%b!<%I;~$OI,$:(B1$B$rJV$9(B

[$B2r@b(B]
	V-Blank$B4|4V$N3+;O$^$G%W%m%0%i%`$r%V%m%C%/$7$^$9!#(B
	mode$B$O>-Mh$N5!G=3HD%$KHw$($FMQ0U$5$l$F$$$k0z?t$G$9!#8=%P!<%8%g(B
	$B%s$G$OI,$:(B0$B$r;XDj$7$F$/$@$5$$!#(B

=========================================================================
ps2_gs_wait_finish						   [$B4X?t(B]
=========================================================================
							     $BIA2h=*N;BT$A(B
[$B7A<0(B]
	void ps2_gs_wait_finish(
		ps2_gs_finish *p
	)

[$B0z?t(B]
	p		$BIA2h=*N;BT$A%G!<%?(B

[$BJV$jCM(B]
	$B$J$7(B

[$B2r@b(B]
	GS$B$N40A4$JIA2h=*N;$rBT$A$^$9!#IA2h=*N;BT$A%G!<%?$O(B
	ps2_gs_set_finish()$B$G@_Dj$7$^$9!#(B

[$BHw9M(B]
