mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-15 22:28:10 +00:00
6b4484472b
svn-id: r18604
226 lines
7.2 KiB
C
226 lines
7.2 KiB
C
/* ScummVM - Scumm Interpreter
|
|
* Copyright (C) 2005 The ScummVM project
|
|
*
|
|
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
* $Header$
|
|
*
|
|
*/
|
|
|
|
#ifndef __GSDEFS_H__
|
|
#define __GSDEFS_H__
|
|
|
|
#include "sysdefs.h"
|
|
|
|
// Gs2dScreen defines:
|
|
|
|
#define PAL_NTSC_FLAG (*((uint8*)0x1FC80000))
|
|
|
|
#define GS_PMODE *((volatile uint64*)0x12000000)
|
|
#define GS_CSR *((volatile uint64*)0x12001000)
|
|
#define GS_DISPFB1 *((volatile uint64*)0x12000070)
|
|
#define GS_DISPLAY1 *((volatile uint64*)0x12000080)
|
|
#define GS_BGCOLOUR *((volatile uint64*)0x120000E0)
|
|
|
|
enum GS_CSR_FIELDS {
|
|
CSR_SIGNAL = 1 << 0,
|
|
CSR_FINISH = 1 << 1,
|
|
CSR_HSYNC = 1 << 2,
|
|
CSR_VSYNC = 1 << 3,
|
|
CSR_FLUSH = 1 << 8,
|
|
CSR_RESET = 1 << 9
|
|
};
|
|
|
|
#define GS_SET_PMODE(readC1, readC2, alphaSel, alphaOut, alphaBlend, alphaFixed) \
|
|
((readC1) | ((readC2) << 1) | ((alphaSel) << 5) | ((alphaOut) << 6) | ((alphaBlend) << 7) | ((alphaFixed) << 8))
|
|
|
|
#define GS_SET_DISPLAY(width, height, xpos, ypos) \
|
|
(((uint64)(height - 1) << 44) | ((uint64)0x9FF << 32) | \
|
|
((((2560 + (width - 1)) / width) - 1)<<23) | \
|
|
(ypos << 12) | (xpos * (2560 / width)))
|
|
|
|
#define GS_SET_DISPFB(frameBufPtr, frameBufWidth, psm) \
|
|
(((frameBufPtr) / 8192) | (((frameBufWidth) / 64) << 9) | ((psm) << 15))
|
|
|
|
#define GS_RGBA(r, g, b, a) \
|
|
((r) | ((g) << 8) | ((b) << 16) | ((a) << 24))
|
|
|
|
//DmaPipe defines:
|
|
|
|
enum GsRegs {
|
|
GPR_PRIM = 0x00, // Select and configure current drawing primitive
|
|
GPR_RGBAQ, // Setup current vertex color
|
|
GPR_ST, // ...
|
|
GPR_UV, // Specify Vertex Texture Coordinates
|
|
GPR_XYZF2, // Set vertex coordinate
|
|
GPR_XYZ2, // Set vertex coordinate and 'kick' drawing
|
|
GPR_TEX0_1, // Texture Buffer Setup (Context 1)
|
|
GPR_TEX0_2, // Texture Buffer Setup (Context 2)
|
|
GPR_CLAMP_1, // ...
|
|
GPR_CLAMP_2, // ...
|
|
GPR_FOG, // ...
|
|
|
|
GPR_XYZF3 = 0x0C, // ...
|
|
GPR_XYZ3, // ...
|
|
|
|
GPR_TEX1_1 = 0x14, // ...
|
|
GPR_TEX1_2, // ...
|
|
GPR_TEX2_1, // ...
|
|
GPR_TEX2_2, // ...
|
|
GPR_XYOFFSET_1, // Mapping from Primitive to Window coordinate system (Context 1)
|
|
GPR_XYOFFSET_2, // Mapping from Primitive to Window coordinate system (Context 2)
|
|
GPR_PRMODECONT, // ...
|
|
GPR_PRMODE, // ...
|
|
GPR_TEXCLUT, // ...
|
|
|
|
GPR_SCANMSK = 0x22, // ...
|
|
|
|
GPR_MIPTBP1_1 = 0x34, // ...
|
|
GPR_MIPTBP1_2, // ...
|
|
GPR_MIPTBP2_1, // ...
|
|
GPR_MIPTBP2_2, // ...
|
|
|
|
GPR_TEXA = 0x3b, // ...
|
|
|
|
GPR_FOGCOL = 0x3d, // ...
|
|
|
|
GPR_TEXFLUSH = 0x3f,// Write to this register before using newly loaded texture
|
|
GPR_SCISSOR_1, // Setup clipping rectangle (Context 1)
|
|
GPR_SCISSOR_2, // Setup clipping rectangle (Context 2)
|
|
GPR_ALPHA_1, // Setup Alpha Blending Parameters (Context 1)
|
|
GPR_ALPHA_2, // Setup Alpha Blending Parameters (Context 2)
|
|
GPR_DIMX, // ...
|
|
GPR_DTHE, // ...
|
|
GPR_COLCLAMP, // ...
|
|
GPR_TEST_1, // ...
|
|
GPR_TEST_2, // ...
|
|
GPR_PABE, // ...
|
|
GPR_FBA_1, // ...
|
|
GPR_FBA_2, // ...
|
|
GPR_FRAME_1, // Frame buffer settings (Context 1)
|
|
GPR_FRAME_2, // Frame buffer settings (Context 2)
|
|
GPR_ZBUF_1, // ...
|
|
GPR_ZBUF_2, // ...
|
|
GPR_BITBLTBUF, // Setup Image Transfer Between EE and GS
|
|
GPR_TRXPOS, // Setup Image Transfer Coordinates
|
|
GPR_TRXREG, // Setup Image Transfer Size
|
|
GPR_TRXDIR, // Set Image Transfer Directon + Start Transfer
|
|
GPR_HWREG,
|
|
|
|
GPR_SIGNAL = 0x60,
|
|
GPR_FINISH,
|
|
GPR_LABEL
|
|
};
|
|
|
|
enum PrimTypes {
|
|
PR_POINT = 0,
|
|
PR_LINE,
|
|
PR_LINESTRIP,
|
|
PR_TRIANGLE,
|
|
PR_TRIANGLESTRIP,
|
|
PR_TRIANGLEFAN,
|
|
PR_SPRITE
|
|
};
|
|
|
|
#define GS_PSMCT32 0x00
|
|
#define GS_PSMCT24 0x01
|
|
#define GS_PSMCT16 0x02
|
|
#define GS_PSMCT16S 0x0A
|
|
#define GS_PSMT8 0x13
|
|
#define GS_PSMT4 0x14
|
|
#define GS_PSMT4HL 0x24
|
|
#define GS_PSMT4HH 0x2C
|
|
#define GS_PSMT8H 0x1B
|
|
|
|
/*#define GS_SET_BITBLTBUF(sbp, sbw, spsm, dbp, dbw, dpsm) \
|
|
((uint64)(sbp) | ((uint64)(sbw) << 16) | \
|
|
((uint64)(spsm) << 24) | ((uint64)(dbp) << 32) | \
|
|
((uint64)(dbw) << 48) | ((uint64)(dpsm) << 56))*/
|
|
|
|
#define GS_SET_SRC_BLTBUF(sbp, sbw, spsm) \
|
|
((sbp) | ((uint64)sbw << 16) | ((uint64)spsm << 24))
|
|
|
|
#define GS_SET_DEST_BLTBUF(dbp, dbw, dpsm) \
|
|
(((uint64)(dbp) << 32) | ((uint64)(dbw) << 48) | ((uint64)(dpsm) << 56))
|
|
|
|
#define GS_SET_SRC_TRXPOS(ssax, ssay) \
|
|
((ssax) | ((uint64)ssay << 16))
|
|
|
|
#define GS_SET_DEST_TRXPOS(dsax, dsay) \
|
|
(((uint64)(dsax) << 32) | ((uint64)(dsay) << 48))
|
|
|
|
#define GS_SET_TRXREG(rrw, rrh) \
|
|
((uint64)(rrw) | ((uint64)(rrh) << 32))
|
|
|
|
#define GS_SET_TEXA(ta0, aem, ta1) \
|
|
((uint64)(ta0) | ((uint64)(aem) << 15) | ((uint64)(ta1) << 32))
|
|
|
|
#define GS_SET_TEX0(tbp, tbw, psm, tw, th, tcc, tfx, cbp, cpsm, csm, csa, cld) \
|
|
((uint64)(tbp) | ((uint64)(tbw) << 14) | ((uint64)(psm) << 20) | ((uint64)(tw) << 26) | \
|
|
((uint64)(th) << 30) | ((uint64)(tcc) << 34) | ((uint64)(tfx) << 35) | ((uint64)(cbp) << 37) | \
|
|
((uint64)(cpsm) << 51) | ((uint64)(csm) << 55) | ((uint64)(csa) << 56) | ((uint64)(cld) << 61))
|
|
|
|
#define GIF_SET_TAG(nloop, eop, pre, prim, flg, nreg) \
|
|
( (uint64)(nloop) | ((uint64)(eop)<<15) | ((uint64)(pre) << 46) | \
|
|
((uint64)(prim)<<47) | ((uint64)(flg)<<58) | ((uint64)(nreg)<<60) )
|
|
|
|
#define GS_SET_UV(u, v) ((uint64)(u) | ((uint64)(v) << 16))
|
|
|
|
#define GS_SET_XYZ(x, y, z) \
|
|
((uint64)(x) | ((uint64)(y) << 16) | ((uint64)(z) << 32))
|
|
|
|
#define GS_SET_XYOFFSET(ofx, ofy) ((uint64)(ofx) | ((uint64)(ofy) << 32))
|
|
|
|
#define GS_SET_SCISSOR(scax0, scax1, scay0, scay1) \
|
|
( (uint64)(scax0) | ((uint64)(scax1) << 16) | ((uint64)(scay0) << 32) | ((uint64)(scay1) << 48) )
|
|
|
|
#define GS_SET_FRAME(fbp, fbw, psm, fbmask) \
|
|
( (uint64)(fbp) | (uint64)((uint64)(fbw) << 16) | (uint64)((uint64)(psm) << 24) | (uint64)((uint64)(fbmask) << 32) )
|
|
|
|
#define GS_SET_TEST(ate, atst, aref, afail, date, datm, zte, ztst) \
|
|
( (uint64)(ate) | ((uint64)(atst) << 1) | ((uint64)(aref) << 4) | ((uint64)(afail) << 12) | \
|
|
((uint64)(date) << 14) | ((uint64)(datm) << 15) | ((uint64)(zte) << 16) | ((uint64)(ztst) << 17) )
|
|
|
|
#define FILTER_NEAREST 0
|
|
#define FILTER_LINEAR 1
|
|
|
|
#define GS_SET_TEX1(lcm, mxl, mmag, mmin, mtba, l, k) \
|
|
((uint64)(lcm) | ((uint64)(mxl) << 2) | ((uint64)(mmag) << 5) | ((uint64)(mmin) << 6) | \
|
|
((uint64)(mtba) << 9) | ((uint64)(l) << 19) | ((uint64)(k) << 32))
|
|
|
|
enum AlphaBlendColor {
|
|
SOURCE_COLOR = 0,
|
|
DEST_COLOR,
|
|
ZERO_COLOR
|
|
};
|
|
|
|
enum AlphaBlendAlpha {
|
|
SOURCE_ALPHA = 0,
|
|
DEST_ALPHA,
|
|
FIXED_ALPHA
|
|
};
|
|
|
|
#define GS_SET_ALPHA(a, b, c, d, fix) \
|
|
((uint64)(a) | ((uint64)(b)<<2) | ((uint64)(c)<<4) | ((uint64)(d)<<6) | ((uint64)(fix)<<32))
|
|
|
|
#define GS_SET_PRIM(prim, iip, tme, fge, abe, aa1, fst, ctxt, fix) \
|
|
((uint64)(prim) | ((uint64)(iip) << 3) | ((uint64)(tme) << 4) | \
|
|
((uint64)(fge) << 5) | ((uint64)(abe) << 6) | ((uint64)(aa1) << 7) | \
|
|
((uint64)(fst) << 8) | ((uint64)(ctxt) << 9) | ((uint64)(fix) << 10))
|
|
|
|
#define GS_SET_COLQ(c) (0x3f80000000000000 | c)
|
|
|
|
#endif // __GSDEFS_H__
|