53 Quad() : command(0x28000000) {}
54 Quad(
Color c) : command(0x28000000 | (
c.packed & 0x00ffffff)) {}
55 Quad(
const Quad& other,
Color c) : command(other.command | (
c.packed & 0x00ffffff)) {}
57 uint32_t wasSemiTrans = command & 0x02000000;
58 command = 0x28000000 | (
c.packed & 0x00ffffff) | wasSemiTrans;
63 command &= ~0x02000000;
67 command |= 0x02000000;
97static_assert(
sizeof(
Quad) == (
sizeof(
uint32_t) * 5),
"Quad is not 5 words");
115 uint32_t wasSemiTrans = command & 0x02000000;
116 command = 0x2c000000 | (
c.packed & 0x00ffffff) | wasSemiTrans;
121 command &= ~0x02000000;
125 command |= 0x02000000;
160 uint32_t wasSemiTrans = command & 0x02000000;
161 command = 0x38000000 | (
c.packed & 0x00ffffff) | wasSemiTrans;
181 command &= ~0x02000000;
208 command |= 0x02000000;
228 template <Transparency transparency = Transparency::Auto>
232 rgb = (a->
packed & 0xffffff) | (command & 0xff000000);
234 rgb = (a->
packed & 0xffffff) | 0x38000000;
236 rgb = (a->
packed & 0xffffff) | 0x3a000000;
238 GTE::write<GTE::Register::RGB, GTE::Safe>(rgb);
239 GTE::Kernels::dpcs();
240 GTE::read<GTE::Register::RGB2>(&command);
241 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(&
b->packed);
242 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(&
c->packed);
243 GTE::write<GTE::Register::RGB2, GTE::Safe>(&d->
packed);
244 GTE::Kernels::dpct();
249 template <Transparency transparency = Transparency::Auto>
253 rgb = (a.
packed & 0xffffff) | (command & 0xff000000);
255 rgb = (a.
packed & 0xffffff) | 0x38000000;
257 rgb = (a.
packed & 0xffffff) | 0x3a000000;
259 GTE::write<GTE::Register::RGB, GTE::Safe>(rgb);
260 GTE::Kernels::dpcs();
261 GTE::read<GTE::Register::RGB2>(&command);
262 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(
b.packed);
263 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(
c.packed);
264 GTE::write<GTE::Register::RGB2, GTE::Safe>(d.
packed);
265 GTE::Kernels::dpct();
305 uint32_t wasSemiTrans = command & 0x02000000;
306 command = 0x3c000000 | (
c.packed & 0x00ffffff) | wasSemiTrans;
326 command &= ~0x02000000;
349 command |= 0x02000000;
353 template <Transparency transparency = Transparency::Auto>
357 rgb = (a->
packed & 0xffffff) | (command & 0xff000000);
359 rgb = (a->
packed & 0xffffff) | 0x3c000000;
361 rgb = (a->
packed & 0xffffff) | 0x3e000000;
363 GTE::write<GTE::Register::RGB, GTE::Safe>(rgb);
364 GTE::Kernels::dpcs();
365 GTE::read<GTE::Register::RGB2>(&command);
366 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(&
b->packed);
367 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(&
c->packed);
368 GTE::write<GTE::Register::RGB2, GTE::Safe>(&d->
packed);
369 GTE::Kernels::dpct();
374 template <Transparency transparency = Transparency::Auto>
378 rgb = (a.
packed & 0xffffff) | (command & 0xff000000);
380 rgb = (a.
packed & 0xffffff) | 0x3c000000;
382 rgb = (a.
packed & 0xffffff) | 0x3e000000;
384 GTE::write<GTE::Register::RGB, GTE::Safe>(rgb);
385 GTE::Kernels::dpcs();
386 GTE::read<GTE::Register::RGB2>(&command);
387 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(
b.packed);
388 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(
c.packed);
389 GTE::write<GTE::Register::RGB2, GTE::Safe>(d.
packed);
390 GTE::Kernels::dpct();
uint8_t b
Definition gte-depthcue.c:39
A primitive's CLUT command.
Definition common.hh:121
A primitive's tpage attribute.
Definition common.hh:188
A primitive's UV coordinates attribute.
Definition common.hh:295
A primitive's UV coordinates attribute.
Definition common.hh:284
A gouraud-shaded quad.
Definition quads.hh:155
GouraudQuad & setSemiTrans()
Definition quads.hh:207
Color getColorC() const
Definition quads.hh:178
GouraudQuad & setPointA(Vertex v)
Definition quads.hh:212
GouraudQuad()
Definition quads.hh:156
bool isSemiTrans() const
Definition quads.hh:211
Color getColorD() const
Definition quads.hh:179
GouraudQuad & setColorD(Color c)
Definition quads.hh:172
Vertex pointC
Definition quads.hh:279
Color colorB
Definition quads.hh:276
Vertex pointD
Definition quads.hh:281
Color colorD
Definition quads.hh:280
Color getColorA() const
Definition quads.hh:176
GouraudQuad & setColorC(Color c)
Definition quads.hh:168
GouraudQuad & setColorAPacked(uint32_t packed)
Sets the command word and vertex A's colour in one go.
Definition quads.hh:203
GouraudQuad & setPointC(Vertex v)
Definition quads.hh:220
GouraudQuad(Color c)
Definition quads.hh:157
void interpolateColors(const Color *a, const Color *b, const Color *c, const Color *d)
Definition quads.hh:229
Vertex pointB
Definition quads.hh:277
GouraudQuad & setOpaque()
Definition quads.hh:180
Color getColorB() const
Definition quads.hh:177
GouraudQuad & setColorA(Color c)
Definition quads.hh:159
Vertex pointA
Definition quads.hh:275
void interpolateColors(Color a, Color b, Color c, Color d)
Definition quads.hh:250
GouraudQuad & setPointD(Vertex v)
Definition quads.hh:224
GouraudQuad & setPointB(Vertex v)
Definition quads.hh:216
Color colorC
Definition quads.hh:278
uint32_t getCommandWord() const
The GP0 command word, minus any colour.
Definition quads.hh:195
GouraudQuad(const GouraudQuad &other, Color c)
Definition quads.hh:158
GouraudQuad & setColorB(Color c)
Definition quads.hh:164
A textured, blended quad.
Definition quads.hh:300
GouraudTexturedQuad(Color c)
Definition quads.hh:302
GouraudTexturedQuad & setColorD(Color c)
Definition quads.hh:317
GouraudTexturedQuad & setColorA(Color c)
Definition quads.hh:304
Vertex pointD
Definition quads.hh:411
Color getColorB() const
Definition quads.hh:322
Color getColorD() const
Definition quads.hh:324
Color colorD
Definition quads.hh:410
Color getColorA() const
Definition quads.hh:321
GouraudTexturedQuad & setColorB(Color c)
Definition quads.hh:309
Color colorC
Definition quads.hh:407
PrimPieces::UVCoordsPadded uvC
Definition quads.hh:409
GouraudTexturedQuad()
Definition quads.hh:301
PrimPieces::TPageAttr tpage
Definition quads.hh:406
GouraudTexturedQuad & setColorC(Color c)
Definition quads.hh:313
Vertex pointA
Definition quads.hh:400
GouraudTexturedQuad(const GouraudTexturedQuad &other, Color c)
Definition quads.hh:303
GouraudTexturedQuad & setSemiTrans()
Definition quads.hh:348
GouraudTexturedQuad & setColorAPacked(uint32_t packed)
Sets the command word and vertex A's colour in one go.
Definition quads.hh:344
void interpolateColors(Color a, Color b, Color c, Color d)
Definition quads.hh:375
PrimPieces::UVCoords uvA
Definition quads.hh:401
PrimPieces::UVCoords uvB
Definition quads.hh:405
Color colorB
Definition quads.hh:403
PrimPieces::UVCoordsPadded uvD
Definition quads.hh:412
Vertex pointC
Definition quads.hh:408
void interpolateColors(const Color *a, const Color *b, const Color *c, const Color *d)
Definition quads.hh:354
uint32_t getCommandWord() const
The GP0 command word, minus any colour.
Definition quads.hh:336
Color getColorC() const
Definition quads.hh:323
bool isSemiTrans() const
Definition quads.hh:352
Vertex pointB
Definition quads.hh:404
PrimPieces::ClutIndex clutIndex
Definition quads.hh:402
GouraudTexturedQuad & setOpaque()
Definition quads.hh:325
A flat-colored quad.
Definition quads.hh:52
Vertex pointD
Definition quads.hh:95
bool isSemiTrans() const
Definition quads.hh:70
Vertex pointA
Definition quads.hh:92
Quad(const Quad &other, Color c)
Definition quads.hh:55
Quad(Color c)
Definition quads.hh:54
Quad()
Definition quads.hh:53
Quad & setSemiTrans()
Definition quads.hh:66
Vertex pointC
Definition quads.hh:94
Quad & setOpaque()
Definition quads.hh:62
Quad & setPointC(Vertex v)
Definition quads.hh:79
Color getColor() const
Definition quads.hh:61
Quad & setPointA(Vertex v)
Definition quads.hh:71
Quad & setPointB(Vertex v)
Definition quads.hh:75
Quad & setColor(Color c)
Definition quads.hh:56
Quad & setPointD(Vertex v)
Definition quads.hh:83
Vertex pointB
Definition quads.hh:93
A textured quad.
Definition quads.hh:110
bool isSemiTrans() const
Definition quads.hh:128
TexturedQuad(Color c)
Definition quads.hh:112
PrimPieces::ClutIndex clutIndex
Definition quads.hh:136
TexturedQuad()
Definition quads.hh:111
TexturedQuad(const TexturedQuad &other, Color c)
Definition quads.hh:113
TexturedQuad & setOpaque()
Definition quads.hh:120
Vertex pointB
Definition quads.hh:137
TexturedQuad & setSemiTrans()
Definition quads.hh:124
Vertex pointC
Definition quads.hh:140
PrimPieces::UVCoords uvB
Definition quads.hh:138
PrimPieces::UVCoordsPadded uvD
Definition quads.hh:143
PrimPieces::UVCoords uvA
Definition quads.hh:135
Color getColor() const
Definition quads.hh:119
PrimPieces::TPageAttr tpage
Definition quads.hh:139
Vertex pointD
Definition quads.hh:142
Vertex pointA
Definition quads.hh:134
TexturedQuad & setColor(Color c)
Definition quads.hh:114
PrimPieces::UVCoordsPadded uvC
Definition quads.hh:141
static int c
Definition syscalls.h:122
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