#pragma once #include #include #include "reg32.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]; reg32 fvertexAx; // ( w) Vertex A x-coordinate location (floating point) reg32 fvertexAy; // ( w) Vertex A y-coordinate location (floating point) reg32 fvertexBx; // ( w) Vertex B x-coordinate location (floating point) reg32 fvertexBy; // ( w) Vertex B y-coordinate location (floating point) reg32 fvertexCx; // ( w) Vertex C x-coordinate location (floating point) reg32 fvertexCy; // ( w) Vertex C y-coordinate location (floating point) reg32 fstartR; // ( w) Starting Red parameter (floating point) reg32 fstartG; // ( w) Starting Green parameter (floating point) reg32 fstartB; // ( w) Starting Blue parameter (floating point) reg32 fstartZ; // ( w) Starting Z parameter (floating point) reg32 fstartA; // ( w) Starting Alpha parameter (floating point) reg32 fstartS; // ( w) Starting S/W parameter (floating point) reg32 fstartT; // ( w) Starting T/W parameter (floating point) reg32 fstartW; // ( w) Starting 1/W parameter (floating point) reg32 fdRdX; // ( w) Change in Red with respect to X (floating point) reg32 fdGdX; // ( w) Change in Green with respect to X (floating point) reg32 fdBdX; // ( w) Change in Blue with respect to X (floating point) reg32 fdZdX; // ( w) Change in Z with respect to X (floating point) reg32 fdAdX; // ( w) Change in Alpha with respect to X (floating point) reg32 fdSdX; // ( w) Change in S/W with respect to X (floating point) reg32 fdTdX; // ( w) Change in T/W with respect to X (floating point) reg32 fdWdX; // ( w) Change in 1/W with respect to X (floating point) reg32 fdRdY; // ( w) Change in Red with respect to Y (floating point) reg32 fdGdY; // ( w) Change in Green with respect to Y (floating point) reg32 fdBdY; // ( w) Change in Blue with respect to Y (floating point) reg32 fdZdY; // ( w) Change in Z with respect to Y (floating point) reg32 fdAdY; // ( w) Change in Alpha with respect to Y (floating point) reg32 fdSdY; // ( w) Change in S/W with respect to Y (floating point) reg32 fdTdY; // ( w) Change in T/W with respect to Y (floating point) reg32 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 reg32 sVx; // ( w) Triangle setup X reg32 sVy; // ( w) Triangle setup Y reg32 sARGB; // ( w) Triangle setup Alpha, Red, Green, Blue reg32 sRed; // ( w) Triangle setup Red value reg32 sGreen; // ( w) Triangle setup Green value reg32 sBlue; // ( w) Triangle setup Blue value reg32 sAlpha; // ( w) Triangle setup Alpha value reg32 sVz; // ( w) Triangle setup Z reg32 sWb; // ( w) Triangle setup Global W reg32 sWtmu0; // ( w) Triangle setup Tmu0 & Tmu1 W reg32 sS_W0; // ( w) Triangle setup Tmu0 & Tmu1 S/W reg32 sT_W0; // ( w) Triangle setup Tmu0 & Tmu1 T/W reg32 sWtmu1; // ( w) Triangle setup Tmu1 only W reg32 sS_Wtmu1; // ( w) Triangle setup Tmu1 only S/W reg32 sT_Wtmu1; // ( w) Triangle setup Tmu1 only T/W 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);