50 uint32_t wasSemiTrans = command & 0x02000000;
51 command = 0x20000000 | (
c.packed & 0x00ffffff) | wasSemiTrans;
56 command &= ~0x02000000;
60 command |= 0x02000000;
85static_assert(
sizeof(
Triangle) == (
sizeof(
uint32_t) * 4),
"Triangle is not 4 words");
104 uint32_t wasSemiTrans = command & 0x02000000;
105 command = 0x24000000 | (
c.packed & 0x00ffffff) | wasSemiTrans;
110 command &= ~0x02000000;
114 command |= 0x02000000;
147 uint32_t wasSemiTrans = command & 0x02000000;
148 command = 0x30000000 | (
c.packed & 0x00ffffff) | wasSemiTrans;
163 command &= ~0x02000000;
167 command |= 0x02000000;
183 template <Transparency transparency = Transparency::Auto>
185 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(&a->
packed);
186 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(&
b->packed);
187 GTE::write<GTE::Register::RGB2, GTE::Unsafe>(&
c->packed);
189 GTE::write<GTE::Register::RGB, GTE::Safe>(&command);
191 GTE::write<GTE::Register::RGB, GTE::Safe>(0x30000000);
193 GTE::write<GTE::Register::RGB, GTE::Safe>(0x32000000);
195 GTE::Kernels::dpct();
196 GTE::read<GTE::Register::RGB0>(&command);
200 template <Transparency transparency = Transparency::Auto>
202 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(a.
packed);
203 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(
b.packed);
204 GTE::write<GTE::Register::RGB2, GTE::Unsafe>(
c.packed);
206 GTE::write<GTE::Register::RGB, GTE::Safe>(&command);
208 GTE::write<GTE::Register::RGB, GTE::Safe>(0x30000000);
210 GTE::write<GTE::Register::RGB, GTE::Safe>(0x32000000);
212 GTE::Kernels::dpct();
213 GTE::read<GTE::Register::RGB0>(&command);
248 : command(other.command | (
c.packed & 0x00ffffff)) {}
250 uint32_t wasSemiTrans = command & 0x02000000;
251 command = 0x34000000 | (
c.packed & 0x00ffffff) | wasSemiTrans;
266 command &= ~0x02000000;
270 command |= 0x02000000;
274 template <Transparency transparency = Transparency::Auto>
276 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(&a->
packed);
277 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(&
b->packed);
278 GTE::write<GTE::Register::RGB2, GTE::Unsafe>(&
c->packed);
280 GTE::write<GTE::Register::RGB, GTE::Safe>(&command);
282 GTE::write<GTE::Register::RGB, GTE::Safe>(0x34000000);
284 GTE::write<GTE::Register::RGB, GTE::Safe>(0x36000000);
286 GTE::Kernels::dpct();
287 GTE::read<GTE::Register::RGB0>(&command);
291 template <Transparency transparency = Transparency::Auto>
293 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(a.
packed);
294 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(
b.packed);
295 GTE::write<GTE::Register::RGB2, GTE::Unsafe>(
c.packed);
297 GTE::write<GTE::Register::RGB, GTE::Safe>(&command);
299 GTE::write<GTE::Register::RGB, GTE::Safe>(0x34000000);
301 GTE::write<GTE::Register::RGB, GTE::Safe>(0x36000000);
303 GTE::Kernels::dpct();
304 GTE::read<GTE::Register::RGB0>(&command);
Definition cdrom-loader.hh:39
char b[9]
Definition string.c:47
A primitive's CLUT command.
Definition common.hh:121
A primitive's tpage attribute.
Definition common.hh:158
A primitive's UV coordinates attribute.
Definition common.hh:233
A primitive's UV coordinates attribute.
Definition common.hh:222
A textured, blended triangle.
Definition triangles.hh:244
Vertex pointB
Definition triangles.hh:317
GouraudTexturedTriangle(const GouraudTexturedTriangle &other, Color c)
Definition triangles.hh:247
GouraudTexturedTriangle & setOpaque()
Definition triangles.hh:265
Vertex pointA
Definition triangles.hh:313
GouraudTexturedTriangle()
Definition triangles.hh:245
GouraudTexturedTriangle & setSemiTrans()
Definition triangles.hh:269
GouraudTexturedTriangle(Color c)
Definition triangles.hh:246
Color getColorB() const
Definition triangles.hh:263
PrimPieces::UVCoordsPadded uvC
Definition triangles.hh:322
Color colorB
Definition triangles.hh:316
GouraudTexturedTriangle & setColorB(Color c)
Definition triangles.hh:254
PrimPieces::TPageAttr tpage
Definition triangles.hh:319
PrimPieces::UVCoords uvA
Definition triangles.hh:314
PrimPieces::ClutIndex clutIndex
Definition triangles.hh:315
GouraudTexturedTriangle & setColorA(Color c)
Definition triangles.hh:249
Vertex pointC
Definition triangles.hh:321
Color getColorC() const
Definition triangles.hh:264
bool isSemiTrans() const
Definition triangles.hh:273
void interpolateColors(Color a, Color b, Color c)
Definition triangles.hh:292
Color getColorA() const
Definition triangles.hh:262
Color colorC
Definition triangles.hh:320
GouraudTexturedTriangle & setColorC(Color c)
Definition triangles.hh:258
PrimPieces::UVCoords uvB
Definition triangles.hh:318
void interpolateColors(const Color *a, const Color *b, const Color *c)
Definition triangles.hh:275
A gouraud-shaded triangle.
Definition triangles.hh:142
GouraudTriangle(const GouraudTriangle &other, Color c)
Definition triangles.hh:145
Vertex pointC
Definition triangles.hh:226
GouraudTriangle & setPointC(Vertex v)
Definition triangles.hh:179
Color getColorC() const
Definition triangles.hh:161
GouraudTriangle & setColorA(Color c)
Definition triangles.hh:146
Color getColorA() const
Definition triangles.hh:159
Vertex pointA
Definition triangles.hh:222
Color colorC
Definition triangles.hh:225
GouraudTriangle & setColorB(Color c)
Definition triangles.hh:151
GouraudTriangle()
Definition triangles.hh:143
GouraudTriangle & setPointB(Vertex v)
Definition triangles.hh:175
bool isSemiTrans() const
Definition triangles.hh:170
GouraudTriangle(Color c)
Definition triangles.hh:144
GouraudTriangle & setOpaque()
Definition triangles.hh:162
GouraudTriangle & setSemiTrans()
Definition triangles.hh:166
void interpolateColors(Color a, Color b, Color c)
Definition triangles.hh:201
GouraudTriangle & setPointA(Vertex v)
Definition triangles.hh:171
void interpolateColors(const Color *a, const Color *b, const Color *c)
Definition triangles.hh:184
Color getColorB() const
Definition triangles.hh:160
Vertex pointB
Definition triangles.hh:224
GouraudTriangle & setColorC(Color c)
Definition triangles.hh:155
Color colorB
Definition triangles.hh:223
A textured triangle.
Definition triangles.hh:99
Vertex pointB
Definition triangles.hh:126
Color getColor() const
Definition triangles.hh:108
TexturedTriangle(const TexturedTriangle &other, Color c)
Definition triangles.hh:102
PrimPieces::ClutIndex clutIndex
Definition triangles.hh:125
PrimPieces::TPageAttr tpage
Definition triangles.hh:128
TexturedTriangle & setSemiTrans()
Definition triangles.hh:113
PrimPieces::UVCoords uvA
Definition triangles.hh:124
PrimPieces::UVCoords uvB
Definition triangles.hh:127
bool isSemiTrans() const
Definition triangles.hh:117
Vertex pointA
Definition triangles.hh:123
TexturedTriangle & setColor(Color c)
Definition triangles.hh:103
TexturedTriangle(Color c)
Definition triangles.hh:101
Vertex pointC
Definition triangles.hh:129
PrimPieces::UVCoordsPadded uvC
Definition triangles.hh:130
TexturedTriangle()
Definition triangles.hh:100
TexturedTriangle & setOpaque()
Definition triangles.hh:109
A flat-colored triangle.
Definition triangles.hh:45
Triangle & setSemiTrans()
Definition triangles.hh:59
Triangle & setPointA(Vertex v)
Definition triangles.hh:64
Triangle()
Definition triangles.hh:46
Color getColor() const
Definition triangles.hh:54
Vertex pointC
Definition triangles.hh:83
Triangle(const Triangle &other, Color c)
Definition triangles.hh:48
Triangle & setPointB(Vertex v)
Definition triangles.hh:68
Triangle(Color c)
Definition triangles.hh:47
Vertex pointB
Definition triangles.hh:82
bool isSemiTrans() const
Definition triangles.hh:63
Triangle & setOpaque()
Definition triangles.hh:55
Vertex pointA
Definition triangles.hh:81
Triangle & setPointC(Vertex v)
Definition triangles.hh:72
Triangle & setColor(Color c)
Definition triangles.hh:49
static int c
Definition syscalls.h:121
void uint32_t(classId, spec)
The Color struct.
Definition common.hh:91
uint32_t packed
Definition common.hh:95
The Vertex struct.
Definition common.hh:47