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;
185 command |= 0x02000000;
205 template <Transparency transparency = Transparency::Auto>
209 rgb = (a->
packed & 0xffffff) | (command & 0xff000000);
211 rgb = (a->
packed & 0xffffff) | 0x38000000;
213 rgb = (a->
packed & 0xffffff) | 0x3a000000;
215 GTE::write<GTE::Register::RGB, GTE::Safe>(rgb);
216 GTE::Kernels::dpcs();
217 GTE::read<GTE::Register::RGB2>(&command);
218 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(&
b->packed);
219 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(&
c->packed);
220 GTE::write<GTE::Register::RGB2, GTE::Safe>(&d->
packed);
221 GTE::Kernels::dpct();
226 template <Transparency transparency = Transparency::Auto>
230 rgb = (a.
packed & 0xffffff) | (command & 0xff000000);
232 rgb = (a.
packed & 0xffffff) | 0x38000000;
234 rgb = (a.
packed & 0xffffff) | 0x3a000000;
236 GTE::write<GTE::Register::RGB, GTE::Safe>(rgb);
237 GTE::Kernels::dpcs();
238 GTE::read<GTE::Register::RGB2>(&command);
239 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(
b.packed);
240 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(
c.packed);
241 GTE::write<GTE::Register::RGB2, GTE::Safe>(d.
packed);
242 GTE::Kernels::dpct();
282 uint32_t wasSemiTrans = command & 0x02000000;
283 command = 0x3c000000 | (
c.packed & 0x00ffffff) | wasSemiTrans;
303 command &= ~0x02000000;
307 command |= 0x02000000;
311 template <Transparency transparency = Transparency::Auto>
315 rgb = (a->
packed & 0xffffff) | (command & 0xff000000);
317 rgb = (a->
packed & 0xffffff) | 0x3c000000;
319 rgb = (a->
packed & 0xffffff) | 0x3e000000;
321 GTE::write<GTE::Register::RGB, GTE::Safe>(rgb);
322 GTE::Kernels::dpcs();
323 GTE::read<GTE::Register::RGB2>(&command);
324 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(&
b->packed);
325 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(&
c->packed);
326 GTE::write<GTE::Register::RGB2, GTE::Safe>(&d->
packed);
327 GTE::Kernels::dpct();
332 template <Transparency transparency = Transparency::Auto>
336 rgb = (a.
packed & 0xffffff) | (command & 0xff000000);
338 rgb = (a.
packed & 0xffffff) | 0x3c000000;
340 rgb = (a.
packed & 0xffffff) | 0x3e000000;
342 GTE::write<GTE::Register::RGB, GTE::Safe>(rgb);
343 GTE::Kernels::dpcs();
344 GTE::read<GTE::Register::RGB2>(&command);
345 GTE::write<GTE::Register::RGB0, GTE::Unsafe>(
b.packed);
346 GTE::write<GTE::Register::RGB1, GTE::Unsafe>(
c.packed);
347 GTE::write<GTE::Register::RGB2, GTE::Safe>(d.
packed);
348 GTE::Kernels::dpct();
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 gouraud-shaded quad.
Definition quads.hh:155
GouraudQuad & setSemiTrans()
Definition quads.hh:184
Color getColorC() const
Definition quads.hh:178
GouraudQuad & setPointA(Vertex v)
Definition quads.hh:189
GouraudQuad()
Definition quads.hh:156
bool isSemiTrans() const
Definition quads.hh:188
Color getColorD() const
Definition quads.hh:179
GouraudQuad & setColorD(Color c)
Definition quads.hh:172
Vertex pointC
Definition quads.hh:256
Color colorB
Definition quads.hh:253
Vertex pointD
Definition quads.hh:258
Color colorD
Definition quads.hh:257
Color getColorA() const
Definition quads.hh:176
GouraudQuad & setColorC(Color c)
Definition quads.hh:168
GouraudQuad & setPointC(Vertex v)
Definition quads.hh:197
GouraudQuad(Color c)
Definition quads.hh:157
void interpolateColors(const Color *a, const Color *b, const Color *c, const Color *d)
Definition quads.hh:206
Vertex pointB
Definition quads.hh:254
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:252
void interpolateColors(Color a, Color b, Color c, Color d)
Definition quads.hh:227
GouraudQuad & setPointD(Vertex v)
Definition quads.hh:201
GouraudQuad & setPointB(Vertex v)
Definition quads.hh:193
Color colorC
Definition quads.hh:255
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:277
GouraudTexturedQuad(Color c)
Definition quads.hh:279
GouraudTexturedQuad & setColorD(Color c)
Definition quads.hh:294
GouraudTexturedQuad & setColorA(Color c)
Definition quads.hh:281
Vertex pointD
Definition quads.hh:369
Color getColorB() const
Definition quads.hh:299
Color getColorD() const
Definition quads.hh:301
Color colorD
Definition quads.hh:368
Color getColorA() const
Definition quads.hh:298
GouraudTexturedQuad & setColorB(Color c)
Definition quads.hh:286
Color colorC
Definition quads.hh:365
PrimPieces::UVCoordsPadded uvC
Definition quads.hh:367
GouraudTexturedQuad()
Definition quads.hh:278
PrimPieces::TPageAttr tpage
Definition quads.hh:364
GouraudTexturedQuad & setColorC(Color c)
Definition quads.hh:290
Vertex pointA
Definition quads.hh:358
GouraudTexturedQuad(const GouraudTexturedQuad &other, Color c)
Definition quads.hh:280
GouraudTexturedQuad & setSemiTrans()
Definition quads.hh:306
void interpolateColors(Color a, Color b, Color c, Color d)
Definition quads.hh:333
PrimPieces::UVCoords uvA
Definition quads.hh:359
PrimPieces::UVCoords uvB
Definition quads.hh:363
Color colorB
Definition quads.hh:361
PrimPieces::UVCoordsPadded uvD
Definition quads.hh:370
Vertex pointC
Definition quads.hh:366
void interpolateColors(const Color *a, const Color *b, const Color *c, const Color *d)
Definition quads.hh:312
Color getColorC() const
Definition quads.hh:300
bool isSemiTrans() const
Definition quads.hh:310
Vertex pointB
Definition quads.hh:362
PrimPieces::ClutIndex clutIndex
Definition quads.hh:360
GouraudTexturedQuad & setOpaque()
Definition quads.hh:302
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: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