gfxinit.c
4.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*============================================================================
NINTENDO64 TECHNICAL SUPPORT CENTER
NINTENDO64 SAMPLE PROGRAM 2
Copyright (C) 1997, NINTENDO Co,Ltd.
============================================================================*/
#include <ultra64.h>
#include <PR/ramrom.h>
#include <assert.h>
#include "def.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 */
};
Lights1 sun_light = gdSPDefLights1( 80, 80, 80, /* no ambient light */
200, 200, 200, /* white light */
1, 1, -1);
/*
* This display list initializes the RDP the first time. After this, only
* the contents of the texture memory is undefined.
* Note that some of the RDP state is initialized everytime the gfx
* microcode is loaded. See gspFast3D (3P) for details
*/
Gfx rdpstateinit_dl[] = {
/* set all of the attribute registers to zero */
gsDPSetEnvColor(0,0,0,0),
gsDPSetPrimColor(0,0,0,0,0,0),
gsDPSetBlendColor(0,0,0,0),
gsDPSetFogColor(0,0,0,0),
gsDPSetFillColor(0),
gsDPSetPrimDepth(0,0),
gsDPSetConvert(0,0,0,0,0,0),
gsDPSetKeyR(0,0,0),
gsDPSetKeyGB(0,0,0,0,0,0),
/* set combine mode */
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
/* initialize the scissor box */
gsDPSetScissor(G_SC_NON_INTERLACE, 0, 0, SCREEN_WD, SCREEN_HT),
/* initialize all the texture tile descriptors to zero */
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0),
gsDPSetTileSize(0, 0, 0, (1 - 1) << G_TEXTURE_IMAGE_FRAC, (1 - 1) <<
G_TEXTURE_IMAGE_FRAC),
gsDPSetTileSize(1, 0, 0, (1 - 1) << G_TEXTURE_IMAGE_FRAC, (1 - 1) <<
G_TEXTURE_IMAGE_FRAC),
gsDPSetTileSize(2, 0, 0, (1 - 1) << G_TEXTURE_IMAGE_FRAC, (1 - 1) <<
G_TEXTURE_IMAGE_FRAC),
gsDPSetTileSize(3, 0, 0, (1 - 1) << G_TEXTURE_IMAGE_FRAC, (1 - 1) <<
G_TEXTURE_IMAGE_FRAC),
gsDPSetTileSize(4, 0, 0, (1 - 1) << G_TEXTURE_IMAGE_FRAC, (1 - 1) <<
G_TEXTURE_IMAGE_FRAC),
gsDPSetTileSize(5, 0, 0, (1 - 1) << G_TEXTURE_IMAGE_FRAC, (1 - 1) <<
G_TEXTURE_IMAGE_FRAC),
gsDPSetTileSize(6, 0, 0, (1 - 1) << G_TEXTURE_IMAGE_FRAC, (1 - 1) <<
G_TEXTURE_IMAGE_FRAC),
gsDPSetTileSize(7, 0, 0, (1 - 1) << G_TEXTURE_IMAGE_FRAC, (1 - 1) <<
G_TEXTURE_IMAGE_FRAC),
gsDPPipeSync(),
gsSPEndDisplayList(),
};
Gfx setup_rdpstate[] = {
/*
* This RDP initialization sequence will setup the following modes
*
* 1 cycle mode, point sampled, non-zbuffer, smooth shaded opaque polygons
*/
/* bl */
gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2),
gsDPSetColorDither(G_CD_BAYER),
gsDPSetFogColor(255, 0, 0, 255),
gsDPSetScissor(G_SC_NON_INTERLACE, 0,0, 319,239),
gsDPPipeSync(),
gsSPEndDisplayList(),
};
/* intialize the RSP state: */
Gfx setup_rspstate[] = {
gsSPViewport(&vp),
gsSPClipRatio(FRUSTRATIO_3),
gsSPClearGeometryMode((G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH |
G_CULL_BOTH | G_FOG | G_LIGHTING)),
gsSPTexture(0, 0, 0, 0, G_OFF),
gsSPSetLights1(sun_light),
gsSPFogPosition(996, 1000),
gsSPEndDisplayList(),
};
Vtx bullet_vtx[] = {
{ 1, 0, 20, 0, 0, 0, 0xff, 0xff, 0x00, 0xff},
{ -1, 0, 20, 0, 0, 0, 0xff, 0xff, 0x00, 0xff},
{ -1, 0, -20, 0, 0, 0, 0xff, 0xff, 0x00, 0xff},
{ 1, 0, -20, 0, 0, 0, 0xff, 0xff, 0x00, 0xff},
};
Gfx bullet_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_SHADE | G_SHADING_SMOOTH),
gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE),
gsSPVertex(&bullet_vtx[0], 4 ,0),
gsSP1Triangle(0, 1, 3, 0),
gsSP1Triangle(1, 2, 3, 0),
gsSPEndDisplayList(),
};