ps2sdk  1.1
A collection of Open Source libraries used for developing applications on Sony's PlayStation 2® (PS2).
primitives.c File Reference
#include <errno.h>
#include <stdio.h>
#include <kernel.h>
#include <libgs.h>
#include "internal.h"
+ Include dependency graph for primitives.c:

Go to the source code of this file.

Functions

void GsOverridePrimAttributes (s8 override, s8 iip, s8 tme, s8 fge, s8 abe, s8 aa1, s8 fst, s8 ctxt, s8 fix)
 
void GsEnableDithering (u8 enable, int mode)
 
void GsEnableAlphaTransparency1 (u16 enable, u16 method, u8 alpha_ref, u16 fail_method)
 
void GsEnableAlphaTransparency2 (u16 enable, u16 method, u8 alpha_ref, u16 fail_method)
 
void GsEnableZbuffer1 (u16 enable, u16 test_method)
 
void GsEnableZbuffer2 (u16 enable, u16 test_method)
 
void GsEnableAlphaBlending1 (u16 enable)
 
void GsEnableAlphaBlending2 (u16 enable)
 

Variables

QWORD GsPrimWorkArea []
 
static GS_TEST GSGLOBAL_TEST1
 
static GS_TEST GSGLOBAL_TEST2
 

Function Documentation

◆ GsEnableAlphaBlending1()

void GsEnableAlphaBlending1 ( u16  enable)

Definition at line 137 of file primitives.c.

138 {
139  QWORD *p;
140 
142  gs_setGIF_TAG(((GS_GIF_TAG *)&p[0]), 4,1,0,0,GS_GIF_PACKED,1,gif_rd_ad);
143 
144  if(enable)
145  {
146  gs_setR_ALPHA_1(((GS_R_ALPHA *)&p[1]), 0,1,0,1,0x00); //last arg(0x00) is not used bceause of other settings
147  }
148  else
149  {
150  gs_setR_ALPHA_1(((GS_R_ALPHA *)&p[1]), 0,0,0,0,0x80);
151  }
152  gs_setR_PABE(((GS_R_PABE *)&p[2]), 0);
153  gs_setR_FBA_1(((GS_R_FBA *)&p[3]), 0);
154  gs_setR_TEXA(((GS_R_TEXA *)&p[4]), 0x80, 0, 0x00);
155 
157  GsDmaWait();
158 }
#define UNCACHED_SEG(x)
Definition: kernel.h:35
void GsDmaWait(void)
Definition: dma.c:148
void GsDmaSend(const void *addr, u32 qwords)
Definition: dma.c:88
#define gs_setR_FBA_1(p, _alpha)
Definition: libgs.h:1786
#define gs_setGIF_TAG(p, _nloop, _eop, _pre, _prim, _flg, _nreg, _reg)
Definition: libgs.h:1870
#define gif_rd_ad
Definition: libgs.h:326
#define gs_setR_TEXA(p, _ta0, _aem, _ta1)
Definition: libgs.h:1735
#define gs_setR_ALPHA_1(p, _a, _b, _c, _d, _fix)
Definition: libgs.h:1754
@ GS_GIF_PACKED
Definition: libgs.h:181
#define gs_setR_PABE(p, _enable)
Definition: libgs.h:1782
QWORD GsPrimWorkArea[]
Definition: packets.c:18
Definition: libgs.h:333

References gif_rd_ad, GS_GIF_PACKED, gs_setGIF_TAG, gs_setR_ALPHA_1, gs_setR_FBA_1, gs_setR_PABE, gs_setR_TEXA, GsDmaSend(), GsDmaWait(), GsPrimWorkArea, and UNCACHED_SEG.

Referenced by InitGraphics().

◆ GsEnableAlphaBlending2()

void GsEnableAlphaBlending2 ( u16  enable)

Definition at line 160 of file primitives.c.

161 {
162  QWORD *p;
163 
165  gs_setGIF_TAG(((GS_GIF_TAG*)&p[0]), 4,1,0,0,GS_GIF_PACKED,1,gif_rd_ad);
166 
167  if(enable)
168  {
169  gs_setR_ALPHA_2(((GS_R_ALPHA*)&p[1]), 0,1,0,1,0x00); //last arg(0x00) is not used bceause of other settings
170  }
171  else
172  {
173  gs_setR_ALPHA_2(((GS_R_ALPHA *)&p[1]), 0,0,0,0,0x80);
174  }
175  gs_setR_PABE(((GS_R_PABE *)&p[2]), 0);
176  gs_setR_FBA_2(((GS_R_FBA *)&p[3]), 0);
177  gs_setR_TEXA(((GS_R_TEXA *)&p[4]), 0x80, 0, 0x00);
178 
180  GsDmaWait();
181 }
#define gs_setR_FBA_2(p, _alpha)
Definition: libgs.h:1790
#define gs_setR_ALPHA_2(p, _a, _b, _c, _d, _fix)
Definition: libgs.h:1758

References gif_rd_ad, GS_GIF_PACKED, gs_setGIF_TAG, gs_setR_ALPHA_2, gs_setR_FBA_2, gs_setR_PABE, gs_setR_TEXA, GsDmaSend(), GsDmaWait(), GsPrimWorkArea, and UNCACHED_SEG.

Referenced by InitGraphics().

◆ GsEnableAlphaTransparency1()

void GsEnableAlphaTransparency1 ( u16  enable,
u16  method,
u8  alpha_ref,
u16  fail_method 
)

Definition at line 72 of file primitives.c.

73 {
74  QWORD *p;
75 
79  GSGLOBAL_TEST1.atest_reference = alpha_ref;
80  GSGLOBAL_TEST1.atest_fail_method = fail_method;
81 
85 
86  // tell GS in 16bit texture 1=transparent,0=solid
87  gs_setGIF_TAG(((GS_GIF_TAG *)&p[0]), 1,1,0,0,GS_GIF_PACKED,1,gif_rd_ad);
88  gs_setR_TEXA(((GS_R_TEXA *)&p[1]), 0x80, 0, 0x00);
89 
91  GsDmaWait();
92 }
int GsSetPixelTest1(u8 enable_alpha_test, u8 alpha_test_method, u8 alpha_reference, u8 alpha_fail_method, u8 enable_dest_alpha_test, u8 dest_alpha_test_mode, u8 enable_zbuff_test, u8 alpha_zbuff_method)
Definition: lowlevel.c:127
static GS_TEST GSGLOBAL_TEST1
Definition: primitives.c:20
u64 datest_enable
Definition: libgs.h:835
u64 atest_reference
Definition: libgs.h:833
u64 datest_mode
Definition: libgs.h:836
u64 ztest_method
Definition: libgs.h:838
u64 atest_fail_method
Definition: libgs.h:834
u64 atest_enable
Definition: libgs.h:831
u64 atest_method
Definition: libgs.h:832
u64 ztest_enable
Definition: libgs.h:837

References GS_TEST::atest_enable, GS_TEST::atest_fail_method, GS_TEST::atest_method, GS_TEST::atest_reference, GS_TEST::datest_enable, GS_TEST::datest_mode, gif_rd_ad, GS_GIF_PACKED, gs_setGIF_TAG, gs_setR_TEXA, GsDmaSend(), GsDmaWait(), GSGLOBAL_TEST1, GsPrimWorkArea, GsSetPixelTest1(), UNCACHED_SEG, GS_TEST::ztest_enable, and GS_TEST::ztest_method.

Referenced by InitGraphics().

◆ GsEnableAlphaTransparency2()

void GsEnableAlphaTransparency2 ( u16  enable,
u16  method,
u8  alpha_ref,
u16  fail_method 
)

Definition at line 94 of file primitives.c.

95 {
96  QWORD *p;
97 
100  GSGLOBAL_TEST2.atest_method = method;
101  GSGLOBAL_TEST2.atest_reference = alpha_ref;
102  GSGLOBAL_TEST2.atest_fail_method = fail_method;
103 
107 
108  // tell GS in 16bit texture 1=transparent,0=solid
109  gs_setGIF_TAG(((GS_GIF_TAG *)&p[0]), 1,1,0,0,GS_GIF_PACKED,1,gif_rd_ad);
110  gs_setR_TEXA(((GS_R_TEXA *)&p[1]), 0x80, 0, 0x00);
111 
113  GsDmaWait();
114 }
int GsSetPixelTest2(u8 enable_alpha_test, u8 alpha_test_method, u8 alpha_reference, u8 alpha_fail_method, u8 enable_dest_alpha_test, u8 dest_alpha_test_mode, u8 enable_zbuff_test, u8 alpha_zbuff_method)
Definition: lowlevel.c:140
static GS_TEST GSGLOBAL_TEST2
Definition: primitives.c:21

References GS_TEST::atest_enable, GS_TEST::atest_fail_method, GS_TEST::atest_method, GS_TEST::atest_reference, GS_TEST::datest_enable, GS_TEST::datest_mode, gif_rd_ad, GS_GIF_PACKED, gs_setGIF_TAG, gs_setR_TEXA, GsDmaSend(), GsDmaWait(), GSGLOBAL_TEST2, GsPrimWorkArea, GsSetPixelTest2(), UNCACHED_SEG, GS_TEST::ztest_enable, and GS_TEST::ztest_method.

Referenced by InitGraphics().

◆ GsEnableDithering()

void GsEnableDithering ( u8  enable,
int  mode 
)

Definition at line 46 of file primitives.c.

47 {
48  QWORD *p;
49 
51  if(enable)
52  {
53  gs_setGIF_TAG(((GS_GIF_TAG *)&p[0]), 3,1,0,0,GS_GIF_PACKED,1,gif_rd_ad);
54  gs_setR_DTHE(((GS_R_DTHE *)&p[1]), 1);
55  gs_setR_DIMX(((GS_R_DIMX *)&p[2]), 4,2,5,3,0,6,1,7,5,3,4,2,1,7,0,6); //thanks to:"Maximus32" on ps2dev.org
56  gs_setR_COLCLAMP(((GS_R_COLCLAMP *)&p[3]), 1);
57 
59  }
60  else
61  {
62  gs_setGIF_TAG(((GS_GIF_TAG *)&p[0]), 2,1,0,0,GS_GIF_PACKED,1,gif_rd_ad);
63  gs_setR_DTHE(((GS_R_DTHE *)&p[1]), 0);
64  gs_setR_DIMX(((GS_R_DIMX *)&p[2]), 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
65 
67  }
68 
69  GsDmaWait();
70 }
#define gs_setR_DTHE(p, _enable)
Definition: libgs.h:1766
#define gs_setR_DIMX(p, _dimx00, _dimx01, _dimx02, _dimx03, _dimx10, _dimx11, _dimx12, _dimx13, _dimx20, _dimx21, _dimx22, _dimx23, _dimx30, _dimx31, _dimx32, _dimx33)
Definition: libgs.h:1762
#define gs_setR_COLCLAMP(p, _clamp)
Definition: libgs.h:1770

References gif_rd_ad, GS_GIF_PACKED, gs_setGIF_TAG, gs_setR_COLCLAMP, gs_setR_DIMX, gs_setR_DTHE, GsDmaSend(), GsDmaWait(), GsPrimWorkArea, and UNCACHED_SEG.

◆ GsEnableZbuffer1()

◆ GsEnableZbuffer2()

◆ GsOverridePrimAttributes()

void GsOverridePrimAttributes ( s8  override,
s8  iip,
s8  tme,
s8  fge,
s8  abe,
s8  aa1,
s8  fst,
s8  ctxt,
s8  fix 
)

Definition at line 23 of file primitives.c.

24 {
25  QWORD *p;
26 
28  gs_setGIF_TAG(((GS_GIF_TAG *)&p[0]), 2,1,0,0,GS_GIF_PACKED,1,gif_rd_ad);
29 
30  //override. (0 = use PRIM)(1 = use PRMODE)
31  if(override)
32  {
33  gs_setR_PRMODECONT(((GS_R_PRMODECONT *)&p[1]), 0);
34  }
35  else
36  {
37  gs_setR_PRMODECONT(((GS_R_PRMODECONT *)&p[1]), 1);
38  }
39 
40  gs_setR_PRMODE(((GS_R_PRMODE *)&p[2]), iip,tme,fge,abe,aa1,fst,ctxt,fix);
41 
43  GsDmaWait();
44 }
#define gs_setR_PRMODE(p, _iip, _tme, _fge, _abe, _aa1, _fst, _ctxt, _fix)
Definition: libgs.h:1707
#define gs_setR_PRMODECONT(p, _control)
Definition: libgs.h:1703

References gif_rd_ad, GS_GIF_PACKED, gs_setGIF_TAG, gs_setR_PRMODE, gs_setR_PRMODECONT, GsDmaSend(), GsDmaWait(), GsPrimWorkArea, and UNCACHED_SEG.

Referenced by InitGraphics().

Variable Documentation

◆ GSGLOBAL_TEST1

GS_TEST GSGLOBAL_TEST1
static

Definition at line 20 of file primitives.c.

Referenced by GsEnableAlphaTransparency1(), and GsEnableZbuffer1().

◆ GSGLOBAL_TEST2

GS_TEST GSGLOBAL_TEST2
static

Definition at line 21 of file primitives.c.

Referenced by GsEnableAlphaTransparency2(), and GsEnableZbuffer2().

◆ GsPrimWorkArea