📄 s3v_regs.h
字号:
/* * Author: Max Lingua <sunmax@libero.it> */#ifndef _S3V_REG_H#define _S3V_REG_H#define S3V_REGS_NUM 256/************ * DMA REGS * ************/#define S3V_DMA_ID 0#define S3V_DMA_REG 0x8590#define S3V_DMA_WRITEP_ID 1#define S3V_DMA_WRITEP_REG 0x8594#define S3V_DMA_READP_ID 2#define S3V_DMA_READP_REG 0x8598#define S3V_DMA_ENABLE_ID 3#define S3V_DMA_ENABLE_REG 0x859C#define S3V_DMA_UPDATE_ID 4#define S3V_DMA_UPDATE_REG 0x10000/*************** * STATUS REGS * ***************/#define S3V_STAT_ID 10#define S3V_STAT_REG 0x8504#define S3V_STAT_VSYNC_ID 11#define S3V_STAT_VSYNC_REG 0x8505#define S3V_STAT_3D_DONE_ID 12#define S3V_STAT_3D_DONE_REG 0x8506#define S3V_STAT_FIFO_OVER_ID 13#define S3V_STAT_FIFO_OVER_REG 0x8508#define S3V_STAT_FIFO_EMPTY_ID 14#define S3V_STAT_FIFO_EMPTY_REG 0x850C#define S3V_STAT_HDMA_DONE_ID 15#define S3V_STAT_HDMA_DONE_REG 0x8514#define S3V_STAT_CDMA_DONE_ID 16#define S3V_STAT_CDMA_DONE_REG 0x8524#define S3V_STAT_3D_FIFO_EMPTY_ID 17#define S3V_STAT_3D_FIFO_EMPTY_REG 0x8544#define S3V_STAT_LPB_ID 18#define S3V_STAT_LPB_REG 0x8584#define S3V_STAT_3D_BUSY_ID 19#define S3V_STAT_3D_BUSY_REG 0x8704/*********** * 2D REGS * ***********/#define S3V_BITBLT_ID 30#define S3V_BITBLT_REG 0xA400#define S3V_BITBLT_SRC_BASE_ID 31#define S3V_BITBLT_SRC_BASE_REG 0xA4D4#define S3V_BITBLT_DEST_BASE_ID 32#define S3V_BITBLT_DEST_BASE_REG 0xA4D8#define S3V_BITBLT_CLIP_L_R_ID 33#define S3V_BITBLT_CLIP_L_R_REG 0xA4DC#define S3V_BITBLT_CLIP_T_B_ID 34#define S3V_BITBLT_CLIP_T_B_REG 0xA4E0#define S3V_BITBLT_DEST_SRC_STRIDE_ID 35#define S3V_BITBLT_DEST_SRC_STRIDE_REG 0xA4E4#define S3V_BITBLT_MONO_PAT0_ID 36#define S3V_BITBLT_MONO_PAT0_REG 0xA4E8#define S3V_BITBLT_MONO_PAT1_ID 37#define S3V_BITBLT_MONO_PAT1_REG 0xA4EC#define S3V_BITBLT_PAT_BG_COLOR_ID 38#define S3V_BITBLT_PAT_BG_COLOR_REG 0xA4F0#define S3V_BITBLT_PAT_FG_COLOR_ID 39#define S3V_BITBLT_PAT_FG_COLOR_REG 0xA4F4#define S3V_BITBLT_CMDSET_ID 40#define S3V_BITBLT_CMDSET_REG 0xA500#define S3V_BITBLT_WIDTH_HEIGHT_ID 41#define S3V_BITBLT_WIDTH_HEIGHT_REG 0xA504#define S3V_BITBLT_SRC_X_Y_ID 42#define S3V_BITBLT_SRC_X_Y_REG 0xA508#define S3V_BITBLT_DEST_X_Y_ID 43#define S3V_BITBLT_DEST_X_Y_REG 0xA50C#define S3V_2DLINE_ID 44#define S3V_2DLINE_REG 0xA800#define S3V_2DPOLY_ID 45#define S3V_2DPOLY_REG 0xAC00/*************** * 3DLINE REGS * ***************//* base regs */#define S3V_3DLINE_ID 50#define S3V_3DLINE_REG 0xB000#define S3V_3DLINE_Z_BASE_ID 51#define S3V_3DLINE_Z_BASE_REG 0xB0D4#define S3V_3DLINE_SRC_BASE_ID 52 /* it is the same reg */#define S3V_3DLINE_SRC_BASE_REG 0xB0D4#define S3V_3DLINE_DEST_BASE_ID 53#define S3V_3DLINE_DEST_BASE_REG 0xB0D8#define S3V_3DLINE_CLIP_L_R_ID 54#define S3V_3DLINE_CLIP_L_R_REG 0xB0DC#define S3V_3DLINE_CLIP_T_B_ID 55#define S3V_3DLINE_CLIP_T_B_REG 0xB0E0#define S3V_3DLINE_DEST_SRC_STRIDE_ID 56#define S3V_3DLINE_DEST_SRC_STRIDE_REG 0xB0E4#define S3V_3DLINE_Z_STRIDE_ID 57#define S3V_3DLINE_Z_STRIDE_REG 0xB0E8#define S3V_3DLINE_TEX_BASE_ID 58#define S3V_3DLINE_TEX_BASE_REG 0xB0EC#define S3V_3DLINE_TEX_B_COLOR_ID 59#define S3V_3DLINE_TEX_B_COLOR_REG 0xB0F0#define S3V_3DLINE_FOG_COLOR_ID 60#define S3V_3DLINE_FOG_COLOR_REG 0xB0F4#define S3V_3DLINE_COLOR0_ID 61#define S3V_3DLINE_COLOR0_REG 0xB0F8#define S3V_3DLINE_COLOR1_ID 62#define S3V_3DLINE_COLOR1_REG 0xB0FC#define S3V_3DLINE_CMDSET_ID 63#define S3V_3DLINE_CMDSET_REG 0xB100 /* special *//* tex regs *//* FIXME: shouldn't it be a 1D tex for lines? */#define S3V_3DLINE_BASEV_ID 64#define S3V_3DLINE_BASEV_REG 0xB104 #define S3V_3DLINE_BASEU_ID 65#define S3V_3DLINE_BASEU_REG 0xB108#define S3V_3DLINE_WXD_ID 66#define S3V_3DLINE_WXD_REG 0xB10C#define S3V_3DLINE_WYD_ID 67#define S3V_3DLINE_WYD_REG 0xB110#define S3V_3DLINE_WSTART_ID 68#define S3V_3DLINE_WSTART_REG 0xB114#define S3V_3DLINE_DXD_ID 69#define S3V_3DLINE_DXD_REG 0xB118#define S3V_3DLINE_VXD_ID 70#define S3V_3DLINE_VXD_REG 0xB11C#define S3V_3DLINE_UXD_ID 71#define S3V_3DLINE_UXD_REG 0xB120#define S3V_3DLINE_DYD_ID 72#define S3V_3DLINE_DYD_REG 0xB124#define S3V_3DLINE_VYD_ID 73#define S3V_3DLINE_VYD_REG 0xB128#define S3V_3DLINE_UYD_ID 74#define S3V_3DLINE_UYD_REG 0xB12C#define S3V_3DLINE_DSTART_ID 75#define S3V_3DLINE_DSTART_REG 0xB130#define S3V_3DLINE_VSTART_ID 76#define S3V_3DLINE_VSTART_REG 0xB134#define S3V_3DLINE_USTART_ID 77#define S3V_3DLINE_USTART_REG 0xB138/* gourad regs */#define S3V_3DLINE_GBD_ID 78#define S3V_3DLINE_GBD_REG 0xB144#define S3V_3DLINE_ARD_ID 79#define S3V_3DLINE_ARD_REG 0xB148#define S3V_3DLINE_GS_BS_ID 80#define S3V_3DLINE_GS_BS_REG 0xB14C#define S3V_3DLINE_AS_RS_ID 81#define S3V_3DLINE_AS_RS_REG 0xB150/* vertex regs */#define S3V_3DLINE_DZ_ID 82#define S3V_3DLINE_DZ_REG 0xB158#define S3V_3DLINE_ZSTART_ID 83#define S3V_3DLINE_ZSTART_REG 0xB15C#define S3V_3DLINE_XEND0_END1_ID 84#define S3V_3DLINE_XEND0_END1_REG 0xB16C#define S3V_3DLINE_DX_ID 85#define S3V_3DLINE_DX_REG 0xB170#define S3V_3DLINE_XSTART_ID 86#define S3V_3DLINE_XSTART_REG 0xB174#define S3V_3DLINE_YSTART_ID 87#define S3V_3DLINE_YSTART_REG 0xB178#define S3V_3DLINE_YCNT_ID 88#define S3V_3DLINE_YCNT_REG 0xB17C/************** * 3DTRI REGS * **************//* base regs */#define S3V_3DTRI_ID 100#define S3V_3DTRI_REG 0xB400#define S3V_3DTRI_Z_BASE_ID 101#define S3V_3DTRI_Z_BASE_REG 0xB4D4#define S3V_3DTRI_SRC_BASE_ID 102 /* it is the same reg */#define S3V_3DTRI_SRC_BASE_REG 0xB4D4#define S3V_3DTRI_DEST_BASE_ID 103#define S3V_3DTRI_DEST_BASE_REG 0xB4D8#define S3V_3DTRI_CLIP_L_R_ID 104#define S3V_3DTRI_CLIP_L_R_REG 0xB4DC#define S3V_3DTRI_CLIP_T_B_ID 105#define S3V_3DTRI_CLIP_T_B_REG 0xB4E0#define S3V_3DTRI_DEST_SRC_STRIDE_ID 106#define S3V_3DTRI_DEST_SRC_STRIDE_REG 0xB4E4#define S3V_3DTRI_Z_STRIDE_ID 107#define S3V_3DTRI_Z_STRIDE_REG 0xB4E8#define S3V_3DTRI_TEX_BASE_ID 108#define S3V_3DTRI_TEX_BASE_REG 0xB4EC#define S3V_3DTRI_TEX_B_COLOR_ID 109#define S3V_3DTRI_TEX_B_COLOR_REG 0xB4F0#define S3V_3DTRI_FOG_COLOR_ID 110#define S3V_3DTRI_FOG_COLOR_REG 0xB4F4#define S3V_3DTRI_COLOR0_ID 111#define S3V_3DTRI_COLOR0_REG 0xB4F8#define S3V_3DTRI_COLOR1_ID 112#define S3V_3DTRI_COLOR1_REG 0xB4FC#define S3V_3DTRI_CMDSET_ID 113 /* special */#define S3V_3DTRI_CMDSET_REG 0xB500/* tex regs */#define S3V_3DTRI_BASEV_ID 114#define S3V_3DTRI_BASEV_REG 0xB504#define S3V_3DTRI_BASEU_ID 115#define S3V_3DTRI_BASEU_REG 0xB508#define S3V_3DTRI_WXD_ID 116#define S3V_3DTRI_WXD_REG 0xB50C#define S3V_3DTRI_WYD_ID 117#define S3V_3DTRI_WYD_REG 0xB510#define S3V_3DTRI_WSTART_ID 118#define S3V_3DTRI_WSTART_REG 0xB514#define S3V_3DTRI_DXD_ID 119#define S3V_3DTRI_DXD_REG 0xB518#define S3V_3DTRI_VXD_ID 120#define S3V_3DTRI_VXD_REG 0xB51C#define S3V_3DTRI_UXD_ID 121#define S3V_3DTRI_UXD_REG 0xB520#define S3V_3DTRI_DYD_ID 122#define S3V_3DTRI_DYD_REG 0xB524#define S3V_3DTRI_VYD_ID 123#define S3V_3DTRI_VYD_REG 0xB528#define S3V_3DTRI_UYD_ID 124#define S3V_3DTRI_UYD_REG 0xB52C#define S3V_3DTRI_DSTART_ID 125#define S3V_3DTRI_DSTART_REG 0xB530#define S3V_3DTRI_VSTART_ID 126#define S3V_3DTRI_VSTART_REG 0xB534#define S3V_3DTRI_USTART_ID 127#define S3V_3DTRI_USTART_REG 0xB538/* gourad regs */#define S3V_3DTRI_GBX_ID 128#define S3V_3DTRI_GBX_REG 0xB53C#define S3V_3DTRI_ARX_ID 129#define S3V_3DTRI_ARX_REG 0xB540#define S3V_3DTRI_GBY_ID 130#define S3V_3DTRI_GBY_REG 0xB544#define S3V_3DTRI_ARY_ID 131#define S3V_3DTRI_ARY_REG 0xB548#define S3V_3DTRI_GS_BS_ID 132#define S3V_3DTRI_GS_BS_REG 0xB54C#define S3V_3DTRI_AS_RS_ID 133#define S3V_3DTRI_AS_RS_REG 0xB550/* vertex regs */#define S3V_3DTRI_ZXD_ID 134#define S3V_3DTRI_ZXD_REG 0xB554#define S3V_3DTRI_ZYD_ID 135#define S3V_3DTRI_ZYD_REG 0xB558#define S3V_3DTRI_ZSTART_ID 136#define S3V_3DTRI_ZSTART_REG 0xB55C#define S3V_3DTRI_TXDELTA12_ID 137#define S3V_3DTRI_TXDELTA12_REG 0xB560#define S3V_3DTRI_TXEND12_ID 138#define S3V_3DTRI_TXEND12_REG 0xB564#define S3V_3DTRI_TXDELTA01_ID 139#define S3V_3DTRI_TXDELTA01_REG 0xB568#define S3V_3DTRI_TXEND01_ID 140#define S3V_3DTRI_TXEND01_REG 0xB56C#define S3V_3DTRI_TXDELTA02_ID 141#define S3V_3DTRI_TXDELTA02_REG 0xB570#define S3V_3DTRI_TXSTART02_ID 142#define S3V_3DTRI_TXSTART02_REG 0xB574#define S3V_3DTRI_TYS_ID 143#define S3V_3DTRI_TYS_REG 0xB578#define S3V_3DTRI_TY01_Y12_ID 144#define S3V_3DTRI_TY01_Y12_REG 0xB57C/* COMMANDS (to 0xB100 [lines] or 0xB500 [tris]) *//* Auto execute */#define AUTO_EXEC_MASK 0x00000001#define AUTO_EXEC_OFF (0x0)#define AUTO_EXEC_ON (0x1)/* HW clipping */#define HW_CLIP_MASK 0x00000002#define HW_CLIP_OFF (0x0 << 1)#define HW_CLIP_ON (0x1 << 1)/* Destination color */#define DEST_COL_MASK 0x0000001c#define DEST_COL_PAL (0x0 << 2) /* 8 bpp - palettized */#define DEST_COL_1555 (0x1 << 2) /* 16 bpp - ZRGB */#define DEST_COL_888 (0x2 << 2) /* 24 bpp - RGB *//* Texture color */#define TEX_COL_MASK 0x000000e0#define TEX_COL_ARGB8888 (0x0 << 5) /* 32 bpp - ARGB */#define TEX_COL_ARGB4444 (0x1 << 5) /* 16 bpp - ARGB */#define TEX_COL_ARGB1555 (0x2 << 5) /* 16 bpp - ARGB */#define TEX_COL_ALPHA4 (0x3 << 5) /* 8 bpp - ALPHA4 */#define TEX_COL_BLEND4_LOW (0x4 << 5) /* 4 bpp - BLEND4 low nibble */#define TEX_COL_BLEND4_HIGH (0x5 << 5) /* 4 bpp - BLEND4 high nibble */#define TEX_COL_PAL (0x6 << 5) /* 8 bpp - palettized */#define TEX_COL_YUV (0x7 << 5) /* 16 bpp - YUV *//* Mipmap level */#define MIP_MASK 0x00000f00#define MIPMAP_LEVEL(s) (s << 8) /* 8 -> 11 bits *//* Texture filtering */#define TEX_FILTER_MASK 0x00007000#define MIP_NEAREST (0x0 << 12)#define LINEAR_MIP_NEAREST (0x1 << 12)#define MIP_LINEAR (0x2 << 12)#define LINEAR_MIP_LINEAR (0x3 << 12)#define NEAREST (0x4 << 12)#define FAST_BILINEAR (0x5 << 12)#define LINEAR (0x6 << 12)/* Texture blending */#define TEX_BLEND_MAKS 0x00018000#define TEX_REFLECT (0x0 << 15)#define TEX_MODULATE (0x1 << 15)#define TEX_DECAL (0x2 << 15)/* Fog */#define FOG_MASK 0x00020000#define FOG_OFF (0x0 << 17)#define FOG_ON (0x1 << 17)/* Alpha blending */#define ALPHA_BLEND_MASK 0x000c0000#define ALPHA_OFF (0x0 << 18) | (0x0 << 19)#define ALPHA_TEX (0x2 << 18)#define ALPHA_SRC (0x3 << 18)/* Depth compare mode */#define Z_MODE_MASK 0x00700000#define Z_NEVER (0x0 << 20)#define Z_GREATER (0x1 << 20)#define Z_EQUAL (0x2 << 20)#define Z_GEQUAL (0x3 << 20)#define Z_LESS (0x4 << 20)#define Z_NOTEQUAL (0x5 << 20)#define Z_LEQUAL (0x6 << 20) #define Z_ALWAYS (0x7 << 20)/* Depth update */#define Z_UPDATE_MASK 0x00800000#define Z_UPDATE_OFF (0x0 << 23) /* disable z update */#define Z_UPDATE_ON (0x1 << 23)/* Depth buffering mode */#define Z_BUFFER_MASK 0x03000000#define Z_BUFFER (0x0 << 24) | (0x0 << 25)#define Z_MUX_BUF (0x1 << 24) | (0x0 << 25)#define Z_MUX_DRAW (0x2 << 24)#define Z_OFF (0x3 << 24) /* no z buffering *//* Texture wrapping */#define TEX_WRAP_MASK 0x04000000#define TEX_WRAP_OFF (0x0 << 26)#define TEX_WRAP_ON (0x1 << 26)/* 3d command */#define DO_MASK 0x78000000#define DO_GOURAUD_TRI (0x0 << 27)#define DO_TEX_LIT_TRI_OLD (0x1 << 27) #define DO_TEX_UNLIT_TRI_OLD (0x2 << 27)#define DO_TEX_LIT_TRI (0x5 << 27)#define DO_TEX_UNLIT_TRI (0x6 << 27)#define DO_3D_LINE (0x8 << 27)#define DO_NOP (0xf << 27) /* turn on autoexec *//* status */#define CMD_MASK 0x80000000#define CMD_2D (0x0 << 31) /* execute a 2d cmd */#define CMD_3D (0x1 << 31) /* execute a 3d cmd *//* global masks */#define TEX_MASK ( TEX_COL_MASK | TEX_WRAP_MASK | MIP_MASK \ | TEX_FILTER_MASK | TEX_BLEND_MAKS \ | TEX_WRAP_MASK )#define Z_MASK ( Z_MODE_MASK | Z_UPDATE_MASK | Z_BUFFER_MASK )#endif /* _S3V_REG_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -