* 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> */
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), ); }