X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=source%2Fmupen64plus-video-arachnoid%2Fsrc%2FGBI%2FGBIDefs.h;fp=source%2Fmupen64plus-video-arachnoid%2Fsrc%2FGBI%2FGBIDefs.h;h=1d9fe9af4660bd355dc74d7447a5f9d9eec904ae;hb=22726e4d55be26faa48b57b22689cbedde27ae44;hp=0000000000000000000000000000000000000000;hpb=fc5d46b49a19d41f9f2da5a9336daec452900475;p=mupen64plus-pandora.git diff --git a/source/mupen64plus-video-arachnoid/src/GBI/GBIDefs.h b/source/mupen64plus-video-arachnoid/src/GBI/GBIDefs.h new file mode 100755 index 0000000..1d9fe9a --- /dev/null +++ b/source/mupen64plus-video-arachnoid/src/GBI/GBIDefs.h @@ -0,0 +1,323 @@ +/****************************************************************************** + * Arachnoid Graphics Plugin for Mupen64Plus + * http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/ + * + * Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + *****************************************************************************/ + +#ifndef GBI_DEFINITIONS_H_ +#define GBI_DEFINITIONS_H_ + +#include "GBI.h" + + +//TODO Write comments for each group + +#define G_NOOP 0x00 + +// These GBI commands are common to all ucodes + +#define G_SETCIMG 0xFF /* -1 */ +#define G_SETZIMG 0xFE /* -2 */ +#define G_SETTIMG 0xFD /* -3 */ +#define G_SETCOMBINE 0xFC /* -4 */ +#define G_SETENVCOLOR 0xFB /* -5 */ +#define G_SETPRIMCOLOR 0xFA /* -6 */ +#define G_SETBLENDCOLOR 0xF9 /* -7 */ +#define G_SETFOGCOLOR 0xF8 /* -8 */ +#define G_SETFILLCOLOR 0xF7 /* -9 */ +#define G_FILLRECT 0xF6 /* -10 */ +#define G_SETTILE 0xF5 /* -11 */ +#define G_LOADTILE 0xF4 /* -12 */ +#define G_LOADBLOCK 0xF3 /* -13 */ +#define G_SETTILESIZE 0xF2 /* -14 */ +#define G_LOADTLUT 0xF0 /* -16 */ +#define G_RDPSETOTHERMODE 0xEF /* -17 */ +#define G_SETPRIMDEPTH 0xEE /* -18 */ +#define G_SETSCISSOR 0xED /* -19 */ +#define G_SETCONVERT 0xEC /* -20 */ +#define G_SETKEYR 0xEB /* -21 */ +#define G_SETKEYGB 0xEA /* -22 */ +#define G_RDPFULLSYNC 0xE9 /* -23 */ +#define G_RDPTILESYNC 0xE8 /* -24 */ +#define G_RDPPIPESYNC 0xE7 /* -25 */ +#define G_RDPLOADSYNC 0xE6 /* -26 */ +#define G_TEXRECTFLIP 0xE5 /* -27 */ +#define G_TEXRECT 0xE4 /* -28 */ + +#define G_TRI_FILL 0xC8 /* fill triangle: 11001000 */ +#define G_TRI_SHADE 0xCC /* shade triangle: 11001100 */ +#define G_TRI_TXTR 0xCA /* texture triangle: 11001010 */ +#define G_TRI_SHADE_TXTR 0xCE /* shade, texture triangle: 11001110 */ +#define G_TRI_FILL_ZBUFF 0xC9 /* fill, zbuff triangle: 11001001 */ +#define G_TRI_SHADE_ZBUFF 0xCD /* shade, zbuff triangle: 11001101 */ +#define G_TRI_TXTR_ZBUFF 0xCB /* texture, zbuff triangle: 11001011 */ +#define G_TRI_SHADE_TXTR_ZBUFF 0xCF /* shade, txtr, zbuff trngl: 11001111 */ + +#define G_MV_MMTX 2 +#define G_MV_PMTX 6 +#define G_MV_LIGHT 10 +#define G_MV_POINT 12 +#define G_MV_MATRIX 14 + +#define G_MW_MATRIX 0x00 +#define G_MW_NUMLIGHT 0x02 +#define G_MW_CLIP 0x04 +#define G_MW_SEGMENT 0x06 +#define G_MW_FOG 0x08 +#define G_MW_LIGHTCOL 0x0A +#define G_MW_FORCEMTX 0x0C +#define G_MW_POINTS 0x0C +#define G_MW_PERSPNORM 0x0E + +#define G_MWO_POINT_RGBA 0x10 +#define G_MWO_POINT_ST 0x14 +#define G_MWO_POINT_XYSCREEN 0x18 +#define G_MWO_POINT_ZSCREEN 0x1C + +//Move Memory Defines +#define G_MV_LOOKATY 0x82 +#define G_MV_LOOKATX 0x84 +#define G_MV_L0 0x86 +#define G_MV_L1 0x88 +#define G_MV_L2 0x8a +#define G_MV_L3 0x8c +#define G_MV_L4 0x8e +#define G_MV_L5 0x90 +#define G_MV_L6 0x92 +#define G_MV_L7 0x94 +#define G_MV_TXTATT 0x96 +#define G_MV_MATRIX_1 0x9E +#define G_MV_MATRIX_2 0x98 +#define G_MV_MATRIX_3 0x9A +#define G_MV_MATRIX_4 0x9C + + + +// Image formats +#define G_IM_FMT_RGBA 0 +#define G_IM_FMT_YUV 1 +#define G_IM_FMT_CI 2 +#define G_IM_FMT_IA 3 +#define G_IM_FMT_I 4 + +// Image sizes +#define G_IM_SIZ_4b 0 +#define G_IM_SIZ_8b 1 +#define G_IM_SIZ_16b 2 +#define G_IM_SIZ_32b 3 +#define G_IM_SIZ_DD 5 + +#define G_TX_MIRROR 0x1 +#define G_TX_CLAMP 0x2 + + + +// +#define G_DL_PUSH 0x00 +#define G_DL_NOPUSH 0x01 + +enum TextureMode +{ + TM_NORMAL = 0, + TM_TEXRECT = 1, + TM_BGIMAGE = 2, + TM_FRAMEBUFFER = 3, +}; + + +enum LoadType +{ + LOADTYPE_BLOCK = 0, + LOADTYPE_TILE = 1, +}; + +/* + * G_SETOTHERMODE_L sft: shift count + */ +#define G_MDSFT_ALPHACOMPARE 0 +#define G_MDSFT_ZSRCSEL 2 +#define G_MDSFT_RENDERMODE 3 +#define G_MDSFT_BLENDER 16 + +/* + * G_SETOTHERMODE_H sft: shift count + */ +#define G_MDSFT_BLENDMASK 0 /* unsupported */ +#define G_MDSFT_ALPHADITHER 4 +#define G_MDSFT_RGBDITHER 6 + +#define G_MDSFT_COMBKEY 8 +#define G_MDSFT_TEXTCONV 9 +#define G_MDSFT_TEXTFILT 12 +#define G_MDSFT_TEXTLUT 14 +#define G_MDSFT_TEXTLOD 16 +#define G_MDSFT_TEXTDETAIL 17 +#define G_MDSFT_TEXTPERSP 19 +#define G_MDSFT_CYCLETYPE 20 +#define G_MDSFT_COLORDITHER 22 /* unsupported in HW 2.0 */ +#define G_MDSFT_PIPELINE 23 + +/* G_SETOTHERMODE_H gPipelineMode */ +#define G_PM_1PRIMITIVE 1 +#define G_PM_NPRIMITIVE 0 + +//G_SETOTHERMODE_H gSetCycleType +enum G_CYCLE_TYPE { + G_CYC_1CYCLE = 0, + G_CYC_2CYCLE = 1, + G_CYC_COPY = 2, + G_CYC_FILL = 3, +}; + +/* G_SETOTHERMODE_H gSetTexturePersp */ +#define G_TP_NONE 0 +#define G_TP_PERSP 1 + +/* G_SETOTHERMODE_H gSetTextureDetail */ +#define G_TD_CLAMP 0 +#define G_TD_SHARPEN 1 +#define G_TD_DETAIL 2 + +/* G_SETOTHERMODE_H gSetTextureLOD */ +#define G_TL_TILE 0 +#define G_TL_LOD 1 + +/* G_SETOTHERMODE_H gSetTextureLUT */ +#define G_TT_NONE 0 +#define G_TT_RGBA16 2 +#define G_TT_IA16 3 + +/* G_SETOTHERMODE_H gSetTextureFilter */ +#define G_TF_POINT 0 +#define G_TF_AVERAGE 3 +#define G_TF_BILERP 2 + +/* G_SETOTHERMODE_H gSetTextureConvert */ +#define G_TC_CONV 0 +#define G_TC_FILTCONV 5 +#define G_TC_FILT 6 + +/* G_SETOTHERMODE_H gSetCombineKey */ +#define G_CK_NONE 0 +#define G_CK_KEY 1 + +/* G_SETOTHERMODE_H gSetColorDither */ +#define G_CD_MAGICSQ 0 +#define G_CD_BAYER 1 +#define G_CD_NOISE 2 + +#define G_CD_DISABLE 3 +#define G_CD_ENABLE G_CD_NOISE /* HW 1.0 compatibility mode */ + +/* G_SETOTHERMODE_H gSetAlphaDither */ +#define G_AD_PATTERN 0 +#define G_AD_NOTPATTERN 1 +#define G_AD_NOISE 2 +#define G_AD_DISABLE 3 + +/* G_SETOTHERMODE_L gSetAlphaCompare */ +#define G_AC_NONE 0 +#define G_AC_THRESHOLD 1 +#define G_AC_DITHER 3 + +/* G_SETOTHERMODE_L gSetDepthSource */ +#define G_ZS_PIXEL 0 +#define G_ZS_PRIM 1 + +/* G_SETOTHERMODE_L gSetRenderMode */ +#define AA_EN 1 +#define Z_CMP 1 +#define Z_UPD 1 +#define IM_RD 1 +#define CLR_ON_CVG 1 +#define CVG_DST_CLAMP 0 +#define CVG_DST_WRAP 1 +#define CVG_DST_FULL 2 +#define CVG_DST_SAVE 3 +#define ZMODE_OPA 0 +#define ZMODE_INTER 1 +#define ZMODE_XLU 2 +#define ZMODE_DEC 3 +#define CVG_X_ALPHA 1 +#define ALPHA_CVG_SEL 1 +#define FORCE_BL 1 +#define TEX_EDGE 0 // not used + +#define G_SC_NON_INTERLACE 0 +#define G_SC_EVEN_INTERLACE 2 +#define G_SC_ODD_INTERLACE 3 + + +#define GBI_InitFlags( ucode ) \ + GBI::G_MTX_STACKSIZE = ucode##_MTX_STACKSIZE; \ + GBI::G_MTX_MODELVIEW = ucode##_MTX_MODELVIEW; \ + GBI::G_MTX_PROJECTION = ucode##_MTX_PROJECTION; \ + GBI::G_MTX_MUL = ucode##_MTX_MUL; \ + GBI::G_MTX_LOAD = ucode##_MTX_LOAD; \ + GBI::G_MTX_NOPUSH = ucode##_MTX_NOPUSH; \ + GBI::G_MTX_PUSH = ucode##_MTX_PUSH; \ +\ + GBI::G_TEXTURE_ENABLE = ucode##_TEXTURE_ENABLE; \ + GBI::G_SHADING_SMOOTH = ucode##_SHADING_SMOOTH; \ + GBI::G_CULL_FRONT = ucode##_CULL_FRONT; \ + GBI::G_CULL_BACK = ucode##_CULL_BACK; \ + GBI::G_CULL_BOTH = ucode##_CULL_BOTH; \ + GBI::G_CLIPPING = ucode##_CLIPPING; \ +\ + GBI::G_MV_VIEWPORT = ucode##_MV_VIEWPORT; \ + /* \ + GBI::G_MWO_aLIGHT_1 = ucode##_MWO_aLIGHT_1; \ + GBI::G_MWO_bLIGHT_1 = ucode##_MWO_bLIGHT_1; \ + GBI::G_MWO_aLIGHT_2 = ucode##_MWO_aLIGHT_2; \ + GBI::G_MWO_bLIGHT_2 = ucode##_MWO_bLIGHT_2; \ + GBI::G_MWO_aLIGHT_3 = ucode##_MWO_aLIGHT_3; \ + GBI::G_MWO_bLIGHT_3 = ucode##_MWO_bLIGHT_3; \ + GBI::G_MWO_aLIGHT_4 = ucode##_MWO_aLIGHT_4; \ + GBI::G_MWO_bLIGHT_4 = ucode##_MWO_bLIGHT_4; \ + GBI::G_MWO_aLIGHT_5 = ucode##_MWO_aLIGHT_5; \ + GBI::G_MWO_bLIGHT_5 = ucode##_MWO_bLIGHT_5; \ + GBI::G_MWO_aLIGHT_6 = ucode##_MWO_aLIGHT_6; \ + GBI::G_MWO_bLIGHT_6 = ucode##_MWO_bLIGHT_6; \ + GBI::G_MWO_aLIGHT_7 = ucode##_MWO_aLIGHT_7; \ + GBI::G_MWO_bLIGHT_7 = ucode##_MWO_bLIGHT_7; \ + GBI::G_MWO_aLIGHT_8 = ucode##_MWO_aLIGHT_8; \ + GBI::G_MWO_bLIGHT_8 = ucode##_MWO_bLIGHT_8; \ + */ + + +// Fixed point conversion factors +#define FIXED2FLOATRECIP1 0.5f +#define FIXED2FLOATRECIP2 0.25f +#define FIXED2FLOATRECIP3 0.125f +#define FIXED2FLOATRECIP4 0.0625f +#define FIXED2FLOATRECIP5 0.03125f +#define FIXED2FLOATRECIP6 0.015625f +#define FIXED2FLOATRECIP7 0.0078125f +#define FIXED2FLOATRECIP8 0.00390625f +#define FIXED2FLOATRECIP9 0.001953125f +#define FIXED2FLOATRECIP10 0.0009765625f +#define FIXED2FLOATRECIP11 0.00048828125f +#define FIXED2FLOATRECIP12 0.00024414063f +#define FIXED2FLOATRECIP13 0.00012207031f +#define FIXED2FLOATRECIP14 6.1035156e-05f +#define FIXED2FLOATRECIP15 3.0517578e-05f +#define FIXED2FLOATRECIP16 1.5258789e-05f + +#define _FIXED2FLOAT( v, b ) ((float)v * FIXED2FLOATRECIP##b) + +#endif