/* * 2D Acceleration for SiS 530, 620, 300, 540, 630, 730. * Definitions for the SIS engine communication * * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1) Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3) The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Authors: Thomas Winischhofer * Can-Ru Yeou, SiS Inc. (code base) * */ #define PATREGSIZE 384 /* Pattern register size. 384 bytes @ 0x8300 */ #define BR(x) (0x8200 | (x) << 2) #define PBR(x) (0x8300 | (x) << 2) /* SiS300 engine commands */ #define BITBLT 0x00000000 /* Blit */ #define COLOREXP 0x00000001 /* Color expand */ #define ENCOLOREXP 0x00000002 /* Enhanced color expand */ #define MULTIPLE_SCANLINE 0x00000003 /* ? */ #define LINE 0x00000004 /* Draw line */ #define TRAPAZOID_FILL 0x00000005 /* Fill trapezoid */ #define TRANSPARENT_BITBLT 0x00000006 /* Transparent Blit */ /* source select */ #define SRCVIDEO 0x00000000 /* source is video RAM */ #define SRCSYSTEM 0x00000010 /* source is system memory */ #define SRCCPUBLITBUF SRCSYSTEM /* source is CPU-driven BitBuffer (for color expand) */ #define SRCAGP 0x00000020 /* source is AGP memory (?) */ /* Pattern flags */ #define PATFG 0x00000000 /* foreground color */ #define PATPATREG 0x00000040 /* pattern in pattern buffer (0x8300) */ #define PATMONO 0x00000080 /* mono pattern */ /* blitting direction */ #define X_INC 0x00010000 #define X_DEC 0x00000000 #define Y_INC 0x00020000 #define Y_DEC 0x00000000 /* Clipping flags */ #define NOCLIP 0x00000000 #define NOMERGECLIP 0x04000000 #define CLIPENABLE 0x00040000 #define CLIPWITHOUTMERGE 0x04040000 /* Transparency */ #define OPAQUE 0x00000000 #define TRANSPARENT 0x00100000 /* Trapezoid */ #define T_XISMAJORL 0x00800000 /* X axis is driving axis (left) */ #define T_XISMAJORR 0x01000000 /* X axis is driving axis (right) */ #define T_L_Y_INC Y_INC /* left edge direction Y */ #define T_L_X_INC X_INC /* left edge direction X */ #define T_R_Y_INC 0x00400000 /* right edge direction Y */ #define T_R_X_INC 0x00200000 /* right edge direction X */ /* ? */ #define DSTAGP 0x02000000 #define DSTVIDEO 0x02000000 /* Line */ #define LINE_STYLE 0x00800000 #define NO_RESET_COUNTER 0x00400000 #define NO_LAST_PIXEL 0x00200000 /* Macros to do useful things with the SIS BitBLT engine */ /* BR(16) (0x8240): bit 31 2D engine: 1 is idle, bit 30 3D engine: 1 is idle, bit 29 Command queue: 1 is empty bits 28:24: Current CPU driven BitBlt buffer stage bit[4:0] bits 15:0: Current command queue length (530/620: 12:0) */ /* BR(16)+2 = 0x8242 */ /* As sis_dri.c relocated the cmd-q len to the sarea, don't use it directly here */ /* #define CmdQueLen pSiS->cmdQueueLen */ #define CmdQueLen (*(pSiS->cmdQueueLenPtr)) #define SiSIdle \ { \ while( (SIS_MMIO_IN16(pSiS->IOBase, BR(16)+2) & 0xE000) != 0xE000){}; \ while( (SIS_MMIO_IN16(pSiS->IOBase, BR(16)+2) & 0xE000) != 0xE000){}; \ while( (SIS_MMIO_IN16(pSiS->IOBase, BR(16)+2) & 0xE000) != 0xE000){}; \ CmdQueLen = (SIS_MMIO_IN16(pSiS->IOBase, 0x8240) & pSiS->CmdQueLenMask) - pSiS->CmdQueLenFix; \ } /* (do three times, because 2D engine seems quite unsure about whether or not it's idle) */ #define SiSSetupSRCBase(base) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(0), base);\ CmdQueLen--; #define SiSSetupSRCPitch(pitch) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT16(pSiS->IOBase, BR(1), pitch);\ CmdQueLen--; #define SiSSetupSRCXY(x,y) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(2), (CARD32)(x)<<16 | (CARD32)(y) );\ CmdQueLen--; #define SiSSetupDSTBase(base) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(4), base);\ CmdQueLen--; #define SiSSetupDSTXY(x,y) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(3), (CARD32)(x)<<16 | (CARD32)(y) );\ CmdQueLen--; #define SiSSetupDSTRect(x,y) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(5), (CARD32)(y)<<16 | (CARD32)(x) );\ CmdQueLen--; #define SiSSetupDSTColorDepth(bpp) \ if(pSiS->VGAEngine != SIS_530_VGA) { \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT16(pSiS->IOBase, BR(1)+2, bpp);\ CmdQueLen--; \ } #define SiSSetupRect(w,h) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(6), (CARD32)(h)<<16 | (CARD32)(w) );\ CmdQueLen--; #define SiSSetupPATFG(color) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(7), color);\ CmdQueLen--; #define SiSSetupPATBG(color) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(8), color);\ CmdQueLen--; #define SiSSetupSRCFG(color) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(9), color);\ CmdQueLen--; #define SiSSetupSRCBG(color) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(10), color);\ CmdQueLen--; /* 0x8224 src colorkey high */ /* 0x8228 src colorkey low */ /* 0x821c dest colorkey high */ /* 0x8220 dest colorkey low */ #define SiSSetupSRCTrans(color) \ if (CmdQueLen <= 1) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, 0x8224, color);\ SIS_MMIO_OUT32(pSiS->IOBase, 0x8228, color);\ CmdQueLen -= 2; #define SiSSetupDSTTrans(color) \ if (CmdQueLen <= 1) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, 0x821C, color); \ SIS_MMIO_OUT32(pSiS->IOBase, 0x8220, color); \ CmdQueLen -= 2; #define SiSSetupMONOPAT(p0,p1) \ if (CmdQueLen <= 1) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(11), p0);\ SIS_MMIO_OUT32(pSiS->IOBase, BR(12), p1);\ CmdQueLen -= 2; #define SiSSetupClipLT(left,top) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(13), ((left) & 0xFFFF) | (CARD32)(top)<<16 );\ CmdQueLen--; #define SiSSetupClipRB(right,bottom) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(14), ((right) & 0xFFFF) | (CARD32)(bottom)<<16 );\ CmdQueLen--; /* General */ #define SiSSetupROP(rop) \ pSiS->CommandReg = (rop) << 8; #define SiSSetupCMDFlag(flags) \ pSiS->CommandReg |= (flags); #define SiSDoCMD \ if (CmdQueLen <= 1) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(15), pSiS->CommandReg); \ CmdQueLen--; \ if(pSiS->VGAEngine != SIS_530_VGA) { \ SIS_MMIO_OUT32(pSiS->IOBase, BR(16), 0);\ CmdQueLen--; \ } else { \ unsigned long temp; \ temp = SIS_MMIO_IN32(pSiS->IOBase, BR(16)); \ (void) temp; \ } \ /* Line */ #define SiSSetupX0Y0(x,y) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(2), (CARD32)(y)<<16 | (CARD32)(x) );\ CmdQueLen--; #define SiSSetupX1Y1(x,y) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(3), (CARD32)(y)<<16 | (CARD32)(x) );\ CmdQueLen--; #define SiSSetupLineCount(c) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT16(pSiS->IOBase, BR(6), c);\ CmdQueLen--; #define SiSSetupStylePeriod(p) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT16(pSiS->IOBase, BR(6)+2, p);\ CmdQueLen--; #define SiSSetupStyleLow(ls) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(11), ls);\ CmdQueLen--; #define SiSSetupStyleHigh(ls) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, BR(12), ls);\ CmdQueLen--; /* Trapezoid */ #define SiSSetupYH(y,h) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, 0x8208, (CARD32)(y)<<16 | (CARD32)(h) );\ CmdQueLen--; #define SiSSetupLR(left,right) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, 0x820C, (CARD32)(right)<<16 | (CARD32)(left) );\ CmdQueLen--; #define SiSSetupdL(dxL,dyL) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, 0x8244, (CARD32)(dyL)<<16 | (CARD32)(dxL) );\ CmdQueLen--; #define SiSSetupdR(dxR,dyR) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, 0x8248, (CARD32)(dyR)<<16 | (CARD32)(dxR) );\ CmdQueLen--; #define SiSSetupEL(eL) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, 0x824C, eL);\ CmdQueLen--; #define SiSSetupER(eR) \ if (CmdQueLen <= 0) SiSIdle;\ SIS_MMIO_OUT32(pSiS->IOBase, 0x8250, eR);\ CmdQueLen--; /* Set Pattern register */ #define SiSSetPattern(num, value) \ if (CmdQueLen <= 0) SiSIdle; \ SIS_MMIO_OUT32(pSiS->IOBase, (PATTERN_REG + (num * 4)), value); \ CmdQueLen--; /* 3D stuff (used for RENDER) */ /* * Register Addresses of 300/630/730/(540?) */ #define REG_3D_TSFSa 0x8800 #define REG_3D_TSZa 0x8804 #define REG_3D_TSXa 0x8808 #define REG_3D_TSYa 0x880C #define REG_3D_TSARGBa 0x8810 #define REG_3D_TSWGa 0x8814 #define REG_3D_TSUAa 0x8818 #define REG_3D_TSVAa 0x881C #define REG_3D_TSUBa 0x8820 #define REG_3D_TSVBa 0x8824 #define REG_3D_TSUCa 0x8828 #define REG_3D_TSVCa 0x882C #define REG_3D_TSFSb 0x8830 #define REG_3D_TSZb 0x8834 #define REG_3D_TSXb 0x8838 #define REG_3D_TSYb 0x883C #define REG_3D_TSARGBb 0x8840 #define REG_3D_TSWGb 0x8844 #define REG_3D_TSUAb 0x8848 #define REG_3D_TSVAb 0x884C #define REG_3D_TSUBb 0x8850 #define REG_3D_TSVBb 0x8854 #define REG_3D_TSUCb 0x8858 #define REG_3D_TSVCb 0x885C #define REG_3D_TSFSc 0x8860 #define REG_3D_TSZc 0x8864 #define REG_3D_TSXc 0x8868 #define REG_3D_TSYc 0x886C #define REG_3D_TSARGBc 0x8870 #define REG_3D_TSWGc 0x8874 #define REG_3D_TSUAc 0x8878 #define REG_3D_TSVAc 0x887C #define REG_3D_TSUBc 0x8880 #define REG_3D_TSVBc 0x8884 #define REG_3D_TSUCc 0x8888 #define REG_3D_TSVCc 0x888C /* * REG_3D_AGPCmdSetting (89e4h-89f7) */ #define REG_3D_AGPCmBase 0x89E4 #define REG_3D_AGPRmDwNum 0x89E8 #define REG_3D_AGPTtDwNum 0x89EC #define REG_3D_AGPCmFire 0x89F0 #define REG_3D_ParsingSet 0x89F4 #define REG_3D_PrimitiveSet 0x89F8 #define REG_3D_ShadeMode 0x89F8 #define REG_3D_EngineFire 0x89FC #define REG_3D_EngineStatus 0x89FC #define REG_3D_TEnable 0x8A00 #define REG_3D_TEnable2 0x8A04 #define REG_3D_ZSet 0x8A08 #define REG_3D_ZBias 0x8A0C #define REG_3D_ZStWriteMask 0x8A10 #define REG_3D_ZAddress 0x8A14 #define REG_3D_AlphaSet 0x8A18 #define REG_3D_AlphaAddress 0x8A1C #define REG_3D_DstSet 0x8A20 #define REG_3D_DstAlphaWriteMask 0x8A24 #define REG_3D_DstAddress 0x8A28 #define REG_3D_LinePattern 0x8A2C #define REG_3D_FogSet 0x8A30 #define REG_3D_FogFarDistance 0x8A34 #define REG_3D_FogInverseDistance 0x8A38 #define REG_3D_FogFactorDensity 0x8A3C #define REG_3D_StencilSet 0x8A44 #define REG_3D_StencilSet2 0x8A48 #define REG_3D_StencilAddress 0x8A4C #define REG_3D_DstBlendMode 0x8A50 #define REG_3D_SrcBlendMode 0x8A50 #define REG_3D_ClipTopBottom 0x8A54 #define REG_3D_ClipLeftRight 0x8A58 #define REG_3D_Brightness 0x8A5C #define REG_3D_BumpMapSet 0x8A68 #define REG_3D_BumpMapAddress 0x8A6C #define REG_3D_BumpMapPitch 0x8A70 #define REG_3D_BumpMapMatrix0 0x8A74 #define REG_3D_BumpMapMatrix1 0x8A78 /* * Texture Registers */ #define REG_3D_TextureSet 0x8A7C #define REG_3D_TextureWidthHeight 0x8A7C #define REG_3D_TextureMip 0x8A80 #define REG_3D_TextureTransparencyColorHigh 0x8A84 #define REG_3D_TextureTransparencyColorLow 0x8A88 #define REG_3D_TextureBorderColor 0x8A8C #define REG_3D_TextureAddress0 0x8A90 #define REG_3D_TextureAddress1 0x8A94 #define REG_3D_TextureAddress2 0x8A98 #define REG_3D_TextureAddress3 0x8A9C #define REG_3D_TextureAddress4 0x8AA0 #define REG_3D_TextureAddress5 0x8AA4 #define REG_3D_TextureAddress6 0x8AA8 #define REG_3D_TextureAddress7 0x8AAC #define REG_3D_TextureAddress8 0x8AB0 #define REG_3D_TextureAddress9 0x8AB4 #define REG_3D_TextureAddress10 0x8AB8 #define REG_3D_TextureAddress11 0x8ABC #define REG_3D_TexturePitch0 0x8AC0 #define REG_3D_TexturePitch1 0x8AC0 #define REG_3D_TexturePitch2 0x8AC4 #define REG_3D_TexturePitch3 0x8AC4 #define REG_3D_TexturePitch4 0x8AC8 #define REG_3D_TexturePitch5 0x8AC8 #define REG_3D_TexturePitch6 0x8ACC #define REG_3D_TexturePitch7 0x8ACC #define REG_3D_TexturePitch8 0x8AD0 #define REG_3D_TexturePitch9 0x8AD0 #define REG_3D_TexturePitch10 0x8AD4 #define REG_3D_Texture1Set 0x8ADC #define REG_3D_Texture1WidthHeight 0x8ADC #define REG_3D_Texture1Mip 0x8AE0 #define REG_3D_Texture1TransparencyColorHigh 0x8AE4 #define REG_3D_Texture1TransparencyColorLow 0x8AE8 #define REG_3D_Texture1BorderColor 0x8AEC #define REG_3D_Texture1Address0 0x8AF0 #define REG_3D_Texture1Address1 0x8AF4 #define REG_3D_Texture1Address2 0x8AF8 #define REG_3D_Texture1Address3 0x8AFC #define REG_3D_Texture1Address4 0x8B00 #define REG_3D_Texture1Address5 0x8B04 #define REG_3D_Texture1Address6 0x8B08 #define REG_3D_Texture1Address7 0x8B0C #define REG_3D_Texture1Address8 0x8B10 #define REG_3D_Texture1Address9 0x8B14 #define REG_3D_Texture1Address10 0x8B18 #define REG_3D_Texture1Address11 0x8B1C #define REG_3D_Texture1Pitch0 0x8B20 #define REG_3D_Texture1Pitch1 0x8B20 #define REG_3D_Texture1Pitch2 0x8B24 #define REG_3D_Texture1Pitch3 0x8B24 #define REG_3D_Texture1Pitch4 0x8B28 #define REG_3D_Texture1Pitch5 0x8B28 #define REG_3D_Texture1Pitch6 0x8B2C #define REG_3D_Texture1Pitch7 0x8B2C #define REG_3D_Texture1Pitch8 0x8B30 #define REG_3D_Texture1Pitch9 0x8B30 #define REG_3D_Texture1Pitch10 0x8B34 #define REG_3D_TextureBlendFactor 0x8B3C #define REG_3D_TextureColorBlendSet0 0x8B40 #define REG_3D_TextureColorBlendSet1 0x8B44 #define REG_3D_TextureAlphaBlendSet0 0x8B48 #define REG_3D_TextureAlphaBlendSet1 0x8B4C #define REG_3D_EndPrimitiveList 0x8B50 #define REG_3D_Stipple0 0x8B60 #define REG_3D_TexturePalette 0x8C00 /* * REG_3D_ParsingSet - Parsing Mask (89F4h-89F7h) */ #define MASK_VertexDWSize 0xF0000000 #define MASK_VertexDataFormat 0x0FFF0000 #define MASK_PsVertex_HAS_RHW 0x08000000 #define MASK_PsVertex_HAS_NORMALXYZ 0x04000000 #define MASK_PsVertex_HAS_DIFFUSE 0x02000000 #define MASK_PsVertex_HAS_SPECULAR 0x01000000 #define MASK_PsUVSet 0x00FF0000 #define MASK_PsVertex_HAS_1SetUV 0x00800000 #define MASK_PsVertex_HAS_2SetUV 0x00C00000 #define MASK_PsVertex_HAS_3SetUV 0x00E00000 #define MASK_PsVertex_HAS_UVSet1 0x00800000 #define MASK_PsVertex_HAS_UVSet2 0x00400000 #define MASK_PsVertex_HAS_UVSet3 0x00200000 #define MASK_PsCullDirection_CCW 0x00008000 #define MASK_PsShadingMode 0x00007000 #define MASK_PsTextureFrom 0x000003F0 #define MASK_PsTexture0FromA 0x00000000 #define MASK_PsTexture1FromA 0x00000000 #define MASK_PsTexture1FromB 0x00000040 #define MASK_PsBumpTextureFromA 0x00000000 #define MASK_PsBumpTextureFromB 0x00000010 #define MASK_PsBumpTextureFromC 0x00000020 #define MASK_PsDataType 0x0000000F #define MASK_PsPointList 0x00000000 #define MASK_PsLineList 0x00000004 #define MASK_PsLineStrip 0x00000005 #define MASK_PsTriangleList 0x00000008 #define MASK_PsTriangleStrip 0x00000009 #define MASK_PsTriangleFan 0x0000000A /* * REG_3D_PrimitiveSet - Fire Primitive Mask (89F8h-89FBh) */ #define MASK_DrawPrimitiveCommand 0x00000007 #define MASK_SetFirePosition 0x00001F00 #define MASK_BumpTextureFrom 0x00030000 #define MASK_Texture1From 0x000C0000 #define MASK_Texture0From 0x00300000 #define MASK_ShadingMode 0x07000000 #define MASK_CullDirection 0x08000000 /* * Command Queue Length Mask (89FCh-89FF) */ #define MASK_CmdQueueLen 0x0FFF0000 /* * REG_3D_TEnable - Capability Enable Mask (8A00h-8A03h) */ #define MASK_DitherEnable 0x00000001 #define MASK_BlendEnable 0x00000002 #define MASK_FogTestEnable 0x00000004 #define MASK_FogEnable 0x00000008 #define MASK_SpecularEnable 0x00000010 #define MASK_FogPerspectiveEnable 0x00000020 #define MASK_TextureCacheClear 0x00000040 #define MASK_TextureCacheEnable 0x00000080 #define MASK_BumpMapEnable 0x00000100 #define MASK_TexturePerspectiveEnable 0x00000200 #define MASK_TextureEnable 0x00000400 #define MASK_CullEnable 0x00000800 #define MASK_TextureNumUsed 0x0000F000 #define MASK_AlphaBufferEnable 0x00010000 #define MASK_AlphaTestEnable 0x00020000 #define MASK_AlphaWriteEnable 0x00040000 #define MASK_ZTestEnable 0x00080000 #define MASK_ZWriteEnable 0x00100000 #define MASK_StencilBufferEnable 0x00200000 #define MASK_StencilTestEnable 0x00400000 #define MASK_StencilWriteEnable 0x00800000 #define MASK_Texture0TransparencyEnable 0x01000000 #define MASK_Texture1TransparencyEnable 0x02000000 #define MASK_TextureAWrapUCorrection 0x04000000 #define MASK_TextureAWrapVCorrection 0x08000000 #define MASK_TextureBWrapUCorrection 0x10000000 #define MASK_TextureBWrapVCorrection 0x20000000 #define MASK_TextureCWrapUCorrection 0x40000000 #define MASK_TextureCWrapVCorrection 0x80000000 /* * REG_3D_TEnable2 - Capability Enable Mask2 (8A04h-8A07h) */ #define MASK_Texture0BlockTextureEnable 0x00000001 #define MASK_Texture1BlockTextureEnable 0x00000002 #define MASK_Texture0AnisotropicEnable 0x00000010 #define MASK_Texture1AnisotropicEnable 0x00000020 #define MASK_TextureMipmapBiasEnable 0x00000040 #define MASK_LinePatternEnable 0x00000100 #define MASK_StippleAlphaEnable 0x00000200 #define MASK_StippleEnable 0x00000400 #define MASK_AntiAliasEnable 0x00000800 #define MASK_ZMaskWriteEnable 0x00001000 #define MASK_StencilMaskWriteEnable 0x00002000 #define MASK_AlphaMaskWriteEnable 0x00004000 #define MASK_ColorMaskWriteEnable 0x00008000 #define MASK_ZCacheClear 0x00010000 #define MASK_ZCacheEnable 0x00020000 #define MASK_StencilCacheClear 0x00040000 #define MASK_StencilCacheEnable 0x00080000 #define MASK_AlphaCacheClear 0x00100000 #define MASK_AlphaCacheEnable 0x00200000 #define MASK_ColorCacheClear 0x00400000 #define MASK_ColorCacheEnable 0x00800000 /* * REG_3D_ZSet -- Define Z Buffer Setting Mask (8A08h-8A0Bh) */ #define MASK_ZBufferPitch 0x00000FFF #define MASK_ZTestMode 0x00070000 #define MASK_ZBufferInSystem 0x00080000 #define MASK_ZBufferFormat 0x01F00000 /* * REG_3D_ZBias -- Define Z Buffer Setting Mask (8A0Ch-8A0Fh) */ #define MASK_ZBias 0xFFFFFFFF /* * REG_3D_ZStWriteMask -- Define Z and Stencil Buffer Mask (8A10h-8A13h) */ #define MASK_ZWriteMask 0x00FFFFFF /* * REG_3D_ZAddress -- Define Z Buffer Base Address(8A14h-8A17h) */ #define MASK_ZAddress 0xFFFFFFFF /* * REG_3D_AlphaSet -- Define Alpha Buffer Setting Mask (8A18h-8A1Bh) */ #define MASK_AlphaBufferPitch 0x000003FF #define MASK_AlphaRefValue 0x00FF0000 #define MASK_AlphaTestMode 0x07000000 #define MASK_AlphaBufferInSystem 0x08000000 #define MASK_AlphaBufferFormat 0x30000000 /* * REG_3D_AlphaAddress -- Define Alpha Buffer Base Address(8A1Ch-8A1Fh) */ #define MASK_AlphaAddress 0xFFFFFFFF /* * REG_3D_DstSet -- Define Destination Buffer Setting Mask (8A20h-8A23h) */ #define MASK_DstBufferPitch 0x00000FFF #define MASK_DstBufferFormat 0x000F0000 #define MASK_DstBufferBitDepth 0x00300000 #define MASK_DstBufferRgbOrder 0x00400000 #define MASK_DstBufferInSystem 0x00800000 #define MASK_Dst7BitFormat 0x007F0000 #define MASK_ROP2 0x0F000000 /* * REG_3D_DstAlphaWriteMask -- Define Destination/Alpha Buffer Write Mask (8A24h-8A27h) */ #define MASK_ColorWriteMask 0x00FFFFFF #define MASK_AlphaWriteMask 0xFF000000 /* * REG_3D_DstAddress -- Define Destination Buffer Base Address(8A1Ch-8A1Fh) */ #define MASK_DstAddress 0xFFFFFFFF /* * REG_3D_LinePattern -- Define Line Pattern (8A2Ch-8A2Fh) */ #define MASK_LinePatternRepeatFactor 0x00007FFF #define MASK_LinePatternLastPixelFlag 0x00008000 #define MASK_LinePattern 0xFFFF0000 /* * REG_3D_FogSet -- Define Fog Mask (8A30h-8A33h) */ #define MASK_FogColor 0x00FFFFFF #define MASK_FogMode 0x07000000 #define MASK_FogZLookup 0x08000000 /* * REG_3D_FogStartEnd -- Define Fog Start End Setting (8A34h-8A37h) */ #define MASK_FogFarDistance 0x0007FFFF /* * REG_3D_FogStartEnd -- Define Fog End Setting (8A38h-8A3Bh) */ #define MASK_FogInvFarDistance 0x0007FFFF #define MASK_FogDensity 0x0003FFFF #define MASK_FogFactor 0xFF000000 #define MASK_StencilMaskValue 0x000000FF #define MASK_StencilReferenceValue 0x0000FF00 #define MASK_StencilTestMode 0x07000000 #define MASK_StencilBufferInSystem 0x08000000 #define MASK_StencilFormat 0x30000000 #define MASK_StencilMode_ALWAYS 0x07000000 #define MASK_StencilBufferPitch 0x00000FFF #define MASK_StencilZPassOp 0x00007000 #define MASK_StencilZFailOp 0x00070000 #define MASK_StencilFailOp 0x00700000 #define MASK_StencilWriteMask 0xFF000000 #define MASK_StencilZPassOp_REPLACE 0x00002000 #define MASK_StencilZFailOp_REPLACE 0x00020000 #define MASK_StencilFailOp_REPLACE 0x00200000 #define MASK_StencilAddress 0xFFFFFFFF #define MASK_SrcBlendMode 0x0000000F #define MASK_DstBlendMode 0x000000F0 #define MASK_DSTBLEND_ZERO 0x00000000 #define MASK_DSTBLEND_ONE 0x00000010 #define MASK_DSTBLEND_SRC_COLOR 0x00000020 #define MASK_DSTBLEND_INV_SRC_COLOR 0x00000030 #define MASK_DSTBLEND_SRC_ALPHA 0x00000040 #define MASK_DSTBLEND_INV_SRC_ALPHA 0x00000050 #define MASK_DSTBLEND_DST_ALPHA 0x00000060 #define MASK_DSTBLEND_INV_DST_ALPHA 0x00000070 #define MASK_DSTBLEND_DST_COLOR 0x00000080 #define MASK_DSTBLEND_INV_DST_COLOR 0x00000090 #define MASK_DSTBLEND_SRC_ALPHA_SAT 0x000000A0 #define MASK_SRCBLEND_ZERO 0x00000000 #define MASK_SRCBLEND_ONE 0x00000001 #define MASK_SRCBLEND_SRC_COLOR 0x00000002 #define MASK_SRCBLEND_INV_SRC_COLOR 0x00000003 #define MASK_SRCBLEND_SRC_ALPHA 0x00000004 #define MASK_SRCBLEND_INV_SRC_ALPHA 0x00000005 #define MASK_SRCBLEND_DST_ALPHA 0x00000006 #define MASK_SRCBLEND_INV_DST_ALPHA 0x00000007 #define MASK_SRCBLEND_DST_COLOR 0x00000008 #define MASK_SRCBLEND_INV_DST_COLOR 0x00000009 #define MASK_SRCBLEND_SRC_ALPHA_SAT 0x0000000A #define MASK_SRCBLEND_BOTH_SRC_ALPHA 0x0000000B #define MASK_SRCBLEND_BOTH_INV_SRC_ALPHA 0x0000000C #define MASK_BottomClip 0x00001FFF #define MASK_TopClip 0x03FFE000 #define MASK_RightClip 0x00001FFF #define MASK_LeftClip 0x03FFE000 #define MASK_BMMemoryInSystem 0x00000080 #define MASK_BMHeight 0x00000F00 #define MASK_BMWidth 0x0000F000 #define MASK_BMFilter 0x00010000 #define MASK_BMMappingMode 0x007E0000 #define MASK_BMFormat 0x07800000 #define MASK_BMTxBumpmap 0x08000000 #define MASK_BMAddress 0xFFFFFFFC #define MASK_BMOffset 0xFF800000 #define MASK_BMScale 0x007FE000 #define MASK_BMPitch 0x00001FFF #define MASK_BMMatrix00 0x000007FF #define MASK_BMMatrix01 0x07FF0000 #define MASK_BMMatrix10 0x000007FF #define MASK_BMMatrix11 0x07FF0000 #define MASK_TextureHeight 0x0000000F #define MASK_TextureWidth 0x000000F0 #define MASK_TextureLevel 0x00000F00 #define MASK_TextureSignYUVFormat 0x00001000 #define MASK_TextureMappingMode 0x00FF0000 #define MASK_TextureWrapU 0x00010000 #define MASK_TextureWrapV 0x00020000 #define MASK_TextureMirrorU 0x00040000 #define MASK_TextureMirrorV 0x00080000 #define MASK_TextureClampU 0x00100000 #define MASK_TextureClampV 0x00200000 #define MASK_TextureBorderU 0x00400000 #define MASK_TextureBorderV 0x00800000 #define MASK_TextureFormat 0xFF000000 #define MASK_TextureBitDepth 0x70000000 #define MASK_TextureRgbOrder 0x80000000 #define MASK_TextureAnisotropyRatio 0x0000000F #define MASK_TextureMipmapLodBias 0x00003FF0 #define MASK_TextureFilterMin 0x0001C000 #define MASK_TextureFilterMag 0x00020000 #define MASK_TextureFilter 0x0003C000 #define MASK_TextureLevelInSystem 0x3FFC0000 #define MASK_TextureLevel0InSystem 0x00040000 #define MASK_TextureBlockLength 0xF0000000 #define MASK_TextureTransparencyColorHighB 0x000000FF #define MASK_TextureTransparencyColorHighG 0x0000FF00 #define MASK_TextureTransparencyColorHighR 0x00FF0000 #define MASK_TextureAlphaTransparencyMode 0x08000000 #define MASK_TextureTransparencyColorLowB 0x000000FF #define MASK_TextureTransparencyColorLowG 0x0000FF00 #define MASK_TextureTransparencyColorLowR 0x00FF0000 #define MASK_TextureBlockHeight 0x07000000 #define MASK_TextureBlockWidth 0x70000000 #define MASK_TextureBorderColorB 0x000000FF #define MASK_TextureBorderColorG 0x0000FF00 #define MASK_TextureBorderColorR 0x00FF0000 #define MASK_TextureBorderColorA 0xFF000000 #define MASK_TexturePitchOdd 0x000003FF #define MASK_TexturePitchEven 0x03FF0000 #define SHIFT_TexturePitchEven 16 #define MASK_TextureRealInSystem 0x00000001 #define MASK_TextureDowngrade 0x00000002 #define OP_3D_POINT_DRAW 0x00000000 #define OP_3D_LINE_DRAW 0x00000001 #define OP_3D_TRIANGLE_DRAW 0x00000002 #define OP_3D_DIRECTION_RIGHT 0x00000000 #define OP_3D_DIRECTION_LEFT 0x00000100 #define OP_3D_DIRECTION_HORIZONTAL 0x00000000 #define OP_3D_DIRECTION_VERTICAL 0x00000100 #define OP_3D_FIRE_TFIRE 0x00000000 #define OP_3D_FIRE_TSARGBa 0x00000100 #define OP_3D_FIRE_TSWa 0x00000200 #define OP_3D_FIRE_TSVAa 0x00000300 #define OP_3D_FIRE_TSVBa 0x00000400 #define OP_3D_FIRE_TSVCa 0x00000500 #define OP_3D_FIRE_TSARGBb 0x00000900 #define OP_3D_FIRE_TSWb 0x00000a00 #define OP_3D_FIRE_TSVAb 0x00000b00 #define OP_3D_FIRE_TSVBb 0x00000c00 #define OP_3D_FIRE_TSVCb 0x00000d00 #define OP_3D_FIRE_TSARGBc 0x00001100 #define OP_3D_FIRE_TSWc 0x00001200 #define OP_3D_FIRE_TSVAc 0x00001300 #define OP_3D_FIRE_TSVBc 0x00001400 #define OP_3D_FIRE_TSVCc 0x00001500 #define OP_3D_Texture0FromA 0x00000000 #define OP_3D_Texture0FromB 0x00100000 #define OP_3D_Texture0FromC 0x00200000 #define OP_3D_Texture1FromA 0x00000000 #define OP_3D_Texture1FromB 0x00040000 #define OP_3D_Texture1FromC 0x00080000 #define OP_3D_TextureBumpFromA 0x00000000 #define OP_3D_TextureBumpFromB 0x00010000 #define OP_3D_TextureBumpFromC 0x00020000 #define SHADE_FLAT_VertexA 0x01000000 #define SHADE_FLAT_VertexB 0x02000000 #define SHADE_FLAT_VertexC 0x03000000 #define SHADE_GOURAUD 0x04000000 #define Z_BUFFER_FORMAT_Z16 0x00000000 #define Z_BUFFER_FORMAT_Z16_INT 0x00100000 #define Z_BUFFER_FORMAT_S1Z15 0x00400000 #define Z_BUFFER_FORMAT_S1Z15_INT 0x00500000 #define Z_BUFFER_FORMAT_Z32 0x00800000 #define Z_BUFFER_FORMAT_S1Z31 0x00C00000 #define Z_BUFFER_FORMAT_S2Z30 0x00D00000 #define Z_BUFFER_FORMAT_S4Z28 0x00E00000 #define Z_BUFFER_FORMAT_S8Z24 0x00F00000 #define Z_BUFFER_FORMAT_FZ30 0x01800000 #define Z_BUFFER_FORMAT_FS1Z30 0x01C00000 #define Z_BUFFER_FORMAT_FS2Z30 0x01D00000 #define MASK_Z_BUFFER_FORMAT 0x01F00000 #define ALPHA_BUFFER_FORMAT_1 0x00000000 #define ALPHA_BUFFER_FORMAT_2 0x10000000 #define ALPHA_BUFFER_FORMAT_4 0x20000000 #define ALPHA_BUFFER_FORMAT_8 0x30000000 #define DST_FORMAT_RGB_555 0x00100000 #define DST_FORMAT_RGB_565 0x00110000 #define DST_FORMAT_ARGB_1555 0x00120000 #define DST_FORMAT_ARGB_4444 0x00130000 #define DST_FORMAT_ARGB_1888 0x00300000 #define DST_FORMAT_ARGB_2888 0x00310000 #define DST_FORMAT_ARGB_4888 0x00320000 #define DST_FORMAT_ARGB_8888 0x00330000 #define DST_FORMAT_ARGB_0888 0x00340000 #define DST_FORMAT_BGR_555 0x00500000 #define DST_FORMAT_BGR_565 0x00510000 #define DST_FORMAT_ABGR_1555 0x00520000 #define DST_FORMAT_ABGR_4444 0x00530000 #define DST_FORMAT_ABGR_1888 0x00700000 #define DST_FORMAT_ABGR_2888 0x00710000 #define DST_FORMAT_ABGR_4888 0x00720000 #define DST_FORMAT_ABGR_8888 0x00730000 #define DST_FORMAT_ABGR_0888 0x00740000 #define MASK_TEXTURE_FORMAT 0xFF000000 #define TEXEL_INDEX1 0x00000000 #define TEXEL_INDEX2 0x01000000 #define TEXEL_INDEX4 0x02000000 #define TEXEL_INDEX8 0x03000000 #define TEXEL_INDEX1WithAlpha 0x04000000 #define TEXEL_INDEX2WithAlpha 0x05000000 #define TEXEL_INDEX4WithAlpha 0x06000000 #define TEXEL_INDEX8WithAlpha 0x07000000 #define TEXEL_I1 0x10000000 #define TEXEL_I2 0x11000000 #define TEXEL_I4 0x12000000 #define TEXEL_I8 0x13000000 #define TEXEL_DXT1 0x19000000 #define TEXEL_DXT2 0x1A000000 #define TEXEL_DXT3 0x1B000000 #define TEXEL_YUV422 0x20000000 #define TEXEL_YVU422 0x21000000 #define TEXEL_UVY422 0x22000000 #define TEXEL_VUY422 0x23000000 #define TEXEL_YUV411 0x24000000 #define TEXEL_L1 0x30000000 #define TEXEL_L2 0x31000000 #define TEXEL_L4 0x32000000 #define TEXEL_L8 0x33000000 #define TEXEL_AL11 0x34000000 #define TEXEL_AL44 0x35000000 #define TEXEL_AL26 0x37000000 #define TEXEL_AL88 0x38000000 #define TEXEL_A1 0x40000000 #define TEXEL_A2 0x41000000 #define TEXEL_A4 0x42000000 #define TEXEL_A8 0x43000000 #define TEXEL_RGB_332_8 0x50000000 #define TEXEL_RGB_233_8 0x51000000 #define TEXEL_RGB_232_8 0x52000000 #define TEXEL_ARGB_1232_8 0x53000000 #define TEXEL_ARGB_2222_8 0x54000000 #define TEXEL_RGB_555_16 0x60000000 #define TEXEL_RGB_565_16 0x61000000 #define TEXEL_ARGB_1555_16 0x62000000 #define TEXEL_ARGB_4444_16 0x63000000 #define TEXEL_ARGB_1888_32 0x70000000 #define TEXEL_ARGB_2888_32 0x71000000 #define TEXEL_ARGB_4888_32 0x72000000 #define TEXEL_ARGB_8888_32 0x73000000 #define TEXEL_ARGB_0888_32 0x74000000 #define TEXEL_BGR_332_8 0xD0000000 #define TEXEL_BGR_233_8 0xD1000000 #define TEXEL_BGR_232_8 0xD2000000 #define TEXEL_ABGR_1232_8 0xD3000000 #define TEXEL_ABGR_2222_8 0xD4000000 #define TEXEL_BGR_555_16 0xE0000000 #define TEXEL_BGR_565_16 0xE1000000 #define TEXEL_ABGR_1555_16 0xE2000000 #define TEXEL_ABGR_4444_16 0xE3000000 #define TEXEL_ABGR_1888_32 0xF0000000 #define TEXEL_ABGR_2888_32 0xF1000000 #define TEXEL_ABGR_4888_32 0xF2000000 #define TEXEL_ABGR_8888_32 0xF3000000 #define TEXEL_ABGR_0888_32 0xF4000000 #define TEXEL_VU88 0x00000000 #define TEXEL_LVU655 0x00800000 #define TEXEL_LVU888 0x01000000 #define TEXEL_UV88 0x02000000 #define TEXEL_LUV655 0x02800000 #define TEXEL_LUV888 0x03000000 #define FOGMODE_CHEAP 0x04000000 #define FOGMODE_LINEAR 0x05000000 #define FOGMODE_EXP 0x06000000 #define FOGMODE_EXP2 0x07000000 #define Z_16 0x00000000 #define S_1_Z_15 0x00400000 #define Z_32 0x00800000 #define S_1_Z_31 0x00c00000 #define S_2_Z_30 0x00d00000 #define S_4_Z_28 0x00e00000 #define S_8_Z_24 0x00f00000 #define S_1 0x00000000 #define S_2 0x10000000 #define S_4 0x20000000 #define S_8 0x30000000 #define TEXTURE_FILTER_NEAREST 0x00000000 #define TEXTURE_FILTER_LINEAR 0x00004000 #define TEXTURE_FILTER_NEAREST_MIP_NEAREST 0x00008000 #define TEXTURE_FILTER_NEAREST_MIP_LINEAR 0x00010000 #define TEXTURE_FILTER_LINEAR_MIP_NEAREST 0x0000c000 #define TEXTURE_FILTER_LINEAR_MIP_LINEAR 0x00014000 #define A_REPLACE_RGB_STAGE0 0xa1485000 #define A_REPLACE_A_STAGE0 0xc3230000 #define L_REPLACE__RGB_STAGE0 0xc1485000 #define L_REPLACE__A_STAGE0 0x63230000 #define LA_REPLACE__RGB_STAGE0 0xc1485000 #define LA_REPLACE__A_STAGE0 0xc3230000 #define I_REPLACE__RGB_STAGE0 0xc1485000 #define I_REPLACE__A_STAGE0 0xc3230000 #define RGB_REPLACE__RGB_STAGE0 0xc1485000 #define RGB_REPLACE__A_STAGE0 0x63230000 #define RGBA_REPLACE__RGB_STAGE0 0xc1485000 #define RGBA_REPLACE__A_STAGE0 0xc3230000 #define A_MODULATE_RGB_STAGE0 0xa1485000 #define A_MODULATE_A_STAGE0 0x63c30000 #define L_MODULATE__RGB_STAGE0 0xa1705000 #define L_MODULATE__A_STAGE0 0x63230000 #define LA_MODULATE__RGB_STAGE0 0xa1705000 #define LA_MODULATE__A_STAGE0 0x63c30000 #define I_MODULATE__RGB_STAGE0 0xa1705000 #define I_MODULATE__A_STAGE0 0x63c30000 #define RGB_MODULATE__RGB_STAGE0 0xa1705000 #define RGB_MODULATE__A_STAGE0 0x63230000 #define RGBA_MODULATE__RGB_STAGE0 0xa1705000 #define RGBA_MODULATE__A_STAGE0 0x63c30000 #define RGB_DECAL__RGB_STAGE0 0xc1485000 #define RGB_DECAL__A_STAGE0 0x63230000 #define RGBA_DECAL__RGB_STAGE0 0xc534c001 #define RGBA_DECAL__A_STAGE0 0x63230000 #define A_BLEND_RGB_STAGE0 0xa1485000 #define A_BLEND_A_STAGE0 0x63c30000 #define L_BLEND__RGB_STAGE0 0x4530c001 #define L_BLEND__A_STAGE0 0x63230000 #define LA_BLEND__RGB_STAGE0 0x4530c001 #define LA_BLEND__A_STAGE0 0x63c30000 #define I_BLEND__RGB_STAGE0 0x4530c001 #define I_BLEND__A_STAGE0 0x46c60001 #define RGB_BLEND__RGB_STAGE0 0x4530c001 #define RGB_BLEND__A_STAGE0 0x63230000 #define RGBA_BLEND__RGB_STAGE0 0x4530c001 #define RGBA_BLEND__A_STAGE0 0x63c30000 #define RGB_STAGE1 0xa1485000 #define A_STAGE1 0xa3230000 #define A_REPLACE_RGB_STAGE1 0xa1485000 #define A_REPLACE_A_STAGE1 0xe3230000 #define L_REPLACE__RGB_STAGE1 0xe1485000 #define L_REPLACE__A_STAGE1 0xa3230000 #define LA_REPLACE__RGB_STAGE1 0xe1485000 #define LA_REPLACE__A_STAGE1 0xe3230000 #define I_REPLACE__RGB_STAGE1 0xe1485000 #define I_REPLACE__A_STAGE1 0xe3230000 #define RGB_REPLACE__RGB_STAGE1 0xe1485000 #define RGB_REPLACE__A_STAGE1 0xa3230000 #define RGBA_REPLACE__RGB_STAGE1 0xe1485000 #define RGBA_REPLACE__A_STAGE1 0xe3230000 #define A_MODULATE_RGB_STAGE1 0xa1485000 #define A_MODULATE_A_STAGE1 0xa3e30000 #define L_MODULATE__RGB_STAGE1 0xa1785000 #define L_MODULATE__A_STAGE1 0xa3230000 #define LA_MODULATE__RGB_STAGE1 0xa1785000 #define LA_MODULATE__A_STAGE1 0xa3e30000 #define I_MODULATE__RGB_STAGE1 0xa1785000 #define I_MODULATE__A_STAGE1 0xa3e30000 #define RGB_MODULATE__RGB_STAGE1 0xa1785000 #define RGB_MODULATE__A_STAGE1 0xa3230000 #define RGBA_MODULATE__RGB_STAGE1 0xa1785000 #define RGBA_MODULATE__A_STAGE1 0xa3e30000 #define RGB_DECAL__RGB_STAGE1 0xe1485000 #define RGB_DECAL__A_STAGE1 0xa3230000 #define RGBA_DECAL__RGB_STAGE1 0xe5394001 #define RGBA_DECAL__A_STAGE1 0xa3230000 #define A_BLEND_RGB_STAGE1 0xa1485000 #define A_BLEND_A_STAGE1 0xa3e30000 #define L_BLEND__RGB_STAGE1 0x45394001 #define L_BLEND__A_STAGE1 0xa3230000 #define LA_BLEND__RGB_STAGE1 0x45394001 #define LA_BLEND__A_STAGE1 0xa3e30000 #define I_BLEND__RGB_STAGE1 0x45394001 #define I_BLEND__A_STAGE1 0x4aea0001 #define RGB_BLEND__RGB_STAGE1 0x45394001 #define RGB_BLEND__A_STAGE1 0xa3230000 #define RGBA_BLEND__RGB_STAGE1 0x45394001 #define RGBA_BLEND__A_STAGE1 0xa3e30000 #define INIT_6327_CapsEnable 0x00000080 #define INIT_6327_CapsEnable2 0x00000000 #define INIT_6327_ZSet 0x00030000 #define INIT_6327_ZMask 0xffffffff #define INIT_6327_AlphaSet 0x07000000 #define INIT_6327_DstSet 0x0C000000 #define INIT_6327_DstMask 0xffffffff #define INIT_6327_FogSet 0x04000000 #define INIT_6327_BlendMode 0x00000001 #define INIT_6327_TextureSet 0x00030000 #define INIT_6327_TextureMip 0x00000000 #define INIT_6327_TextureColorBlend0 0xC1485000 #define INIT_6327_TextureAlphaBlend0 0x333A0000 #define INIT_6327_Texture1Set 0x00030000 #define INIT_6327_Texture1Set2 0x00000000 #define INIT_6327_TextureColorBlend1 0x294B4000 #define INIT_6327_TextureAlphaBlend1 0x333A0000 #define INIT_6327_ParsingSet 0x00000060 #define SiS_Z_COMP_NEVER 0x00000000 #define SiS_Z_COMP_S_LT_B 0x00010000 #define SiS_Z_COMP_S_EQ_B 0x00020000 #define SiS_Z_COMP_S_LE_B 0x00030000 #define SiS_Z_COMP_S_GT_B 0x00040000 #define SiS_Z_COMP_S_NE_B 0x00050000 #define SiS_Z_COMP_S_GE_B 0x00060000 #define SiS_Z_COMP_ALWAYS 0x00070000 #define SiS_ALPHA_NEVER 0x00000000 #define SiS_ALPHA_LESS 0x01000000 #define SiS_ALPHA_EQUAL 0x02000000 #define SiS_ALPHA_LEQUAL 0x03000000 #define SiS_ALPHA_GREATER 0x04000000 #define SiS_ALPHA_NOTEQUAL 0x05000000 #define SiS_ALPHA_GEQUAL 0x06000000 #define SiS_ALPHA_ALWAYS 0x07000000 #define SiS_STENCIL_NEVER 0x00000000 #define SiS_STENCIL_LESS 0x01000000 #define SiS_STENCIL_EQUAL 0x02000000 #define SiS_STENCIL_LEQUAL 0x03000000 #define SiS_STENCIL_GREATER 0x04000000 #define SiS_STENCIL_NOTEQUAL 0x05000000 #define SiS_STENCIL_GEQUAL 0x06000000 #define SiS_STENCIL_ALWAYS 0x07000000 #define SiS_SFAIL_KEEP 0x00000000 #define SiS_SFAIL_ZERO 0x00100000 #define SiS_SFAIL_REPLACE 0x00200000 #define SiS_SFAIL_INVERT 0x00500000 #define SiS_SFAIL_INCR 0x00600000 #define SiS_SFAIL_DECR 0x00700000 #define SiS_SPASS_ZFAIL_KEEP 0x00000000 #define SiS_SPASS_ZFAIL_ZERO 0x00010000 #define SiS_SPASS_ZFAIL_REPLACE 0x00020000 #define SiS_SPASS_ZFAIL_INVERT 0x00050000 #define SiS_SPASS_ZFAIL_INCR 0x00060000 #define SiS_SPASS_ZFAIL_DECR 0x00070000 #define SiS_SPASS_ZPASS_KEEP 0x00000000 #define SiS_SPASS_ZPASS_ZERO 0x00001000 #define SiS_SPASS_ZPASS_REPLACE 0x00002000 #define SiS_SPASS_ZPASS_INVERT 0x00005000 #define SiS_SPASS_ZPASS_INCR 0x00006000 #define SiS_SPASS_ZPASS_DECR 0x00007000 #define SiS_D_ZERO 0x00000000 #define SiS_D_ONE 0x00000010 #define SiS_D_SRC_COLOR 0x00000020 #define SiS_D_ONE_MINUS_SRC_COLOR 0x00000030 #define SiS_D_SRC_ALPHA 0x00000040 #define SiS_D_ONE_MINUS_SRC_ALPHA 0x00000050 #define SiS_D_DST_ALPHA 0x00000060 #define SiS_D_ONE_MINUS_DST_ALPHA 0x00000070 #define SiS_S_ZERO 0x00000000 #define SiS_S_ONE 0x00000001 #define SiS_S_SRC_ALPHA 0x00000004 #define SiS_S_ONE_MINUS_SRC_ALPHA 0x00000005 #define SiS_S_DST_ALPHA 0x00000006 #define SiS_S_ONE_MINUS_DST_ALPHA 0x00000007 #define SiS_S_DST_COLOR 0x00000008 #define SiS_S_ONE_MINUS_DST_COLOR 0x00000009 #define SiS_S_SRC_ALPHA_SATURATE 0x0000000a /* Logic Op */ #define LOP_CLEAR 0x00000000 #define LOP_NOR 0x01000000 #define LOP_AND_INVERTED 0x02000000 #define LOP_COPY_INVERTED 0x03000000 #define LOP_AND_REVERSE 0x04000000 #define LOP_INVERT 0x05000000 #define LOP_XOR 0x06000000 #define LOP_NAND 0x07000000 #define LOP_AND 0x08000000 #define LOP_EQUIV 0x09000000 #define LOP_NOOP 0x0a000000 #define LOP_OR_INVERTED 0x0b000000 #define LOP_COPY 0x0c000000 #define LOP_OR_REVERSE 0x0d000000 #define LOP_OR 0x0e000000 #define LOP_SET 0x0f000000 #define SiSWait3DCmdQueue(wLen)\ do{ \ while ( CmdQueLen < (int)(wLen)) { \ CmdQueLen = (SIS_MMIO_IN16(pSiS->IOBase, 0x8240) & pSiS->CmdQueLenMask) - pSiS->CmdQueLenFix; \ } \ CmdQueLen -= (int)(wLen); \ } while(0)