17void gsKit_prim_point(GSGLOBAL *
gsGlobal,
float x,
float y,
int iz, u64 color)
24 int ix = gsKit_float_to_int_x(
gsGlobal, x);
25 int iy = gsKit_float_to_int_y(
gsGlobal, y);
43void gsKit_prim_list_points(GSGLOBAL *
gsGlobal,
int count,
const GSPRIMPOINT *vertices)
47 int qsize = (count*2) + 2;
48 int bytes = count *
sizeof(GSPRIMPOINT);
50 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, (qsize*16),
GIF_AD);
68 memcpy(p_data, vertices, bytes);
71void gsKit_prim_line_3d(GSGLOBAL *
gsGlobal,
float x1,
float y1,
int iz1,
float x2,
float y2,
int iz2, u64 color)
78 int ix1 = gsKit_float_to_int_x(
gsGlobal, x1);
79 int iy1 = gsKit_float_to_int_y(
gsGlobal, y1);
81 int ix2 = gsKit_float_to_int_x(
gsGlobal, x2);
82 int iy2 = gsKit_float_to_int_y(
gsGlobal, y2);
84 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, bsize, GSKIT_GIF_PRIM_LINE);
101void gsKit_prim_line_goraud_3d(GSGLOBAL *
gsGlobal,
float x1,
float y1,
int iz1,
float x2,
float y2,
int iz2, u64 color1, u64 color2)
108 int ix1 = gsKit_float_to_int_x(
gsGlobal, x1);
109 int iy1 = gsKit_float_to_int_y(
gsGlobal, y1);
111 int ix2 = gsKit_float_to_int_x(
gsGlobal, x2);
112 int iy2 = gsKit_float_to_int_y(
gsGlobal, y2);
114 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, bsize, GSKIT_GIF_PRIM_LINE);
133void gsKit_prim_list_line_goraud_3d(GSGLOBAL *
gsGlobal,
int count,
const GSPRIMPOINT *vertices)
137 int qsize = (count*2) + 1;
138 int bytes = count *
sizeof(GSPRIMPOINT);
140 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, (qsize*16),
GIF_AD);
154 memcpy(p_data, vertices, bytes);
157void gsKit_prim_line_strip(GSGLOBAL *
gsGlobal,
float *LineStrip,
int segments,
int iz, u64 color)
160 int qsize = 2 + segments;
162 int vertexdata[segments*2];
164 for(count = 0; count < (segments * 2); count+=2)
166 vertexdata[count+0] = gsKit_float_to_int_x(
gsGlobal, *LineStrip++);
167 vertexdata[count+1] = gsKit_float_to_int_y(
gsGlobal, *LineStrip++);
183 for(count = 0; count < (segments * 2); count+=2)
185 *p_data++ =
GS_SETREG_XYZ2( vertexdata[count], vertexdata[count+1], iz );
190void gsKit_prim_line_strip_3d(GSGLOBAL *
gsGlobal,
float *LineStrip,
int segments, u64 color)
193 int qsize = 2 + segments;
195 int vertexdata[segments*3];
197 for(count = 0; count < (segments * 3); count+=3)
199 vertexdata[count+0] = gsKit_float_to_int_x(
gsGlobal, *LineStrip++);
200 vertexdata[count+1] = gsKit_float_to_int_y(
gsGlobal, *LineStrip++);
201 vertexdata[count+2] = (int)((*LineStrip++) * 16.0f);
218 for(count = 0; count < (segments * 3); count+=3)
220 *p_data++ =
GS_SETREG_XYZ2( vertexdata[count], vertexdata[count+1], vertexdata[count+2] );
225void gsKit_prim_sprite(GSGLOBAL *
gsGlobal,
float x1,
float y1,
float x2,
float y2,
int iz, u64 color)
232 int ix1 = gsKit_float_to_int_x(
gsGlobal, x1);
233 int iy1 = gsKit_float_to_int_y(
gsGlobal, y1);
235 int ix2 = gsKit_float_to_int_x(
gsGlobal, x2);
236 int iy2 = gsKit_float_to_int_y(
gsGlobal, y2);
238 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, bsize, GSKIT_GIF_PRIM_SPRITE);
255void gsKit_prim_list_sprite_gouraud_3d(GSGLOBAL *
gsGlobal,
int count,
const GSPRIMPOINT *vertices)
259 int qsize = (count*2) + 1;
260 int bytes = count *
sizeof(GSPRIMPOINT);
262 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, (qsize*16),
GIF_AD);
276 memcpy(p_data, vertices, bytes);
279void gsKit_prim_list_sprite_flat_color(GSGLOBAL *
gsGlobal, gs_rgbaq color,
int count,
const gs_xyz2 *vertices)
283 int qsize = count + 2;
284 int bytes = count *
sizeof(gs_xyz2);
286 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, (qsize*16),
GIF_AD);
301 memcpy(p_data, &color,
sizeof(gs_rgbaq));
304 memcpy(p_data, vertices, bytes);
307void gsKit_prim_list_sprite_flat(GSGLOBAL *
gsGlobal,
int count,
const u128 *flatContent)
311 int qsize = count + 1;
312 int bytes = count *
sizeof(u128);
314 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, (qsize*16),
GIF_AD);
328 memcpy(p_data, flatContent, bytes);
332void gsKit_prim_triangle_3d(GSGLOBAL *
gsGlobal,
float x1,
float y1,
int iz1,
333 float x2,
float y2,
int iz2,
334 float x3,
float y3,
int iz3, u64 color)
340 int ix1 = gsKit_float_to_int_x(
gsGlobal, x1);
341 int iy1 = gsKit_float_to_int_y(
gsGlobal, y1);
343 int ix2 = gsKit_float_to_int_x(
gsGlobal, x2);
344 int iy2 = gsKit_float_to_int_y(
gsGlobal, y2);
346 int ix3 = gsKit_float_to_int_x(
gsGlobal, x3);
347 int iy3 = gsKit_float_to_int_y(
gsGlobal, y3);
372void gsKit_prim_triangle_strip(GSGLOBAL *
gsGlobal,
float *TriStrip,
int segments,
int iz, u64 color)
375 int qsize = 2 + segments;
377 int vertexdata[segments*2];
379 for(count = 0; count < (segments * 2); count+=2)
381 vertexdata[count+0] = gsKit_float_to_int_x(
gsGlobal, *TriStrip++);
382 vertexdata[count+1] = gsKit_float_to_int_y(
gsGlobal, *TriStrip++);
399 for(count = 0; count < (segments * 2); count+=2)
401 *p_data++ =
GS_SETREG_XYZ2( vertexdata[count], vertexdata[count+1], iz );
406void gsKit_prim_triangle_strip_3d(GSGLOBAL *
gsGlobal,
float *TriStrip,
int segments, u64 color)
409 int qsize = 2 + segments;
411 int vertexdata[segments*3];
413 for(count = 0; count < (segments * 3); count+=3)
415 vertexdata[count+0] = gsKit_float_to_int_x(
gsGlobal, *TriStrip++);
416 vertexdata[count+1] = gsKit_float_to_int_y(
gsGlobal, *TriStrip++);
417 vertexdata[count+2] = (int)((*TriStrip++) * 16.0f);
434 for(count = 0; count < (segments * 3); count+=3)
436 *p_data++ =
GS_SETREG_XYZ2( vertexdata[count], vertexdata[count+1], vertexdata[count+2] );
441void gsKit_prim_triangle_fan(GSGLOBAL *
gsGlobal,
float *TriFan,
int verticies,
int iz, u64 color)
444 int qsize = 2 + verticies;
446 int vertexdata[verticies*2];
448 for(count = 0; count < (verticies * 2); count+=2)
450 vertexdata[count+0] = gsKit_float_to_int_x(
gsGlobal, *TriFan++);
451 vertexdata[count+1] = gsKit_float_to_int_y(
gsGlobal, *TriFan++);
468 for(count = 0; count < (verticies * 2); count+=2)
470 *p_data++ =
GS_SETREG_XYZ2( vertexdata[count], vertexdata[count+1], iz );
475void gsKit_prim_triangle_fan_3d(GSGLOBAL *
gsGlobal,
float *TriFan,
int verticies, u64 color)
478 int qsize = 2 + verticies;
480 int vertexdata[verticies*3];
482 for(count = 0; count < (verticies * 3); count+=3)
484 vertexdata[count+0] = gsKit_float_to_int_x(
gsGlobal, *TriFan++);
485 vertexdata[count+1] = gsKit_float_to_int_y(
gsGlobal, *TriFan++);
486 vertexdata[count+2] = (int)(*TriFan++ * 16.0f);
503 for(count = 0; count < (verticies * 3); count+=3)
505 *p_data++ =
GS_SETREG_XYZ2( vertexdata[count], vertexdata[count+1], vertexdata[count+2] );
510void gsKit_prim_triangle_gouraud_3d(GSGLOBAL *
gsGlobal,
float x1,
float y1,
int iz1,
511 float x2,
float y2,
int iz2,
512 float x3,
float y3,
int iz3,
513 u64 color1, u64 color2, u64 color3)
520 int ix1 = gsKit_float_to_int_x(
gsGlobal, x1);
521 int iy1 = gsKit_float_to_int_y(
gsGlobal, y1);
523 int ix2 = gsKit_float_to_int_x(
gsGlobal, x2);
524 int iy2 = gsKit_float_to_int_y(
gsGlobal, y2);
526 int ix3 = gsKit_float_to_int_x(
gsGlobal, x3);
527 int iy3 = gsKit_float_to_int_y(
gsGlobal, y3);
529 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, bsize, GSKIT_GIF_PRIM_TRIANGLE_GOURAUD);
551void gsKit_prim_list_triangle_gouraud_3d(GSGLOBAL *
gsGlobal,
int count,
const GSPRIMPOINT *vertices)
555 int qsize = (count*2) + 1;
556 int bytes = count *
sizeof(GSPRIMPOINT);
558 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, (qsize*16),
GIF_AD);
572 memcpy(p_data, vertices, bytes);
575void gsKit_prim_quad_3d(GSGLOBAL *
gsGlobal,
float x1,
float y1,
int iz1,
576 float x2,
float y2,
int iz2,
577 float x3,
float y3,
int iz3,
578 float x4,
float y4,
int iz4, u64 color)
585 int ix1 = gsKit_float_to_int_x(
gsGlobal, x1);
586 int iy1 = gsKit_float_to_int_y(
gsGlobal, y1);
588 int ix2 = gsKit_float_to_int_x(
gsGlobal, x2);
589 int iy2 = gsKit_float_to_int_y(
gsGlobal, y2);
591 int ix3 = gsKit_float_to_int_x(
gsGlobal, x3);
592 int iy3 = gsKit_float_to_int_y(
gsGlobal, y3);
594 int ix4 = gsKit_float_to_int_x(
gsGlobal, x4);
595 int iy4 = gsKit_float_to_int_y(
gsGlobal, y4);
597 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, bsize, GSKIT_GIF_PRIM_QUAD);
616void gsKit_prim_quad_gouraud_3d(GSGLOBAL *
gsGlobal,
float x1,
float y1,
int iz1,
617 float x2,
float y2,
int iz2,
618 float x3,
float y3,
int iz3,
619 float x4,
float y4,
int iz4,
620 u64 color1, u64 color2,
621 u64 color3, u64 color4)
628 int ix1 = gsKit_float_to_int_x(
gsGlobal, x1);
629 int iy1 = gsKit_float_to_int_y(
gsGlobal, y1);
631 int ix2 = gsKit_float_to_int_x(
gsGlobal, x2);
632 int iy2 = gsKit_float_to_int_y(
gsGlobal, y2);
634 int ix3 = gsKit_float_to_int_x(
gsGlobal, x3);
635 int iy3 = gsKit_float_to_int_y(
gsGlobal, y3);
637 int ix4 = gsKit_float_to_int_x(
gsGlobal, x4);
638 int iy4 = gsKit_float_to_int_y(
gsGlobal, y4);
640 p_store = p_data = gsKit_heap_alloc(
gsGlobal, qsize, bsize, GSKIT_GIF_PRIM_QUAD_GOURAUD);
#define GIF_TAG_AD(NLOOP)
A+D GIFTAG.
#define GS_PRIM
GS Primitive.
#define GIF_TAG_LINE(NLOOP)
Line Primitive GIFTAG.
#define GIF_TAG_SPRITE_REGS
Sprite Primitive REGLIST.
#define GIF_TAG_QUAD_GOURAUD(NLOOP)
Gouraud Shaded Quad Primitive GIFTAG.
#define GSKIT_GIF_PRIM_POINT
gsKit GIFTAG REGLIST mode PRIM Identifiers
#define GS_SETREG_XYZ2
GS Vertex Value Object Creation Macro.
#define GIF_TAG_POINT(NLOOP)
Point Primitive GIFTAG.
#define GIF_TAG_LINE_REGS
Line Primitive REGLIST.
#define GS_XYZ2
GS Vertex Coordinate Value.
#define GIF_TAG_SPRITE(NLOOP)
Sprite Primitive GIFTAG.
#define GIF_TAG_POINT_REGS
Point Primitive REGLIST.
#define GS_PRIM_PRIM_TRIANGLE
GS Triangle Primitive.
#define GS_RGBAQ
GS Color in RGBAQ Format.
#define GIF_TAG_TRIANGLE_GOURAUD_REGS
Gouraud Shaded Triangle Primitive REGLIST.
#define GIF_TAG_LINE_GORAUD_REGS
Line Goraud Primitive REGLIST.
#define GIF_TAG_QUAD(NLOOP)
Quad Primitive GIFTAG.
#define GIF_TAG_QUAD_GOURAUD_REGS
Gouraud Shaded Quad Primitive REGLIST.
#define GIF_AD
GIF_TAG Address+Data Setting. (Used after GIF_TAG).
#define GS_PRIM_PRIM_POINT
GS Point Primitive.
#define GS_PRIM_PRIM_LINESTRIP
GS Line Strip Primitive.
#define GIF_TAG_QUAD_REGS
Quad Primitive REGLIST.
#define GS_PRIM_PRIM_SPRITE
GS Sprite Primitive.
#define GS_PRIM_PRIM_LINE
GS Line Primitive.
#define GIF_TAG_TRIANGLE_GOURAUD(NLOOP)
Gouraud Shaded Triangle Primitive GIFTAG.
#define GIF_TAG_LINE_GORAUD(NLOOP)
Line Goraud Primitive GIFTAG.
#define GS_PRIM_PRIM_TRIFAN
GS Triangle Fan Primitive.
#define GS_PRIM_PRIM_TRISTRIP
GS Triangle Strip Primitive.
int PrimAlphaEnable
Primitive Alpha Blending Enable.
int PrimContext
Primitive Context.
GSQUEUE * CurQueue
Draw Queue (Current).
int PrimFogEnable
Primitive Fog Enable.
int PrimAAEnable
Primitive AntiAlaising Enable.
void * last_tag
Pointer to the GIF_TAG of the last object in this draw queue.