static.c 3.58 KB

/**************************************************************************
 *                                                                        *
 *               Copyright (C) 1995, Silicon Graphics, Inc.               *
 *                                                                        *
 *  These coded instructions, statements, and computer programs  contain  *
 *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
 *  are protected by Federal copyright  law.  They  may not be disclosed  *
 *  to  third  parties  or copied or duplicated in any form, in whole or  *
 *  in part, without the prior written consent of Silicon Graphics, Inc.  *
 *                                                                        *
 *************************************************************************/

/*
 * File:	static.c
 * Creator:	hsa@sgi.com
 * Create Date:	Sun Jun  4 18:49:42 PDT 1995
 *
 *
 * This file holds tiny display list segments that are 'static' data.
 *
 */

#include <ultra64.h>
#include "ztest.h"

/*
 * Remember, viewport structures have 2 bits of fraction in them.
 */
static Vp vp = {
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* scale */
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* translate */
};

/* initialize the RSP: */
Gfx rspinit_dl[] = {
    gsSPViewport(&vp),
    gsSPClearGeometryMode(G_SHADE | G_SHADING_SMOOTH | G_CULL_BOTH |
			  G_FOG | G_LIGHTING | G_TEXTURE_GEN |
			  G_TEXTURE_GEN_LINEAR | G_LOD ),
    gsSPTexture(0, 0, 0, 0, G_OFF),
    gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH),
    gsSPEndDisplayList(),
};

/* initialize the RDP: */
Gfx rdpinit_dl[] = {
    gsDPSetScissor(G_SC_NON_INTERLACE, 0, 0, SCREEN_WD, SCREEN_HT),
    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
    gsDPSetTextureLOD(G_TL_TILE),
    gsDPSetTextureLUT(G_TT_NONE),
    gsDPSetTextureDetail(G_TD_CLAMP),
    gsDPSetTexturePersp(G_TP_PERSP),
    gsDPSetTextureFilter(G_TF_BILERP),
    gsDPSetTextureConvert(G_TC_FILT),
    gsDPSetCombineKey(G_CK_NONE),
    gsDPSetAlphaCompare(G_AC_NONE),
    gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2),
    gsDPSetBlendMask(0xff),
    gsDPSetColorDither(G_CD_DISABLE),
    gsDPSetCycleType(G_CYC_1CYCLE),
    gsDPPipeSync(),
    gsSPEndDisplayList(),
};

#define	ZDELTA	(20.0)

/* 
 * This group of vertices, and accompanying display list, creates
 * two flat surfaces oriented in a 'v' shape, turned on it's side.
 * Each surface is colored differently, so we can easily see errors
 * in the zbuffer write. (we always write the 'behind' surface last,
 * ensuring a z compare when writing the frame buffer)
 */
static Vtx ztest_vtx[] =  {
        {        -1280,  640, -ZDELTA, 0, 0, 0, 0xff, 0xff, 0, 0xff	},
        {         1280,  640, -2*ZDELTA, 0, 0, 0, 0xff, 0xff, 0, 0xff	},
        {         1280, -640, -2*ZDELTA, 0, 0, 0, 0xff, 0xff, 0, 0xff	},
        {        -1280, -640, -ZDELTA, 0, 0, 0, 0xff, 0xff, 0, 0xff	},

        {        -1280,  640, ZDELTA, 0, 0, 0, 0, 0, 0xff, 0xff	},
        {         1080,  640, 2*ZDELTA, 0, 0, 0, 0, 0, 0xff, 0xff	},
        {         1080, -640, 2*ZDELTA, 0, 0, 0, 0, 0, 0xff, 0xff	},
        {        -1280, -640, ZDELTA, 0, 0, 0, 0, 0, 0xff, 0xff	},
};

Gfx ztest_dl[] = {
    /*
     * Setup display modes antialiased in 1 cycle
     */
    gsDPPipeSync(),
    gsDPSetCycleType(G_CYC_1CYCLE),
    gsDPSetRenderMode(G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2),
    gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH | G_ZBUFFER),
    gsSPVertex(&(ztest_vtx[0]), 8, 0),

    gsSP1Triangle(0, 1, 2, 0),
    gsSP1Triangle(0, 2, 3, 0),

    gsSP1Triangle(4, 5, 6, 0),
    gsSP1Triangle(4, 6, 7, 0),

    gsSPEndDisplayList(),
};