Пример #1
0
 * File:  near_.c
 * Create Date: 1/22/1997 11:28:34
*/

#include "near_.h"
Gfx near__dl[] = {
  gsDPPipeSync(),
  gsDPSetCycleType(G_CYC_1CYCLE),
  gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),
  gsSPClearGeometryMode((G_SHADE|G_SHADING_SMOOTH|G_LIGHTING|G_TEXTURE_GEN|G_TEXTURE_GEN_LINEAR|G_CULL_BOTH|G_FOG)),
  gsSPSetGeometryMode( G_ZBUFFER | G_CULL_BACK | G_SHADE | G_SHADING_SMOOTH | G_LIGHTING ),
  gsDPSetColorDither(G_CD_BAYER),
  gsDPSetCombineMode(G_CC_MULPRIMSHADE,     G_CC_MULPRIMSHADE), /* N64-SHADE-TYPE-G */
  gsSPVertex(&near__v[0],16,0),
  gsDPSetPrimColor(0,0,255,255,0,255),
  gsSP2Triangles(3,5,2,0,5,3,4,0), /* #<FACE 157> and #<FACE 90> */
  gsSP2Triangles(0,15,13,0,15,12,6,0), /* #<FACE 174> and #<FACE 145> */
  gsSP2Triangles(7,15,6,0,14,15,7,0), /* #<FACE 144> and #<FACE 143> */
  gsSP2Triangles(1,10,15,0,8,11,15,0), /* #<FACE 118> and #<FACE 117> */
  gsSP2Triangles(9,8,15,0,10,9,15,0), /* #<FACE 116> and #<FACE 115> */
  gsSP2Triangles(12,15,11,0,14,13,15,0), /* #<FACE 100> and #<FACE 74> */
  gsSP1Triangle(15,0,1,0), /* #<FACE 73> */
  gsSPVertex(&near__v[16],10,6),
  gsSP2Triangles(15,13,0,0,14,1,0,0), /* #<FACE 201> and #<FACE 175> */
  gsSP2Triangles(6,3,11,0,7,3,6,0), /* #<FACE 240> and #<FACE 239> */
  gsSP2Triangles(8,3,7,0,9,3,8,0), /* #<FACE 238> and #<FACE 237> */
  gsSP2Triangles(3,9,10,0,12,3,10,0), /* #<FACE 231> and #<FACE 230> */
  gsSP2Triangles(3,2,11,0,12,4,3,0), /* #<FACE 204> and #<FACE 158> */
  gsSPVertex(&near__v[26],13,0),
  gsSP2Triangles(3,5,4,0,6,5,3,0), /* #<FACE 123> and #<FACE 122> */
  gsSP2Triangles(0,3,2,0,0,1,3,0), /* #<FACE 112> and #<FACE 91> */
Пример #2
0
static void draw_crosshair(struct menu_item *item)
{
  struct item_data *data = item->data;
  struct gfx_texture *texture = resource_get(RES_TEXTURE_CROSSHAIR);
  /* define meshes */
  static Vtx lat_mesh[] =
  {
    gdSPDefVtx(-16, 0, 16,  0,  0),
    gdSPDefVtx(16,  0, 16,  62, 0),
    gdSPDefVtx(-16, 0, -16, 0,  62),
    gdSPDefVtx(16,  0, -16, 62, 62),
  };
  static Vtx vert_mesh[] =
  {
    gdSPDefVtx(-16, 16,  0, 0,  0),
    gdSPDefVtx(16,  16,  0, 62, 0),
    gdSPDefVtx(-16, -16, 0, 0,  62),
    gdSPDefVtx(16,  -16, 0, 62, 62),
  };
  /* create modelview matrices */
  float xscale = 1.5f;
  float yscale = 1.5f;
  float zscale = 1.5f;
  Mtx m;
  MtxF mf;
  MtxF mt;
  {
    guTranslateF(&mf, data->x, data->y, data->z);
  }
  {
    guScaleF(&mt, xscale, yscale, zscale);
    guMtxCatF(&mt, &mf, &mf);
  }
  guMtxF2L(&mf, &m);
  Mtx *p_latz_mtx = gDisplayListData(&data->gfx.poly_xlu.d, m);
  {
    guRotateF(&mt, -M_PI / 2.f, 0.f, 1.f, 0.f);
    guMtxCatF(&mt, &mf, &mf);
  }
  guMtxF2L(&mf, &m);
  Mtx *p_latx_mtx = gDisplayListData(&data->gfx.poly_xlu.d, m);
  {
    guTranslateF(&mf, data->x, data->y, data->z);
  }
  {
    guRotateF(&mt, data->yaw, 0.f, 1.f, 0.f);
    guMtxCatF(&mt, &mf, &mf);
  }
  {
    guScaleF(&mt, xscale, yscale, zscale);
    guMtxCatF(&mt, &mf, &mf);
  }
  guMtxF2L(&mf, &m);
  Mtx *p_vert_mtx = gDisplayListData(&data->gfx.poly_xlu.d, m);
  /* build dlist */
  gDisplayListAppend(&data->gfx.poly_xlu.p,
    gsDPPipeSync(),
    /* rsp state */
    gsSPLoadGeometryMode(G_ZBUFFER),
    /* rdp state */
    gsDPSetCycleType(G_CYC_1CYCLE),
    /* texture engine */
    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
    gsDPSetTexturePersp(G_TP_PERSP),
    gsDPSetTextureDetail(G_TD_CLAMP),
    gsDPSetTextureLUT(G_TT_NONE),
    /* texture filter */
    gsDPSetTextureFilter(G_TF_BILERP),
    gsDPSetTextureConvert(G_TC_FILT),
    /* color combiner */
    gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM),
    /* blender */
    gsDPSetAlphaCompare(G_AC_NONE),
    gsDPSetDepthSource(G_ZS_PIXEL),
    gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2),
    /* memory interface */
    gsDPSetColorDither(G_CD_DISABLE),
    gsDPSetAlphaDither(G_AD_DISABLE),
    /* load meshes */
    gsSPMatrix(p_latx_mtx, G_MTX_MODELVIEW | G_MTX_LOAD),
    gsSPVertex(&lat_mesh, 4, 0),
    gsSPMatrix(p_vert_mtx, G_MTX_MODELVIEW | G_MTX_LOAD),
    gsSPVertex(&vert_mesh, 4, 4),
    gsSPMatrix(p_latz_mtx, G_MTX_MODELVIEW | G_MTX_LOAD),
    gsSPVertex(&lat_mesh, 4, 8),
  );
  /* render navigation indicator primitives */
  gDPSetPrimColor(data->gfx.poly_xlu.p++, 0, 0, 0xFF, 0xFF, 0xFF, 0x40);
  if (input_pad() & BUTTON_Z) {
    gfx_disp_rdp_load_tile(&data->gfx.poly_xlu.p, texture, 2);
    gSP2Triangles(data->gfx.poly_xlu.p++, 4, 5, 6, 0, 6, 5, 7, 0);
  }
  else {
    gfx_disp_rdp_load_tile(&data->gfx.poly_xlu.p, texture, 1);
    gSP2Triangles(data->gfx.poly_xlu.p++, 0, 1, 2, 0, 2, 1, 3, 0);
  }
  /* render crosshair primitives */
  gfx_disp_rdp_load_tile(&data->gfx.poly_xlu.p, texture, 0);
  gDisplayListAppend(&data->gfx.poly_xlu.p,
    gsDPSetPrimColor(0, 0, 0x00, 0x00, 0xFF, 0x40),
    gsSP2Triangles(8, 9, 10, 0, 10, 9, 11, 0),
    gsDPPipeSync(),
    gsDPSetPrimColor(0, 0, 0xFF, 0x00, 0x00, 0x40),
    gsSP2Triangles(0, 1, 2, 0, 2, 1, 3, 0),
    gsDPPipeSync(),
    gsDPSetPrimColor(0, 0, 0x00, 0xFF, 0x00, 0x40),
    gsSP2Triangles(4, 5, 6, 0, 6, 5, 7, 0),
  );
}