X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=source%2Fmupen64plus-video-arachnoid%2Fsrc%2FRDP%2FRDPUCodeStructs.h;fp=source%2Fmupen64plus-video-arachnoid%2Fsrc%2FRDP%2FRDPUCodeStructs.h;h=d67f71c264e460cb304ff2e08eca5f346c3d16e4;hb=22726e4d55be26faa48b57b22689cbedde27ae44;hp=0000000000000000000000000000000000000000;hpb=fc5d46b49a19d41f9f2da5a9336daec452900475;p=mupen64plus-pandora.git diff --git a/source/mupen64plus-video-arachnoid/src/RDP/RDPUCodeStructs.h b/source/mupen64plus-video-arachnoid/src/RDP/RDPUCodeStructs.h new file mode 100755 index 0000000..d67f71c --- /dev/null +++ b/source/mupen64plus-video-arachnoid/src/RDP/RDPUCodeStructs.h @@ -0,0 +1,147 @@ +/****************************************************************************** + * 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 RDP_UCODE_DEFS_H_ +#define RDP_UCODE_DEFS_H_ + +//! Struct for setting color-, depth- and texture- image +struct RDPUCodeSetImage +{ + unsigned int width:12; //!< Width + unsigned int :7; //!< Padding + unsigned int size:2; //!< Size (0=4, 1=8, 2=16, or 3=32) + unsigned int format:3; //!< Image format (0=RGBA, 1=YUV, 2=CI, 3=IA, 4=I, 5=?, 6=?, 7=?) + unsigned int cmd:8; //!< Command + unsigned int segmentAddress; //!< Address to register where there is an RDRAM address +}; + +//! Struct used by RDP to load textures +struct RDPUCodeTileSize +{ + unsigned int t0:12; //!< t texture coordinat for first vertex + unsigned int s0:12; //!< s texture coordinat for first vertex + unsigned int cmd:8; //!< Command, usualy LoadBlock, LoadTLUT, LoadTile, or SetTileSize + unsigned int t1:12; //!< t texture coordinat for second vertex + unsigned int s1:12; //!< s texture coordinat for second vertex + unsigned int tile:3; //!< Tile + unsigned int padding:5; //!< Unused Padding +}; + +//! Struct used by RDP to set tiles +struct RDPUCodeSetTile +{ + unsigned int tmem:9; //!< Address in Texture Memory + unsigned int line:9; + unsigned int pad0:1; //!< Padding + unsigned int size:2; + unsigned int format:3; //!< Image format of tile + unsigned int cmd:8; //!< Command, usualy SetTileSize + unsigned int shiftS:4; + unsigned int maskS:4; + unsigned int mirrorS:1; //!< + unsigned int clampS:1; + unsigned int shiftT:4; + unsigned int maskT:4; + unsigned int mirrorT:1; + unsigned int clampT:1; + unsigned int palette:4; + unsigned int tile:3; + unsigned int pad1:5; //!< Padding +}; + +//! Struct used by RDP to set fog-, blend-, enviroment-, and prim- color (fillcolor is diffrent) +struct RDPUCodeSetColor +{ + unsigned int prim_level:8; //!< Only used by setPrimColor + unsigned int prim_min_level:8; //!< Only used by setPrimColor + unsigned int pad0:8; //!< Padding + unsigned int cmd:8; //!< Command + unsigned int a:8; //!< Alpha (0-255) + unsigned int b:8; //!< Blue (0-255) + unsigned int g:8; //!< Green (0-255) + unsigned int r:8; //!< Red (0-255) +}; + +//! Struct used by RDP to set fill color +struct RDPUCodeSetFillColor +{ + unsigned int pad0:24; //!< Padding + unsigned int cmd:8; //!< Command + unsigned int a:1; //!< Alpha (0-1) + unsigned int b:5; //!< Blue (0-255) + unsigned int g:5; //!< Green (0-255) + unsigned int r:5; //!< Red (0-255) + unsigned int pad1:16; //!< Padding +}; + +//! Struct used by RDP to render rectangles +struct RDPUCodeRectangle +{ + unsigned int pad0 : 2; //!< Padding + unsigned int y1 : 10; //!< Y coordinate of second vertex corner + unsigned int pad1 : 2; //!< Padding + unsigned int x1 : 10; //!< X coordinate of second vertex corner + unsigned int cmd : 8; //!< Command + unsigned int pad3 : 2; //!< Padding + unsigned int y0 : 10; //!< Y coordinate of first vertex corner + unsigned int pad4 : 2; //!< Padding + unsigned int x0 : 10; //!< X coordinate of first vertex corner + unsigned int pad5 : 8; //!< Padding +}; + +//! Struct used by RDP to set scissor +struct RDPUCodeScissor +{ + unsigned int y0:12; //!< Y coordinate of second vertex + unsigned int x0:12; //!< X coordinate of second vertex + unsigned int cmd:8; //!< Command usualy + unsigned int y1:12; //!< Y coordinate of first vertex + unsigned int x1:12; //!< X coordinate of first vertex + unsigned int mode:2; //!< + unsigned int pad0:6; //!< Padding TexRect or TexRectFlip +}; + +//! Struct used by RDP to render textured rectangles +struct RDPUCodeTextureRectangle +{ + unsigned int y1:12; //!< Y coordinate of second vertex + unsigned int x1:12; //!< X coordinate of second vertex + unsigned int cmd:8; //!< Command usualy + unsigned int y0:12; //!< Y coordinate of first vertex + unsigned int x0:12; //!< X coordinate of first vertex + unsigned int tile:3; //!< Tile descriptor index + unsigned int pad0:5; //!< Padding TexRect or TexRectFlip + unsigned int t:16; //!< T texture coord at first vertex + unsigned int s:16; //!< S texture coord at first vertex + unsigned int dtdy:16; //!< Change in T per change in Y + unsigned int dsdx:16; //!< Change in S per change in X +}; + +//! Struct used by RDP to set prim depth +struct RDPUCodeSetPrimDepth +{ + unsigned int pad0:24; //!< Padding + unsigned int cmd:8; //!< Command + unsigned int dz:16; + unsigned int z:16; //!< Depth value +}; + +#endif