Cores/Nds/GPU3D.Types.cs
namespace Emulotl.Nds;
public struct Vertex
{
public int Px, Py, Pz, Pw;
public int Cr, Cg, Cb;
public short Tu, Tv;
public bool Clipped;
public int Fx, Fy;
public int Fcr, Fcg, Fcb;
public int Hx, Hy;
public readonly int GetPos( int i ) => i switch { 0 => Px, 1 => Py, 2 => Pz, _ => Pw };
public void SetPos( int i, int v ) { switch ( i ) { case 0: Px = v; break; case 1: Py = v; break; case 2: Pz = v; break; default: Pw = v; break; } }
public readonly int GetColor( int i ) => i switch { 0 => Cr, 1 => Cg, _ => Cb };
public readonly int GetTex( int i ) => i == 0 ? Tu : Tv;
}
public sealed class Polygon
{
public int[] Vertices = new int[10];
public uint NumVertices;
public int[] FinalZ = new int[10];
public int[] FinalW = new int[10];
public bool WBuffer;
public uint Attr;
public uint TexParam;
public uint TexPalette;
public bool Degenerate;
public bool FacingView;
public bool Translucent;
public bool IsShadowMask;
public bool IsShadow;
public int Type;
public uint VTop, VBottom;
public int YTop, YBottom;
public int XTop, XBottom;
public uint SortKey;
}