182 lines
7.4 KiB
C++
182 lines
7.4 KiB
C++
// ******************************************************************
|
|
// *
|
|
// * .,-::::: .,:: .::::::::. .,:: .:
|
|
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
|
|
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
|
|
// * $$$ Y$$$P $$""""Y$$ Y$$$P
|
|
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
|
|
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
|
|
// *
|
|
// * Cxbx->Win32->CxbxKrnl->EmuD3D8Conv.cpp
|
|
// *
|
|
// * This file is part of the Cxbx project.
|
|
// *
|
|
// * Cxbx and Cxbe are free software; you can redistribute them
|
|
// * and/or modify them 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 recieved a copy of the GNU General Public License
|
|
// * along with this program; see the file COPYING.
|
|
// * If not, write to the Free Software Foundation, Inc.,
|
|
// * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA.
|
|
// *
|
|
// * (c) 2002-2003 Aaron Robinson <caustik@caustik.com>
|
|
// *
|
|
// * All rights reserved
|
|
// *
|
|
// ******************************************************************
|
|
#define _CXBXKRNL_INTERNAL
|
|
#define _XBOXKRNL_LOCAL_
|
|
|
|
#include "Emu.h"
|
|
|
|
// ******************************************************************
|
|
// * prevent name collisions
|
|
// ******************************************************************
|
|
namespace xdirectx
|
|
{
|
|
#include "xdirectx.h"
|
|
};
|
|
|
|
#include "EmuD3D8.h"
|
|
|
|
// ******************************************************************
|
|
// * EmuD3DVertexToPrimitive
|
|
// ******************************************************************
|
|
UINT xdirectx::EmuD3DVertexToPrimitive[11][2] =
|
|
{
|
|
{0, 0},
|
|
{1, 0},
|
|
{2, 0},
|
|
{1, 1},
|
|
{1, 1},
|
|
{3, 0},
|
|
{1, 2},
|
|
{1, 2},
|
|
{4, 0},
|
|
{2, 2},
|
|
{0, 0},
|
|
};
|
|
|
|
// ******************************************************************
|
|
// * EmuPrimitiveTypeLookup
|
|
// ******************************************************************
|
|
xdirectx::D3DPRIMITIVETYPE xdirectx::EmuPrimitiveTypeLookup[] =
|
|
{
|
|
/* NULL = 0 */ (xdirectx::D3DPRIMITIVETYPE)0,
|
|
/* D3DPT_POINTLIST = 1, */ xdirectx::D3DPT_POINTLIST,
|
|
/* D3DPT_LINELIST = 2, */ xdirectx::D3DPT_LINELIST,
|
|
/* D3DPT_LINELOOP = 3, Xbox */ xdirectx::D3DPT_LINELIST,
|
|
/* D3DPT_LINESTRIP = 4, */ xdirectx::D3DPT_LINESTRIP,
|
|
/* D3DPT_TRIANGLELIST = 5, */ xdirectx::D3DPT_TRIANGLELIST,
|
|
/* D3DPT_TRIANGLESTRIP = 6, */ xdirectx::D3DPT_TRIANGLESTRIP,
|
|
/* D3DPT_TRIANGLEFAN = 7, */ xdirectx::D3DPT_TRIANGLEFAN,
|
|
/* D3DPT_QUADLIST = 8, Xbox */ xdirectx::D3DPT_TRIANGLELIST,
|
|
/* D3DPT_QUADSTRIP = 9, Xbox */ xdirectx::D3DPT_TRIANGLELIST,
|
|
/* D3DPT_POLYGON = 10, Xbox */ xdirectx::D3DPT_TRIANGLELIST,
|
|
/* D3DPT_MAX = 11, */ (xdirectx::D3DPRIMITIVETYPE)11
|
|
};
|
|
|
|
// ******************************************************************
|
|
// * EmuD3DRenderStateSimpleEncoded
|
|
// ******************************************************************
|
|
CONST DWORD xdirectx::EmuD3DRenderStateSimpleEncoded[174] =
|
|
{
|
|
// WARNING: This lookup table strongly binds us to an SDK with these
|
|
// specific #define values for D3DRS_*. Make VERY sure that you have
|
|
// the correct lookup values;
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 0
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 2
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 4
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 6
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 8
|
|
0x0004037c, X_D3DRSSE_UNK, // 10 - D3DRS_SHADEMODE
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 12
|
|
0x0004035c, 0x00040300, // 14 - D3DRS_ZWRITEENABLE, D3DRS_ALPHATESTENABLE
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 16
|
|
X_D3DRSSE_UNK, 0x00040344, // 18
|
|
0x00040348, X_D3DRSSE_UNK, // 20 - D3DRS_DESTBLEND
|
|
X_D3DRSSE_UNK, 0x00040354, // 22 - , D3DRS_ZFUNC
|
|
0x00040340, 0x0004033c, // 24 - D3DRS_ALPHAREF, D3DRS_ALPHAFUNC
|
|
0x00040310, 0x00040304, // 26 - D3DRS_DITHERENABLE, D3DRS_ALPHABLENDENABLE
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 28
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 30
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 32
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 34
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 36
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 38
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 40
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 42
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 44
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 46
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 48
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 50
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 52
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 54
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 56
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 58
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 60
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 62
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 64
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 66
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 68
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 70
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 72
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 74
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 76
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 78
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 80
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 82
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 84
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 86
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 88
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 90
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 92
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 94
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 96
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 98
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 100
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 102
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 104
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 106
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 108
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 110
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 112
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 114
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 116
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 118
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 120
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 122
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 124
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 126
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 128
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 130
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 132
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 134
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 136
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 138
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 140
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 142
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 144
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 146
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 148
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 150
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 152
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 154
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 156
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 158
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 160
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 162
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 164
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 166
|
|
0x00040358, X_D3DRSSE_UNK, // 168 - D3DRS_COLORWRITEENABLE
|
|
X_D3DRSSE_UNK, 0x00040350, // 170
|
|
X_D3DRSSE_UNK, X_D3DRSSE_UNK, // 172
|
|
};
|