gfxinit.c 3.32 KB
/*====================================================================
 * gfxinit.c
 *
 * Synopsis:
 *
 * mostly pinched from rdpcov written by hsa
 *
 * Copyright 1993, Silicon Graphics, Inc.
 * All Rights Reserved.
 *
 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
 * Inc.; the contents of this file may not be disclosed to third
 * parties, copied or duplicated in any form, in whole or in part,
 * without the prior written permission of Silicon Graphics, Inc.
 *
 * RESTRICTED RIGHTS LEGEND:
 * Use, duplication or disclosure by the Government is subject to
 * restrictions as set forth in subdivision (c)(1)(ii) of the Rights
 * in Technical Data and Computer Software clause at DFARS
 * 252.227-7013, and/or in similar or successor clauses in the FAR,
 * DOD or NASA FAR Supplement. Unpublished - rights reserved under the
 * Copyright Laws of the United States.
 *====================================================================*/

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

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

Gfx setup_rdpstate[] = {

    /*
     * This RDP initialization sequence will setup the following modes
     *
     * 1 cycle mode, point sampled, non-zbuffer, smooth shaded opaque polygons
     */

    /*
     * scissor must be larger than background clear rectangle
     */

    /* dp */	gsDPSetScissor(G_SC_NON_INTERLACE, 0, 0, SCREEN_WD, SCREEN_HT),
    /* dp */	gsDPSetCycleType(G_CYC_1CYCLE),
    /* dp */	gsDPPipelineMode(G_PM_NPRIMITIVE),

    /* cc */	gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
    /* cc */	gsDPSetCombineKey(G_CK_NONE),
    /* bl */	gsDPSetAlphaCompare(G_AC_NONE),
    /* bl */	gsDPSetDepthSource(G_ZS_PIXEL),
    /* bl */	gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2),
    /* bl */	gsDPSetBlendMask(0xff),

    /* mi */	gsDPSetColorDither(G_CD_DISABLE),

    gsSPEndDisplayList(),
};

Gfx setup_rspstate[] = {
    gsSPViewport(&vp),
    gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH | G_CULL_BACK),
    gsSPTexture(0, 0, 0, 0, G_OFF),
    gsSPEndDisplayList(),
};

Gfx model1_matrix[] = {
    gsSPMatrix(&dynamic.projection, G_MTX_PROJECTION|G_MTX_LOAD|G_MTX_NOPUSH),
    gsSPMatrix(&dynamic.viewing, G_MTX_MODELVIEW|G_MTX_LOAD|G_MTX_NOPUSH),
    gsSPMatrix(&dynamic.model1, G_MTX_MODELVIEW|G_MTX_MUL|G_MTX_NOPUSH),
    gsSPEndDisplayList(),
};

Gfx model2_matrix[] = {
    gsSPMatrix(&dynamic.projection, G_MTX_PROJECTION|G_MTX_LOAD|G_MTX_NOPUSH),
    gsSPMatrix(&dynamic.viewing, G_MTX_MODELVIEW|G_MTX_LOAD|G_MTX_NOPUSH),
    gsSPMatrix(&dynamic.model2, G_MTX_MODELVIEW|G_MTX_MUL|G_MTX_NOPUSH),
    gsSPEndDisplayList(),
};

Gfx model3_matrix[] = {
    gsSPMatrix(&dynamic.projection, G_MTX_PROJECTION|G_MTX_LOAD|G_MTX_NOPUSH),
    gsSPMatrix(&dynamic.viewing, G_MTX_MODELVIEW|G_MTX_LOAD|G_MTX_NOPUSH),
    gsSPMatrix(&dynamic.model2, G_MTX_MODELVIEW|G_MTX_MUL|G_MTX_NOPUSH),
    gsSPMatrix(&dynamic.model3, G_MTX_MODELVIEW|G_MTX_MUL|G_MTX_NOPUSH),
    gsSPEndDisplayList(),
};

Gfx triangle_matrix[] = {
    gsSPMatrix(&dynamic.projection, G_MTX_PROJECTION|G_MTX_LOAD|G_MTX_NOPUSH),
    gsSPMatrix(&dynamic.model1, G_MTX_MODELVIEW|G_MTX_LOAD|G_MTX_NOPUSH),
    gsSPMatrix(&dynamic.model2, G_MTX_MODELVIEW|G_MTX_MUL|G_MTX_NOPUSH),
    gsSPEndDisplayList(),
};