voodoo/voodoo2.h

340 lines
24 KiB
C

#pragma once
#include <stddef.h>
#include <stdint.h>
#include "reg.h"
struct voodoo2_reg {
reg32 status; // (r ) Voodoo2 Graphics Status
reg32 intrCtrl; // (rw) Interrupt Status and Control
reg32 vertexAx; // ( w) Vertex A x-coordinate location (12.4 format)
reg32 vertexAy; // ( w) Vertex A y-coordinate location (12.4 format)
reg32 vertexBx; // ( w) Vertex B x-coordinate location (12.4 format)
reg32 vertexBy; // ( w) Vertex B y-coordinate location (12.4 format)
reg32 vertexCx; // ( w) Vertex C x-coordinate location (12.4 format)
reg32 vertexCy; // ( w) Vertex C y-coordinate location (12.4 format)
reg32 startR; // ( w) Starting Red parameter (12.12 format)
reg32 startG; // ( w) Starting Green parameter (12.12 format)
reg32 startB; // ( w) Starting Blue parameter (12.12 format)
reg32 startZ; // ( w) Starting Z parameter (20.12 format)
reg32 startA; // ( w) Starting Alpha parameter (12.12 format)
reg32 startS; // ( w) Starting S/W parameter (14.18 format)
reg32 startT; // ( w) Starting T/W parameter (14.18 format)
reg32 startW; // ( w) Starting 1/W parameter (2.30 format)
reg32 dRdX; // ( w) Change in Red with respect to X (12.12 format)
reg32 dGdX; // ( w) Change in Green with respect to X (12.12 format)
reg32 dBdX; // ( w) Change in Blue with respect to X (12.12 format)
reg32 dZdX; // ( w) Change in Z with respect to X (20.12 format)
reg32 dAdX; // ( w) Change in Alpha with respect to X (12.12 format)
reg32 dSdX; // ( w) Change in S/W with respect to X (14.18 format)
reg32 dTdX; // ( w) Change in T/W with respect to X (14.18 format)
reg32 dWdX; // ( w) Change in 1/W with respect to X (2.30 format)
reg32 dRdY; // ( w) Change in Red with respect to Y (12.12 format)
reg32 dGdY; // ( w) Change in Green with respect to Y (12.12 format)
reg32 dBdY; // ( w) Change in Blue with respect to Y (12.12 format)
reg32 dZdY; // ( w) Change in Z with respect to Y (20.12 format)
reg32 dAdY; // ( w) Change in Alpha with respect to Y (12.12 format)
reg32 dSdY; // ( w) Change in S/W with respect to Y (14.18 format)
reg32 dTdY; // ( w) Change in T/W with respect to Y (14.18 format)
reg32 dWdY; // ( w) Change in 1/W with respect to Y (2.30 format)
reg32 triangleCMD; // ( w) Execute TRIANGLE command (floating point)
reg32 _reserved0[1];
reg32f fvertexAx; // ( w) Vertex A x-coordinate location (floating point)
reg32f fvertexAy; // ( w) Vertex A y-coordinate location (floating point)
reg32f fvertexBx; // ( w) Vertex B x-coordinate location (floating point)
reg32f fvertexBy; // ( w) Vertex B y-coordinate location (floating point)
reg32f fvertexCx; // ( w) Vertex C x-coordinate location (floating point)
reg32f fvertexCy; // ( w) Vertex C y-coordinate location (floating point)
reg32f fstartR; // ( w) Starting Red parameter (floating point)
reg32f fstartG; // ( w) Starting Green parameter (floating point)
reg32f fstartB; // ( w) Starting Blue parameter (floating point)
reg32f fstartZ; // ( w) Starting Z parameter (floating point)
reg32f fstartA; // ( w) Starting Alpha parameter (floating point)
reg32f fstartS; // ( w) Starting S/W parameter (floating point)
reg32f fstartT; // ( w) Starting T/W parameter (floating point)
reg32f fstartW; // ( w) Starting 1/W parameter (floating point)
reg32f fdRdX; // ( w) Change in Red with respect to X (floating point)
reg32f fdGdX; // ( w) Change in Green with respect to X (floating point)
reg32f fdBdX; // ( w) Change in Blue with respect to X (floating point)
reg32f fdZdX; // ( w) Change in Z with respect to X (floating point)
reg32f fdAdX; // ( w) Change in Alpha with respect to X (floating point)
reg32f fdSdX; // ( w) Change in S/W with respect to X (floating point)
reg32f fdTdX; // ( w) Change in T/W with respect to X (floating point)
reg32f fdWdX; // ( w) Change in 1/W with respect to X (floating point)
reg32f fdRdY; // ( w) Change in Red with respect to Y (floating point)
reg32f fdGdY; // ( w) Change in Green with respect to Y (floating point)
reg32f fdBdY; // ( w) Change in Blue with respect to Y (floating point)
reg32f fdZdY; // ( w) Change in Z with respect to Y (floating point)
reg32f fdAdY; // ( w) Change in Alpha with respect to Y (floating point)
reg32f fdSdY; // ( w) Change in S/W with respect to Y (floating point)
reg32f fdTdY; // ( w) Change in T/W with respect to Y (floating point)
reg32f fdWdY; // ( w) Change in 1/W with respect to Y (floating point)
reg32 ftriangleCMD; // ( w) Execute TRIANGLE command (floating point)
reg32 fbzColorPath; // (rw) Chuck Color Path Control
reg32 fogMode; // (rw) Fog Mode Control
reg32 alphaMode; // (rw) Alpha Mode Control
reg32 fbzMode; // (rw) RGB Buffer and Depth-Buffer Control
reg32 lfbMode; // (rw) Linear Frame Buffer Mode Control
reg32 clipLeftRight; // (rw) Left and Right of Clipping Register
reg32 clipLowYHighY; // (rw) Top and Bottom of Clipping Register
reg32 nopCMD; // ( w) Execute NOP command
reg32 fastfillCMD; // ( w) Execute FASTFILL command
reg32 swapbufferCMD; // ( w) Execute SWAPBUFFER command
reg32 fogColor; // ( w) Fog Color Value
reg32 zaColor; // ( w) Constant Alpha/Depth Value
reg32 chromaKey; // ( w) Chroma Key Compare Value
reg32 chromaRange; // ( w) Chroma Range Compare Values,modes,enable
reg32 userIntrCMD; // ( w) Execute USERINTERRUPT command
reg32 stipple; // (rw) Rendering Stipple Value
reg32 color0; // (rw) Constant Color #0
reg32 color1; // (rw) Constant Color #1
reg32 fbiPixelsIn; // (r ) Pixel Counter (Number pixels processed)
reg32 fbiChromaFail; // (r ) Pixel Counter (Number pixels failed Chroma test)
reg32 fbiZfuncFail; // (r ) Pixel Counter (Number pixels failed Z test)
reg32 fbiAfuncFail; // (r ) Pixel Counter (Number pixels failed Alpha test)
reg32 fbiPixelsOut; // (r ) Pixel Counter (Number pixels drawn)
reg32 fogTable[32]; // ( w) Fog Table
reg32 cmdFifoBaseAddr; // (rw) CMDFIFO base address and size
reg32 cmdFifoBump; // (rw) CMDFIFO bump depth
reg32 cmdFifoRdPtr; // (rw) CMDFIFO current read pointer
reg32 cmdFifoAMin; // (rw) CMDFIFO current minimum address
reg32 cmdFifoAMax; // (rw) CMDFIFO current maximum address
reg32 cmdFifoDepth; // (rw) CMDFIFO current depth
reg32 cmdFifoHoles; // (rw) CMDFIFO number of holes
reg32 _reserved1[1];
reg32 fbiInit4; // (rw) Chuck Hardware Initialization (register 4)
reg32 vRetrace; // (r ) Vertical Retrace Counter
reg32 backPorch; // (rw) Video Backporch Timing Generator
reg32 videoDimensions; // (rw) Video Screen Dimensions
reg32 fbiInit0; // (rw) Chuck Hardware Initialization (register 0)
reg32 fbiInit1; // (rw) Chuck Hardware Initialization (register 1)
reg32 fbiInit2; // (rw) Chuck Hardware Initialization (register 2)
reg32 fbiInit3; // (rw) Chuck Hardware Initialization (register 3)
reg32 hSync; // ( w) Horizontal Sync Timing Generator
reg32 vSync; // ( w) Vertical Sync Timing Generator
reg32 clutData; // ( w) Video Color Lookup Table Initialization
reg32 dacData; // ( w) External DAC Initialization
reg32 maxRgbDelta; // ( w) Max. RGB difference for Video Filtering
reg32 hBorder; // ( w) Horizontal Border Color Control
reg32 vBorder; // ( w) Vertical Border Color Control
reg32 borderColor; // ( w) Video Border Color
reg32 hvRetrace; // (r ) Horizontal and Vertical Retrace Counters (synced)
reg32 fbiInit5; // (rw) Chuck Hardware Initialization (register 5)
reg32 fbiInit6; // (rw) Chuck Hardware Initialization (register 6)
reg32 fbiInit7; // (rw) Chuck Hardware Initialization (register 7)
reg32 _reserved2[2];
reg32 fbiSwapHistory; // (r ) Swap History Register
reg32 fbiTrianglesOut; // (r ) Triangle Counter (Number triangles drawn)
reg32 sSetupMode; // ( w) Triangle setup mode
reg32f sVx; // ( w) Triangle setup X (floating point)
reg32f sVy; // ( w) Triangle setup Y (floating point)
reg32 sARGB; // ( w) Triangle setup Alpha, Red, Green, Blue
reg32f sRed; // ( w) Triangle setup Red value (floating point)
reg32f sGreen; // ( w) Triangle setup Green value (floating point)
reg32f sBlue; // ( w) Triangle setup Blue value (floating point)
reg32f sAlpha; // ( w) Triangle setup Alpha value (floating point)
reg32f sVz; // ( w) Triangle setup Z (floating point)
reg32f sWb; // ( w) Triangle setup Global W (floating point)
reg32f sWtmu0; // ( w) Triangle setup Tmu0 & Tmu1 W (floating point)
reg32f sS_W0; // ( w) Triangle setup Tmu0 & Tmu1 S/W (floating point)
reg32f sT_W0; // ( w) Triangle setup Tmu0 & Tmu1 T/W (floating point)
reg32f sWtmu1; // ( w) Triangle setup Tmu1 only W (floating point)
reg32f sS_Wtmu1; // ( w) Triangle setup Tmu1 only S/W (floating point)
reg32f sT_Wtmu1; // ( w) Triangle setup Tmu1 only T/W (floating point)
reg32 sDrawTriCMD; // ( w) Triangle setup (Draw)
reg32 sBeginTriCMD; // ( w) Triangle setup Start New triangle
reg32 _reserved3[6];
reg32 bltSrcBaseAddr; // (rw) BitBLT Source base address
reg32 bltDstBaseAddr; // (rw) BitBLT Destination base address
reg32 bltXYStrides; // (rw) BitBLT Source and Destination strides
reg32 bltSrcChromaRange; // (rw) BiBLT Source Chroma key range
reg32 bltDstChromaRange; // (rw) BitBLT Destination Chroma key range
reg32 bltClipX; // (rw) BitBLT Min/Max X clip values
reg32 bltClipY; // (rw) BitBLT Min/Max Y clip values
reg32 _reserved4[1];
reg32 bltSrcXY; // (rw) BitBLT Source starting XY coordinates
reg32 bltDstXY; // (rw) BitBLT Destination starting XY coordinates
reg32 bltSize; // (rw) BitBLT width and height
reg32 bltRop; // (rw) BitBLT Raster operations
reg32 bltColor; // (rw) BitBLT and foreground background colors
reg32 _reserved5[1];
reg32 bltCommand; // (rw) BitBLT command mode
reg32 bltData; // ( w) BitBLT data for CPU-to-Screen BitBLTs
reg32 textureMode; // ( w) Texture Mode Control
reg32 tLOD; // ( w) Texture LOD Settings
reg32 tDetail; // ( w) Texture LOD Settings
reg32 texBaseAddr; // ( w) Texture Base Address
reg32 texBaseAddr_1; // ( w) Texture Base Address (supplemental LOD 1)
reg32 texBaseAddr_2; // ( w) Texture Base Address (supplemental LOD 2)
reg32 texBaseAddr_3_8; // ( w) Texture Base Address (supplemental LOD 3-8)
reg32 trexInit0; // ( w) Bruce Hardware Initialization (register 0)
reg32 trexInit1; // ( w) Bruce Hardware Initialization (register 1)
reg32 nccTable0[12]; // ( w) Narrow Channel Compression Table 0 (12 entries)
reg32 nccTable1[12]; // ( w) Narrow Channel Compression Table 1 (12 entries)
};
static_assert((offsetof (struct voodoo2_reg, status)) == 0x000);
static_assert((offsetof (struct voodoo2_reg, intrCtrl)) == 0x004);
static_assert((offsetof (struct voodoo2_reg, vertexAx)) == 0x008);
static_assert((offsetof (struct voodoo2_reg, vertexAy)) == 0x00c);
static_assert((offsetof (struct voodoo2_reg, vertexBx)) == 0x010);
static_assert((offsetof (struct voodoo2_reg, vertexBy)) == 0x014);
static_assert((offsetof (struct voodoo2_reg, vertexCx)) == 0x018);
static_assert((offsetof (struct voodoo2_reg, vertexCy)) == 0x01c);
static_assert((offsetof (struct voodoo2_reg, startR)) == 0x020);
static_assert((offsetof (struct voodoo2_reg, startG)) == 0x024);
static_assert((offsetof (struct voodoo2_reg, startB)) == 0x028);
static_assert((offsetof (struct voodoo2_reg, startZ)) == 0x02c);
static_assert((offsetof (struct voodoo2_reg, startA)) == 0x030);
static_assert((offsetof (struct voodoo2_reg, startS)) == 0x034);
static_assert((offsetof (struct voodoo2_reg, startT)) == 0x038);
static_assert((offsetof (struct voodoo2_reg, startW)) == 0x03c);
static_assert((offsetof (struct voodoo2_reg, dRdX)) == 0x040);
static_assert((offsetof (struct voodoo2_reg, dGdX)) == 0x044);
static_assert((offsetof (struct voodoo2_reg, dBdX)) == 0x048);
static_assert((offsetof (struct voodoo2_reg, dZdX)) == 0x04c);
static_assert((offsetof (struct voodoo2_reg, dAdX)) == 0x050);
static_assert((offsetof (struct voodoo2_reg, dSdX)) == 0x054);
static_assert((offsetof (struct voodoo2_reg, dTdX)) == 0x058);
static_assert((offsetof (struct voodoo2_reg, dWdX)) == 0x05c);
static_assert((offsetof (struct voodoo2_reg, dRdY)) == 0x060);
static_assert((offsetof (struct voodoo2_reg, dGdY)) == 0x064);
static_assert((offsetof (struct voodoo2_reg, dBdY)) == 0x068);
static_assert((offsetof (struct voodoo2_reg, dZdY)) == 0x06c);
static_assert((offsetof (struct voodoo2_reg, dAdY)) == 0x070);
static_assert((offsetof (struct voodoo2_reg, dSdY)) == 0x074);
static_assert((offsetof (struct voodoo2_reg, dTdY)) == 0x078);
static_assert((offsetof (struct voodoo2_reg, dWdY)) == 0x07c);
static_assert((offsetof (struct voodoo2_reg, triangleCMD)) == 0x080);
static_assert((offsetof (struct voodoo2_reg, fvertexAx)) == 0x088);
static_assert((offsetof (struct voodoo2_reg, fvertexAy)) == 0x08c);
static_assert((offsetof (struct voodoo2_reg, fvertexBx)) == 0x090);
static_assert((offsetof (struct voodoo2_reg, fvertexBy)) == 0x094);
static_assert((offsetof (struct voodoo2_reg, fvertexCx)) == 0x098);
static_assert((offsetof (struct voodoo2_reg, fvertexCy)) == 0x09c);
static_assert((offsetof (struct voodoo2_reg, fstartR)) == 0x0a0);
static_assert((offsetof (struct voodoo2_reg, fstartG)) == 0x0a4);
static_assert((offsetof (struct voodoo2_reg, fstartB)) == 0x0a8);
static_assert((offsetof (struct voodoo2_reg, fstartZ)) == 0x0ac);
static_assert((offsetof (struct voodoo2_reg, fstartA)) == 0x0b0);
static_assert((offsetof (struct voodoo2_reg, fstartS)) == 0x0b4);
static_assert((offsetof (struct voodoo2_reg, fstartT)) == 0x0b8);
static_assert((offsetof (struct voodoo2_reg, fstartW)) == 0x0bc);
static_assert((offsetof (struct voodoo2_reg, fdRdX)) == 0x0c0);
static_assert((offsetof (struct voodoo2_reg, fdGdX)) == 0x0c4);
static_assert((offsetof (struct voodoo2_reg, fdBdX)) == 0x0c8);
static_assert((offsetof (struct voodoo2_reg, fdZdX)) == 0x0cc);
static_assert((offsetof (struct voodoo2_reg, fdAdX)) == 0x0d0);
static_assert((offsetof (struct voodoo2_reg, fdSdX)) == 0x0d4);
static_assert((offsetof (struct voodoo2_reg, fdTdX)) == 0x0d8);
static_assert((offsetof (struct voodoo2_reg, fdWdX)) == 0x0dc);
static_assert((offsetof (struct voodoo2_reg, fdRdY)) == 0x0e0);
static_assert((offsetof (struct voodoo2_reg, fdGdY)) == 0x0e4);
static_assert((offsetof (struct voodoo2_reg, fdBdY)) == 0x0e8);
static_assert((offsetof (struct voodoo2_reg, fdZdY)) == 0x0ec);
static_assert((offsetof (struct voodoo2_reg, fdAdY)) == 0x0f0);
static_assert((offsetof (struct voodoo2_reg, fdSdY)) == 0x0f4);
static_assert((offsetof (struct voodoo2_reg, fdTdY)) == 0x0f8);
static_assert((offsetof (struct voodoo2_reg, fdWdY)) == 0x0fc);
static_assert((offsetof (struct voodoo2_reg, ftriangleCMD)) == 0x100);
static_assert((offsetof (struct voodoo2_reg, fbzColorPath)) == 0x104);
static_assert((offsetof (struct voodoo2_reg, fogMode)) == 0x108);
static_assert((offsetof (struct voodoo2_reg, alphaMode)) == 0x10c);
static_assert((offsetof (struct voodoo2_reg, fbzMode)) == 0x110);
static_assert((offsetof (struct voodoo2_reg, lfbMode)) == 0x114);
static_assert((offsetof (struct voodoo2_reg, clipLeftRight)) == 0x118);
static_assert((offsetof (struct voodoo2_reg, clipLowYHighY)) == 0x11c);
static_assert((offsetof (struct voodoo2_reg, nopCMD)) == 0x120);
static_assert((offsetof (struct voodoo2_reg, fastfillCMD)) == 0x124);
static_assert((offsetof (struct voodoo2_reg, swapbufferCMD)) == 0x128);
static_assert((offsetof (struct voodoo2_reg, fogColor)) == 0x12c);
static_assert((offsetof (struct voodoo2_reg, zaColor)) == 0x130);
static_assert((offsetof (struct voodoo2_reg, chromaKey)) == 0x134);
static_assert((offsetof (struct voodoo2_reg, chromaRange)) == 0x138);
static_assert((offsetof (struct voodoo2_reg, userIntrCMD)) == 0x13c);
static_assert((offsetof (struct voodoo2_reg, stipple)) == 0x140);
static_assert((offsetof (struct voodoo2_reg, color0)) == 0x144);
static_assert((offsetof (struct voodoo2_reg, color1)) == 0x148);
static_assert((offsetof (struct voodoo2_reg, fbiPixelsIn)) == 0x14c);
static_assert((offsetof (struct voodoo2_reg, fbiChromaFail)) == 0x150);
static_assert((offsetof (struct voodoo2_reg, fbiZfuncFail)) == 0x154);
static_assert((offsetof (struct voodoo2_reg, fbiAfuncFail)) == 0x158);
static_assert((offsetof (struct voodoo2_reg, fbiPixelsOut)) == 0x15c);
static_assert((offsetof (struct voodoo2_reg, fogTable[0])) == 0x160);
static_assert((offsetof (struct voodoo2_reg, cmdFifoBaseAddr)) == 0x1e0);
static_assert((offsetof (struct voodoo2_reg, cmdFifoBump)) == 0x1e4);
static_assert((offsetof (struct voodoo2_reg, cmdFifoRdPtr)) == 0x1e8);
static_assert((offsetof (struct voodoo2_reg, cmdFifoAMin)) == 0x1ec);
static_assert((offsetof (struct voodoo2_reg, cmdFifoAMax)) == 0x1f0);
static_assert((offsetof (struct voodoo2_reg, cmdFifoDepth)) == 0x1f4);
static_assert((offsetof (struct voodoo2_reg, cmdFifoHoles)) == 0x1f8);
static_assert((offsetof (struct voodoo2_reg, fbiInit4)) == 0x200);
static_assert((offsetof (struct voodoo2_reg, vRetrace)) == 0x204);
static_assert((offsetof (struct voodoo2_reg, backPorch)) == 0x208);
static_assert((offsetof (struct voodoo2_reg, videoDimensions)) == 0x20c);
static_assert((offsetof (struct voodoo2_reg, fbiInit0)) == 0x210);
static_assert((offsetof (struct voodoo2_reg, fbiInit1)) == 0x214);
static_assert((offsetof (struct voodoo2_reg, fbiInit2)) == 0x218);
static_assert((offsetof (struct voodoo2_reg, fbiInit3)) == 0x21c);
static_assert((offsetof (struct voodoo2_reg, hSync)) == 0x220);
static_assert((offsetof (struct voodoo2_reg, vSync)) == 0x224);
static_assert((offsetof (struct voodoo2_reg, clutData)) == 0x228);
static_assert((offsetof (struct voodoo2_reg, dacData)) == 0x22c);
static_assert((offsetof (struct voodoo2_reg, maxRgbDelta)) == 0x230);
static_assert((offsetof (struct voodoo2_reg, hBorder)) == 0x234);
static_assert((offsetof (struct voodoo2_reg, vBorder)) == 0x238);
static_assert((offsetof (struct voodoo2_reg, borderColor)) == 0x23c);
static_assert((offsetof (struct voodoo2_reg, hvRetrace)) == 0x240);
static_assert((offsetof (struct voodoo2_reg, fbiInit5)) == 0x244);
static_assert((offsetof (struct voodoo2_reg, fbiInit6)) == 0x248);
static_assert((offsetof (struct voodoo2_reg, fbiInit7)) == 0x24c);
static_assert((offsetof (struct voodoo2_reg, fbiSwapHistory)) == 0x258);
static_assert((offsetof (struct voodoo2_reg, fbiTrianglesOut)) == 0x25c);
static_assert((offsetof (struct voodoo2_reg, sSetupMode)) == 0x260);
static_assert((offsetof (struct voodoo2_reg, sVx)) == 0x264);
static_assert((offsetof (struct voodoo2_reg, sVy)) == 0x268);
static_assert((offsetof (struct voodoo2_reg, sARGB)) == 0x26c);
static_assert((offsetof (struct voodoo2_reg, sRed)) == 0x270);
static_assert((offsetof (struct voodoo2_reg, sGreen)) == 0x274);
static_assert((offsetof (struct voodoo2_reg, sBlue)) == 0x278);
static_assert((offsetof (struct voodoo2_reg, sAlpha)) == 0x27c);
static_assert((offsetof (struct voodoo2_reg, sVz)) == 0x280);
static_assert((offsetof (struct voodoo2_reg, sWb)) == 0x284);
static_assert((offsetof (struct voodoo2_reg, sWtmu0)) == 0x288);
static_assert((offsetof (struct voodoo2_reg, sS_W0)) == 0x28c);
static_assert((offsetof (struct voodoo2_reg, sT_W0)) == 0x290);
static_assert((offsetof (struct voodoo2_reg, sWtmu1)) == 0x294);
static_assert((offsetof (struct voodoo2_reg, sS_Wtmu1)) == 0x298);
static_assert((offsetof (struct voodoo2_reg, sT_Wtmu1)) == 0x29c);
static_assert((offsetof (struct voodoo2_reg, sDrawTriCMD)) == 0x2a0);
static_assert((offsetof (struct voodoo2_reg, sBeginTriCMD)) == 0x2a4);
static_assert((offsetof (struct voodoo2_reg, bltSrcBaseAddr)) == 0x2c0);
static_assert((offsetof (struct voodoo2_reg, bltDstBaseAddr)) == 0x2c4);
static_assert((offsetof (struct voodoo2_reg, bltXYStrides)) == 0x2c8);
static_assert((offsetof (struct voodoo2_reg, bltSrcChromaRange)) == 0x2cc);
static_assert((offsetof (struct voodoo2_reg, bltDstChromaRange)) == 0x2d0);
static_assert((offsetof (struct voodoo2_reg, bltClipX)) == 0x2d4);
static_assert((offsetof (struct voodoo2_reg, bltClipY)) == 0x2d8);
static_assert((offsetof (struct voodoo2_reg, bltSrcXY)) == 0x2e0);
static_assert((offsetof (struct voodoo2_reg, bltDstXY)) == 0x2e4);
static_assert((offsetof (struct voodoo2_reg, bltSize)) == 0x2e8);
static_assert((offsetof (struct voodoo2_reg, bltRop)) == 0x2ec);
static_assert((offsetof (struct voodoo2_reg, bltColor)) == 0x2f0);
static_assert((offsetof (struct voodoo2_reg, bltCommand)) == 0x2f8);
static_assert((offsetof (struct voodoo2_reg, bltData)) == 0x2fc);
static_assert((offsetof (struct voodoo2_reg, textureMode)) == 0x300);
static_assert((offsetof (struct voodoo2_reg, tLOD)) == 0x304);
static_assert((offsetof (struct voodoo2_reg, tDetail)) == 0x308);
static_assert((offsetof (struct voodoo2_reg, texBaseAddr)) == 0x30c);
static_assert((offsetof (struct voodoo2_reg, texBaseAddr_1)) == 0x310);
static_assert((offsetof (struct voodoo2_reg, texBaseAddr_2)) == 0x314);
static_assert((offsetof (struct voodoo2_reg, texBaseAddr_3_8)) == 0x318);
static_assert((offsetof (struct voodoo2_reg, trexInit0)) == 0x31c);
static_assert((offsetof (struct voodoo2_reg, trexInit1)) == 0x320);
static_assert((offsetof (struct voodoo2_reg, nccTable0[0])) == 0x324);
static_assert((offsetof (struct voodoo2_reg, nccTable1[0])) == 0x354);
typedef struct voodoo2_reg voodoo2_reg;